Documentation
¶
Overview ¶
Package dto provides DTO models for serialization/deserialization to/from JSON-API
Index ¶
- Variables
- type AgentToken
- type AgentTokenCreateOptions
- type Apply
- type Assembler
- type CVStatusTimestamps
- type ConfigurationVersion
- type ConfigurationVersionCreateOptions
- type ConfigurationVersionList
- type Entitlements
- type IngressAttributes
- type Organization
- type OrganizationCreateOptions
- type OrganizationList
- type OrganizationPermissions
- type OrganizationUpdateOptions
- type Pagination
- type PhaseStatusTimestamps
- type Plan
- type RegistrySession
- type RegistrySessionCreateOptions
- type ResourceReport
- type Run
- type RunActions
- type RunCreateOptions
- type RunList
- type RunPermissions
- type RunStatusTimestamps
- type StateVersion
- type StateVersionCreateOptions
- type StateVersionList
- type StateVersionOutput
- type TwoFactor
- type User
- type VCSRepo
- type VCSRepoOptions
- type Variable
- type VariableCreateOptions
- type VariableList
- type VariableUpdateOptions
- type Workspace
- type WorkspaceActions
- type WorkspaceCreateOptions
- type WorkspaceList
- type WorkspacePermissions
- type WorkspaceUpdateOptions
Constants ¶
This section is empty.
Variables ¶
var DefaultOrganizationPermissions = OrganizationPermissions{ CanCreateWorkspace: true, CanUpdate: true, CanDestroy: true, }
Functions ¶
This section is empty.
Types ¶
type AgentToken ¶
type AgentToken struct { ID string `jsonapi:"primary,agent_tokens"` // Only set upon creation and never thereafter Token *string `jsonapi:"attr,token,omitempty"` Organization string `jsonapi:"attr,organization_name"` }
AgentToken represents an otf agent token
type AgentTokenCreateOptions ¶
type AgentTokenCreateOptions struct { // Type is a public field utilized by JSON:API to set the resource type via // the field tag. It is not a user-defined value and does not need to be // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,runs"` // Description is a meaningful description of the purpose of the agent // token. Description string `jsonapi:"attr,description"` // Organization is the name of the organization in which to create the // token. Organization string `jsonapi:"attr,organization_name"` }
AgentTokenCreateOptions represents the options for creating a new otf agent token.
type Apply ¶
type Apply struct { ID string `jsonapi:"primary,applies"` LogReadURL string `jsonapi:"attr,log-read-url"` Status string `jsonapi:"attr,status"` StatusTimestamps *PhaseStatusTimestamps `jsonapi:"attr,status-timestamps"` ResourceReport }
Apply represents a Terraform Enterprise apply.
type Assembler ¶
type Assembler interface { // ToJSONAPI assembles a JSON-API DTO using the current request. ToJSONAPI() any }
Assembler is capable of assembling itself into a JSON-API DTO object.
type CVStatusTimestamps ¶
type CVStatusTimestamps struct { FinishedAt *time.Time `json:"finished-at,omitempty"` QueuedAt *time.Time `json:"queued-at,omitempty"` StartedAt *time.Time `json:"started-at,omitempty"` }
CVStatusTimestamps holds the timestamps for individual configuration version statuses.
type ConfigurationVersion ¶
type ConfigurationVersion struct { ID string `jsonapi:"primary,configuration-versions"` AutoQueueRuns bool `jsonapi:"attr,auto-queue-runs"` Error string `jsonapi:"attr,error"` ErrorMessage string `jsonapi:"attr,error-message"` Source string `jsonapi:"attr,source"` Speculative bool `jsonapi:"attr,speculative "` Status string `jsonapi:"attr,status"` StatusTimestamps *CVStatusTimestamps `jsonapi:"attr,status-timestamps"` UploadURL string `jsonapi:"attr,upload-url"` }
ConfigurationVersion is a representation of an uploaded or ingressed Terraform configuration in TFE. A workspace must have at least one configuration version before any runs may be queued on it.
type ConfigurationVersionCreateOptions ¶
type ConfigurationVersionCreateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,configuration-versions"` // When true, runs are queued automatically when the configuration version // is uploaded. AutoQueueRuns *bool `jsonapi:"attr,auto-queue-runs,omitempty"` // When true, this configuration version can only be used for planning. Speculative *bool `jsonapi:"attr,speculative,omitempty"` }
ConfigurationVersionCreateOptions represents the options for creating a configuration version.
type ConfigurationVersionList ¶
type ConfigurationVersionList struct { *Pagination Items []*ConfigurationVersion }
ConfigurationVersionList represents a list of configuration versions.
type Entitlements ¶
type Entitlements struct { ID string `jsonapi:"primary,entitlement-sets"` Agents bool `jsonapi:"attr,agents"` AuditLogging bool `jsonapi:"attr,audit-logging"` CostEstimation bool `jsonapi:"attr,cost-estimation"` Operations bool `jsonapi:"attr,operations"` PrivateModuleRegistry bool `jsonapi:"attr,private-module-registry"` SSO bool `jsonapi:"attr,sso"` Sentinel bool `jsonapi:"attr,sentinel"` StateStorage bool `jsonapi:"attr,state-storage"` Teams bool `jsonapi:"attr,teams"` VCSIntegrations bool `jsonapi:"attr,vcs-integrations"` }
Entitlements represents the entitlements of an organization. Unlike TFE/TFC, OTF is free and therefore the user is entitled to all currently supported services. Entitlements represents the entitlements of an organization.
type IngressAttributes ¶ added in v0.0.19
type IngressAttributes struct { ID string `jsonapi:"primary,ingress-attributes"` Branch string `jsonapi:"attr,branch"` CloneURL string `jsonapi:"attr,clone-url"` CommitMessage string `jsonapi:"attr,commit-message"` CommitSHA string `jsonapi:"attr,commit-sha"` CommitURL string `jsonapi:"attr,commit-url"` CompareURL string `jsonapi:"attr,compare-url"` Identifier string `jsonapi:"attr,identifier"` IsPullRequest bool `jsonapi:"attr,is-pull-request"` OnDefaultBranch bool `jsonapi:"attr,on-default-branch"` PullRequestNumber int `jsonapi:"attr,pull-request-number"` PullRequestURL string `jsonapi:"attr,pull-request-url"` PullRequestTitle string `jsonapi:"attr,pull-request-title"` PullRequestBody string `jsonapi:"attr,pull-request-body"` Tag string `jsonapi:"attr,tag"` SenderUsername string `jsonapi:"attr,sender-username"` SenderAvatarURL string `jsonapi:"attr,sender-avatar-url"` SenderHTMLURL string `jsonapi:"attr,sender-html-url"` // Links Links map[string]interface{} `jsonapi:"links,omitempty"` }
type Organization ¶
type Organization struct { Name string `jsonapi:"primary,organizations"` CostEstimationEnabled bool `jsonapi:"attr,cost-estimation-enabled"` CreatedAt time.Time `jsonapi:"attr,created-at,iso8601"` ExternalID string `jsonapi:"attr,external-id"` OwnersTeamSAMLRoleID string `jsonapi:"attr,owners-team-saml-role-id"` Permissions *OrganizationPermissions `jsonapi:"attr,permissions"` SAMLEnabled bool `jsonapi:"attr,saml-enabled"` SessionRemember int `jsonapi:"attr,session-remember"` SessionTimeout int `jsonapi:"attr,session-timeout"` TrialExpiresAt time.Time `jsonapi:"attr,trial-expires-at,iso8601"` TwoFactorConformant bool `jsonapi:"attr,two-factor-conformant"` }
Organization JSON-API representation
type OrganizationCreateOptions ¶
type OrganizationCreateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,organizations"` // Name of the organization. Name *string `jsonapi:"attr,name"` SessionRemember *int `jsonapi:"attr,session-remember,omitempty"` // Session timeout after inactivity (minutes). SessionTimeout *int `jsonapi:"attr,session-timeout,omitempty"` }
OrganizationCreateOptions represents the options for creating an organization.
type OrganizationList ¶
type OrganizationList struct { *Pagination Items []*Organization }
OrganizationList JSON-API representation
type OrganizationPermissions ¶
type OrganizationPermissions struct { CanCreateTeam bool `json:"can-create-team"` CanCreateWorkspace bool `json:"can-create-workspace"` CanCreateWorkspaceMigration bool `json:"can-create-workspace-migration"` CanDestroy bool `json:"can-destroy"` CanTraverse bool `json:"can-traverse"` CanUpdate bool `json:"can-update"` CanUpdateAPIToken bool `json:"can-update-api-token"` CanUpdateOAuth bool `json:"can-update-oauth"` CanUpdateSentinel bool `json:"can-update-sentinel"` }
OrganizationPermissions represents the organization permissions.
type OrganizationUpdateOptions ¶
type OrganizationUpdateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,organizations"` // New name for the organization. Name *string `jsonapi:"attr,name,omitempty"` // Session expiration (minutes). SessionRemember *int `jsonapi:"attr,session-remember,omitempty"` // Session timeout after inactivity (minutes). SessionTimeout *int `jsonapi:"attr,session-timeout,omitempty"` }
OrganizationUpdateOptions represents the options for updating an organization.
type Pagination ¶
type Pagination struct { CurrentPage int `json:"current-page"` PreviousPage *int `json:"prev-page"` NextPage *int `json:"next-page"` TotalPages int `json:"total-pages"` TotalCount int `json:"total-count"` }
Pagination is used to return the pagination details of an API request.
type PhaseStatusTimestamps ¶
type PhaseStatusTimestamps struct { CanceledAt *time.Time `json:"canceled-at,omitempty"` ErroredAt *time.Time `json:"errored-at,omitempty"` FinishedAt *time.Time `json:"finished-at,omitempty"` PendingAt *time.Time `json:"pending-at,omitempty"` QueuedAt *time.Time `json:"queued-at,omitempty"` StartedAt *time.Time `json:"started-at,omitempty"` UnreachableAt *time.Time `json:"unreachable-at,omitempty"` }
PhaseStatusTimestamps holds the timestamps for individual statuses for a phase.
type Plan ¶
type Plan struct { ID string `jsonapi:"primary,plans"` HasChanges bool `jsonapi:"attr,has-changes"` LogReadURL string `jsonapi:"attr,log-read-url"` Status string `jsonapi:"attr,status"` StatusTimestamps *PhaseStatusTimestamps `jsonapi:"attr,status-timestamps"` ResourceReport }
Plan represents a Terraform Enterprise plan.
type RegistrySession ¶ added in v0.0.19
type RegistrySession struct { Token string `jsonapi:"primary,registry_sessions"` OrganizationName string `jsonapi:"attr,organization_name"` }
RegistrySession is an unmarshalled JSONAPI representation of an otf registry session
type RegistrySessionCreateOptions ¶ added in v0.0.19
type RegistrySessionCreateOptions struct { // Type is a public field utilized by JSON:API to set the resource type via // the field tag. It is not a user-defined value and does not need to be // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,registry_sessions"` // OrganizationName is the name of the organization in which to create the // session. OrganizationName string `jsonapi:"attr,organization_name"` }
RegistrySessionCreateOptions represents the options for creating a new JSONAPI registry session.
type ResourceReport ¶
type Run ¶
type Run struct { ID string `jsonapi:"primary,runs"` Actions *RunActions `jsonapi:"attr,actions"` CreatedAt time.Time `jsonapi:"attr,created-at,iso8601"` ForceCancelAvailableAt *time.Time `jsonapi:"attr,force-cancel-available-at,iso8601"` ExecutionMode string `jsonapi:"attr,execution-mode"` HasChanges bool `jsonapi:"attr,has-changes"` IsDestroy bool `jsonapi:"attr,is-destroy"` Message string `jsonapi:"attr,message"` Permissions *RunPermissions `jsonapi:"attr,permissions"` PositionInQueue int `jsonapi:"attr,position-in-queue"` Refresh bool `jsonapi:"attr,refresh"` RefreshOnly bool `jsonapi:"attr,refresh-only"` ReplaceAddrs []string `jsonapi:"attr,replace-addrs,omitempty"` Source string `jsonapi:"attr,source"` Status string `jsonapi:"attr,status"` StatusTimestamps *RunStatusTimestamps `jsonapi:"attr,status-timestamps"` TargetAddrs []string `jsonapi:"attr,target-addrs,omitempty"` // Relations Apply *Apply `jsonapi:"relation,apply"` ConfigurationVersion *ConfigurationVersion `jsonapi:"relation,configuration-version"` CreatedBy *User `jsonapi:"relation,created-by"` Plan *Plan `jsonapi:"relation,plan"` Workspace *Workspace `jsonapi:"relation,workspace"` }
Run represents a Terraform Enterprise run.
type RunActions ¶
type RunActions struct { IsCancelable bool `json:"is-cancelable"` IsConfirmable bool `json:"is-confirmable"` IsDiscardable bool `json:"is-discardable"` IsForceCancelable bool `json:"is-force-cancelable"` }
RunActions represents the run actions.
type RunCreateOptions ¶
type RunCreateOptions struct { // Type is a public field utilized by JSON:API to set the resource type via // the field tag. It is not a user-defined value and does not need to be // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,runs"` // Specifies if this plan is a destroy plan, which will destroy all // provisioned resources. IsDestroy *bool `jsonapi:"attr,is-destroy,omitempty"` // Refresh determines if the run should // update the state prior to checking for differences Refresh *bool `jsonapi:"attr,refresh,omitempty"` // RefreshOnly determines whether the run should ignore config changes // and refresh the state only RefreshOnly *bool `jsonapi:"attr,refresh-only,omitempty"` // Specifies the message to be associated with this run. Message *string `jsonapi:"attr,message,omitempty"` // Specifies the configuration version to use for this run. If the // configuration version object is omitted, the run will be created using the // workspace's latest configuration version. ConfigurationVersion *ConfigurationVersion `jsonapi:"relation,configuration-version"` // Specifies the workspace where the run will be executed. Workspace *Workspace `jsonapi:"relation,workspace"` // If non-empty, requests that Terraform should create a plan including // actions only for the given objects (specified using resource address // syntax) and the objects they depend on. // // This capability is provided for exceptional circumstances only, such as // recovering from mistakes or working around existing Terraform // limitations. Terraform will generally mention the -target command line // option in its error messages describing situations where setting this // argument may be appropriate. This argument should not be used as part // of routine workflow and Terraform will emit warnings reminding about // this whenever this property is set. TargetAddrs []string `jsonapi:"attr,target-addrs,omitempty"` // If non-empty, requests that Terraform create a plan that replaces // (destroys and then re-creates) the objects specified by the given // resource addresses. ReplaceAddrs []string `jsonapi:"attr,replace-addrs,omitempty"` // AutoApply determines if the run should be applied automatically without // user confirmation. It defaults to the Workspace.AutoApply setting. AutoApply *bool `jsonapi:"attr,auto-apply,omitempty"` }
RunCreateOptions represents the options for creating a new run.
type RunPermissions ¶
type RunPermissions struct { CanApply bool `json:"can-apply"` CanCancel bool `json:"can-cancel"` CanDiscard bool `json:"can-discard"` CanForceCancel bool `json:"can-force-cancel"` CanForceExecute bool `json:"can-force-execute"` }
RunPermissions represents the run permissions.
type RunStatusTimestamps ¶
type RunStatusTimestamps struct { AppliedAt *time.Time `json:"applied-at,omitempty"` ApplyQueuedAt *time.Time `json:"apply-queued-at,omitempty"` ApplyingAt *time.Time `json:"applying-at,omitempty"` CanceledAt *time.Time `json:"canceled-at,omitempty"` ConfirmedAt *time.Time `json:"confirmed-at,omitempty"` CostEstimatedAt *time.Time `json:"cost-estimated-at,omitempty"` CostEstimatingAt *time.Time `json:"cost-estimating-at,omitempty"` DiscardedAt *time.Time `json:"discarded-at,omitempty"` ErroredAt *time.Time `json:"errored-at,omitempty"` ForceCanceledAt *time.Time `json:"force-canceled-at,omitempty"` PlanQueueableAt *time.Time `json:"plan-queueable-at,omitempty"` PlanQueuedAt *time.Time `json:"plan-queued-at,omitempty"` PlannedAndFinishedAt *time.Time `json:"planned-and-finished-at,omitempty"` PlannedAt *time.Time `json:"planned-at,omitempty"` PlanningAt *time.Time `json:"planning-at,omitempty"` PolicyCheckedAt *time.Time `json:"policy-checked-at,omitempty"` PolicySoftFailedAt *time.Time `json:"policy-soft-failed-at,omitempty"` }
RunStatusTimestamps holds the timestamps for individual run statuses.
type StateVersion ¶
type StateVersion struct { ID string `jsonapi:"primary,state-versions"` CreatedAt time.Time `jsonapi:"attr,created-at,iso8601"` DownloadURL string `jsonapi:"attr,hosted-state-download-url"` Serial int64 `jsonapi:"attr,serial"` VCSCommitSHA string `jsonapi:"attr,vcs-commit-sha"` VCSCommitURL string `jsonapi:"attr,vcs-commit-url"` // Relations Run *Run `jsonapi:"relation,run"` Outputs []*StateVersionOutput `jsonapi:"relation,outputs"` }
StateVersion represents a Terraform Enterprise state version.
type StateVersionCreateOptions ¶
type StateVersionCreateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,state-versions"` // The lineage of the state. Lineage *string `jsonapi:"attr,lineage,omitempty"` // The MD5 hash of the state version. MD5 *string `jsonapi:"attr,md5"` // The serial of the state. Serial *int64 `jsonapi:"attr,serial"` // The base64 encoded state. State *string `jsonapi:"attr,state"` // Force can be set to skip certain validations. Wrong use of this flag can // cause data loss, so USE WITH CAUTION! Force *bool `jsonapi:"attr,force"` // Specifies the run to associate the state with. Run *Run `jsonapi:"relation,run,omitempty"` }
StateVersionCreateOptions represents the options for creating a state version.
type StateVersionList ¶
type StateVersionList struct { *Pagination Items []*StateVersion }
StateVersionList represents a list of state versions.
type StateVersionOutput ¶
type TwoFactor ¶
type TwoFactor struct { Enabled bool `jsonapi:"attr,enabled"` Verified bool `jsonapi:"attr,verified"` }
TwoFactor represents the organization permissions.
type User ¶
type User struct { ID string `jsonapi:"primary,users"` AvatarURL string `jsonapi:"attr,avatar-url"` Email string `jsonapi:"attr,email"` IsServiceAccount bool `jsonapi:"attr,is-service-account"` TwoFactor *TwoFactor `jsonapi:"attr,two-factor"` UnconfirmedEmail string `jsonapi:"attr,unconfirmed-email"` Username string `jsonapi:"attr,username"` V2Only bool `jsonapi:"attr,v2-only"` }
User represents a Terraform Enterprise user.
type VCSRepo ¶
type VCSRepo struct { Branch string `json:"branch"` DisplayIdentifier string `json:"display-identifier"` Identifier string `json:"identifier"` IngressSubmodules bool `json:"ingress-submodules"` OAuthTokenID string `json:"oauth-token-id"` RepositoryHTTPURL string `json:"repository-http-url"` ServiceProvider string `json:"service-provider"` }
VCSRepo contains the configuration of a VCS integration.
type VCSRepoOptions ¶
type VCSRepoOptions struct { Branch *string `json:"branch,omitempty"` Identifier *string `json:"identifier,omitempty"` IngressSubmodules *bool `json:"ingress-submodules,omitempty"` OAuthTokenID *string `json:"oauth-token-id,omitempty"` }
VCSRepoOptions is used by workspaces, policy sets, and registry modules VCSRepoOptions represents the configuration options of a VCS integration.
type Variable ¶ added in v0.0.20
type Variable struct { ID string `jsonapi:"primary,vars"` Key string `jsonapi:"attr,key"` Value string `jsonapi:"attr,value"` Description string `jsonapi:"attr,description"` Category string `jsonapi:"attr,category"` HCL bool `jsonapi:"attr,hcl"` Sensitive bool `jsonapi:"attr,sensitive"` // Relations Workspace *Workspace `jsonapi:"relation,configurable"` }
Variable represents a Terraform Enterprise variable.
type VariableCreateOptions ¶ added in v0.0.20
type VariableCreateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,vars"` // The name of the variable. Key *string `jsonapi:"attr,key"` // The value of the variable. Value *string `jsonapi:"attr,value,omitempty"` // The description of the variable. Description *string `jsonapi:"attr,description,omitempty"` // Whether this is a Terraform or environment variable. Category *string `jsonapi:"attr,category"` // Whether to evaluate the value of the variable as a string of HCL code. HCL *bool `jsonapi:"attr,hcl,omitempty"` // Whether the value is sensitive. Sensitive *bool `jsonapi:"attr,sensitive,omitempty"` }
VariableCreateOptions represents the options for creating a new variable.
type VariableList ¶ added in v0.0.20
type VariableList struct { *Pagination Items []*Variable }
VariableList represents a list of variables.
type VariableUpdateOptions ¶ added in v0.0.20
type VariableUpdateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,vars"` // The name of the variable. Key *string `jsonapi:"attr,key,omitempty"` // The value of the variable. Value *string `jsonapi:"attr,value,omitempty"` // The description of the variable. Description *string `jsonapi:"attr,description,omitempty"` // Whether this is a Terraform or environment variable. Category *string `jsonapi:"attr,category"` // Whether to evaluate the value of the variable as a string of HCL code. HCL *bool `jsonapi:"attr,hcl,omitempty"` // Whether the value is sensitive. Sensitive *bool `jsonapi:"attr,sensitive,omitempty"` }
VariableUpdateOptions represents the options for updating a variable.
type Workspace ¶
type Workspace struct { ID string `jsonapi:"primary,workspaces"` Actions *WorkspaceActions `jsonapi:"attr,actions"` AgentPoolID string `jsonapi:"attr,agent-pool-id"` AllowDestroyPlan bool `jsonapi:"attr,allow-destroy-plan"` AutoApply bool `jsonapi:"attr,auto-apply"` CanQueueDestroyPlan bool `jsonapi:"attr,can-queue-destroy-plan"` CreatedAt time.Time `jsonapi:"attr,created-at,iso8601"` Description string `jsonapi:"attr,description"` Environment string `jsonapi:"attr,environment"` ExecutionMode string `jsonapi:"attr,execution-mode"` FileTriggersEnabled bool `jsonapi:"attr,file-triggers-enabled"` GlobalRemoteState bool `jsonapi:"attr,global-remote-state"` Locked bool `jsonapi:"attr,locked"` MigrationEnvironment string `jsonapi:"attr,migration-environment"` Name string `jsonapi:"attr,name"` Operations bool `jsonapi:"attr,operations"` Permissions *WorkspacePermissions `jsonapi:"attr,permissions"` QueueAllRuns bool `jsonapi:"attr,queue-all-runs"` SpeculativeEnabled bool `jsonapi:"attr,speculative-enabled"` SourceName string `jsonapi:"attr,source-name"` SourceURL string `jsonapi:"attr,source-url"` StructuredRunOutputEnabled bool `jsonapi:"attr,structured-run-output-enabled"` TerraformVersion string `jsonapi:"attr,terraform-version"` TriggerPrefixes []string `jsonapi:"attr,trigger-prefixes"` VCSRepo *VCSRepo `jsonapi:"attr,vcs-repo"` WorkingDirectory string `jsonapi:"attr,working-directory"` UpdatedAt time.Time `jsonapi:"attr,updated-at,iso8601"` ResourceCount int `jsonapi:"attr,resource-count"` ApplyDurationAverage time.Duration `jsonapi:"attr,apply-duration-average"` PlanDurationAverage time.Duration `jsonapi:"attr,plan-duration-average"` PolicyCheckFailures int `jsonapi:"attr,policy-check-failures"` RunFailures int `jsonapi:"attr,run-failures"` RunsCount int `jsonapi:"attr,workspace-kpis-runs-count"` // Relations CurrentRun *Run `jsonapi:"relation,current-run"` Organization *Organization `jsonapi:"relation,organization"` }
Workspace represents a Terraform Enterprise workspace.
type WorkspaceActions ¶
type WorkspaceActions struct {
IsDestroyable bool `json:"is-destroyable"`
}
WorkspaceActions represents the workspace actions.
type WorkspaceCreateOptions ¶
type WorkspaceCreateOptions struct { // Type is a public field utilized by JSON:API to set the resource type via // the field tag. It is not a user-defined value and does not need to be // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,workspaces"` // Required when execution-mode is set to agent. The ID of the agent pool // belonging to the workspace's organization. This value must not be // specified if execution-mode is set to remote or local or if operations is // set to true. AgentPoolID *string `jsonapi:"attr,agent-pool-id,omitempty"` // Whether destroy plans can be queued on the workspace. AllowDestroyPlan *bool `jsonapi:"attr,allow-destroy-plan,omitempty"` // Whether to automatically apply changes when a Terraform plan is successful. AutoApply *bool `jsonapi:"attr,auto-apply,omitempty"` // A description for the workspace. Description *string `jsonapi:"attr,description,omitempty"` // Which execution mode to use. Valid values are remote, local, and agent. // When set to local, the workspace will be used for state storage only. // This value must not be specified if operations is specified. // 'agent' execution mode is not available in Terraform Enterprise. ExecutionMode *string `jsonapi:"attr,execution-mode,omitempty"` // Whether to filter runs based on the changed files in a VCS push. If // enabled, the working directory and trigger prefixes describe a set of // paths which must contain changes for a VCS push to trigger a run. If // disabled, any push will trigger a run. FileTriggersEnabled *bool `jsonapi:"attr,file-triggers-enabled,omitempty"` GlobalRemoteState *bool `jsonapi:"attr,global-remote-state,omitempty"` // The legacy TFE environment to use as the source of the migration, in the // form organization/environment. Omit this unless you are migrating a legacy // environment. MigrationEnvironment *string `jsonapi:"attr,migration-environment,omitempty"` // The name of the workspace, which can only include letters, numbers, -, // and _. This will be used as an identifier and must be unique in the // organization. Name *string `jsonapi:"attr,name"` // DEPRECATED. Whether the workspace will use remote or local execution mode. // Use ExecutionMode instead. Operations *bool `jsonapi:"attr,operations,omitempty"` // Organization the workspace belongs to. Required. Organization *string `schema:"organization_name"` // Whether to queue all runs. Unless this is set to true, runs triggered by // a webhook will not be queued until at least one run is manually queued. QueueAllRuns *bool `jsonapi:"attr,queue-all-runs,omitempty"` // Whether this workspace allows speculative plans. Setting this to false // prevents Terraform Cloud or the Terraform Enterprise instance from // running plans on pull requests, which can improve security if the VCS // repository is public or includes untrusted contributors. SpeculativeEnabled *bool `jsonapi:"attr,speculative-enabled,omitempty"` // BETA. A friendly name for the application or client creating this // workspace. If set, this will be displayed on the workspace as // "Created via <SOURCE NAME>". SourceName *string `jsonapi:"attr,source-name,omitempty"` // BETA. A URL for the application or client creating this workspace. This // can be the URL of a related resource in another app, or a link to // documentation or other info about the client. SourceURL *string `jsonapi:"attr,source-url,omitempty"` // BETA. Enable the experimental advanced run user interface. // This only applies to runs using Terraform version 0.15.2 or newer, // and runs executed using older versions will see the classic experience // regardless of this setting. StructuredRunOutputEnabled *bool `jsonapi:"attr,structured-run-output-enabled,omitempty"` // The version of Terraform to use for this workspace. Upon creating a // workspace, the latest version is selected unless otherwise specified. TerraformVersion *string `jsonapi:"attr,terraform-version,omitempty" schema:"terraform_version"` // List of repository-root-relative paths which list all locations to be // tracked for changes. See FileTriggersEnabled above for more details. TriggerPrefixes []string `jsonapi:"attr,trigger-prefixes,omitempty"` // Settings for the workspace's VCS repository. If omitted, the workspace is // created without a VCS repo. If included, you must specify at least the // oauth-token-id and identifier keys below. VCSRepo *VCSRepoOptions `jsonapi:"attr,vcs-repo,omitempty"` // A relative path that Terraform will execute within. This defaults to the // root of your repository and is typically set to a subdirectory matching the // environment when multiple environments exist within the same repository. WorkingDirectory *string `jsonapi:"attr,working-directory,omitempty"` }
WorkspaceCreateOptions represents the options for creating a new workspace.
func (*WorkspaceCreateOptions) Validate ¶
func (opts *WorkspaceCreateOptions) Validate() error
type WorkspaceList ¶
type WorkspaceList struct { *Pagination Items []*Workspace }
WorkspaceList represents a list of workspaces.
type WorkspacePermissions ¶
type WorkspacePermissions struct { CanDestroy bool `json:"can-destroy"` CanForceUnlock bool `json:"can-force-unlock"` CanLock bool `json:"can-lock"` CanQueueApply bool `json:"can-queue-apply"` CanQueueDestroy bool `json:"can-queue-destroy"` CanQueueRun bool `json:"can-queue-run"` CanReadSettings bool `json:"can-read-settings"` CanUnlock bool `json:"can-unlock"` CanUpdate bool `json:"can-update"` CanUpdateVariable bool `json:"can-update-variable"` }
WorkspacePermissions represents the workspace permissions.
type WorkspaceUpdateOptions ¶
type WorkspaceUpdateOptions struct { // Type is a public field utilized by JSON:API to set the resource type via // the field tag. It is not a user-defined value and does not need to be // set. https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,workspaces"` // Required when execution-mode is set to agent. The ID of the agent pool // belonging to the workspace's organization. This value must not be // specified if execution-mode is set to remote or local or if operations is // set to true. AgentPoolID *string `jsonapi:"attr,agent-pool-id,omitempty"` // Whether destroy plans can be queued on the workspace. AllowDestroyPlan *bool `jsonapi:"attr,allow-destroy-plan,omitempty"` // Whether to automatically apply changes when a Terraform plan is successful. AutoApply *bool `jsonapi:"attr,auto-apply,omitempty"` // A new name for the workspace, which can only include letters, numbers, -, // and _. This will be used as an identifier and must be unique in the // organization. Warning: Changing a workspace's name changes its URL in the // API and UI. Name *string `jsonapi:"attr,name,omitempty"` // A description for the workspace. Description *string `jsonapi:"attr,description,omitempty"` // Which execution mode to use. Valid values are remote, local, and agent. // When set to local, the workspace will be used for state storage only. // This value must not be specified if operations is specified. // 'agent' execution mode is not available in Terraform Enterprise. ExecutionMode *string `jsonapi:"attr,execution-mode,omitempty" schema:"execution_mode"` // Whether to filter runs based on the changed files in a VCS push. If // enabled, the working directory and trigger prefixes describe a set of // paths which must contain changes for a VCS push to trigger a run. If // disabled, any push will trigger a run. FileTriggersEnabled *bool `jsonapi:"attr,file-triggers-enabled,omitempty"` GlobalRemoteState *bool `jsonapi:"attr,global-remote-state,omitempty"` // DEPRECATED. Whether the workspace will use remote or local execution mode. // Use ExecutionMode instead. Operations *bool `jsonapi:"attr,operations,omitempty"` // Whether to queue all runs. Unless this is set to true, runs triggered by // a webhook will not be queued until at least one run is manually queued. QueueAllRuns *bool `jsonapi:"attr,queue-all-runs,omitempty"` // Whether this workspace allows speculative plans. Setting this to false // prevents Terraform Cloud or the Terraform Enterprise instance from // running plans on pull requests, which can improve security if the VCS // repository is public or includes untrusted contributors. SpeculativeEnabled *bool `jsonapi:"attr,speculative-enabled,omitempty"` // BETA. Enable the experimental advanced run user interface. // This only applies to runs using Terraform version 0.15.2 or newer, // and runs executed using older versions will see the classic experience // regardless of this setting. StructuredRunOutputEnabled *bool `jsonapi:"attr,structured-run-output-enabled,omitempty"` // The version of Terraform to use for this workspace. TerraformVersion *string `jsonapi:"attr,terraform-version,omitempty" schema:"terraform_version"` // List of repository-root-relative paths which list all locations to be // tracked for changes. See FileTriggersEnabled above for more details. TriggerPrefixes []string `jsonapi:"attr,trigger-prefixes,omitempty"` // To delete a workspace's existing VCS repo, specify null instead of an // object. To modify a workspace's existing VCS repo, include whichever of // the keys below you wish to modify. To add a new VCS repo to a workspace // that didn't previously have one, include at least the oauth-token-id and // identifier keys. VCSRepo *VCSRepoOptions `jsonapi:"attr,vcs-repo,omitempty"` // A relative path that Terraform will execute within. This defaults to the // root of your repository and is typically set to a subdirectory matching // the environment when multiple environments exist within the same // repository. WorkingDirectory *string `jsonapi:"attr,working-directory,omitempty"` }
WorkspaceUpdateOptions represents the options for updating a workspace.
func (*WorkspaceUpdateOptions) Validate ¶
func (opts *WorkspaceUpdateOptions) Validate() error