Documentation
¶
Index ¶
- Constants
- Variables
- func BitmapToWeekdays(bitmap uint8) []string
- func DefaultCacheDir() string
- func DeploymentOptionsWithoutSecrets(set clibase.OptionSet) clibase.OptionSet
- func IsConnectionError(err error) bool
- func IsSecretDeploymentOption(opt clibase.Option) bool
- func IsWorkspaceProxies(opt clibase.Option) bool
- func JobIsMissingParameterErrorCode(code JobErrorCode) bool
- func ParseSSHConfigOption(opt string) (key string, value string, err error)
- func ReadBodyAsError(res *http.Response) error
- func ServerSentEventReader(ctx context.Context, rc io.ReadCloser) func() (*ServerSentEvent, error)
- func TimezoneOffsetHour(loc *time.Location) int
- func ValidateNewWorkspaceParameters(richParameters []TemplateVersionParameter, ...) error
- func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, ...) error
- func ValidateWorkspaceBuildParameters(richParameters []TemplateVersionParameter, ...) error
- func WeekdaysToBitmap(days []string) (uint8, error)
- func WorkspaceDisplayStatus(jobStatus ProvisionerJobStatus, transition WorkspaceTransition) string
- func WorkspaceNotifyChannel(id uuid.UUID) string
- type ACLAvailable
- type APIKey
- type APIKeyScope
- type APIKeyWithOwner
- type AddLicenseRequest
- type AgentStatsReportRequest
- type AgentStatsReportResponse
- type AgentSubsystem
- type AppHostResponse
- type AppearanceConfig
- type ArchiveTemplateVersionsRequest
- type ArchiveTemplateVersionsResponse
- type AssignableRoles
- type AuditAction
- type AuditDiff
- type AuditDiffField
- type AuditLog
- type AuditLogResponse
- type AuditLogsRequest
- type AuthMethod
- type AuthMethods
- type AuthorizationCheck
- type AuthorizationObject
- type AuthorizationRequest
- type AuthorizationResponse
- type AutomaticUpdates
- type AvailableExperiments
- type BuildInfoResponse
- type BuildReason
- type Client
- func (c *Client) APIKeyByID(ctx context.Context, userID string, id string) (*APIKey, error)
- func (c *Client) APIKeyByName(ctx context.Context, userID string, name string) (*APIKey, error)
- func (c *Client) AddLicense(ctx context.Context, r AddLicenseRequest) (License, error)
- func (c *Client) AppHost(ctx context.Context) (AppHostResponse, error)
- func (c *Client) Appearance(ctx context.Context) (AppearanceConfig, error)
- func (c *Client) ArchiveTemplateVersions(ctx context.Context, template uuid.UUID, all bool) (ArchiveTemplateVersionsResponse, error)
- func (c *Client) AuditLogs(ctx context.Context, req AuditLogsRequest) (AuditLogResponse, error)
- func (c *Client) AuthCheck(ctx context.Context, req AuthorizationRequest) (AuthorizationResponse, error)
- func (c *Client) AuthMethods(ctx context.Context) (AuthMethods, error)
- func (c *Client) BuildInfo(ctx context.Context) (BuildInfoResponse, error)
- func (c *Client) CancelTemplateVersion(ctx context.Context, version uuid.UUID) error
- func (c *Client) CancelTemplateVersionDryRun(ctx context.Context, version, job uuid.UUID) error
- func (c *Client) CancelWorkspaceBuild(ctx context.Context, id uuid.UUID) error
- func (c *Client) ConvertLoginType(ctx context.Context, req ConvertLoginRequest) (OAuthConversionResponse, error)
- func (c *Client) CreateAPIKey(ctx context.Context, user string) (GenerateAPIKeyResponse, error)
- func (c *Client) CreateFirstUser(ctx context.Context, req CreateFirstUserRequest) (CreateFirstUserResponse, error)
- func (c *Client) CreateGroup(ctx context.Context, orgID uuid.UUID, req CreateGroupRequest) (Group, error)
- func (c *Client) CreateOrganization(ctx context.Context, req CreateOrganizationRequest) (Organization, error)
- func (c *Client) CreateTemplate(ctx context.Context, organizationID uuid.UUID, request CreateTemplateRequest) (Template, error)
- func (c *Client) CreateTemplateVersion(ctx context.Context, organizationID uuid.UUID, ...) (TemplateVersion, error)
- func (c *Client) CreateTemplateVersionDryRun(ctx context.Context, version uuid.UUID, req CreateTemplateVersionDryRunRequest) (ProvisionerJob, error)
- func (c *Client) CreateTestAuditLog(ctx context.Context, req CreateTestAuditLogRequest) error
- func (c *Client) CreateToken(ctx context.Context, userID string, req CreateTokenRequest) (GenerateAPIKeyResponse, error)
- func (c *Client) CreateUser(ctx context.Context, req CreateUserRequest) (User, error)
- func (c *Client) CreateWorkspace(ctx context.Context, organizationID uuid.UUID, user string, ...) (Workspace, error)
- func (c *Client) CreateWorkspaceBuild(ctx context.Context, workspace uuid.UUID, request CreateWorkspaceBuildRequest) (WorkspaceBuild, error)
- func (c *Client) CreateWorkspaceProxy(ctx context.Context, req CreateWorkspaceProxyRequest) (UpdateWorkspaceProxyResponse, error)
- func (c *Client) DeleteAPIKey(ctx context.Context, userID string, id string) error
- func (c *Client) DeleteGroup(ctx context.Context, group uuid.UUID) error
- func (c *Client) DeleteLicense(ctx context.Context, id int32) error
- func (c *Client) DeleteTemplate(ctx context.Context, template uuid.UUID) error
- func (c *Client) DeleteUser(ctx context.Context, id uuid.UUID) error
- func (c *Client) DeleteWorkspaceProxyByID(ctx context.Context, id uuid.UUID) error
- func (c *Client) DeleteWorkspaceProxyByName(ctx context.Context, name string) error
- func (c *Client) DeletedWorkspace(ctx context.Context, id uuid.UUID) (Workspace, error)
- func (c *Client) DeploymentConfig(ctx context.Context) (*DeploymentConfig, error)
- func (c *Client) DeploymentDAUs(ctx context.Context, tzOffset int) (*DAUsResponse, error)
- func (c *Client) DeploymentDAUsLocalTZ(ctx context.Context) (*DAUsResponse, error)
- func (c *Client) DeploymentStats(ctx context.Context) (DeploymentStats, error)
- func (c *Client) DialWorkspaceAgent(ctx context.Context, agentID uuid.UUID, options *DialWorkspaceAgentOptions) (agentConn *WorkspaceAgentConn, err error)
- func (c *Client) Download(ctx context.Context, id uuid.UUID) ([]byte, string, error)
- func (c *Client) Entitlements(ctx context.Context) (Entitlements, error)
- func (c *Client) Experiments(ctx context.Context) (Experiments, error)
- func (c *Client) ExternalAuthByID(ctx context.Context, provider string) (ExternalAuth, error)
- func (c *Client) ExternalAuthDeviceByID(ctx context.Context, provider string) (ExternalAuthDevice, error)
- func (c *Client) ExternalAuthDeviceExchange(ctx context.Context, provider string, req ExternalAuthDeviceExchange) error
- func (c *Client) GetTokenConfig(ctx context.Context, userID string) (TokenConfig, error)
- func (c *Client) GitSSHKey(ctx context.Context, user string) (GitSSHKey, error)
- func (c *Client) Group(ctx context.Context, group uuid.UUID) (Group, error)
- func (c *Client) GroupByOrgAndName(ctx context.Context, orgID uuid.UUID, name string) (Group, error)
- func (c *Client) GroupsByOrganization(ctx context.Context, orgID uuid.UUID) ([]Group, error)
- func (c *Client) HasFirstUser(ctx context.Context) (bool, error)
- func (c *Client) IssueReconnectingPTYSignedToken(ctx context.Context, req IssueReconnectingPTYSignedTokenRequest) (IssueReconnectingPTYSignedTokenResponse, error)
- func (c *Client) Licenses(ctx context.Context) ([]License, error)
- func (c *Client) ListOrganizationRoles(ctx context.Context, org uuid.UUID) ([]AssignableRoles, error)
- func (c *Client) ListSiteRoles(ctx context.Context) ([]AssignableRoles, error)
- func (c *Client) LogBodies() bool
- func (c *Client) Logger() slog.Logger
- func (c *Client) LoginWithPassword(ctx context.Context, req LoginWithPasswordRequest) (LoginWithPasswordResponse, error)
- func (c *Client) Logout(ctx context.Context) error
- func (c *Client) Organization(ctx context.Context, id uuid.UUID) (Organization, error)
- func (c *Client) OrganizationByName(ctx context.Context, user string, name string) (Organization, error)
- func (c *Client) OrganizationsByUser(ctx context.Context, user string) ([]Organization, error)
- func (c *Client) PatchGroup(ctx context.Context, group uuid.UUID, req PatchGroupRequest) (Group, error)
- func (c *Client) PatchWorkspaceProxy(ctx context.Context, req PatchWorkspaceProxy) (UpdateWorkspaceProxyResponse, error)
- func (c *Client) PreviousTemplateVersion(ctx context.Context, organization uuid.UUID, templateName, versionName string) (TemplateVersion, error)
- func (c *Client) ProvisionerDaemons(ctx context.Context) ([]ProvisionerDaemon, error)deprecated
- func (c *Client) PutExtendWorkspace(ctx context.Context, id uuid.UUID, req PutExtendWorkspaceRequest) error
- func (c *Client) RegenerateGitSSHKey(ctx context.Context, user string) (GitSSHKey, error)
- func (c *Client) Regions(ctx context.Context) ([]Region, error)
- func (c *Client) Replicas(ctx context.Context) ([]Replica, error)
- func (c *Client) Request(ctx context.Context, method, path string, body interface{}, ...) (*http.Response, error)
- func (c *Client) ResolveAutostart(ctx context.Context, workspaceID string) (ResolveAutostartResponse, error)
- func (c *Client) SSHConfiguration(ctx context.Context) (SSHConfigResponse, error)
- func (c *Client) SafeExperiments(ctx context.Context) (AvailableExperiments, error)
- func (c *Client) ServeProvisionerDaemon(ctx context.Context, req ServeProvisionerDaemonRequest) (proto.DRPCProvisionerDaemonClient, error)
- func (c *Client) SessionToken() string
- func (c *Client) SetArchiveTemplateVersion(ctx context.Context, templateVersion uuid.UUID, archive bool) error
- func (c *Client) SetLogBodies(logBodies bool)
- func (c *Client) SetLogger(logger slog.Logger)
- func (c *Client) SetSessionToken(token string)
- func (c *Client) Template(ctx context.Context, template uuid.UUID) (Template, error)
- func (c *Client) TemplateACL(ctx context.Context, templateID uuid.UUID) (TemplateACL, error)
- func (c *Client) TemplateACLAvailable(ctx context.Context, templateID uuid.UUID) (ACLAvailable, error)
- func (c *Client) TemplateByName(ctx context.Context, organizationID uuid.UUID, name string) (Template, error)
- func (c *Client) TemplateDAUs(ctx context.Context, templateID uuid.UUID, tzOffset int) (*DAUsResponse, error)
- func (c *Client) TemplateDAUsLocalTZ(ctx context.Context, templateID uuid.UUID) (*DAUsResponse, error)
- func (c *Client) TemplateExamples(ctx context.Context, organizationID uuid.UUID) ([]TemplateExample, error)
- func (c *Client) TemplateInsights(ctx context.Context, req TemplateInsightsRequest) (TemplateInsightsResponse, error)
- func (c *Client) TemplateVersion(ctx context.Context, id uuid.UUID) (TemplateVersion, error)
- func (c *Client) TemplateVersionByName(ctx context.Context, template uuid.UUID, name string) (TemplateVersion, error)
- func (c *Client) TemplateVersionByOrganizationAndName(ctx context.Context, organizationID uuid.UUID, ...) (TemplateVersion, error)
- func (c *Client) TemplateVersionDryRun(ctx context.Context, version, job uuid.UUID) (ProvisionerJob, error)
- func (c *Client) TemplateVersionDryRunLogsAfter(ctx context.Context, version, job uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
- func (c *Client) TemplateVersionDryRunResources(ctx context.Context, version, job uuid.UUID) ([]WorkspaceResource, error)
- func (c *Client) TemplateVersionExternalAuth(ctx context.Context, version uuid.UUID) ([]TemplateVersionExternalAuth, error)
- func (c *Client) TemplateVersionLogsAfter(ctx context.Context, version uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
- func (c *Client) TemplateVersionResources(ctx context.Context, version uuid.UUID) ([]WorkspaceResource, error)
- func (c *Client) TemplateVersionRichParameters(ctx context.Context, version uuid.UUID) ([]TemplateVersionParameter, error)
- func (c *Client) TemplateVersionVariables(ctx context.Context, version uuid.UUID) ([]TemplateVersionVariable, error)
- func (c *Client) TemplateVersionsByTemplate(ctx context.Context, req TemplateVersionsByTemplateRequest) ([]TemplateVersion, error)
- func (c *Client) TemplatesByOrganization(ctx context.Context, organizationID uuid.UUID) ([]Template, error)
- func (c *Client) Tokens(ctx context.Context, userID string, filter TokensFilter) ([]APIKeyWithOwner, error)
- func (c *Client) UpdateActiveTemplateVersion(ctx context.Context, template uuid.UUID, req UpdateActiveTemplateVersion) error
- func (c *Client) UpdateAppearance(ctx context.Context, appearance UpdateAppearanceConfig) error
- func (c *Client) UpdateCheck(ctx context.Context) (UpdateCheckResponse, error)
- func (c *Client) UpdateOrganizationMemberRoles(ctx context.Context, organizationID uuid.UUID, user string, req UpdateRoles) (OrganizationMember, error)
- func (c *Client) UpdateTemplateACL(ctx context.Context, templateID uuid.UUID, req UpdateTemplateACL) error
- func (c *Client) UpdateTemplateMeta(ctx context.Context, templateID uuid.UUID, req UpdateTemplateMeta) (Template, error)
- func (c *Client) UpdateTemplateVersion(ctx context.Context, versionID uuid.UUID, req PatchTemplateVersionRequest) (TemplateVersion, error)
- func (c *Client) UpdateUserPassword(ctx context.Context, user string, req UpdateUserPasswordRequest) error
- func (c *Client) UpdateUserProfile(ctx context.Context, user string, req UpdateUserProfileRequest) (User, error)
- func (c *Client) UpdateUserQuietHoursSchedule(ctx context.Context, userIdent string, req UpdateUserQuietHoursScheduleRequest) (UserQuietHoursScheduleResponse, error)
- func (c *Client) UpdateUserRoles(ctx context.Context, user string, req UpdateRoles) (User, error)
- func (c *Client) UpdateUserStatus(ctx context.Context, user string, status UserStatus) (User, error)
- func (c *Client) UpdateWorkspace(ctx context.Context, id uuid.UUID, req UpdateWorkspaceRequest) error
- func (c *Client) UpdateWorkspaceAutomaticUpdates(ctx context.Context, id uuid.UUID, req UpdateWorkspaceAutomaticUpdatesRequest) error
- func (c *Client) UpdateWorkspaceAutostart(ctx context.Context, id uuid.UUID, req UpdateWorkspaceAutostartRequest) error
- func (c *Client) UpdateWorkspaceDormancy(ctx context.Context, id uuid.UUID, req UpdateWorkspaceDormancy) error
- func (c *Client) UpdateWorkspaceTTL(ctx context.Context, id uuid.UUID, req UpdateWorkspaceTTLRequest) error
- func (c *Client) Upload(ctx context.Context, contentType string, rd io.Reader) (UploadResponse, error)
- func (c *Client) User(ctx context.Context, userIdent string) (User, error)
- func (c *Client) UserActivityInsights(ctx context.Context, req UserActivityInsightsRequest) (UserActivityInsightsResponse, error)
- func (c *Client) UserLatencyInsights(ctx context.Context, req UserLatencyInsightsRequest) (UserLatencyInsightsResponse, error)
- func (c *Client) UserQuietHoursSchedule(ctx context.Context, userIdent string) (UserQuietHoursScheduleResponse, error)
- func (c *Client) UserRoles(ctx context.Context, user string) (UserRoles, error)
- func (c *Client) Users(ctx context.Context, req UsersRequest) (GetUsersResponse, error)
- func (c *Client) WatchWorkspace(ctx context.Context, id uuid.UUID) (<-chan Workspace, error)
- func (c *Client) WatchWorkspaceAgentMetadata(ctx context.Context, id uuid.UUID) (<-chan []WorkspaceAgentMetadata, <-chan error)
- func (c *Client) Workspace(ctx context.Context, id uuid.UUID) (Workspace, error)
- func (c *Client) WorkspaceAgent(ctx context.Context, id uuid.UUID) (WorkspaceAgent, error)
- func (c *Client) WorkspaceAgentConnectionInfo(ctx context.Context, agentID uuid.UUID) (WorkspaceAgentConnectionInfo, error)
- func (c *Client) WorkspaceAgentConnectionInfoGeneric(ctx context.Context) (WorkspaceAgentConnectionInfo, error)
- func (c *Client) WorkspaceAgentListeningPorts(ctx context.Context, agentID uuid.UUID) (WorkspaceAgentListeningPortsResponse, error)
- func (c *Client) WorkspaceAgentLogsAfter(ctx context.Context, agentID uuid.UUID, after int64, follow bool) (<-chan []WorkspaceAgentLog, io.Closer, error)
- func (c *Client) WorkspaceAgentReconnectingPTY(ctx context.Context, opts WorkspaceAgentReconnectingPTYOpts) (net.Conn, error)
- func (c *Client) WorkspaceBuild(ctx context.Context, id uuid.UUID) (WorkspaceBuild, error)
- func (c *Client) WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber(ctx context.Context, username string, workspaceName string, buildNumber string) (WorkspaceBuild, error)
- func (c *Client) WorkspaceBuildLogsAfter(ctx context.Context, build uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
- func (c *Client) WorkspaceBuildParameters(ctx context.Context, build uuid.UUID) ([]WorkspaceBuildParameter, error)
- func (c *Client) WorkspaceBuildState(ctx context.Context, build uuid.UUID) ([]byte, error)
- func (c *Client) WorkspaceBuilds(ctx context.Context, req WorkspaceBuildsRequest) ([]WorkspaceBuild, error)
- func (c *Client) WorkspaceByOwnerAndName(ctx context.Context, owner string, name string, params WorkspaceOptions) (Workspace, error)
- func (c *Client) WorkspaceProxies(ctx context.Context) (RegionsResponse[WorkspaceProxy], error)
- func (c *Client) WorkspaceProxyByID(ctx context.Context, id uuid.UUID) (WorkspaceProxy, error)
- func (c *Client) WorkspaceProxyByName(ctx context.Context, name string) (WorkspaceProxy, error)
- func (c *Client) WorkspaceQuota(ctx context.Context, userID string) (WorkspaceQuota, error)
- func (c *Client) Workspaces(ctx context.Context, filter WorkspaceFilter) (WorkspacesResponse, error)
- type ConnectionLatency
- type ConvertLoginRequest
- type CreateFirstUserRequest
- type CreateFirstUserResponse
- type CreateGroupRequest
- type CreateOrganizationRequest
- type CreateTemplateRequest
- type CreateTemplateVersionDryRunRequest
- type CreateTemplateVersionRequest
- type CreateTestAuditLogRequest
- type CreateTokenRequest
- type CreateUserRequest
- type CreateWorkspaceBuildRequest
- type CreateWorkspaceProxyRequest
- type CreateWorkspaceRequest
- type DAUEntry
- type DAURequest
- type DAUsResponse
- type DERP
- type DERPConfig
- type DERPRegion
- type DERPServerConfig
- type DangerousConfig
- type DeploymentConfig
- type DeploymentStats
- type DeploymentValues
- type DialWorkspaceAgentOptions
- type DisplayApp
- type EnhancedExternalAuthProvider
- type Entitlement
- type Entitlements
- type Error
- type Experiment
- type Experiments
- type ExternalAuth
- type ExternalAuthAppInstallation
- type ExternalAuthConfig
- type ExternalAuthDevice
- type ExternalAuthDeviceExchange
- type ExternalAuthUser
- type Feature
- type FeatureName
- type GenerateAPIKeyResponse
- type GetUsersResponse
- type GitSSHKey
- type Group
- type GroupSource
- type Healthcheck
- type HealthcheckConfig
- type InsightsReportInterval
- type IssueReconnectingPTYSignedTokenRequest
- type IssueReconnectingPTYSignedTokenResponse
- type JobErrorCode
- type License
- type LinkConfig
- type LogLevel
- type LogSource
- type LoggingConfig
- type LoginType
- type LoginWithPasswordRequest
- type LoginWithPasswordResponse
- type MinimalUser
- type NullTime
- type OAuth2Config
- type OAuth2GithubConfig
- type OAuthConversionResponse
- type OIDCAuthMethod
- type OIDCConfig
- type Organization
- type OrganizationMember
- type Pagination
- type ParameterResolver
- type PatchGroupRequest
- type PatchTemplateVersionRequest
- type PatchWorkspaceProxy
- type PprofConfig
- type PrometheusConfig
- type ProvisionerConfig
- type ProvisionerDaemon
- type ProvisionerJob
- type ProvisionerJobLog
- type ProvisionerJobStatus
- type ProvisionerLogLevel
- type ProvisionerStorageMethod
- type ProvisionerType
- type ProxyHealthReport
- type ProxyHealthStatus
- type PutExtendWorkspaceRequest
- type RBACResource
- type RateLimitConfig
- type ReconnectingPTYRequest
- type Region
- type RegionTypes
- type RegionsResponse
- type Replica
- type RequestOption
- type ResolveAutostartResponse
- type ResourceType
- type Response
- type Role
- type SSHConfig
- type SSHConfigResponse
- type ServeProvisionerDaemonRequest
- type ServerSentEvent
- type ServerSentEventType
- type ServiceBannerConfig
- type SessionCountDeploymentStats
- type SupportConfig
- type SwaggerConfig
- type TLSConfig
- type TelemetryConfig
- type Template
- type TemplateACL
- type TemplateAppUsage
- type TemplateAppsType
- type TemplateAutostartRequirement
- type TemplateAutostopRequirement
- type TemplateBuildTimeStats
- type TemplateExample
- type TemplateGroup
- type TemplateInsightsIntervalReport
- type TemplateInsightsReport
- type TemplateInsightsRequest
- type TemplateInsightsResponse
- type TemplateInsightsSection
- type TemplateParameterUsage
- type TemplateParameterValue
- type TemplateRole
- type TemplateUser
- type TemplateVersion
- type TemplateVersionExternalAuth
- type TemplateVersionParameter
- type TemplateVersionParameterOption
- type TemplateVersionVariable
- type TemplateVersionWarning
- type TemplateVersionsByTemplateRequest
- type TokenConfig
- type TokensFilter
- type TraceConfig
- type TransitionStats
- type UpdateActiveTemplateVersion
- type UpdateAppearanceConfig
- type UpdateCheckResponse
- type UpdateRoles
- type UpdateTemplateACL
- type UpdateTemplateMeta
- type UpdateUserPasswordRequest
- type UpdateUserProfileRequest
- type UpdateUserQuietHoursScheduleRequest
- type UpdateWorkspaceAutomaticUpdatesRequest
- type UpdateWorkspaceAutostartRequest
- type UpdateWorkspaceDormancy
- type UpdateWorkspaceProxyResponse
- type UpdateWorkspaceRequest
- type UpdateWorkspaceTTLRequest
- type UploadResponse
- type User
- type UserActivity
- type UserActivityInsightsReport
- type UserActivityInsightsRequest
- type UserActivityInsightsResponse
- type UserLatency
- type UserLatencyInsightsReport
- type UserLatencyInsightsRequest
- type UserLatencyInsightsResponse
- type UserLoginType
- type UserQuietHoursScheduleConfig
- type UserQuietHoursScheduleResponse
- type UserRoles
- type UserStatus
- type UsersRequest
- type ValidationError
- type ValidationMonotonicOrder
- type VariableValue
- type Workspace
- type WorkspaceAgent
- type WorkspaceAgentConn
- func (c *WorkspaceAgentConn) AwaitReachable(ctx context.Context) bool
- func (c *WorkspaceAgentConn) Close() error
- func (c *WorkspaceAgentConn) DialContext(ctx context.Context, network string, addr string) (net.Conn, error)
- func (c *WorkspaceAgentConn) ListeningPorts(ctx context.Context) (WorkspaceAgentListeningPortsResponse, error)
- func (c *WorkspaceAgentConn) Ping(ctx context.Context) (time.Duration, bool, *ipnstate.PingResult, error)
- func (c *WorkspaceAgentConn) ReconnectingPTY(ctx context.Context, id uuid.UUID, height, width uint16, command string) (net.Conn, error)
- func (c *WorkspaceAgentConn) SSH(ctx context.Context) (*gonet.TCPConn, error)
- func (c *WorkspaceAgentConn) SSHClient(ctx context.Context) (*ssh.Client, error)
- func (c *WorkspaceAgentConn) Speedtest(ctx context.Context, direction speedtest.Direction, duration time.Duration) ([]speedtest.Result, error)
- type WorkspaceAgentConnOptions
- type WorkspaceAgentConnectionInfo
- type WorkspaceAgentHealth
- type WorkspaceAgentLifecycle
- type WorkspaceAgentListeningPort
- type WorkspaceAgentListeningPortsResponse
- type WorkspaceAgentLog
- type WorkspaceAgentLogSource
- type WorkspaceAgentMetadata
- type WorkspaceAgentMetadataDescription
- type WorkspaceAgentMetadataResult
- type WorkspaceAgentReconnectingPTYInit
- type WorkspaceAgentReconnectingPTYOpts
- type WorkspaceAgentScript
- type WorkspaceAgentStartupScriptBehavior
- type WorkspaceAgentStatus
- type WorkspaceApp
- type WorkspaceAppHealth
- type WorkspaceAppSharingLevel
- type WorkspaceBuild
- type WorkspaceBuildParameter
- type WorkspaceBuildsRequest
- type WorkspaceConnectionLatencyMS
- type WorkspaceDeploymentStats
- type WorkspaceFilter
- type WorkspaceHealth
- type WorkspaceOptions
- type WorkspaceProxy
- type WorkspaceProxyBuildInfo
- type WorkspaceProxyStatus
- type WorkspaceQuota
- type WorkspaceResource
- type WorkspaceResourceMetadata
- type WorkspaceStatus
- type WorkspaceTransition
- type WorkspacesRequest
- type WorkspacesResponse
Constants ¶
const ( // SessionTokenCookie represents the name of the cookie or query parameter the API key is stored in. SessionTokenCookie = "coder_session_token" // SessionTokenHeader is the custom header to use for authentication. SessionTokenHeader = "Coder-Session-Token" // OAuth2StateCookie is the name of the cookie that stores the oauth2 state. OAuth2StateCookie = "oauth_state" // OAuth2RedirectCookie is the name of the cookie that stores the oauth2 redirect. OAuth2RedirectCookie = "oauth_redirect" // PathAppSessionTokenCookie is the name of the cookie that stores an // application-scoped API token on workspace proxy path app domains. //nolint:gosec PathAppSessionTokenCookie = "coder_path_app_session_token" // SubdomainAppSessionTokenCookie is the name of the cookie that stores an // application-scoped API token on subdomain app domains (both the primary // and proxies). //nolint:gosec SubdomainAppSessionTokenCookie = "coder_subdomain_app_session_token" // SignedAppTokenCookie is the name of the cookie that stores a temporary // JWT that can be used to authenticate instead of the app session token. //nolint:gosec SignedAppTokenCookie = "coder_signed_app_token" // SignedAppTokenQueryParameter is the name of the query parameter that // stores a temporary JWT that can be used to authenticate instead of the // session token. This is only acceptable on reconnecting-pty requests, not // apps. // // It has a random suffix to avoid conflict with user query parameters on // apps. //nolint:gosec SignedAppTokenQueryParameter = "coder_signed_app_token_23db1dde" // BypassRatelimitHeader is the custom header to use to bypass ratelimits. // Only owners can bypass rate limits. This is typically used for scale testing. // nolint: gosec BypassRatelimitHeader = "X-Coder-Bypass-Ratelimit" // CLITelemetryHeader contains a base64-encoded representation of the CLI // command that was invoked to produce the request. It is for internal use // only. CLITelemetryHeader = "Coder-CLI-Telemetry" // ProvisionerDaemonPSK contains the authentication pre-shared key for an external provisioner daemon ProvisionerDaemonPSK = "Coder-Provisioner-Daemon-PSK" )
These cookies are Coder-specific. If a new one is added or changed, the name shouldn't be likely to conflict with any user-application set cookies. Be sure to strip additional cookies in httpapi.StripCoderCookies!
const ( TemplateBuiltinAppDisplayNameVSCode string = "Visual Studio Code" TemplateBuiltinAppDisplayNameJetBrains string = "JetBrains" TemplateBuiltinAppDisplayNameWebTerminal string = "Web Terminal" TemplateBuiltinAppDisplayNameSSH string = "SSH" )
Enums define the display name of the builtin app reported.
const ( LogSourceProvisionerDaemon LogSource = "provisioner_daemon" LogSourceProvisioner LogSource = "provisioner" LogLevelTrace LogLevel = "trace" LogLevelDebug LogLevel = "debug" LogLevelInfo LogLevel = "info" LogLevelWarn LogLevel = "warn" LogLevelError LogLevel = "error" )
const ( ActionCreate = "create" ActionRead = "read" ActionUpdate = "update" ActionDelete = "delete" )
const ( WorkspaceAgentSSHPort = tailnet.WorkspaceAgentSSHPort WorkspaceAgentReconnectingPTYPort = tailnet.WorkspaceAgentReconnectingPTYPort WorkspaceAgentSpeedtestPort = tailnet.WorkspaceAgentSpeedtestPort // WorkspaceAgentHTTPAPIServerPort serves a HTTP server with endpoints for e.g. // gathering agent statistics. WorkspaceAgentHTTPAPIServerPort = 4 // WorkspaceAgentMinimumListeningPort is the minimum port that the listening-ports // endpoint will return to the client, and the minimum port that is accepted // by the proxy applications endpoint. Coder consumes ports 1-4 at the // moment, and we reserve some extra ports for future use. Port 9 and up are // available for the user. // // This is not enforced in the CLI intentionally as we don't really care // *that* much. The user could bypass this in the CLI by using SSH instead // anyways. WorkspaceAgentMinimumListeningPort = 9 )
const (
ContentTypeTar = "application/x-tar"
)
const (
LicenseExpiryClaim = "license_expires"
)
Variables ¶
var ( AllRBACResources = []RBACResource{ ResourceWorkspace, ResourceWorkspaceProxy, ResourceWorkspaceExecution, ResourceWorkspaceApplicationConnect, ResourceAuditLog, ResourceTemplate, ResourceGroup, ResourceFile, ResourceProvisionerDaemon, ResourceOrganization, ResourceRoleAssignment, ResourceOrgRoleAssignment, ResourceAPIKey, ResourceUser, ResourceUserData, ResourceOrganizationMember, ResourceLicense, ResourceDeploymentValues, ResourceDeploymentStats, ResourceReplicas, ResourceDebugInfo, ResourceSystem, } AllRBACActions = []string{ ActionCreate, ActionRead, ActionUpdate, ActionDelete, } )
var ErrSkipClose = xerrors.New("skip tailnet close")
var ExperimentsAll = Experiments{ ExperimentDeploymentHealthPage, ExperimentSingleTailnet, }
ExperimentsAll should include all experiments that are safe for users to opt-in to via --experimental='*'. Experiments that are not ready for consumption by all users should not be included here and will be essentially hidden.
var FeatureNames = []FeatureName{ FeatureUserLimit, FeatureAuditLog, FeatureBrowserOnly, FeatureSCIM, FeatureTemplateRBAC, FeatureHighAvailability, FeatureMultipleExternalAuth, FeatureExternalProvisionerDaemons, FeatureAppearance, FeatureAdvancedTemplateScheduling, FeatureTemplateAutostopRequirement, FeatureWorkspaceProxy, FeatureUserRoleManagement, FeatureExternalTokenEncryption, FeatureTemplateAutostopRequirement, FeatureWorkspaceBatchActions, FeatureAccessControl, }
FeatureNames must be kept in-sync with the Feature enum above.
var Me = "me"
Me is used as a replacement for your own ID.
var WorkspaceAgentIP = netip.MustParseAddr("fd7a:115c:a1e0:49d6:b259:b7ac:b1b2:48f4")
WorkspaceAgentIP is a static IPv6 address with the Tailscale prefix that is used to route connections from clients to this node. A dynamic address is not required because a Tailnet client only dials a single agent at a time.
Deprecated: use tailnet.IP() instead. This is kept for backwards compatibility with wsconncache. See: https://github.com/coder/coder/issues/8218
var WorkspaceAgentIgnoredListeningPorts = map[uint16]struct{}{
0: {},
1: {},
2: {},
3: {},
4: {},
5: {},
6: {},
7: {},
8: {},
20: {},
21: {},
22: {},
23: {},
25: {},
53: {},
110: {},
143: {},
179: {},
389: {},
636: {},
465: {},
587: {},
989: {},
990: {},
993: {},
995: {},
3306: {},
3389: {},
5432: {},
27017: {},
27018: {},
27019: {},
28017: {},
}
WorkspaceAgentIgnoredListeningPorts contains a list of ports to ignore when looking for running applications inside a workspace. We want to ignore non-HTTP servers, so we pre-populate this list with common ports that are not HTTP servers.
This is implemented as a map for fast lookup.
var WorkspaceAgentLifecycleOrder = []WorkspaceAgentLifecycle{ WorkspaceAgentLifecycleCreated, WorkspaceAgentLifecycleStarting, WorkspaceAgentLifecycleStartTimeout, WorkspaceAgentLifecycleStartError, WorkspaceAgentLifecycleReady, WorkspaceAgentLifecycleShuttingDown, WorkspaceAgentLifecycleShutdownTimeout, WorkspaceAgentLifecycleShutdownError, WorkspaceAgentLifecycleOff, }
WorkspaceAgentLifecycleOrder is the order in which workspace agent lifecycle states are expected to be reported during the lifetime of the agent process. For instance, the agent can go from starting to ready without reporting timeout or error, but it should not go from ready to starting. This is merely a hint for the agent process, and is not enforced by the server.
Functions ¶
func BitmapToWeekdays ¶
BitmapToWeekdays converts a bitmap to a list of weekdays in accordance with the schedule package's rules (see above).
func DefaultCacheDir ¶
func DefaultCacheDir() string
func DeploymentOptionsWithoutSecrets ¶ added in v2.2.1
DeploymentOptionsWithoutSecrets returns a copy of the OptionSet with secret values omitted.
func IsConnectionError ¶
IsConnectionError is a convenience function for checking if the source of an error is due to a 'connection refused', 'no such host', etc.
func IsWorkspaceProxies ¶
IsWorkspaceProxies returns true if the cli option is used by workspace proxies.
func JobIsMissingParameterErrorCode ¶ added in v2.1.5
func JobIsMissingParameterErrorCode(code JobErrorCode) bool
JobIsMissingParameterErrorCode returns whether the error is a missing parameter error. This can indicate to consumers that they should check parameters.
func ParseSSHConfigOption ¶
ParseSSHConfigOption parses a single ssh config option into it's key/value pair.
func ReadBodyAsError ¶
ReadBodyAsError reads the response as a codersdk.Response, and wraps it in a codersdk.Error type for easy marshaling.
func ServerSentEventReader ¶
func ServerSentEventReader(ctx context.Context, rc io.ReadCloser) func() (*ServerSentEvent, error)
func TimezoneOffsetHour ¶
func ValidateNewWorkspaceParameters ¶
func ValidateNewWorkspaceParameters(richParameters []TemplateVersionParameter, buildParameters []WorkspaceBuildParameter) error
func ValidateWorkspaceBuildParameter ¶
func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error
func ValidateWorkspaceBuildParameters ¶
func ValidateWorkspaceBuildParameters(richParameters []TemplateVersionParameter, buildParameters, lastBuildParameters []WorkspaceBuildParameter) error
func WeekdaysToBitmap ¶
WeekdaysToBitmap converts a list of weekdays to a bitmap in accordance with the schedule package's rules. The 0th bit is Monday, ..., the 6th bit is Sunday. The 7th bit is unused.
func WorkspaceDisplayStatus ¶
func WorkspaceDisplayStatus(jobStatus ProvisionerJobStatus, transition WorkspaceTransition) string
WorkspaceDisplayStatus computes a status to display on CLI/UI based on the workspace transition and the status of the provisioner job. This code is in sync with how we compute the status on frontend. Ref: site/src/util/workspace.ts (getWorkspaceStatus)
func WorkspaceNotifyChannel ¶
WorkspaceNotifyChannel is the PostgreSQL NOTIFY channel to listen for updates on. The payload is empty, because the size of a workspace payload can be very large.
Types ¶
type ACLAvailable ¶
ACLAvailable is a list of users and groups that can be added to a template ACL.
type APIKey ¶
type APIKey struct { ID string `json:"id" validate:"required"` UserID uuid.UUID `json:"user_id" validate:"required" format:"uuid"` LastUsed time.Time `json:"last_used" validate:"required" format:"date-time"` ExpiresAt time.Time `json:"expires_at" validate:"required" format:"date-time"` CreatedAt time.Time `json:"created_at" validate:"required" format:"date-time"` UpdatedAt time.Time `json:"updated_at" validate:"required" format:"date-time"` LoginType LoginType `json:"login_type" validate:"required" enums:"password,github,oidc,token"` Scope APIKeyScope `json:"scope" validate:"required" enums:"all,application_connect"` TokenName string `json:"token_name" validate:"required"` LifetimeSeconds int64 `json:"lifetime_seconds" validate:"required"` }
APIKey: do not ever return the HashedSecret
type APIKeyScope ¶
type APIKeyScope string
const ( // APIKeyScopeAll is a scope that allows the user to do everything. APIKeyScopeAll APIKeyScope = "all" // APIKeyScopeApplicationConnect is a scope that allows the user // to connect to applications in a workspace. APIKeyScopeApplicationConnect APIKeyScope = "application_connect" )
type APIKeyWithOwner ¶
type AddLicenseRequest ¶
type AddLicenseRequest struct {
License string `json:"license" validate:"required"`
}
type AgentStatsReportRequest ¶
type AgentStatsReportRequest struct{}
AgentStatsReportRequest is a WebSocket request by coderd to the agent for stats. @typescript-ignore AgentStatsReportRequest
type AgentStatsReportResponse ¶
type AgentStatsReportResponse struct { NumConns int64 `json:"num_comms"` // RxBytes is the number of received bytes. RxBytes int64 `json:"rx_bytes"` // TxBytes is the number of transmitted bytes. TxBytes int64 `json:"tx_bytes"` }
AgentStatsReportResponse is returned for each report request by the agent.
type AgentSubsystem ¶
type AgentSubsystem string
const ( AgentSubsystemEnvbox AgentSubsystem = "envbox" AgentSubsystemEnvbuilder AgentSubsystem = "envbuilder" AgentSubsystemExectrace AgentSubsystem = "exectrace" )
func (AgentSubsystem) Valid ¶
func (s AgentSubsystem) Valid() bool
type AppHostResponse ¶
type AppHostResponse struct { // Host is the externally accessible URL for the Coder instance. Host string `json:"host"` }
type AppearanceConfig ¶
type AppearanceConfig struct { ApplicationName string `json:"application_name"` LogoURL string `json:"logo_url"` ServiceBanner ServiceBannerConfig `json:"service_banner"` SupportLinks []LinkConfig `json:"support_links,omitempty"` }
type ArchiveTemplateVersionsRequest ¶ added in v2.3.0
type ArchiveTemplateVersionsRequest struct { // By default, only failed versions are archived. Set this to true // to archive all unused versions regardless of job status. All bool `json:"all"` }
type ArchiveTemplateVersionsResponse ¶ added in v2.3.0
type AssignableRoles ¶
type AuditAction ¶
type AuditAction string
const ( AuditActionCreate AuditAction = "create" AuditActionWrite AuditAction = "write" AuditActionDelete AuditAction = "delete" AuditActionStart AuditAction = "start" AuditActionStop AuditAction = "stop" AuditActionLogin AuditAction = "login" AuditActionLogout AuditAction = "logout" AuditActionRegister AuditAction = "register" )
func (AuditAction) Friendly ¶
func (a AuditAction) Friendly() string
type AuditDiff ¶
type AuditDiff map[string]AuditDiffField
type AuditDiffField ¶
type AuditLog ¶
type AuditLog struct { ID uuid.UUID `json:"id" format:"uuid"` RequestID uuid.UUID `json:"request_id" format:"uuid"` Time time.Time `json:"time" format:"date-time"` OrganizationID uuid.UUID `json:"organization_id" format:"uuid"` IP netip.Addr `json:"ip"` UserAgent string `json:"user_agent"` ResourceType ResourceType `json:"resource_type"` ResourceID uuid.UUID `json:"resource_id" format:"uuid"` // ResourceTarget is the name of the resource. ResourceTarget string `json:"resource_target"` ResourceIcon string `json:"resource_icon"` Action AuditAction `json:"action"` Diff AuditDiff `json:"diff"` StatusCode int32 `json:"status_code"` AdditionalFields json.RawMessage `json:"additional_fields"` Description string `json:"description"` ResourceLink string `json:"resource_link"` IsDeleted bool `json:"is_deleted"` User *User `json:"user"` }
type AuditLogResponse ¶
type AuditLogsRequest ¶
type AuditLogsRequest struct { SearchQuery string `json:"q,omitempty"` Pagination }
type AuthMethod ¶
type AuthMethod struct {
Enabled bool `json:"enabled"`
}
type AuthMethods ¶
type AuthMethods struct { Password AuthMethod `json:"password"` Github AuthMethod `json:"github"` OIDC OIDCAuthMethod `json:"oidc"` }
AuthMethods contains authentication method information like whether they are enabled or not or custom text, etc.
type AuthorizationCheck ¶
type AuthorizationCheck struct { // Object can represent a "set" of objects, such as: all workspaces in an organization, all workspaces owned by me, and all workspaces across the entire product. // When defining an object, use the most specific language when possible to // produce the smallest set. Meaning to set as many fields on 'Object' as // you can. Example, if you want to check if you can update all workspaces // owned by 'me', try to also add an 'OrganizationID' to the settings. // Omitting the 'OrganizationID' could produce the incorrect value, as // workspaces have both `user` and `organization` owners. Object AuthorizationObject `json:"object"` Action string `json:"action" enums:"create,read,update,delete"` }
AuthorizationCheck is used to check if the currently authenticated user (or the specified user) can do a given action to a given set of objects.
@Description AuthorizationCheck is used to check if the currently authenticated user (or the specified user) can do a given action to a given set of objects.
type AuthorizationObject ¶
type AuthorizationObject struct { // ResourceType is the name of the resource. // `./coderd/rbac/object.go` has the list of valid resource types. ResourceType RBACResource `json:"resource_type"` // OwnerID (optional) adds the set constraint to all resources owned by a given user. OwnerID string `json:"owner_id,omitempty"` // OrganizationID (optional) adds the set constraint to all resources owned by a given organization. OrganizationID string `json:"organization_id,omitempty"` // ResourceID (optional) reduces the set to a singular resource. This assigns // a resource ID to the resource type, eg: a single workspace. // The rbac library will not fetch the resource from the database, so if you // are using this option, you should also set the owner ID and organization ID // if possible. Be as specific as possible using all the fields relevant. ResourceID string `json:"resource_id,omitempty"` }
AuthorizationObject can represent a "set" of objects, such as: all workspaces in an organization, all workspaces owned by me, all workspaces across the entire product.
@Description AuthorizationObject can represent a "set" of objects, such as: all workspaces in an organization, all workspaces owned by me, @Description all workspaces across the entire product.
type AuthorizationRequest ¶
type AuthorizationRequest struct { // Checks is a map keyed with an arbitrary string to a permission check. // The key can be any string that is helpful to the caller, and allows // multiple permission checks to be run in a single request. // The key ensures that each permission check has the same key in the // response. Checks map[string]AuthorizationCheck `json:"checks"` }
AuthorizationRequest is a structure instead of a map because go-playground/validate can only validate structs. If you attempt to pass a map into `httpapi.Read`, you will get an invalid type error.
type AuthorizationResponse ¶
type AutomaticUpdates ¶ added in v2.3.0
type AutomaticUpdates string
const ( AutomaticUpdatesAlways AutomaticUpdates = "always" AutomaticUpdatesNever AutomaticUpdates = "never" )
type AvailableExperiments ¶ added in v2.3.1
type AvailableExperiments struct {
Safe []Experiment `json:"safe"`
}
AvailableExperiments is an expandable type that returns all safe experiments available to be used with a deployment.
type BuildInfoResponse ¶
type BuildInfoResponse struct { // ExternalURL references the current Coder version. // For production builds, this will link directly to a release. For development builds, this will link to a commit. ExternalURL string `json:"external_url"` // Version returns the semantic version of the build. Version string `json:"version"` // DashboardURL is the URL to hit the deployment's dashboard. // For external workspace proxies, this is the coderd they are connected // to. DashboardURL string `json:"dashboard_url"` WorkspaceProxy bool `json:"workspace_proxy"` }
BuildInfoResponse contains build information for this instance of Coder.
func (BuildInfoResponse) CanonicalVersion ¶
func (b BuildInfoResponse) CanonicalVersion() string
CanonicalVersion trims build information from the version. E.g. 'v0.7.4-devel+11573034' -> 'v0.7.4'.
type BuildReason ¶
type BuildReason string
const ( // "initiator" is used when a workspace build is triggered by a user. // Combined with the initiator id/username, it indicates which user initiated the build. BuildReasonInitiator BuildReason = "initiator" // "autostart" is used when a build to start a workspace is triggered by Autostart. // The initiator id/username in this case is the workspace owner and can be ignored. BuildReasonAutostart BuildReason = "autostart" // "autostop" is used when a build to stop a workspace is triggered by Autostop. // The initiator id/username in this case is the workspace owner and can be ignored. BuildReasonAutostop BuildReason = "autostop" )
type Client ¶
type Client struct { HTTPClient *http.Client URL *url.URL // SessionTokenHeader is an optional custom header to use for setting tokens. By // default 'Coder-Session-Token' is used. SessionTokenHeader string // PlainLogger may be set to log HTTP traffic in a human-readable form. // It uses the LogBodies option. PlainLogger io.Writer // Trace can be enabled to propagate tracing spans to the Coder API. // This is useful for tracking a request end-to-end. Trace bool // DisableDirectConnections forces any connections to workspaces to go // through DERP, regardless of the BlockEndpoints setting on each // connection. DisableDirectConnections bool // contains filtered or unexported fields }
Client is an HTTP caller for methods to the Coder API. @typescript-ignore Client
func (*Client) APIKeyByID ¶
APIKeyByID returns the api key by id.
func (*Client) APIKeyByName ¶
APIKeyByName returns the api key by name.
func (*Client) AddLicense ¶
func (*Client) AppHost ¶
func (c *Client) AppHost(ctx context.Context) (AppHostResponse, error)
AppHost returns the site-wide application wildcard hostname without the leading "*.", e.g. "apps.coder.com". Apps are accessible at: "<app-name>--<agent-name>--<workspace-name>--<username>.<app-host>", e.g. "my-app--agent--workspace--username.apps.coder.com".
If the app host is not set, the response will contain an empty string.
func (*Client) Appearance ¶
func (c *Client) Appearance(ctx context.Context) (AppearanceConfig, error)
Appearance returns the configuration that modifies the visual display of the dashboard.
func (*Client) ArchiveTemplateVersions ¶ added in v2.3.0
func (*Client) AuditLogs ¶
func (c *Client) AuditLogs(ctx context.Context, req AuditLogsRequest) (AuditLogResponse, error)
AuditLogs retrieves audit logs from the given page.
func (*Client) AuthCheck ¶
func (c *Client) AuthCheck(ctx context.Context, req AuthorizationRequest) (AuthorizationResponse, error)
AuthCheck allows the authenticated user to check if they have the given permissions to a set of resources.
func (*Client) AuthMethods ¶
func (c *Client) AuthMethods(ctx context.Context) (AuthMethods, error)
AuthMethods returns types of authentication available to the user.
func (*Client) BuildInfo ¶
func (c *Client) BuildInfo(ctx context.Context) (BuildInfoResponse, error)
BuildInfo returns build information for this instance of Coder.
func (*Client) CancelTemplateVersion ¶
CancelTemplateVersion marks a template version job as canceled.
func (*Client) CancelTemplateVersionDryRun ¶
CancelTemplateVersionDryRun marks a template version dry-run job as canceled.
func (*Client) CancelWorkspaceBuild ¶
CancelWorkspaceBuild marks a workspace build job as canceled.
func (*Client) ConvertLoginType ¶
func (c *Client) ConvertLoginType(ctx context.Context, req ConvertLoginRequest) (OAuthConversionResponse, error)
ConvertLoginType will send a request to convert the user from password based authentication to oauth based. The response has the oauth state code to use in the oauth flow.
func (*Client) CreateAPIKey ¶
CreateAPIKey generates an API key for the user ID provided. CreateToken should be used over CreateAPIKey. CreateToken allows better tracking of the token's usage and allows for custom expiration. Only use CreateAPIKey if you want to emulate the session created for a browser like login.
func (*Client) CreateFirstUser ¶
func (c *Client) CreateFirstUser(ctx context.Context, req CreateFirstUserRequest) (CreateFirstUserResponse, error)
CreateFirstUser attempts to create the first user on a Coder deployment. This initial user has superadmin privileges. If >0 users exist, this request will fail.
func (*Client) CreateGroup ¶
func (*Client) CreateOrganization ¶
func (c *Client) CreateOrganization(ctx context.Context, req CreateOrganizationRequest) (Organization, error)
CreateOrganization creates an organization and adds the provided user as an admin.
func (*Client) CreateTemplate ¶
func (c *Client) CreateTemplate(ctx context.Context, organizationID uuid.UUID, request CreateTemplateRequest) (Template, error)
CreateTemplate creates a new template inside an organization.
func (*Client) CreateTemplateVersion ¶
func (c *Client) CreateTemplateVersion(ctx context.Context, organizationID uuid.UUID, req CreateTemplateVersionRequest) (TemplateVersion, error)
CreateTemplateVersion processes source-code and optionally associates the version with a template. Executing without a template is useful for validating source-code.
func (*Client) CreateTemplateVersionDryRun ¶
func (c *Client) CreateTemplateVersionDryRun(ctx context.Context, version uuid.UUID, req CreateTemplateVersionDryRunRequest) (ProvisionerJob, error)
CreateTemplateVersionDryRun begins a dry-run provisioner job against the given template version with the given parameter values.
func (*Client) CreateTestAuditLog ¶
func (c *Client) CreateTestAuditLog(ctx context.Context, req CreateTestAuditLogRequest) error
CreateTestAuditLog creates a fake audit log. Only owners of the organization can perform this action. It's used for testing purposes.
func (*Client) CreateToken ¶
func (c *Client) CreateToken(ctx context.Context, userID string, req CreateTokenRequest) (GenerateAPIKeyResponse, error)
CreateToken generates an API key for the user ID provided with custom expiration. These tokens can be used for long-lived access, like for use with CI.
func (*Client) CreateUser ¶
CreateUser creates a new user.
func (*Client) CreateWorkspace ¶
func (c *Client) CreateWorkspace(ctx context.Context, organizationID uuid.UUID, user string, request CreateWorkspaceRequest) (Workspace, error)
CreateWorkspace creates a new workspace for the template specified.
func (*Client) CreateWorkspaceBuild ¶
func (c *Client) CreateWorkspaceBuild(ctx context.Context, workspace uuid.UUID, request CreateWorkspaceBuildRequest) (WorkspaceBuild, error)
CreateWorkspaceBuild queues a new build to occur for a workspace.
func (*Client) CreateWorkspaceProxy ¶
func (c *Client) CreateWorkspaceProxy(ctx context.Context, req CreateWorkspaceProxyRequest) (UpdateWorkspaceProxyResponse, error)
func (*Client) DeleteAPIKey ¶
DeleteAPIKey deletes API key by id.
func (*Client) DeleteGroup ¶
func (*Client) DeleteTemplate ¶
func (*Client) DeleteUser ¶
DeleteUser deletes a user.
func (*Client) DeleteWorkspaceProxyByID ¶
func (*Client) DeleteWorkspaceProxyByName ¶
func (*Client) DeletedWorkspace ¶
DeletedWorkspace returns a single workspace that was deleted.
func (*Client) DeploymentConfig ¶
func (c *Client) DeploymentConfig(ctx context.Context) (*DeploymentConfig, error)
DeploymentConfig returns the deployment config for the coder server.
func (*Client) DeploymentDAUs ¶
DeploymentDAUs requires a tzOffset in hours. Use 0 for UTC, and TimezoneOffsetHour(time.Local) for the local timezone.
func (*Client) DeploymentDAUsLocalTZ ¶
func (c *Client) DeploymentDAUsLocalTZ(ctx context.Context) (*DAUsResponse, error)
func (*Client) DeploymentStats ¶
func (c *Client) DeploymentStats(ctx context.Context) (DeploymentStats, error)
func (*Client) DialWorkspaceAgent ¶
func (c *Client) DialWorkspaceAgent(ctx context.Context, agentID uuid.UUID, options *DialWorkspaceAgentOptions) (agentConn *WorkspaceAgentConn, err error)
func (*Client) Entitlements ¶
func (c *Client) Entitlements(ctx context.Context) (Entitlements, error)
func (*Client) Experiments ¶
func (c *Client) Experiments(ctx context.Context) (Experiments, error)
func (*Client) ExternalAuthByID ¶ added in v2.2.1
ExternalAuthByID returns the external auth for the given provider by ID.
func (*Client) ExternalAuthDeviceByID ¶ added in v2.2.1
func (*Client) ExternalAuthDeviceExchange ¶ added in v2.2.1
func (c *Client) ExternalAuthDeviceExchange(ctx context.Context, provider string, req ExternalAuthDeviceExchange) error
ExchangeGitAuth exchanges a device code for an external auth token.
func (*Client) GetTokenConfig ¶
GetTokenConfig returns deployment options related to token management
func (*Client) GroupByOrgAndName ¶
func (*Client) GroupsByOrganization ¶
func (*Client) HasFirstUser ¶
HasFirstUser returns whether the first user has been created.
func (*Client) IssueReconnectingPTYSignedToken ¶
func (c *Client) IssueReconnectingPTYSignedToken(ctx context.Context, req IssueReconnectingPTYSignedTokenRequest) (IssueReconnectingPTYSignedTokenResponse, error)
func (*Client) ListOrganizationRoles ¶
func (c *Client) ListOrganizationRoles(ctx context.Context, org uuid.UUID) ([]AssignableRoles, error)
ListOrganizationRoles lists all assignable roles for a given organization.
func (*Client) ListSiteRoles ¶
func (c *Client) ListSiteRoles(ctx context.Context) ([]AssignableRoles, error)
ListSiteRoles lists all assignable site wide roles.
func (*Client) LoginWithPassword ¶
func (c *Client) LoginWithPassword(ctx context.Context, req LoginWithPasswordRequest) (LoginWithPasswordResponse, error)
LoginWithPassword creates a session token authenticating with an email and password. Call `SetSessionToken()` to apply the newly acquired token to the client.
func (*Client) Logout ¶
Logout calls the /logout API Call `ClearSessionToken()` to clear the session token of the client.
func (*Client) Organization ¶
func (*Client) OrganizationByName ¶
func (*Client) OrganizationsByUser ¶
OrganizationsByUser returns all organizations the user is a member of.
func (*Client) PatchGroup ¶
func (*Client) PatchWorkspaceProxy ¶
func (c *Client) PatchWorkspaceProxy(ctx context.Context, req PatchWorkspaceProxy) (UpdateWorkspaceProxyResponse, error)
func (*Client) PreviousTemplateVersion ¶
func (*Client) ProvisionerDaemons
deprecated
func (c *Client) ProvisionerDaemons(ctx context.Context) ([]ProvisionerDaemon, error)
ProvisionerDaemons returns provisioner daemons available.
Deprecated: We no longer track provisioner daemons as they connect. This function may return historical data but new provisioner daemons will not appear.
func (*Client) PutExtendWorkspace ¶
func (c *Client) PutExtendWorkspace(ctx context.Context, id uuid.UUID, req PutExtendWorkspaceRequest) error
PutExtendWorkspace updates the deadline for resources of the latest workspace build.
func (*Client) RegenerateGitSSHKey ¶
RegenerateGitSSHKey will create a new SSH key pair for the user and return it.
func (*Client) Request ¶
func (c *Client) Request(ctx context.Context, method, path string, body interface{}, opts ...RequestOption) (*http.Response, error)
Request performs a HTTP request with the body provided. The caller is responsible for closing the response body.
func (*Client) ResolveAutostart ¶ added in v2.4.0
func (*Client) SSHConfiguration ¶
func (c *Client) SSHConfiguration(ctx context.Context) (SSHConfigResponse, error)
SSHConfiguration returns information about the SSH configuration for the Coder instance.
func (*Client) SafeExperiments ¶ added in v2.3.1
func (c *Client) SafeExperiments(ctx context.Context) (AvailableExperiments, error)
func (*Client) ServeProvisionerDaemon ¶
func (c *Client) ServeProvisionerDaemon(ctx context.Context, req ServeProvisionerDaemonRequest) (proto.DRPCProvisionerDaemonClient, error)
ServeProvisionerDaemon returns the gRPC service for a provisioner daemon implementation. The context is during dial, not during the lifetime of the client. Client should be closed after use.
func (*Client) SessionToken ¶
SessionToken returns the currently set token for the client.
func (*Client) SetArchiveTemplateVersion ¶ added in v2.3.0
func (*Client) SetLogBodies ¶
SetLogBodies sets whether to log request and response bodies.
func (*Client) SetSessionToken ¶
SetSessionToken returns the currently set token for the client.
func (*Client) TemplateACL ¶
func (*Client) TemplateACLAvailable ¶
func (c *Client) TemplateACLAvailable(ctx context.Context, templateID uuid.UUID) (ACLAvailable, error)
TemplateACLAvailable returns available users + groups that can be assigned template perms
func (*Client) TemplateByName ¶
func (c *Client) TemplateByName(ctx context.Context, organizationID uuid.UUID, name string) (Template, error)
TemplateByName finds a template inside the organization provided with a case-insensitive name.
func (*Client) TemplateDAUs ¶
func (c *Client) TemplateDAUs(ctx context.Context, templateID uuid.UUID, tzOffset int) (*DAUsResponse, error)
TemplateDAUs requires a tzOffset in hours. Use 0 for UTC, and TimezoneOffsetHour(time.Local) for the local timezone.
func (*Client) TemplateDAUsLocalTZ ¶
func (*Client) TemplateExamples ¶
func (c *Client) TemplateExamples(ctx context.Context, organizationID uuid.UUID) ([]TemplateExample, error)
TemplateExamples lists example templates embedded in coder.
func (*Client) TemplateInsights ¶
func (c *Client) TemplateInsights(ctx context.Context, req TemplateInsightsRequest) (TemplateInsightsResponse, error)
func (*Client) TemplateVersion ¶
TemplateVersion returns a template version by ID.
func (*Client) TemplateVersionByName ¶
func (c *Client) TemplateVersionByName(ctx context.Context, template uuid.UUID, name string) (TemplateVersion, error)
TemplateVersionByName returns a template version by it's friendly name. This is used for path-based routing. Like: /templates/example/versions/helloworld
func (*Client) TemplateVersionByOrganizationAndName ¶
func (*Client) TemplateVersionDryRun ¶
func (c *Client) TemplateVersionDryRun(ctx context.Context, version, job uuid.UUID) (ProvisionerJob, error)
TemplateVersionDryRun returns the current state of a template version dry-run job.
func (*Client) TemplateVersionDryRunLogsAfter ¶
func (c *Client) TemplateVersionDryRunLogsAfter(ctx context.Context, version, job uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
TemplateVersionDryRunLogsAfter streams logs for a template version dry-run that occurred after a specific log ID.
func (*Client) TemplateVersionDryRunResources ¶
func (c *Client) TemplateVersionDryRunResources(ctx context.Context, version, job uuid.UUID) ([]WorkspaceResource, error)
TemplateVersionDryRunResources returns the resources of a finished template version dry-run job.
func (*Client) TemplateVersionExternalAuth ¶ added in v2.2.1
func (c *Client) TemplateVersionExternalAuth(ctx context.Context, version uuid.UUID) ([]TemplateVersionExternalAuth, error)
TemplateVersionExternalAuth returns authentication providers for the requested template version.
func (*Client) TemplateVersionLogsAfter ¶
func (c *Client) TemplateVersionLogsAfter(ctx context.Context, version uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
TemplateVersionLogsAfter streams logs for a template version that occurred after a specific log ID.
func (*Client) TemplateVersionResources ¶
func (c *Client) TemplateVersionResources(ctx context.Context, version uuid.UUID) ([]WorkspaceResource, error)
TemplateVersionResources returns resources a template version declares.
func (*Client) TemplateVersionRichParameters ¶
func (c *Client) TemplateVersionRichParameters(ctx context.Context, version uuid.UUID) ([]TemplateVersionParameter, error)
TemplateVersionParameters returns parameters a template version exposes.
func (*Client) TemplateVersionVariables ¶
func (c *Client) TemplateVersionVariables(ctx context.Context, version uuid.UUID) ([]TemplateVersionVariable, error)
TemplateVersionVariables returns resources a template version variables.
func (*Client) TemplateVersionsByTemplate ¶
func (c *Client) TemplateVersionsByTemplate(ctx context.Context, req TemplateVersionsByTemplateRequest) ([]TemplateVersion, error)
TemplateVersionsByTemplate lists versions associated with a template.
func (*Client) TemplatesByOrganization ¶
func (c *Client) TemplatesByOrganization(ctx context.Context, organizationID uuid.UUID) ([]Template, error)
TemplatesByOrganization lists all templates inside of an organization.
func (*Client) Tokens ¶
func (c *Client) Tokens(ctx context.Context, userID string, filter TokensFilter) ([]APIKeyWithOwner, error)
Tokens list machine API keys.
func (*Client) UpdateActiveTemplateVersion ¶
func (c *Client) UpdateActiveTemplateVersion(ctx context.Context, template uuid.UUID, req UpdateActiveTemplateVersion) error
UpdateActiveTemplateVersion updates the active template version to the ID provided. The template version must be attached to the template.
func (*Client) UpdateAppearance ¶
func (c *Client) UpdateAppearance(ctx context.Context, appearance UpdateAppearanceConfig) error
func (*Client) UpdateCheck ¶
func (c *Client) UpdateCheck(ctx context.Context) (UpdateCheckResponse, error)
UpdateCheck returns information about the latest release version of Coder and whether or not the server is running the latest release.
func (*Client) UpdateOrganizationMemberRoles ¶
func (c *Client) UpdateOrganizationMemberRoles(ctx context.Context, organizationID uuid.UUID, user string, req UpdateRoles) (OrganizationMember, error)
UpdateOrganizationMemberRoles grants the userID the specified roles in an org. Include ALL roles the user has.
func (*Client) UpdateTemplateACL ¶
func (*Client) UpdateTemplateMeta ¶
func (*Client) UpdateTemplateVersion ¶
func (c *Client) UpdateTemplateVersion(ctx context.Context, versionID uuid.UUID, req PatchTemplateVersionRequest) (TemplateVersion, error)
func (*Client) UpdateUserPassword ¶
func (c *Client) UpdateUserPassword(ctx context.Context, user string, req UpdateUserPasswordRequest) error
UpdateUserPassword updates a user password. It calls PUT /users/{user}/password
func (*Client) UpdateUserProfile ¶
func (c *Client) UpdateUserProfile(ctx context.Context, user string, req UpdateUserProfileRequest) (User, error)
UpdateUserProfile enables callers to update profile information
func (*Client) UpdateUserQuietHoursSchedule ¶
func (c *Client) UpdateUserQuietHoursSchedule(ctx context.Context, userIdent string, req UpdateUserQuietHoursScheduleRequest) (UserQuietHoursScheduleResponse, error)
UpdateUserQuietHoursSchedule updates the quiet hours settings for the user. This endpoint only exists in enterprise editions.
func (*Client) UpdateUserRoles ¶
UpdateUserRoles grants the userID the specified roles. Include ALL roles the user has.
func (*Client) UpdateUserStatus ¶
func (c *Client) UpdateUserStatus(ctx context.Context, user string, status UserStatus) (User, error)
UpdateUserStatus sets the user status to the given status
func (*Client) UpdateWorkspace ¶
func (*Client) UpdateWorkspaceAutomaticUpdates ¶ added in v2.3.0
func (c *Client) UpdateWorkspaceAutomaticUpdates(ctx context.Context, id uuid.UUID, req UpdateWorkspaceAutomaticUpdatesRequest) error
UpdateWorkspaceAutomaticUpdates sets the automatic updates setting for workspace by id.
func (*Client) UpdateWorkspaceAutostart ¶
func (c *Client) UpdateWorkspaceAutostart(ctx context.Context, id uuid.UUID, req UpdateWorkspaceAutostartRequest) error
UpdateWorkspaceAutostart sets the autostart schedule for workspace by id. If the provided schedule is empty, autostart is disabled for the workspace.
func (*Client) UpdateWorkspaceDormancy ¶ added in v2.1.4
func (c *Client) UpdateWorkspaceDormancy(ctx context.Context, id uuid.UUID, req UpdateWorkspaceDormancy) error
UpdateWorkspaceDormancy sets a workspace as dormant if dormant=true and activates a dormant workspace if dormant=false.
func (*Client) UpdateWorkspaceTTL ¶
func (c *Client) UpdateWorkspaceTTL(ctx context.Context, id uuid.UUID, req UpdateWorkspaceTTLRequest) error
UpdateWorkspaceTTL sets the ttl for workspace by id. If the provided duration is nil, autostop is disabled for the workspace.
func (*Client) Upload ¶
func (c *Client) Upload(ctx context.Context, contentType string, rd io.Reader) (UploadResponse, error)
Upload uploads an arbitrary file with the content type provided. This is used to upload a source-code archive.
func (*Client) UserActivityInsights ¶ added in v2.2.0
func (c *Client) UserActivityInsights(ctx context.Context, req UserActivityInsightsRequest) (UserActivityInsightsResponse, error)
func (*Client) UserLatencyInsights ¶
func (c *Client) UserLatencyInsights(ctx context.Context, req UserLatencyInsightsRequest) (UserLatencyInsightsResponse, error)
func (*Client) UserQuietHoursSchedule ¶
func (c *Client) UserQuietHoursSchedule(ctx context.Context, userIdent string) (UserQuietHoursScheduleResponse, error)
UserQuietHoursSchedule returns the quiet hours settings for the user. This endpoint only exists in enterprise editions.
func (*Client) Users ¶
func (c *Client) Users(ctx context.Context, req UsersRequest) (GetUsersResponse, error)
Users returns all users according to the request parameters. If no parameters are set, the default behavior is to return all users in a single page.
func (*Client) WatchWorkspace ¶
func (*Client) WatchWorkspaceAgentMetadata ¶
func (c *Client) WatchWorkspaceAgentMetadata(ctx context.Context, id uuid.UUID) (<-chan []WorkspaceAgentMetadata, <-chan error)
WatchWorkspaceAgentMetadata watches the metadata of a workspace agent. The returned channel will be closed when the context is canceled. Exactly one error will be sent on the error channel. The metadata channel is never closed.
func (*Client) WorkspaceAgent ¶
WorkspaceAgent returns an agent by ID.
func (*Client) WorkspaceAgentConnectionInfo ¶
func (*Client) WorkspaceAgentConnectionInfoGeneric ¶
func (c *Client) WorkspaceAgentConnectionInfoGeneric(ctx context.Context) (WorkspaceAgentConnectionInfo, error)
func (*Client) WorkspaceAgentListeningPorts ¶
func (c *Client) WorkspaceAgentListeningPorts(ctx context.Context, agentID uuid.UUID) (WorkspaceAgentListeningPortsResponse, error)
WorkspaceAgentListeningPorts returns a list of ports that are currently being listened on inside the workspace agent's network namespace.
func (*Client) WorkspaceAgentLogsAfter ¶
func (*Client) WorkspaceAgentReconnectingPTY ¶
func (c *Client) WorkspaceAgentReconnectingPTY(ctx context.Context, opts WorkspaceAgentReconnectingPTYOpts) (net.Conn, error)
WorkspaceAgentReconnectingPTY spawns a PTY that reconnects using the token provided. It communicates using `agent.ReconnectingPTYRequest` marshaled as JSON. Responses are PTY output that can be rendered.
func (*Client) WorkspaceBuild ¶
WorkspaceBuild returns a single workspace build for a workspace. If history is "", the latest version is returned.
func (*Client) WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber ¶
func (*Client) WorkspaceBuildLogsAfter ¶
func (c *Client) WorkspaceBuildLogsAfter(ctx context.Context, build uuid.UUID, after int64) (<-chan ProvisionerJobLog, io.Closer, error)
WorkspaceBuildLogsAfter streams logs for a workspace build that occurred after a specific log ID.
func (*Client) WorkspaceBuildParameters ¶
func (*Client) WorkspaceBuildState ¶
WorkspaceBuildState returns the provisioner state of the build.
func (*Client) WorkspaceBuilds ¶
func (c *Client) WorkspaceBuilds(ctx context.Context, req WorkspaceBuildsRequest) ([]WorkspaceBuild, error)
func (*Client) WorkspaceByOwnerAndName ¶
func (c *Client) WorkspaceByOwnerAndName(ctx context.Context, owner string, name string, params WorkspaceOptions) (Workspace, error)
WorkspaceByOwnerAndName returns a workspace by the owner's UUID and the workspace's name.
func (*Client) WorkspaceProxies ¶
func (c *Client) WorkspaceProxies(ctx context.Context) (RegionsResponse[WorkspaceProxy], error)
func (*Client) WorkspaceProxyByID ¶
func (*Client) WorkspaceProxyByName ¶
func (*Client) WorkspaceQuota ¶
func (*Client) Workspaces ¶
func (c *Client) Workspaces(ctx context.Context, filter WorkspaceFilter) (WorkspacesResponse, error)
Workspaces returns all workspaces the authenticated user has access to.
type ConnectionLatency ¶
type ConnectionLatency struct { P50 float64 `json:"p50" example:"31.312"` P95 float64 `json:"p95" example:"119.832"` }
ConnectionLatency shows the latency for a connection.
type ConvertLoginRequest ¶
type CreateFirstUserRequest ¶
type CreateFirstUserResponse ¶
type CreateFirstUserResponse struct { UserID uuid.UUID `json:"user_id" format:"uuid"` OrganizationID uuid.UUID `json:"organization_id" format:"uuid"` }
CreateFirstUserResponse contains IDs for newly created user info.
type CreateGroupRequest ¶
type CreateOrganizationRequest ¶
type CreateOrganizationRequest struct {
Name string `json:"name" validate:"required,username"`
}
type CreateTemplateRequest ¶
type CreateTemplateRequest struct { // Name is the name of the template. Name string `json:"name" validate:"template_name,required"` // DisplayName is the displayed name of the template. DisplayName string `json:"display_name,omitempty" validate:"template_display_name"` // Description is a description of what the template contains. It must be // less than 128 bytes. Description string `json:"description,omitempty" validate:"lt=128"` // Icon is a relative path or external URL that specifies // an icon to be displayed in the dashboard. Icon string `json:"icon,omitempty"` // VersionID is an in-progress or completed job to use as an initial version // of the template. // // This is required on creation to enable a user-flow of validating a // template works. There is no reason the data-model cannot support empty // templates, but it doesn't make sense for users. VersionID uuid.UUID `json:"template_version_id" validate:"required" format:"uuid"` // DefaultTTLMillis allows optionally specifying the default TTL // for all workspaces created from this template. DefaultTTLMillis *int64 `json:"default_ttl_ms,omitempty"` // TODO(@dean): remove max_ttl once autostop_requirement is matured MaxTTLMillis *int64 `json:"max_ttl_ms,omitempty"` // AutostopRequirement allows optionally specifying the autostop requirement // for workspaces created from this template. This is an enterprise feature. AutostopRequirement *TemplateAutostopRequirement `json:"autostop_requirement,omitempty"` // AutostartRequirement allows optionally specifying the autostart allowed days // for workspaces created from this template. This is an enterprise feature. AutostartRequirement *TemplateAutostartRequirement `json:"autostart_requirement,omitempty"` // Allow users to cancel in-progress workspace jobs. // *bool as the default value is "true". AllowUserCancelWorkspaceJobs *bool `json:"allow_user_cancel_workspace_jobs"` // AllowUserAutostart allows users to set a schedule for autostarting their // workspace. By default this is true. This can only be disabled when using // an enterprise license. AllowUserAutostart *bool `json:"allow_user_autostart"` // AllowUserAutostop allows users to set a custom workspace TTL to use in // place of the template's DefaultTTL field. By default this is true. If // false, the DefaultTTL will always be used. This can only be disabled when // using an enterprise license. AllowUserAutostop *bool `json:"allow_user_autostop"` // FailureTTLMillis allows optionally specifying the max lifetime before Coder // stops all resources for failed workspaces created from this template. FailureTTLMillis *int64 `json:"failure_ttl_ms,omitempty"` // TimeTilDormantMillis allows optionally specifying the max lifetime before Coder // locks inactive workspaces created from this template. TimeTilDormantMillis *int64 `json:"dormant_ttl_ms,omitempty"` // TimeTilDormantAutoDeleteMillis allows optionally specifying the max lifetime before Coder // permanently deletes dormant workspaces created from this template. TimeTilDormantAutoDeleteMillis *int64 `json:"delete_ttl_ms,omitempty"` // DisableEveryoneGroupAccess allows optionally disabling the default // behavior of granting the 'everyone' group access to use the template. // If this is set to true, the template will not be available to all users, // and must be explicitly granted to users or groups in the permissions settings // of the template. DisableEveryoneGroupAccess bool `json:"disable_everyone_group_access"` // RequireActiveVersion mandates that workspaces are built with the active // template version. RequireActiveVersion bool `json:"require_active_version"` }
CreateTemplateRequest provides options when creating a template.
type CreateTemplateVersionDryRunRequest ¶
type CreateTemplateVersionDryRunRequest struct { WorkspaceName string `json:"workspace_name"` RichParameterValues []WorkspaceBuildParameter `json:"rich_parameter_values"` UserVariableValues []VariableValue `json:"user_variable_values,omitempty"` }
CreateTemplateVersionDryRunRequest defines the request parameters for CreateTemplateVersionDryRun.
type CreateTemplateVersionRequest ¶
type CreateTemplateVersionRequest struct { Name string `json:"name,omitempty" validate:"omitempty,template_version_name"` Message string `json:"message,omitempty" validate:"lt=1048577"` // TemplateID optionally associates a version with a template. TemplateID uuid.UUID `json:"template_id,omitempty" format:"uuid"` StorageMethod ProvisionerStorageMethod `json:"storage_method" validate:"oneof=file,required" enums:"file"` FileID uuid.UUID `json:"file_id,omitempty" validate:"required_without=ExampleID" format:"uuid"` ExampleID string `json:"example_id,omitempty" validate:"required_without=FileID"` Provisioner ProvisionerType `json:"provisioner" validate:"oneof=terraform echo,required"` ProvisionerTags map[string]string `json:"tags"` UserVariableValues []VariableValue `json:"user_variable_values,omitempty"` }
CreateTemplateVersionRequest enables callers to create a new Template Version.
type CreateTestAuditLogRequest ¶
type CreateTestAuditLogRequest struct { Action AuditAction `json:"action,omitempty" enums:"create,write,delete,start,stop"` ResourceType ResourceType `json:"resource_type,omitempty" enums:"template,template_version,user,workspace,workspace_build,git_ssh_key,auditable_group"` ResourceID uuid.UUID `json:"resource_id,omitempty" format:"uuid"` AdditionalFields json.RawMessage `json:"additional_fields,omitempty"` Time time.Time `json:"time,omitempty" format:"date-time"` BuildReason BuildReason `json:"build_reason,omitempty" enums:"autostart,autostop,initiator"` }
type CreateTokenRequest ¶
type CreateTokenRequest struct { Lifetime time.Duration `json:"lifetime"` Scope APIKeyScope `json:"scope" enums:"all,application_connect"` TokenName string `json:"token_name"` }
type CreateUserRequest ¶
type CreateUserRequest struct { Email string `json:"email" validate:"required,email" format:"email"` Username string `json:"username" validate:"required,username"` Password string `json:"password"` // UserLoginType defaults to LoginTypePassword. UserLoginType LoginType `json:"login_type"` // DisableLogin sets the user's login type to 'none'. This prevents the user // from being able to use a password or any other authentication method to login. // Deprecated: Set UserLoginType=LoginTypeDisabled instead. DisableLogin bool `json:"disable_login"` OrganizationID uuid.UUID `json:"organization_id" validate:"" format:"uuid"` }
type CreateWorkspaceBuildRequest ¶
type CreateWorkspaceBuildRequest struct { TemplateVersionID uuid.UUID `json:"template_version_id,omitempty" format:"uuid"` Transition WorkspaceTransition `json:"transition" validate:"oneof=create start stop delete,required"` DryRun bool `json:"dry_run,omitempty"` ProvisionerState []byte `json:"state,omitempty"` // Orphan may be set for the Destroy transition. Orphan bool `json:"orphan,omitempty"` // ParameterValues are optional. It will write params to the 'workspace' scope. // This will overwrite any existing parameters with the same name. // This will not delete old params not included in this list. RichParameterValues []WorkspaceBuildParameter `json:"rich_parameter_values,omitempty"` // Log level changes the default logging verbosity of a provider ("info" if empty). LogLevel ProvisionerLogLevel `json:"log_level,omitempty" validate:"omitempty,oneof=debug"` }
CreateWorkspaceBuildRequest provides options to update the latest workspace build.
type CreateWorkspaceRequest ¶
type CreateWorkspaceRequest struct { // TemplateID specifies which template should be used for creating the workspace. TemplateID uuid.UUID `json:"template_id,omitempty" validate:"required_without=TemplateVersionID,excluded_with=TemplateVersionID" format:"uuid"` // TemplateVersionID can be used to specify a specific version of a template for creating the workspace. TemplateVersionID uuid.UUID `json:"template_version_id,omitempty" validate:"required_without=TemplateID,excluded_with=TemplateID" format:"uuid"` Name string `json:"name" validate:"workspace_name,required"` AutostartSchedule *string `json:"autostart_schedule"` TTLMillis *int64 `json:"ttl_ms,omitempty"` // RichParameterValues allows for additional parameters to be provided // during the initial provision. RichParameterValues []WorkspaceBuildParameter `json:"rich_parameter_values,omitempty"` AutomaticUpdates AutomaticUpdates `json:"automatic_updates,omitempty"` }
CreateWorkspaceRequest provides options for creating a new workspace. Either TemplateID or TemplateVersionID must be specified. They cannot both be present.
type DAURequest ¶
type DAURequest struct {
TZHourOffset int
}
type DAUsResponse ¶
type DERP ¶
type DERP struct { Server DERPServerConfig `json:"server" typescript:",notnull"` Config DERPConfig `json:"config" typescript:",notnull"` }
type DERPConfig ¶
type DERPRegion ¶
type DERPServerConfig ¶
type DERPServerConfig struct { Enable clibase.Bool `json:"enable" typescript:",notnull"` RegionID clibase.Int64 `json:"region_id" typescript:",notnull"` RegionCode clibase.String `json:"region_code" typescript:",notnull"` RegionName clibase.String `json:"region_name" typescript:",notnull"` STUNAddresses clibase.StringArray `json:"stun_addresses" typescript:",notnull"` RelayURL clibase.URL `json:"relay_url" typescript:",notnull"` }
type DangerousConfig ¶
type DeploymentConfig ¶
type DeploymentConfig struct { Values *DeploymentValues `json:"config,omitempty"` Options clibase.OptionSet `json:"options,omitempty"` }
DeploymentConfig contains both the deployment values and how they're set.
type DeploymentStats ¶
type DeploymentStats struct { // AggregatedFrom is the time in which stats are aggregated from. // This might be back in time a specific duration or interval. AggregatedFrom time.Time `json:"aggregated_from" format:"date-time"` // CollectedAt is the time in which stats are collected at. CollectedAt time.Time `json:"collected_at" format:"date-time"` // NextUpdateAt is the time when the next batch of stats will // be updated. NextUpdateAt time.Time `json:"next_update_at" format:"date-time"` Workspaces WorkspaceDeploymentStats `json:"workspaces"` SessionCount SessionCountDeploymentStats `json:"session_count"` }
type DeploymentValues ¶
type DeploymentValues struct { Verbose clibase.Bool `json:"verbose,omitempty"` AccessURL clibase.URL `json:"access_url,omitempty"` WildcardAccessURL clibase.URL `json:"wildcard_access_url,omitempty"` DocsURL clibase.URL `json:"docs_url,omitempty"` RedirectToAccessURL clibase.Bool `json:"redirect_to_access_url,omitempty"` // HTTPAddress is a string because it may be set to zero to disable. HTTPAddress clibase.String `json:"http_address,omitempty" typescript:",notnull"` AutobuildPollInterval clibase.Duration `json:"autobuild_poll_interval,omitempty"` JobHangDetectorInterval clibase.Duration `json:"job_hang_detector_interval,omitempty"` DERP DERP `json:"derp,omitempty" typescript:",notnull"` Prometheus PrometheusConfig `json:"prometheus,omitempty" typescript:",notnull"` Pprof PprofConfig `json:"pprof,omitempty" typescript:",notnull"` ProxyTrustedHeaders clibase.StringArray `json:"proxy_trusted_headers,omitempty" typescript:",notnull"` ProxyTrustedOrigins clibase.StringArray `json:"proxy_trusted_origins,omitempty" typescript:",notnull"` CacheDir clibase.String `json:"cache_directory,omitempty" typescript:",notnull"` InMemoryDatabase clibase.Bool `json:"in_memory_database,omitempty" typescript:",notnull"` PostgresURL clibase.String `json:"pg_connection_url,omitempty" typescript:",notnull"` OAuth2 OAuth2Config `json:"oauth2,omitempty" typescript:",notnull"` OIDC OIDCConfig `json:"oidc,omitempty" typescript:",notnull"` Telemetry TelemetryConfig `json:"telemetry,omitempty" typescript:",notnull"` TLS TLSConfig `json:"tls,omitempty" typescript:",notnull"` Trace TraceConfig `json:"trace,omitempty" typescript:",notnull"` SecureAuthCookie clibase.Bool `json:"secure_auth_cookie,omitempty" typescript:",notnull"` StrictTransportSecurity clibase.Int64 `json:"strict_transport_security,omitempty" typescript:",notnull"` StrictTransportSecurityOptions clibase.StringArray `json:"strict_transport_security_options,omitempty" typescript:",notnull"` SSHKeygenAlgorithm clibase.String `json:"ssh_keygen_algorithm,omitempty" typescript:",notnull"` MetricsCacheRefreshInterval clibase.Duration `json:"metrics_cache_refresh_interval,omitempty" typescript:",notnull"` AgentStatRefreshInterval clibase.Duration `json:"agent_stat_refresh_interval,omitempty" typescript:",notnull"` AgentFallbackTroubleshootingURL clibase.URL `json:"agent_fallback_troubleshooting_url,omitempty" typescript:",notnull"` BrowserOnly clibase.Bool `json:"browser_only,omitempty" typescript:",notnull"` SCIMAPIKey clibase.String `json:"scim_api_key,omitempty" typescript:",notnull"` ExternalTokenEncryptionKeys clibase.StringArray `json:"external_token_encryption_keys,omitempty" typescript:",notnull"` Provisioner ProvisionerConfig `json:"provisioner,omitempty" typescript:",notnull"` RateLimit RateLimitConfig `json:"rate_limit,omitempty" typescript:",notnull"` Experiments clibase.StringArray `json:"experiments,omitempty" typescript:",notnull"` UpdateCheck clibase.Bool `json:"update_check,omitempty" typescript:",notnull"` MaxTokenLifetime clibase.Duration `json:"max_token_lifetime,omitempty" typescript:",notnull"` Swagger SwaggerConfig `json:"swagger,omitempty" typescript:",notnull"` Logging LoggingConfig `json:"logging,omitempty" typescript:",notnull"` Dangerous DangerousConfig `json:"dangerous,omitempty" typescript:",notnull"` DisablePathApps clibase.Bool `json:"disable_path_apps,omitempty" typescript:",notnull"` SessionDuration clibase.Duration `json:"max_session_expiry,omitempty" typescript:",notnull"` DisableSessionExpiryRefresh clibase.Bool `json:"disable_session_expiry_refresh,omitempty" typescript:",notnull"` DisablePasswordAuth clibase.Bool `json:"disable_password_auth,omitempty" typescript:",notnull"` Support SupportConfig `json:"support,omitempty" typescript:",notnull"` ExternalAuthConfigs clibase.Struct[[]ExternalAuthConfig] `json:"external_auth,omitempty" typescript:",notnull"` SSHConfig SSHConfig `json:"config_ssh,omitempty" typescript:",notnull"` WgtunnelHost clibase.String `json:"wgtunnel_host,omitempty" typescript:",notnull"` DisableOwnerWorkspaceExec clibase.Bool `json:"disable_owner_workspace_exec,omitempty" typescript:",notnull"` ProxyHealthStatusInterval clibase.Duration `json:"proxy_health_status_interval,omitempty" typescript:",notnull"` EnableTerraformDebugMode clibase.Bool `json:"enable_terraform_debug_mode,omitempty" typescript:",notnull"` UserQuietHoursSchedule UserQuietHoursScheduleConfig `json:"user_quiet_hours_schedule,omitempty" typescript:",notnull"` WebTerminalRenderer clibase.String `json:"web_terminal_renderer,omitempty" typescript:",notnull"` Healthcheck HealthcheckConfig `json:"healthcheck,omitempty" typescript:",notnull"` Config clibase.YAMLConfigPath `json:"config,omitempty" typescript:",notnull"` WriteConfig clibase.Bool `json:"write_config,omitempty" typescript:",notnull"` // DEPRECATED: Use HTTPAddress or TLS.Address instead. Address clibase.HostPort `json:"address,omitempty" typescript:",notnull"` }
DeploymentValues is the central configuration values the coder server.
func (*DeploymentValues) Options ¶
func (c *DeploymentValues) Options() clibase.OptionSet
func (*DeploymentValues) WithoutSecrets ¶
func (c *DeploymentValues) WithoutSecrets() (*DeploymentValues, error)
WithoutSecrets returns a copy of the config without secret values.
type DialWorkspaceAgentOptions ¶
type DialWorkspaceAgentOptions struct { Logger slog.Logger // BlockEndpoints forced a direct connection through DERP. The Client may // have DisableDirect set which will override this value. BlockEndpoints bool }
@typescript-ignore DialWorkspaceAgentOptions
type DisplayApp ¶ added in v2.1.5
type DisplayApp string
const ( DisplayAppVSCodeDesktop DisplayApp = "vscode" DisplayAppVSCodeInsiders DisplayApp = "vscode_insiders" DisplayAppWebTerminal DisplayApp = "web_terminal" DisplayAppPortForward DisplayApp = "port_forwarding_helper" DisplayAppSSH DisplayApp = "ssh_helper" )
type EnhancedExternalAuthProvider ¶ added in v2.2.1
type EnhancedExternalAuthProvider string
EnhancedExternalAuthProvider is a constant that represents enhanced support for a type of external authentication. All of the Git providers are examples of enhanced, because they support intercepting "git clone".
const ( EnhancedExternalAuthProviderAzureDevops EnhancedExternalAuthProvider = "azure-devops" EnhancedExternalAuthProviderGitHub EnhancedExternalAuthProvider = "github" EnhancedExternalAuthProviderGitLab EnhancedExternalAuthProvider = "gitlab" // EnhancedExternalAuthProviderBitBucketCloud is the Bitbucket Cloud provider. // Not to be confused with the self-hosted 'EnhancedExternalAuthProviderBitBucketServer' EnhancedExternalAuthProviderBitBucketCloud EnhancedExternalAuthProvider = "bitbucket-cloud" EnhancedExternalAuthProviderBitBucketServer EnhancedExternalAuthProvider = "bitbucket-server" EnhancedExternalAuthProviderSlack EnhancedExternalAuthProvider = "slack" EnhancedExternalAuthProviderJFrog EnhancedExternalAuthProvider = "jfrog" )
func (EnhancedExternalAuthProvider) Git ¶ added in v2.2.1
func (e EnhancedExternalAuthProvider) Git() bool
Git returns whether the provider is a Git provider.
func (EnhancedExternalAuthProvider) String ¶ added in v2.2.1
func (e EnhancedExternalAuthProvider) String() string
type Entitlement ¶
type Entitlement string
Entitlement represents whether a feature is licensed.
const ( EntitlementEntitled Entitlement = "entitled" EntitlementGracePeriod Entitlement = "grace_period" EntitlementNotEntitled Entitlement = "not_entitled" )
type Entitlements ¶
type Entitlements struct { Features map[FeatureName]Feature `json:"features"` Warnings []string `json:"warnings"` Errors []string `json:"errors"` HasLicense bool `json:"has_license"` Trial bool `json:"trial"` RequireTelemetry bool `json:"require_telemetry"` RefreshedAt time.Time `json:"refreshed_at" format:"date-time"` }
type Error ¶
Error represents an unaccepted or invalid request to the API. @typescript-ignore Error
func (*Error) StatusCode ¶
type Experiment ¶
type Experiment string
const ( // ExperimentMoons enabled the workspace proxy endpoints and CRUD. This // feature is not yet complete in functionality. ExperimentMoons Experiment = "moons" // https://github.com/coder/coder/milestone/19 ExperimentWorkspaceActions Experiment = "workspace_actions" // ExperimentTailnetPGCoordinator enables the PGCoord in favor of the pubsub- // only Coordinator ExperimentTailnetPGCoordinator Experiment = "tailnet_pg_coordinator" // ExperimentSingleTailnet replaces workspace connections inside coderd to // all use a single tailnet, instead of the previous behavior of creating a // single tailnet for each agent. ExperimentSingleTailnet Experiment = "single_tailnet" // ExperimentTemplateAutostopRequirement allows template admins to have more // control over when workspaces created on a template are required to // stop, and allows users to ensure these restarts never happen during their // business hours. // // This will replace the MaxTTL setting on templates. // // Enables: // - User quiet hours schedule settings // - Template autostop requirement settings // - Changes the max_deadline algorithm to use autostop requirement and user // quiet hours instead of max_ttl. ExperimentTemplateAutostopRequirement Experiment = "template_autostop_requirement" // Deployment health page ExperimentDeploymentHealthPage Experiment = "deployment_health_page" // ExperimentDashboardTheme mutates the dashboard to use a new, dark color scheme. ExperimentDashboardTheme Experiment = "dashboard_theme" ExperimentTemplateUpdatePolicies Experiment = "template_update_policies" )
type Experiments ¶
type Experiments []Experiment
Experiments is a list of experiments. Multiple experiments may be enabled at the same time. Experiments are not safe for production use, and are not guaranteed to be backwards compatible. They may be removed or renamed at any time.
func (Experiments) Enabled ¶
func (e Experiments) Enabled(ex Experiment) bool
Returns a list of experiments that are enabled for the deployment.
type ExternalAuth ¶ added in v2.2.1
type ExternalAuth struct { Authenticated bool `json:"authenticated"` Device bool `json:"device"` DisplayName string `json:"display_name"` // User is the user that authenticated with the provider. User *ExternalAuthUser `json:"user"` // AppInstallable is true if the request for app installs was successful. AppInstallable bool `json:"app_installable"` // AppInstallations are the installations that the user has access to. AppInstallations []ExternalAuthAppInstallation `json:"installations"` // AppInstallURL is the URL to install the app. AppInstallURL string `json:"app_install_url"` }
type ExternalAuthAppInstallation ¶ added in v2.2.1
type ExternalAuthAppInstallation struct { ID int `json:"id"` Account ExternalAuthUser `json:"account"` ConfigureURL string `json:"configure_url"` }
type ExternalAuthConfig ¶ added in v2.2.1
type ExternalAuthConfig struct { // Type is the type of external auth config. Type string `json:"type"` ClientID string `json:"client_id"` ClientSecret string `json:"-" yaml:"client_secret"` // ID is a unique identifier for the auth config. // It defaults to `type` when not provided. ID string `json:"id"` AuthURL string `json:"auth_url"` TokenURL string `json:"token_url"` ValidateURL string `json:"validate_url"` AppInstallURL string `json:"app_install_url"` AppInstallationsURL string `json:"app_installations_url"` NoRefresh bool `json:"no_refresh"` Scopes []string `json:"scopes"` ExtraTokenKeys []string `json:"extra_token_keys"` DeviceFlow bool `json:"device_flow"` DeviceCodeURL string `json:"device_code_url"` // Regex allows API requesters to match an auth config by // a string (e.g. coder.com) instead of by it's type. // // Git clone makes use of this by parsing the URL from: // 'Username for "https://github.com":' // And sending it to the Coder server to match against the Regex. Regex string `json:"regex"` // DisplayName is shown in the UI to identify the auth config. DisplayName string `json:"display_name"` // DisplayIcon is a URL to an icon to display in the UI. DisplayIcon string `json:"display_icon"` }
type ExternalAuthDevice ¶ added in v2.2.1
type ExternalAuthDevice struct { DeviceCode string `json:"device_code"` UserCode string `json:"user_code"` VerificationURI string `json:"verification_uri"` ExpiresIn int `json:"expires_in"` Interval int `json:"interval"` }
ExternalAuthDevice is the response from the device authorization endpoint. See: https://tools.ietf.org/html/rfc8628#section-3.2
type ExternalAuthDeviceExchange ¶ added in v2.2.1
type ExternalAuthDeviceExchange struct {
DeviceCode string `json:"device_code"`
}
type ExternalAuthUser ¶ added in v2.2.1
type Feature ¶
type Feature struct { Entitlement Entitlement `json:"entitlement"` Enabled bool `json:"enabled"` Limit *int64 `json:"limit,omitempty"` Actual *int64 `json:"actual,omitempty"` }
type FeatureName ¶
type FeatureName string
FeatureName represents the internal name of a feature. To add a new feature, add it to this set of enums as well as the FeatureNames array below.
const ( FeatureUserLimit FeatureName = "user_limit" FeatureAuditLog FeatureName = "audit_log" FeatureBrowserOnly FeatureName = "browser_only" FeatureSCIM FeatureName = "scim" FeatureTemplateRBAC FeatureName = "template_rbac" FeatureUserRoleManagement FeatureName = "user_role_management" FeatureHighAvailability FeatureName = "high_availability" FeatureMultipleExternalAuth FeatureName = "multiple_external_auth" FeatureExternalProvisionerDaemons FeatureName = "external_provisioner_daemons" FeatureAppearance FeatureName = "appearance" FeatureAdvancedTemplateScheduling FeatureName = "advanced_template_scheduling" FeatureWorkspaceProxy FeatureName = "workspace_proxy" FeatureExternalTokenEncryption FeatureName = "external_token_encryption" FeatureTemplateAutostopRequirement FeatureName = "template_autostop_requirement" FeatureWorkspaceBatchActions FeatureName = "workspace_batch_actions" FeatureAccessControl FeatureName = "access_control" )
func (FeatureName) AlwaysEnable ¶
func (n FeatureName) AlwaysEnable() bool
AlwaysEnable returns if the feature is always enabled if entitled. Warning: We don't know if we need this functionality. This method may disappear at any time.
func (FeatureName) Humanize ¶
func (n FeatureName) Humanize() string
Humanize returns the feature name in a human-readable format.
type GenerateAPIKeyResponse ¶
type GenerateAPIKeyResponse struct {
Key string `json:"key"`
}
GenerateAPIKeyResponse contains an API key for a user.
type GetUsersResponse ¶
type Group ¶
type Group struct { ID uuid.UUID `json:"id" format:"uuid"` Name string `json:"name"` DisplayName string `json:"display_name"` OrganizationID uuid.UUID `json:"organization_id" format:"uuid"` Members []User `json:"members"` AvatarURL string `json:"avatar_url"` QuotaAllowance int `json:"quota_allowance"` Source GroupSource `json:"source"` }
func (Group) IsEveryone ¶
type GroupSource ¶
type GroupSource string
const ( GroupSourceUser GroupSource = "user" GroupSourceOIDC GroupSource = "oidc" )
type Healthcheck ¶
type Healthcheck struct { // URL specifies the endpoint to check for the app health. URL string `json:"url"` // Interval specifies the seconds between each health check. Interval int32 `json:"interval"` // Threshold specifies the number of consecutive failed health checks before returning "unhealthy". Threshold int32 `json:"threshold"` }
type HealthcheckConfig ¶ added in v2.4.0
type HealthcheckConfig struct { Refresh clibase.Duration `json:"refresh" typescript:",notnull"` ThresholdDatabase clibase.Duration `json:"threshold_database" typescript:",notnull"` }
HealthcheckConfig contains configuration for healthchecks.
type InsightsReportInterval ¶
type InsightsReportInterval string
InsightsReportInterval is the interval of time over which to generate a smaller insights report within a time range.
const ( InsightsReportIntervalDay InsightsReportInterval = "day" InsightsReportIntervalWeek InsightsReportInterval = "week" )
InsightsReportInterval enums.
func (InsightsReportInterval) Days ¶ added in v2.2.0
func (interval InsightsReportInterval) Days() int32
Days returns the duration of the interval in days.
type IssueReconnectingPTYSignedTokenResponse ¶
type IssueReconnectingPTYSignedTokenResponse struct {
SignedToken string `json:"signed_token"`
}
type JobErrorCode ¶
type JobErrorCode string
JobErrorCode defines the error code returned by job runner.
const (
RequiredTemplateVariables JobErrorCode = "REQUIRED_TEMPLATE_VARIABLES"
)
type License ¶
type License struct { ID int32 `json:"id"` UUID uuid.UUID `json:"uuid" format:"uuid"` UploadedAt time.Time `json:"uploaded_at" format:"date-time"` // Claims are the JWT claims asserted by the license. Here we use // a generic string map to ensure that all data from the server is // parsed verbatim, not just the fields this version of Coder // understands. Claims map[string]interface{} `json:"claims" table:"claims"` }
func (*License) AllFeaturesClaim ¶
func (*License) ExpiresAt ¶
ExpiresAt returns the expiration time of the license. If the claim is missing or has an unexpected type, an error is returned.
func (*License) FeaturesClaims ¶
func (l *License) FeaturesClaims() (map[FeatureName]int64, error)
FeaturesClaims provides the feature claims in license. This only returns the explicit claims. If checking for actual usage, also check `AllFeaturesClaim`.
type LinkConfig ¶
type LoggingConfig ¶
type LoginType ¶
type LoginType string
LoginType is the type of login used to create the API key.
const ( LoginTypeUnknown LoginType = "" LoginTypePassword LoginType = "password" LoginTypeGithub LoginType = "github" LoginTypeOIDC LoginType = "oidc" LoginTypeToken LoginType = "token" // LoginTypeNone is used if no login method is available for this user. // If this is set, the user has no method of logging in. // API keys can still be created by an owner and used by the user. // These keys would use the `LoginTypeToken` type. LoginTypeNone LoginType = "none" )
type LoginWithPasswordRequest ¶
type LoginWithPasswordRequest struct { Email string `json:"email" validate:"required,email" format:"email"` Password string `json:"password" validate:"required"` }
LoginWithPasswordRequest enables callers to authenticate with email and password.
type LoginWithPasswordResponse ¶
type LoginWithPasswordResponse struct {
SessionToken string `json:"session_token" validate:"required"`
}
LoginWithPasswordResponse contains a session token for the newly authenticated user.
type MinimalUser ¶
type MinimalUser struct { ID uuid.UUID `json:"id" validate:"required" table:"id" format:"uuid"` Username string `json:"username" validate:"required" table:"username,default_sort"` AvatarURL string `json:"avatar_url" format:"uri"` }
MinimalUser is the minimal information needed to identify a user and show them on the UI.
type NullTime ¶
NullTime represents a nullable time.Time. @typescript-ignore NullTime
func NewNullTime ¶
NewNullTime returns a new NullTime with the given time.Time.
func (NullTime) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (*NullTime) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
type OAuth2Config ¶
type OAuth2Config struct {
Github OAuth2GithubConfig `json:"github" typescript:",notnull"`
}
type OAuth2GithubConfig ¶
type OAuth2GithubConfig struct { ClientID clibase.String `json:"client_id" typescript:",notnull"` ClientSecret clibase.String `json:"client_secret" typescript:",notnull"` AllowedOrgs clibase.StringArray `json:"allowed_orgs" typescript:",notnull"` AllowedTeams clibase.StringArray `json:"allowed_teams" typescript:",notnull"` AllowSignups clibase.Bool `json:"allow_signups" typescript:",notnull"` AllowEveryone clibase.Bool `json:"allow_everyone" typescript:",notnull"` EnterpriseBaseURL clibase.String `json:"enterprise_base_url" typescript:",notnull"` }
type OAuthConversionResponse ¶
type OIDCAuthMethod ¶
type OIDCAuthMethod struct { AuthMethod SignInText string `json:"signInText"` IconURL string `json:"iconUrl"` }
type OIDCConfig ¶
type OIDCConfig struct { AllowSignups clibase.Bool `json:"allow_signups" typescript:",notnull"` ClientID clibase.String `json:"client_id" typescript:",notnull"` ClientSecret clibase.String `json:"client_secret" typescript:",notnull"` // ClientKeyFile & ClientCertFile are used in place of ClientSecret for PKI auth. ClientKeyFile clibase.String `json:"client_key_file" typescript:",notnull"` ClientCertFile clibase.String `json:"client_cert_file" typescript:",notnull"` EmailDomain clibase.StringArray `json:"email_domain" typescript:",notnull"` IssuerURL clibase.String `json:"issuer_url" typescript:",notnull"` Scopes clibase.StringArray `json:"scopes" typescript:",notnull"` IgnoreEmailVerified clibase.Bool `json:"ignore_email_verified" typescript:",notnull"` UsernameField clibase.String `json:"username_field" typescript:",notnull"` EmailField clibase.String `json:"email_field" typescript:",notnull"` AuthURLParams clibase.Struct[map[string]string] `json:"auth_url_params" typescript:",notnull"` IgnoreUserInfo clibase.Bool `json:"ignore_user_info" typescript:",notnull"` GroupAutoCreate clibase.Bool `json:"group_auto_create" typescript:",notnull"` GroupRegexFilter clibase.Regexp `json:"group_regex_filter" typescript:",notnull"` GroupField clibase.String `json:"groups_field" typescript:",notnull"` GroupMapping clibase.Struct[map[string]string] `json:"group_mapping" typescript:",notnull"` UserRoleField clibase.String `json:"user_role_field" typescript:",notnull"` UserRoleMapping clibase.Struct[map[string][]string] `json:"user_role_mapping" typescript:",notnull"` UserRolesDefault clibase.StringArray `json:"user_roles_default" typescript:",notnull"` SignInText clibase.String `json:"sign_in_text" typescript:",notnull"` IconURL clibase.URL `json:"icon_url" typescript:",notnull"` }
type Organization ¶
type Organization struct { ID uuid.UUID `json:"id" validate:"required" format:"uuid"` Name string `json:"name" validate:"required"` CreatedAt time.Time `json:"created_at" validate:"required" format:"date-time"` UpdatedAt time.Time `json:"updated_at" validate:"required" format:"date-time"` }
Organization is the JSON representation of a Coder organization.
type OrganizationMember ¶
type OrganizationMember struct { UserID uuid.UUID `db:"user_id" json:"user_id" format:"uuid"` OrganizationID uuid.UUID `db:"organization_id" json:"organization_id" format:"uuid"` CreatedAt time.Time `db:"created_at" json:"created_at" format:"date-time"` UpdatedAt time.Time `db:"updated_at" json:"updated_at" format:"date-time"` Roles []Role `db:"roles" json:"roles"` }
type Pagination ¶
type Pagination struct { // AfterID returns all or up to Limit results after the given // UUID. This option can be used with or as an alternative to // Offset for better performance. To use it as an alternative, // set AfterID to the last UUID returned by the previous // request. AfterID uuid.UUID `json:"after_id,omitempty" format:"uuid"` // Limit sets the maximum number of users to be returned // in a single page. If the limit is <= 0, there is no limit // and all users are returned. Limit int `json:"limit,omitempty"` // Offset is used to indicate which page to return. An offset of 0 // returns the first 'limit' number of users. // To get the next page, use offset=<limit>*<page_number>. // Offset is 0 indexed, so the first record sits at offset 0. Offset int `json:"offset,omitempty"` }
Pagination sets pagination options for the endpoints that support it.
type ParameterResolver ¶
type ParameterResolver struct {
Rich []WorkspaceBuildParameter
}
ParameterResolver should be populated with legacy workload and rich parameter values from the previous build. It then supports queries against a current TemplateVersionParameter to determine whether a new value is required, or a value correctly validates. @typescript-ignore ParameterResolver
func (*ParameterResolver) ValidateResolve ¶
func (r *ParameterResolver) ValidateResolve(p TemplateVersionParameter, v *WorkspaceBuildParameter) (value string, err error)
ValidateResolve checks the provided value, v, against the parameter, p, and the previous build. If v is nil, it also resolves the correct value. It returns the value of the parameter, if valid, and an error if invalid.
type PatchGroupRequest ¶
type PatchWorkspaceProxy ¶
type PprofConfig ¶
type PrometheusConfig ¶
type PrometheusConfig struct { Enable clibase.Bool `json:"enable" typescript:",notnull"` Address clibase.HostPort `json:"address" typescript:",notnull"` CollectAgentStats clibase.Bool `json:"collect_agent_stats" typescript:",notnull"` CollectDBMetrics clibase.Bool `json:"collect_db_metrics" typescript:",notnull"` }
type ProvisionerConfig ¶
type ProvisionerConfig struct { Daemons clibase.Int64 `json:"daemons" typescript:",notnull"` DaemonsEcho clibase.Bool `json:"daemons_echo" typescript:",notnull"` DaemonPollInterval clibase.Duration `json:"daemon_poll_interval" typescript:",notnull"` DaemonPollJitter clibase.Duration `json:"daemon_poll_jitter" typescript:",notnull"` ForceCancelInterval clibase.Duration `json:"force_cancel_interval" typescript:",notnull"` DaemonPSK clibase.String `json:"daemon_psk" typescript:",notnull"` }
type ProvisionerDaemon ¶
type ProvisionerDaemon struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt sql.NullTime `json:"updated_at" format:"date-time"` Name string `json:"name"` Provisioners []ProvisionerType `json:"provisioners"` Tags map[string]string `json:"tags"` }
type ProvisionerJob ¶
type ProvisionerJob struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` StartedAt *time.Time `json:"started_at,omitempty" format:"date-time"` CompletedAt *time.Time `json:"completed_at,omitempty" format:"date-time"` CanceledAt *time.Time `json:"canceled_at,omitempty" format:"date-time"` Error string `json:"error,omitempty"` ErrorCode JobErrorCode `json:"error_code,omitempty" enums:"REQUIRED_TEMPLATE_VARIABLES"` Status ProvisionerJobStatus `json:"status" enums:"pending,running,succeeded,canceling,canceled,failed"` WorkerID *uuid.UUID `json:"worker_id,omitempty" format:"uuid"` FileID uuid.UUID `json:"file_id" format:"uuid"` Tags map[string]string `json:"tags"` QueuePosition int `json:"queue_position"` QueueSize int `json:"queue_size"` }
ProvisionerJob describes the job executed by the provisioning daemon.
type ProvisionerJobLog ¶
type ProvisionerJobLog struct { ID int64 `json:"id"` CreatedAt time.Time `json:"created_at" format:"date-time"` Source LogSource `json:"log_source"` Level LogLevel `json:"log_level" enums:"trace,debug,info,warn,error"` Stage string `json:"stage"` Output string `json:"output"` }
ProvisionerJobLog represents the provisioner log entry annotated with source and level.
type ProvisionerJobStatus ¶
type ProvisionerJobStatus string
ProvisionerJobStatus represents the at-time state of a job.
const ( ProvisionerJobPending ProvisionerJobStatus = "pending" ProvisionerJobRunning ProvisionerJobStatus = "running" ProvisionerJobSucceeded ProvisionerJobStatus = "succeeded" ProvisionerJobCanceling ProvisionerJobStatus = "canceling" ProvisionerJobCanceled ProvisionerJobStatus = "canceled" ProvisionerJobFailed ProvisionerJobStatus = "failed" ProvisionerJobUnknown ProvisionerJobStatus = "unknown" )
func (ProvisionerJobStatus) Active ¶
func (p ProvisionerJobStatus) Active() bool
Active returns whether the job is still active or not. It returns true if canceling as well, since the job isn't in an entirely inactive state yet.
type ProvisionerLogLevel ¶
type ProvisionerLogLevel string
const (
ProvisionerLogLevelDebug ProvisionerLogLevel = "debug"
)
type ProvisionerStorageMethod ¶
type ProvisionerStorageMethod string
const (
ProvisionerStorageMethodFile ProvisionerStorageMethod = "file"
)
type ProvisionerType ¶
type ProvisionerType string
const ( ProvisionerTypeEcho ProvisionerType = "echo" ProvisionerTypeTerraform ProvisionerType = "terraform" )
type ProxyHealthReport ¶
type ProxyHealthReport struct { // Errors are problems that prevent the workspace proxy from being healthy Errors []string `json:"errors"` // Warnings do not prevent the workspace proxy from being healthy, but // should be addressed. Warnings []string `json:"warnings"` }
ProxyHealthReport is a report of the health of the workspace proxy. A healthy report will have no errors. Warnings are not fatal.
type ProxyHealthStatus ¶
type ProxyHealthStatus string
const ( // ProxyHealthy means the proxy access url is reachable and returns a healthy // status code. ProxyHealthy ProxyHealthStatus = "ok" // ProxyUnreachable means the proxy access url is not responding. ProxyUnreachable ProxyHealthStatus = "unreachable" // ProxyUnhealthy means the proxy access url is responding, but there is some // problem with the proxy. This problem may or may not be preventing functionality. ProxyUnhealthy ProxyHealthStatus = "unhealthy" // ProxyUnregistered means the proxy has not registered a url yet. This means // the proxy was created with the cli, but has not yet been started. ProxyUnregistered ProxyHealthStatus = "unregistered" )
type PutExtendWorkspaceRequest ¶
type PutExtendWorkspaceRequest struct {
Deadline time.Time `json:"deadline" validate:"required" format:"date-time"`
}
PutExtendWorkspaceRequest is a request to extend the deadline of the active workspace build.
type RBACResource ¶
type RBACResource string
const ( ResourceWorkspace RBACResource = "workspace" ResourceWorkspaceProxy RBACResource = "workspace_proxy" ResourceWorkspaceExecution RBACResource = "workspace_execution" ResourceWorkspaceApplicationConnect RBACResource = "application_connect" ResourceAuditLog RBACResource = "audit_log" ResourceTemplate RBACResource = "template" ResourceGroup RBACResource = "group" ResourceFile RBACResource = "file" ResourceProvisionerDaemon RBACResource = "provisioner_daemon" ResourceOrganization RBACResource = "organization" ResourceRoleAssignment RBACResource = "assign_role" ResourceOrgRoleAssignment RBACResource = "assign_org_role" ResourceAPIKey RBACResource = "api_key" ResourceUser RBACResource = "user" ResourceUserData RBACResource = "user_data" ResourceOrganizationMember RBACResource = "organization_member" ResourceLicense RBACResource = "license" ResourceDeploymentValues RBACResource = "deployment_config" ResourceDeploymentStats RBACResource = "deployment_stats" ResourceReplicas RBACResource = "replicas" ResourceDebugInfo RBACResource = "debug_info" ResourceSystem RBACResource = "system" )
func (RBACResource) String ¶
func (r RBACResource) String() string
type RateLimitConfig ¶
type ReconnectingPTYRequest ¶
type ReconnectingPTYRequest struct { Data string `json:"data,omitempty"` Height uint16 `json:"height,omitempty"` Width uint16 `json:"width,omitempty"` }
ReconnectingPTYRequest is sent from the client to the server to pipe data to a PTY. @typescript-ignore ReconnectingPTYRequest
type Region ¶
type Region struct { ID uuid.UUID `json:"id" format:"uuid" table:"id"` Name string `json:"name" table:"name,default_sort"` DisplayName string `json:"display_name" table:"display_name"` IconURL string `json:"icon_url" table:"icon_url"` Healthy bool `json:"healthy" table:"healthy"` // PathAppURL is the URL to the base path for path apps. Optional // unless wildcard_hostname is set. // E.g. https://us.example.com PathAppURL string `json:"path_app_url" table:"url"` // WildcardHostname is the wildcard hostname for subdomain apps. // E.g. *.us.example.com // E.g. *--suffix.au.example.com // Optional. Does not need to be on the same domain as PathAppURL. WildcardHostname string `json:"wildcard_hostname" table:"wildcard_hostname"` }
type RegionTypes ¶
type RegionTypes interface { Region | WorkspaceProxy }
type RegionsResponse ¶
type RegionsResponse[R RegionTypes] struct { Regions []R `json:"regions"` }
type Replica ¶
type Replica struct { // ID is the unique identifier for the replica. ID uuid.UUID `json:"id" format:"uuid"` // Hostname is the hostname of the replica. Hostname string `json:"hostname"` // CreatedAt is the timestamp when the replica was first seen. CreatedAt time.Time `json:"created_at" format:"date-time"` // RelayAddress is the accessible address to relay DERP connections. RelayAddress string `json:"relay_address"` // RegionID is the region of the replica. RegionID int32 `json:"region_id"` // Error is the replica error. Error string `json:"error"` // DatabaseLatency is the latency in microseconds to the database. DatabaseLatency int32 `json:"database_latency"` }
type RequestOption ¶
RequestOption is a function that can be used to modify an http.Request.
func WithQueryParam ¶
func WithQueryParam(key, value string) RequestOption
WithQueryParam adds a query parameter to the request.
type ResolveAutostartResponse ¶ added in v2.4.0
type ResolveAutostartResponse struct {
ParameterMismatch bool `json:"parameter_mismatch"`
}
type ResourceType ¶
type ResourceType string
const ( ResourceTypeTemplate ResourceType = "template" ResourceTypeTemplateVersion ResourceType = "template_version" ResourceTypeUser ResourceType = "user" ResourceTypeWorkspace ResourceType = "workspace" ResourceTypeWorkspaceBuild ResourceType = "workspace_build" ResourceTypeGitSSHKey ResourceType = "git_ssh_key" ResourceTypeAPIKey ResourceType = "api_key" ResourceTypeGroup ResourceType = "group" ResourceTypeLicense ResourceType = "license" ResourceTypeConvertLogin ResourceType = "convert_login" ResourceTypeWorkspaceProxy ResourceType = "workspace_proxy" ResourceTypeOrganization ResourceType = "organization" )
func (ResourceType) FriendlyString ¶
func (r ResourceType) FriendlyString() string
type Response ¶
type Response struct { // Message is an actionable message that depicts actions the request took. // These messages should be fully formed sentences with proper punctuation. // Examples: // - "A user has been created." // - "Failed to create a user." Message string `json:"message"` // Detail is a debug message that provides further insight into why the // action failed. This information can be technical and a regular golang // err.Error() text. // - "database: too many open connections" // - "stat: too many open files" Detail string `json:"detail,omitempty"` // Validations are form field-specific friendly error messages. They will be // shown on a form field in the UI. These can also be used to add additional // context if there is a set of errors in the primary 'Message'. Validations []ValidationError `json:"validations,omitempty"` }
Response represents a generic HTTP response.
type SSHConfig ¶
type SSHConfig struct { // DeploymentName is the config-ssh Hostname prefix DeploymentName clibase.String // SSHConfigOptions are additional options to add to the ssh config file. // This will override defaults. SSHConfigOptions clibase.StringArray }
SSHConfig is configuration the cli & vscode extension use for configuring ssh connections.
type SSHConfigResponse ¶
type ServeProvisionerDaemonRequest ¶
type ServeProvisionerDaemonRequest struct { // ID is a unique ID for a provisioner daemon. ID uuid.UUID `json:"id" format:"uuid"` // Organization is the organization for the URL. At present provisioner daemons ARE NOT scoped to organizations // and so the organization ID is optional. Organization uuid.UUID `json:"organization" format:"uuid"` // Provisioners is a list of provisioner types hosted by the provisioner daemon Provisioners []ProvisionerType `json:"provisioners"` // Tags is a map of key-value pairs that tag the jobs this provisioner daemon can handle Tags map[string]string `json:"tags"` PreSharedKey string `json:"pre_shared_key"` }
ServeProvisionerDaemonRequest are the parameters to call ServeProvisionerDaemon with @typescript-ignore ServeProvisionerDaemonRequest
type ServerSentEvent ¶
type ServerSentEvent struct { Type ServerSentEventType `json:"type"` Data interface{} `json:"data"` }
type ServerSentEventType ¶
type ServerSentEventType string
const ( ServerSentEventTypePing ServerSentEventType = "ping" ServerSentEventTypeData ServerSentEventType = "data" ServerSentEventTypeError ServerSentEventType = "error" )
type ServiceBannerConfig ¶
type SupportConfig ¶
type SupportConfig struct {
Links clibase.Struct[[]LinkConfig] `json:"links" typescript:",notnull"`
}
type SwaggerConfig ¶
type TLSConfig ¶
type TLSConfig struct { Enable clibase.Bool `json:"enable" typescript:",notnull"` Address clibase.HostPort `json:"address" typescript:",notnull"` RedirectHTTP clibase.Bool `json:"redirect_http" typescript:",notnull"` CertFiles clibase.StringArray `json:"cert_file" typescript:",notnull"` ClientAuth clibase.String `json:"client_auth" typescript:",notnull"` ClientCAFile clibase.String `json:"client_ca_file" typescript:",notnull"` KeyFiles clibase.StringArray `json:"key_file" typescript:",notnull"` MinVersion clibase.String `json:"min_version" typescript:",notnull"` ClientCertFile clibase.String `json:"client_cert_file" typescript:",notnull"` ClientKeyFile clibase.String `json:"client_key_file" typescript:",notnull"` SupportedCiphers clibase.StringArray `json:"supported_ciphers" typescript:",notnull"` AllowInsecureCiphers clibase.Bool `json:"allow_insecure_ciphers" typescript:",notnull"` }
type TelemetryConfig ¶
type Template ¶
type Template struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" format:"date-time"` OrganizationID uuid.UUID `json:"organization_id" format:"uuid"` Name string `json:"name"` DisplayName string `json:"display_name"` Provisioner ProvisionerType `json:"provisioner" enums:"terraform"` ActiveVersionID uuid.UUID `json:"active_version_id" format:"uuid"` // ActiveUserCount is set to -1 when loading. ActiveUserCount int `json:"active_user_count"` BuildTimeStats TemplateBuildTimeStats `json:"build_time_stats"` Description string `json:"description"` Icon string `json:"icon"` DefaultTTLMillis int64 `json:"default_ttl_ms"` // TODO(@dean): remove max_ttl once autostop_requirement is matured MaxTTLMillis int64 `json:"max_ttl_ms"` // AutostopRequirement and AutostartRequirement are enterprise features. Its // value is only used if your license is entitled to use the advanced template // scheduling feature. AutostopRequirement TemplateAutostopRequirement `json:"autostop_requirement"` AutostartRequirement TemplateAutostartRequirement `json:"autostart_requirement"` CreatedByID uuid.UUID `json:"created_by_id" format:"uuid"` CreatedByName string `json:"created_by_name"` // AllowUserAutostart and AllowUserAutostop are enterprise-only. Their // values are only used if your license is entitled to use the advanced // template scheduling feature. AllowUserAutostart bool `json:"allow_user_autostart"` AllowUserAutostop bool `json:"allow_user_autostop"` AllowUserCancelWorkspaceJobs bool `json:"allow_user_cancel_workspace_jobs"` // FailureTTLMillis, TimeTilDormantMillis, and TimeTilDormantAutoDeleteMillis are enterprise-only. Their // values are used if your license is entitled to use the advanced // template scheduling feature. FailureTTLMillis int64 `json:"failure_ttl_ms"` TimeTilDormantMillis int64 `json:"time_til_dormant_ms"` TimeTilDormantAutoDeleteMillis int64 `json:"time_til_dormant_autodelete_ms"` // RequireActiveVersion mandates that workspaces are built with the active // template version. RequireActiveVersion bool `json:"require_active_version"` }
Template is the JSON representation of a Coder template. This type matches the database object for now, but is abstracted for ease of change later on.
type TemplateACL ¶
type TemplateACL struct { Users []TemplateUser `json:"users"` Groups []TemplateGroup `json:"group"` }
type TemplateAppUsage ¶
type TemplateAppUsage struct { TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` Type TemplateAppsType `json:"type" example:"builtin"` DisplayName string `json:"display_name" example:"Visual Studio Code"` Slug string `json:"slug" example:"vscode"` Icon string `json:"icon"` Seconds int64 `json:"seconds" example:"80500"` }
TemplateAppUsage shows the usage of an app for one or more templates.
type TemplateAppsType ¶
type TemplateAppsType string
TemplateAppsType defines the type of app reported.
const ( TemplateAppsTypeBuiltin TemplateAppsType = "builtin" TemplateAppsTypeApp TemplateAppsType = "app" )
TemplateAppsType enums.
type TemplateAutostartRequirement ¶ added in v2.3.1
type TemplateAutostartRequirement struct { // DaysOfWeek is a list of days of the week in which autostart is allowed // to happen. If no days are specified, autostart is not allowed. DaysOfWeek []string `json:"days_of_week" enums:"monday,tuesday,wednesday,thursday,friday,saturday,sunday"` }
type TemplateAutostopRequirement ¶ added in v2.1.5
type TemplateAutostopRequirement struct { // DaysOfWeek is a list of days of the week on which restarts are required. // Restarts happen within the user's quiet hours (in their configured // timezone). If no days are specified, restarts are not required. Weekdays // cannot be specified twice. // // Restarts will only happen on weekdays in this list on weeks which line up // with Weeks. DaysOfWeek []string `json:"days_of_week" enums:"monday,tuesday,wednesday,thursday,friday,saturday,sunday"` // Weeks is the number of weeks between required restarts. Weeks are synced // across all workspaces (and Coder deployments) using modulo math on a // hardcoded epoch week of January 2nd, 2023 (the first Monday of 2023). // Values of 0 or 1 indicate weekly restarts. Values of 2 indicate // fortnightly restarts, etc. Weeks int64 `json:"weeks"` }
type TemplateBuildTimeStats ¶
type TemplateBuildTimeStats map[WorkspaceTransition]TransitionStats
type TemplateExample ¶
type TemplateGroup ¶
type TemplateGroup struct { Group Role TemplateRole `json:"role" enums:"admin,use"` }
type TemplateInsightsIntervalReport ¶
type TemplateInsightsIntervalReport struct { StartTime time.Time `json:"start_time" format:"date-time"` EndTime time.Time `json:"end_time" format:"date-time"` TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` Interval InsightsReportInterval `json:"interval" example:"week"` ActiveUsers int64 `json:"active_users" example:"14"` }
TemplateInsightsIntervalReport is the report from the template insights endpoint for a specific interval.
type TemplateInsightsReport ¶
type TemplateInsightsReport struct { StartTime time.Time `json:"start_time" format:"date-time"` EndTime time.Time `json:"end_time" format:"date-time"` TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` ActiveUsers int64 `json:"active_users" example:"22"` AppsUsage []TemplateAppUsage `json:"apps_usage"` ParametersUsage []TemplateParameterUsage `json:"parameters_usage"` }
TemplateInsightsReport is the report from the template insights endpoint.
type TemplateInsightsRequest ¶
type TemplateInsightsRequest struct { StartTime time.Time `json:"start_time" format:"date-time"` EndTime time.Time `json:"end_time" format:"date-time"` TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` Interval InsightsReportInterval `json:"interval" example:"day"` Sections []TemplateInsightsSection `json:"sections" example:"report"` }
type TemplateInsightsResponse ¶
type TemplateInsightsResponse struct { Report *TemplateInsightsReport `json:"report,omitempty"` IntervalReports []TemplateInsightsIntervalReport `json:"interval_reports,omitempty"` }
TemplateInsightsResponse is the response from the template insights endpoint.
type TemplateInsightsSection ¶ added in v2.2.1
type TemplateInsightsSection string
TemplateInsightsSection defines the section to be included in the template insights response.
const ( TemplateInsightsSectionIntervalReports TemplateInsightsSection = "interval_reports" TemplateInsightsSectionReport TemplateInsightsSection = "report" )
TemplateInsightsSection enums.
type TemplateParameterUsage ¶
type TemplateParameterUsage struct { TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` DisplayName string `json:"display_name"` Name string `json:"name"` Type string `json:"type"` Description string `json:"description"` Options []TemplateVersionParameterOption `json:"options,omitempty"` Values []TemplateParameterValue `json:"values"` }
TemplateParameterUsage shows the usage of a parameter for one or more templates.
type TemplateParameterValue ¶
TemplateParameterValue shows the usage of a parameter value for one or more templates.
type TemplateRole ¶
type TemplateRole string
const ( TemplateRoleAdmin TemplateRole = "admin" TemplateRoleUse TemplateRole = "use" TemplateRoleDeleted TemplateRole = "" )
type TemplateUser ¶
type TemplateUser struct { User Role TemplateRole `json:"role" enums:"admin,use"` }
type TemplateVersion ¶
type TemplateVersion struct { ID uuid.UUID `json:"id" format:"uuid"` TemplateID *uuid.UUID `json:"template_id,omitempty" format:"uuid"` OrganizationID uuid.UUID `json:"organization_id,omitempty" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" format:"date-time"` Name string `json:"name"` Message string `json:"message"` Job ProvisionerJob `json:"job"` Readme string `json:"readme"` CreatedBy MinimalUser `json:"created_by"` Archived bool `json:"archived"` Warnings []TemplateVersionWarning `json:"warnings,omitempty" enums:"DEPRECATED_PARAMETERS"` }
TemplateVersion represents a single version of a template.
type TemplateVersionExternalAuth ¶ added in v2.2.1
type TemplateVersionParameter ¶
type TemplateVersionParameter struct { Name string `json:"name"` DisplayName string `json:"display_name,omitempty"` Description string `json:"description"` DescriptionPlaintext string `json:"description_plaintext"` Type string `json:"type" enums:"string,number,bool,list(string)"` Mutable bool `json:"mutable"` DefaultValue string `json:"default_value"` Icon string `json:"icon"` Options []TemplateVersionParameterOption `json:"options"` ValidationError string `json:"validation_error,omitempty"` ValidationRegex string `json:"validation_regex,omitempty"` ValidationMin *int32 `json:"validation_min,omitempty"` ValidationMax *int32 `json:"validation_max,omitempty"` ValidationMonotonic ValidationMonotonicOrder `json:"validation_monotonic,omitempty" enums:"increasing,decreasing"` Required bool `json:"required"` Ephemeral bool `json:"ephemeral"` }
TemplateVersionParameter represents a parameter for a template version.
type TemplateVersionParameterOption ¶
type TemplateVersionParameterOption struct { Name string `json:"name"` Description string `json:"description"` Value string `json:"value"` Icon string `json:"icon"` }
TemplateVersionParameterOption represents a selectable option for a template parameter.
type TemplateVersionVariable ¶
type TemplateVersionVariable struct { Name string `json:"name"` Description string `json:"description"` Type string `json:"type" enums:"string,number,bool"` Value string `json:"value"` DefaultValue string `json:"default_value"` Required bool `json:"required"` Sensitive bool `json:"sensitive"` }
TemplateVersionVariable represents a managed template variable.
type TemplateVersionWarning ¶
type TemplateVersionWarning string
const (
TemplateVersionWarningUnsupportedWorkspaces TemplateVersionWarning = "UNSUPPORTED_WORKSPACES"
)
type TemplateVersionsByTemplateRequest ¶
type TemplateVersionsByTemplateRequest struct { TemplateID uuid.UUID `json:"template_id" validate:"required" format:"uuid"` IncludeArchived bool `json:"include_archived"` Pagination }
TemplateVersionsByTemplateRequest defines the request parameters for TemplateVersionsByTemplate.
type TokenConfig ¶
type TokensFilter ¶
type TokensFilter struct {
IncludeAll bool `json:"include_all"`
}
type TraceConfig ¶
type TransitionStats ¶
type UpdateAppearanceConfig ¶
type UpdateAppearanceConfig struct { ApplicationName string `json:"application_name"` LogoURL string `json:"logo_url"` ServiceBanner ServiceBannerConfig `json:"service_banner"` }
type UpdateCheckResponse ¶
type UpdateCheckResponse struct { // Current indicates whether the server version is the same as the latest. Current bool `json:"current"` // Version is the semantic version for the latest release of Coder. Version string `json:"version"` // URL to download the latest release of Coder. URL string `json:"url"` }
UpdateCheckResponse contains information on the latest release of Coder.
type UpdateRoles ¶
type UpdateRoles struct {
Roles []string `json:"roles" validate:""`
}
type UpdateTemplateACL ¶
type UpdateTemplateACL struct { // UserPerms should be a mapping of user id to role. The user id must be the // uuid of the user, not a username or email address. UserPerms map[string]TemplateRole `json:"user_perms,omitempty" example:"<group_id>:admin,4df59e74-c027-470b-ab4d-cbba8963a5e9:use"` // GroupPerms should be a mapping of group id to role. GroupPerms map[string]TemplateRole `json:"group_perms,omitempty" example:"<user_id>>:admin,8bd26b20-f3e8-48be-a903-46bb920cf671:use"` }
type UpdateTemplateMeta ¶
type UpdateTemplateMeta struct { Name string `json:"name,omitempty" validate:"omitempty,template_name"` DisplayName string `json:"display_name,omitempty" validate:"omitempty,template_display_name"` Description string `json:"description,omitempty"` Icon string `json:"icon,omitempty"` DefaultTTLMillis int64 `json:"default_ttl_ms,omitempty"` // TODO(@dean): remove max_ttl once autostop_requirement is matured MaxTTLMillis int64 `json:"max_ttl_ms,omitempty"` // AutostopRequirement and AutostartRequirement can only be set if your license // includes the advanced template scheduling feature. If you attempt to set this // value while unlicensed, it will be ignored. AutostopRequirement *TemplateAutostopRequirement `json:"autostop_requirement,omitempty"` AutostartRequirement *TemplateAutostartRequirement `json:"autostart_requirement,omitempty"` AllowUserAutostart bool `json:"allow_user_autostart,omitempty"` AllowUserAutostop bool `json:"allow_user_autostop,omitempty"` AllowUserCancelWorkspaceJobs bool `json:"allow_user_cancel_workspace_jobs,omitempty"` FailureTTLMillis int64 `json:"failure_ttl_ms,omitempty"` TimeTilDormantMillis int64 `json:"time_til_dormant_ms,omitempty"` TimeTilDormantAutoDeleteMillis int64 `json:"time_til_dormant_autodelete_ms,omitempty"` // UpdateWorkspaceLastUsedAt updates the last_used_at field of workspaces // spawned from the template. This is useful for preventing workspaces being // immediately locked when updating the inactivity_ttl field to a new, shorter // value. UpdateWorkspaceLastUsedAt bool `json:"update_workspace_last_used_at"` // UpdateWorkspaceDormant updates the dormant_at field of workspaces spawned // from the template. This is useful for preventing dormant workspaces being immediately // deleted when updating the dormant_ttl field to a new, shorter value. UpdateWorkspaceDormantAt bool `json:"update_workspace_dormant_at"` // RequireActiveVersion mandates workspaces built using this template // use the active version of the template. This option has no // effect on template admins. RequireActiveVersion bool `json:"require_active_version"` }
type UpdateUserProfileRequest ¶
type UpdateUserProfileRequest struct {
Username string `json:"username" validate:"required,username"`
}
type UpdateUserQuietHoursScheduleRequest ¶
type UpdateUserQuietHoursScheduleRequest struct { // Schedule is a cron expression that defines when the user's quiet hours // window is. Schedule must not be empty. For new users, the schedule is set // to 2am in their browser or computer's timezone. The schedule denotes the // beginning of a 4 hour window where the workspace is allowed to // automatically stop or restart due to maintenance or template max TTL. // // The schedule must be daily with a single time, and should have a timezone // specified via a CRON_TZ prefix (otherwise UTC will be used). // // If the schedule is empty, the user will be updated to use the default // schedule. Schedule string `json:"schedule" validate:"required"` }
type UpdateWorkspaceAutomaticUpdatesRequest ¶ added in v2.3.0
type UpdateWorkspaceAutomaticUpdatesRequest struct {
AutomaticUpdates AutomaticUpdates `json:"automatic_updates"`
}
UpdateWorkspaceAutomaticUpdatesRequest is a request to updates a workspace's automatic updates setting.
type UpdateWorkspaceAutostartRequest ¶
type UpdateWorkspaceAutostartRequest struct {
Schedule *string `json:"schedule"`
}
UpdateWorkspaceAutostartRequest is a request to update a workspace's autostart schedule.
type UpdateWorkspaceDormancy ¶ added in v2.1.4
type UpdateWorkspaceDormancy struct {
Dormant bool `json:"dormant"`
}
UpdateWorkspaceDormancy is a request to activate or make a workspace dormant. A value of false will activate a dormant workspace.
type UpdateWorkspaceProxyResponse ¶
type UpdateWorkspaceProxyResponse struct { Proxy WorkspaceProxy `json:"proxy" table:"proxy,recursive"` // The recursive table sort is not working very well. ProxyToken string `json:"proxy_token" table:"proxy token,default_sort"` }
type UpdateWorkspaceRequest ¶
type UpdateWorkspaceRequest struct {
Name string `json:"name,omitempty" validate:"username"`
}
type UpdateWorkspaceTTLRequest ¶
type UpdateWorkspaceTTLRequest struct {
TTLMillis *int64 `json:"ttl_ms"`
}
UpdateWorkspaceTTLRequest is a request to update a workspace's TTL.
type UploadResponse ¶
UploadResponse contains the hash to reference the uploaded file.
type User ¶
type User struct { ID uuid.UUID `json:"id" validate:"required" table:"id" format:"uuid"` Username string `json:"username" validate:"required" table:"username,default_sort"` Email string `json:"email" validate:"required" table:"email" format:"email"` CreatedAt time.Time `json:"created_at" validate:"required" table:"created at" format:"date-time"` LastSeenAt time.Time `json:"last_seen_at" format:"date-time"` Status UserStatus `json:"status" table:"status" enums:"active,suspended"` OrganizationIDs []uuid.UUID `json:"organization_ids" format:"uuid"` Roles []Role `json:"roles"` AvatarURL string `json:"avatar_url" format:"uri"` LoginType LoginType `json:"login_type"` }
User represents a user in Coder.
type UserActivity ¶ added in v2.2.0
type UserActivity struct { TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` UserID uuid.UUID `json:"user_id" format:"uuid"` Username string `json:"username"` AvatarURL string `json:"avatar_url" format:"uri"` Seconds int64 `json:"seconds" example:"80500"` }
UserActivity shows the session time for a user.
type UserActivityInsightsReport ¶ added in v2.2.0
type UserActivityInsightsReport struct { StartTime time.Time `json:"start_time" format:"date-time"` EndTime time.Time `json:"end_time" format:"date-time"` TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` Users []UserActivity `json:"users"` }
UserActivityInsightsReport is the report from the user activity insights endpoint.
type UserActivityInsightsRequest ¶ added in v2.2.0
type UserActivityInsightsResponse ¶ added in v2.2.0
type UserActivityInsightsResponse struct {
Report UserActivityInsightsReport `json:"report"`
}
UserActivityInsightsResponse is the response from the user activity insights endpoint.
type UserLatency ¶
type UserLatency struct { TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` UserID uuid.UUID `json:"user_id" format:"uuid"` Username string `json:"username"` AvatarURL string `json:"avatar_url" format:"uri"` LatencyMS ConnectionLatency `json:"latency_ms"` }
UserLatency shows the connection latency for a user.
type UserLatencyInsightsReport ¶
type UserLatencyInsightsReport struct { StartTime time.Time `json:"start_time" format:"date-time"` EndTime time.Time `json:"end_time" format:"date-time"` TemplateIDs []uuid.UUID `json:"template_ids" format:"uuid"` Users []UserLatency `json:"users"` }
UserLatencyInsightsReport is the report from the user latency insights endpoint.
type UserLatencyInsightsResponse ¶
type UserLatencyInsightsResponse struct {
Report UserLatencyInsightsReport `json:"report"`
}
UserLatencyInsightsResponse is the response from the user latency insights endpoint.
type UserLoginType ¶
type UserLoginType struct {
LoginType LoginType `json:"login_type"`
}
type UserQuietHoursScheduleResponse ¶
type UserQuietHoursScheduleResponse struct { RawSchedule string `json:"raw_schedule"` // UserSet is true if the user has set their own quiet hours schedule. If // false, the user is using the default schedule. UserSet bool `json:"user_set"` // Time is the time of day that the quiet hours window starts in the given // Timezone each day. Time string `json:"time"` // HH:mm (24-hour) Timezone string `json:"timezone"` // raw format from the cron expression, UTC if unspecified // Next is the next time that the quiet hours window will start. Next time.Time `json:"next" format:"date-time"` }
type UserStatus ¶
type UserStatus string
const ( UserStatusActive UserStatus = "active" UserStatusDormant UserStatus = "dormant" UserStatusSuspended UserStatus = "suspended" )
type UsersRequest ¶
type UsersRequest struct { Search string `json:"search,omitempty" typescript:"-"` // Filter users by status. Status UserStatus `json:"status,omitempty" typescript:"-"` // Filter users that have the given role. Role string `json:"role,omitempty" typescript:"-"` SearchQuery string `json:"q,omitempty"` Pagination }
type ValidationError ¶
type ValidationError struct { Field string `json:"field" validate:"required"` Detail string `json:"detail" validate:"required"` }
ValidationError represents a scoped error to a user input.
func (ValidationError) Error ¶
func (e ValidationError) Error() string
type ValidationMonotonicOrder ¶
type ValidationMonotonicOrder string
const ( MonotonicOrderIncreasing ValidationMonotonicOrder = "increasing" MonotonicOrderDecreasing ValidationMonotonicOrder = "decreasing" )
type VariableValue ¶
type Workspace ¶
type Workspace struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" format:"date-time"` OwnerID uuid.UUID `json:"owner_id" format:"uuid"` OwnerName string `json:"owner_name"` OrganizationID uuid.UUID `json:"organization_id" format:"uuid"` TemplateID uuid.UUID `json:"template_id" format:"uuid"` TemplateName string `json:"template_name"` TemplateDisplayName string `json:"template_display_name"` TemplateIcon string `json:"template_icon"` TemplateAllowUserCancelWorkspaceJobs bool `json:"template_allow_user_cancel_workspace_jobs"` TemplateActiveVersionID uuid.UUID `json:"template_active_version_id" format:"uuid"` TemplateRequireActiveVersion bool `json:"template_require_active_version"` LatestBuild WorkspaceBuild `json:"latest_build"` Outdated bool `json:"outdated"` Name string `json:"name"` AutostartSchedule *string `json:"autostart_schedule,omitempty"` TTLMillis *int64 `json:"ttl_ms,omitempty"` LastUsedAt time.Time `json:"last_used_at" format:"date-time"` // DeletingAt indicates the time at which the workspace will be permanently deleted. // A workspace is eligible for deletion if it is dormant (a non-nil dormant_at value) // and a value has been specified for time_til_dormant_autodelete on its template. DeletingAt *time.Time `json:"deleting_at" format:"date-time"` // DormantAt being non-nil indicates a workspace that is dormant. // A dormant workspace is no longer accessible must be activated. // It is subject to deletion if it breaches // the duration of the time_til_ field on its template. DormantAt *time.Time `json:"dormant_at" format:"date-time"` // Health shows the health of the workspace and information about // what is causing an unhealthy status. Health WorkspaceHealth `json:"health"` AutomaticUpdates AutomaticUpdates `json:"automatic_updates" enums:"always,never"` }
Workspace is a deployment of a template. It references a specific version and can be updated.
type WorkspaceAgent ¶
type WorkspaceAgent struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" format:"date-time"` FirstConnectedAt *time.Time `json:"first_connected_at,omitempty" format:"date-time"` LastConnectedAt *time.Time `json:"last_connected_at,omitempty" format:"date-time"` DisconnectedAt *time.Time `json:"disconnected_at,omitempty" format:"date-time"` StartedAt *time.Time `json:"started_at,omitempty" format:"date-time"` ReadyAt *time.Time `json:"ready_at,omitempty" format:"date-time"` Status WorkspaceAgentStatus `json:"status"` LifecycleState WorkspaceAgentLifecycle `json:"lifecycle_state"` Name string `json:"name"` ResourceID uuid.UUID `json:"resource_id" format:"uuid"` InstanceID string `json:"instance_id,omitempty"` Architecture string `json:"architecture"` EnvironmentVariables map[string]string `json:"environment_variables"` OperatingSystem string `json:"operating_system"` LogsLength int32 `json:"logs_length"` LogsOverflowed bool `json:"logs_overflowed"` Directory string `json:"directory,omitempty"` ExpandedDirectory string `json:"expanded_directory,omitempty"` Version string `json:"version"` APIVersion string `json:"api_version"` Apps []WorkspaceApp `json:"apps"` // DERPLatency is mapped by region name (e.g. "New York City", "Seattle"). DERPLatency map[string]DERPRegion `json:"latency,omitempty"` ConnectionTimeoutSeconds int32 `json:"connection_timeout_seconds"` TroubleshootingURL string `json:"troubleshooting_url"` Subsystems []AgentSubsystem `json:"subsystems"` Health WorkspaceAgentHealth `json:"health"` // Health reports the health of the agent. DisplayApps []DisplayApp `json:"display_apps"` LogSources []WorkspaceAgentLogSource `json:"log_sources"` Scripts []WorkspaceAgentScript `json:"scripts"` // StartupScriptBehavior is a legacy field that is deprecated in favor // of the `coder_script` resource. It's only referenced by old clients. // Deprecated: Remove in the future! StartupScriptBehavior WorkspaceAgentStartupScriptBehavior `json:"startup_script_behavior"` }
type WorkspaceAgentConn ¶
WorkspaceAgentConn represents a connection to a workspace agent. @typescript-ignore WorkspaceAgentConn
func NewWorkspaceAgentConn ¶
func NewWorkspaceAgentConn(conn *tailnet.Conn, opts WorkspaceAgentConnOptions) *WorkspaceAgentConn
NewWorkspaceAgentConn creates a new WorkspaceAgentConn. `conn` may be unique to the WorkspaceAgentConn, or it may be shared in the case of coderd. If the conn is shared and closing it is undesirable, you may return ErrNoClose from opts.CloseFunc. This will ensure the underlying conn is not closed.
func (*WorkspaceAgentConn) AwaitReachable ¶
func (c *WorkspaceAgentConn) AwaitReachable(ctx context.Context) bool
AwaitReachable waits for the agent to be reachable.
func (*WorkspaceAgentConn) Close ¶
func (c *WorkspaceAgentConn) Close() error
Close ends the connection to the workspace agent.
func (*WorkspaceAgentConn) DialContext ¶
func (c *WorkspaceAgentConn) DialContext(ctx context.Context, network string, addr string) (net.Conn, error)
DialContext dials the address provided in the workspace agent. The network must be "tcp" or "udp".
func (*WorkspaceAgentConn) ListeningPorts ¶
func (c *WorkspaceAgentConn) ListeningPorts(ctx context.Context) (WorkspaceAgentListeningPortsResponse, error)
ListeningPorts lists the ports that are currently in use by the workspace.
func (*WorkspaceAgentConn) Ping ¶
func (c *WorkspaceAgentConn) Ping(ctx context.Context) (time.Duration, bool, *ipnstate.PingResult, error)
Ping pings the agent and returns the round-trip time. The bool returns true if the ping was made P2P.
func (*WorkspaceAgentConn) ReconnectingPTY ¶
func (c *WorkspaceAgentConn) ReconnectingPTY(ctx context.Context, id uuid.UUID, height, width uint16, command string) (net.Conn, error)
ReconnectingPTY spawns a new reconnecting terminal session. `ReconnectingPTYRequest` should be JSON marshaled and written to the returned net.Conn. Raw terminal output will be read from the returned net.Conn.
func (*WorkspaceAgentConn) SSH ¶
SSH pipes the SSH protocol over the returned net.Conn. This connects to the built-in SSH server in the workspace agent.
type WorkspaceAgentConnOptions ¶
type WorkspaceAgentConnOptions struct { AgentID uuid.UUID AgentIP netip.Addr CloseFunc func() error }
@typescript-ignore WorkspaceAgentConnOptions
type WorkspaceAgentConnectionInfo ¶
type WorkspaceAgentConnectionInfo struct { DERPMap *tailcfg.DERPMap `json:"derp_map"` DERPForceWebSockets bool `json:"derp_force_websockets"` DisableDirectConnections bool `json:"disable_direct_connections"` }
WorkspaceAgentConnectionInfo returns required information for establishing a connection with a workspace. @typescript-ignore WorkspaceAgentConnectionInfo
type WorkspaceAgentHealth ¶
type WorkspaceAgentLifecycle ¶
type WorkspaceAgentLifecycle string
WorkspaceAgentLifecycle represents the lifecycle state of a workspace agent.
The agent lifecycle starts in the "created" state, and transitions to "starting" when the agent reports it has begun preparing (e.g. started executing the startup script).
const ( WorkspaceAgentLifecycleCreated WorkspaceAgentLifecycle = "created" WorkspaceAgentLifecycleStarting WorkspaceAgentLifecycle = "starting" WorkspaceAgentLifecycleStartTimeout WorkspaceAgentLifecycle = "start_timeout" WorkspaceAgentLifecycleStartError WorkspaceAgentLifecycle = "start_error" WorkspaceAgentLifecycleReady WorkspaceAgentLifecycle = "ready" WorkspaceAgentLifecycleShuttingDown WorkspaceAgentLifecycle = "shutting_down" WorkspaceAgentLifecycleShutdownTimeout WorkspaceAgentLifecycle = "shutdown_timeout" WorkspaceAgentLifecycleShutdownError WorkspaceAgentLifecycle = "shutdown_error" WorkspaceAgentLifecycleOff WorkspaceAgentLifecycle = "off" )
WorkspaceAgentLifecycle enums.
func (WorkspaceAgentLifecycle) ShuttingDown ¶
func (l WorkspaceAgentLifecycle) ShuttingDown() bool
ShuttingDown returns true if the agent is in the process of shutting down or has shut down.
func (WorkspaceAgentLifecycle) Starting ¶
func (l WorkspaceAgentLifecycle) Starting() bool
Starting returns true if the agent is in the process of starting.
type WorkspaceAgentListeningPortsResponse ¶
type WorkspaceAgentListeningPortsResponse struct { // If there are no ports in the list, nothing should be displayed in the UI. // There must not be a "no ports available" message or anything similar, as // there will always be no ports displayed on platforms where our port // detection logic is unsupported. Ports []WorkspaceAgentListeningPort `json:"ports"` }
type WorkspaceAgentLog ¶
type WorkspaceAgentLogSource ¶
type WorkspaceAgentMetadata ¶
type WorkspaceAgentMetadata struct { Result WorkspaceAgentMetadataResult `json:"result"` Description WorkspaceAgentMetadataDescription `json:"description"` }
type WorkspaceAgentMetadataDescription ¶
type WorkspaceAgentMetadataDescription struct { DisplayName string `json:"display_name"` Key string `json:"key"` Script string `json:"script"` Interval int64 `json:"interval"` Timeout int64 `json:"timeout"` }
WorkspaceAgentMetadataDescription is a description of dynamic metadata the agent should report back to coderd. It is provided via the `metadata` list in the `coder_agent` block.
type WorkspaceAgentMetadataResult ¶
type WorkspaceAgentMetadataResult struct { CollectedAt time.Time `json:"collected_at" format:"date-time"` // Age is the number of seconds since the metadata was collected. // It is provided in addition to CollectedAt to protect against clock skew. Age int64 `json:"age"` Value string `json:"value"` Error string `json:"error"` }
type WorkspaceAgentReconnectingPTYInit ¶
type WorkspaceAgentReconnectingPTYInit struct { ID uuid.UUID Height uint16 Width uint16 Command string }
WorkspaceAgentReconnectingPTYInit initializes a new reconnecting PTY session. @typescript-ignore WorkspaceAgentReconnectingPTYInit
type WorkspaceAgentReconnectingPTYOpts ¶
type WorkspaceAgentReconnectingPTYOpts struct { AgentID uuid.UUID Reconnect uuid.UUID Width uint16 Height uint16 Command string // SignedToken is an optional signed token from the // issue-reconnecting-pty-signed-token endpoint. If set, the session token // on the client will not be sent. SignedToken string }
@typescript-ignore:WorkspaceAgentReconnectingPTYOpts
type WorkspaceAgentScript ¶ added in v2.2.0
type WorkspaceAgentScript struct { LogSourceID uuid.UUID `json:"log_source_id" format:"uuid"` LogPath string `json:"log_path"` Script string `json:"script"` Cron string `json:"cron"` RunOnStart bool `json:"run_on_start"` RunOnStop bool `json:"run_on_stop"` StartBlocksLogin bool `json:"start_blocks_login"` Timeout time.Duration `json:"timeout"` }
type WorkspaceAgentStartupScriptBehavior ¶
type WorkspaceAgentStartupScriptBehavior string
WorkspaceAgentStartupScriptBehavior defines whether or not the startup script should be considered blocking or non-blocking. The blocking behavior means that the agent will not be considered ready until the startup script has completed and, for example, SSH connections will wait for the agent to be ready (can be overridden).
Presently, non-blocking is the default, but this may change in the future. Deprecated: `coder_script` allows configuration on a per-script basis.
const ( WorkspaceAgentStartupScriptBehaviorBlocking WorkspaceAgentStartupScriptBehavior = "blocking" WorkspaceAgentStartupScriptBehaviorNonBlocking WorkspaceAgentStartupScriptBehavior = "non-blocking" )
type WorkspaceAgentStatus ¶
type WorkspaceAgentStatus string
const ( WorkspaceAgentConnecting WorkspaceAgentStatus = "connecting" WorkspaceAgentConnected WorkspaceAgentStatus = "connected" WorkspaceAgentDisconnected WorkspaceAgentStatus = "disconnected" WorkspaceAgentTimeout WorkspaceAgentStatus = "timeout" )
This is also in database/modelmethods.go and should be kept in sync.
type WorkspaceApp ¶
type WorkspaceApp struct { ID uuid.UUID `json:"id" format:"uuid"` // URL is the address being proxied to inside the workspace. // If external is specified, this will be opened on the client. URL string `json:"url"` // External specifies whether the URL should be opened externally on // the client or not. External bool `json:"external"` // Slug is a unique identifier within the agent. Slug string `json:"slug"` // DisplayName is a friendly name for the app. DisplayName string `json:"display_name"` Command string `json:"command,omitempty"` // Icon is a relative path or external URL that specifies // an icon to be displayed in the dashboard. Icon string `json:"icon,omitempty"` // Subdomain denotes whether the app should be accessed via a path on the // `coder server` or via a hostname-based dev URL. If this is set to true // and there is no app wildcard configured on the server, the app will not // be accessible in the UI. Subdomain bool `json:"subdomain"` // SubdomainName is the application domain exposed on the `coder server`. SubdomainName string `json:"subdomain_name,omitempty"` SharingLevel WorkspaceAppSharingLevel `json:"sharing_level" enums:"owner,authenticated,public"` // Healthcheck specifies the configuration for checking app health. Healthcheck Healthcheck `json:"healthcheck"` Health WorkspaceAppHealth `json:"health"` }
type WorkspaceAppHealth ¶
type WorkspaceAppHealth string
const ( WorkspaceAppHealthDisabled WorkspaceAppHealth = "disabled" WorkspaceAppHealthInitializing WorkspaceAppHealth = "initializing" WorkspaceAppHealthHealthy WorkspaceAppHealth = "healthy" WorkspaceAppHealthUnhealthy WorkspaceAppHealth = "unhealthy" )
type WorkspaceAppSharingLevel ¶
type WorkspaceAppSharingLevel string
const ( WorkspaceAppSharingLevelOwner WorkspaceAppSharingLevel = "owner" WorkspaceAppSharingLevelAuthenticated WorkspaceAppSharingLevel = "authenticated" WorkspaceAppSharingLevelPublic WorkspaceAppSharingLevel = "public" )
type WorkspaceBuild ¶
type WorkspaceBuild struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" format:"date-time"` WorkspaceID uuid.UUID `json:"workspace_id" format:"uuid"` WorkspaceName string `json:"workspace_name"` WorkspaceOwnerID uuid.UUID `json:"workspace_owner_id" format:"uuid"` WorkspaceOwnerName string `json:"workspace_owner_name"` TemplateVersionID uuid.UUID `json:"template_version_id" format:"uuid"` TemplateVersionName string `json:"template_version_name"` BuildNumber int32 `json:"build_number"` Transition WorkspaceTransition `json:"transition" enums:"start,stop,delete"` InitiatorID uuid.UUID `json:"initiator_id" format:"uuid"` InitiatorUsername string `json:"initiator_name"` Job ProvisionerJob `json:"job"` Reason BuildReason `db:"reason" json:"reason" enums:"initiator,autostart,autostop"` Resources []WorkspaceResource `json:"resources"` Deadline NullTime `json:"deadline,omitempty" format:"date-time"` MaxDeadline NullTime `json:"max_deadline,omitempty" format:"date-time"` Status WorkspaceStatus `json:"status" enums:"pending,starting,running,stopping,stopped,failed,canceling,canceled,deleting,deleted"` DailyCost int32 `json:"daily_cost"` }
WorkspaceBuild is an at-point representation of a workspace state. BuildNumbers start at 1 and increase by 1 for each subsequent build
type WorkspaceBuildParameter ¶
WorkspaceBuildParameter represents a parameter specific for a workspace build.
type WorkspaceBuildsRequest ¶
type WorkspaceBuildsRequest struct { WorkspaceID uuid.UUID `json:"workspace_id" format:"uuid" typescript:"-"` Pagination Since time.Time `json:"since,omitempty" format:"date-time"` }
type WorkspaceDeploymentStats ¶
type WorkspaceDeploymentStats struct { Pending int64 `json:"pending"` Building int64 `json:"building"` Running int64 `json:"running"` Failed int64 `json:"failed"` Stopped int64 `json:"stopped"` ConnectionLatencyMS WorkspaceConnectionLatencyMS `json:"connection_latency_ms"` RxBytes int64 `json:"rx_bytes"` TxBytes int64 `json:"tx_bytes"` }
type WorkspaceFilter ¶
type WorkspaceFilter struct { // Owner can be "me" or a username Owner string `json:"owner,omitempty" typescript:"-"` // Template is a template name Template string `json:"template,omitempty" typescript:"-"` // Name will return partial matches Name string `json:"name,omitempty" typescript:"-"` // Status is a workspace status, which is really the status of the latest build Status string `json:"status,omitempty" typescript:"-"` // Offset is the number of workspaces to skip before returning results. Offset int `json:"offset,omitempty" typescript:"-"` // Limit is a limit on the number of workspaces returned. Limit int `json:"limit,omitempty" typescript:"-"` // FilterQuery supports a raw filter query string FilterQuery string `json:"q,omitempty"` }
type WorkspaceHealth ¶
type WorkspaceOptions ¶
type WorkspaceOptions struct {
IncludeDeleted bool `json:"include_deleted,omitempty"`
}
type WorkspaceProxy ¶
type WorkspaceProxy struct { // Extends Region with extra information Region `table:"region,recursive_inline"` DerpEnabled bool `json:"derp_enabled" table:"derp_enabled"` DerpOnly bool `json:"derp_only" table:"derp_only"` // Status is the latest status check of the proxy. This will be empty for deleted // proxies. This value can be used to determine if a workspace proxy is healthy // and ready to use. Status WorkspaceProxyStatus `json:"status,omitempty" table:"proxy,recursive"` CreatedAt time.Time `json:"created_at" format:"date-time" table:"created_at,default_sort"` UpdatedAt time.Time `json:"updated_at" format:"date-time" table:"updated_at"` Deleted bool `json:"deleted" table:"deleted"` }
type WorkspaceProxyBuildInfo ¶
type WorkspaceProxyStatus ¶
type WorkspaceProxyStatus struct { Status ProxyHealthStatus `json:"status" table:"status,default_sort"` // Report provides more information about the health of the workspace proxy. Report ProxyHealthReport `json:"report,omitempty" table:"report"` CheckedAt time.Time `json:"checked_at" table:"checked_at" format:"date-time"` }
type WorkspaceQuota ¶
type WorkspaceResource ¶
type WorkspaceResource struct { ID uuid.UUID `json:"id" format:"uuid"` CreatedAt time.Time `json:"created_at" format:"date-time"` JobID uuid.UUID `json:"job_id" format:"uuid"` Transition WorkspaceTransition `json:"workspace_transition" enums:"start,stop,delete"` Type string `json:"type"` Name string `json:"name"` Hide bool `json:"hide"` Icon string `json:"icon"` Agents []WorkspaceAgent `json:"agents,omitempty"` Metadata []WorkspaceResourceMetadata `json:"metadata,omitempty"` DailyCost int32 `json:"daily_cost"` }
WorkspaceResource describes resources used to create a workspace, for instance: containers, images, volumes.
type WorkspaceResourceMetadata ¶
type WorkspaceResourceMetadata struct { Key string `json:"key"` Value string `json:"value"` Sensitive bool `json:"sensitive"` }
WorkspaceResourceMetadata annotates the workspace resource with custom key-value pairs.
type WorkspaceStatus ¶
type WorkspaceStatus string
const ( WorkspaceStatusPending WorkspaceStatus = "pending" WorkspaceStatusStarting WorkspaceStatus = "starting" WorkspaceStatusRunning WorkspaceStatus = "running" WorkspaceStatusStopping WorkspaceStatus = "stopping" WorkspaceStatusStopped WorkspaceStatus = "stopped" WorkspaceStatusFailed WorkspaceStatus = "failed" WorkspaceStatusCanceling WorkspaceStatus = "canceling" WorkspaceStatusCanceled WorkspaceStatus = "canceled" WorkspaceStatusDeleting WorkspaceStatus = "deleting" WorkspaceStatusDeleted WorkspaceStatus = "deleted" )
type WorkspaceTransition ¶
type WorkspaceTransition string
const ( WorkspaceTransitionStart WorkspaceTransition = "start" WorkspaceTransitionStop WorkspaceTransition = "stop" WorkspaceTransitionDelete WorkspaceTransition = "delete" )
type WorkspacesRequest ¶
type WorkspacesRequest struct { SearchQuery string `json:"q,omitempty"` Pagination }
type WorkspacesResponse ¶
Source Files
¶
- apikey.go
- audit.go
- authorization.go
- client.go
- deployment.go
- externalauth.go
- files.go
- gitsshkey.go
- groups.go
- insights.go
- licenses.go
- organizations.go
- pagination.go
- provisionerdaemons.go
- rbacresources.go
- replicas.go
- richparameters.go
- roles.go
- serversentevents.go
- templates.go
- templateversions.go
- time.go
- updatecheck.go
- users.go
- workspaceagentconn.go
- workspaceagents.go
- workspaceapps.go
- workspacebuilds.go
- workspacedisplaystatus.go
- workspaceproxy.go
- workspaces.go