openapi: 3.0.3 info: description: Coderd is the service created by running coder server. It is a thin API that connects workspaces, provisioners and users. coderd stores its state in Postgres and is the only service that communicates with Postgres. title: Coder Agents Enterprise API termsOfService: https://coder.com/legal/terms-of-service contact: name: API Support url: https://coder.com email: support@coder.com license: name: AGPL-3.0 url: https://github.com/coder/coder/blob/main/LICENSE version: '2.0' servers: - url: https://{coderHost}/api/v2 description: Coder instance variables: coderHost: default: coder.example.com description: Your Coder deployment hostname security: - CoderSessionToken: [] tags: - name: Enterprise paths: /.well-known/oauth-authorization-server: get: operationId: oauth2-authorization-server-metadata summary: OAuth2 authorization server metadata. tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2AuthorizationServerMetadata' /.well-known/oauth-protected-resource: get: operationId: oauth2-protected-resource-metadata summary: OAuth2 protected resource metadata. tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ProtectedResourceMetadata' /api/v2/aibridge/keys: get: operationId: list-ai-gateway-keys summary: List AI Gateway keys tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.AIGatewayKey' post: operationId: create-ai-gateway-key summary: Create AI Gateway key tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.CreateAIGatewayKeyRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.CreateAIGatewayKeyResponse' /api/v2/aibridge/keys/{key}: delete: operationId: delete-ai-gateway-key summary: Delete AI Gateway key tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: key in: path required: true description: Key ID schema: type: string responses: '204': description: No Content /api/v2/appearance: get: operationId: get-appearance summary: Get appearance tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.AppearanceConfig' put: operationId: update-appearance summary: Update appearance tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpdateAppearanceConfig' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.UpdateAppearanceConfig' /api/v2/applications/reconnecting-pty-signed-token: post: operationId: issue-signed-app-token-for-reconnecting-pty summary: Issue signed app token for reconnecting PTY tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.IssueReconnectingPTYSignedTokenRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.IssueReconnectingPTYSignedTokenResponse' /api/v2/connectionlog: get: operationId: get-connection-logs summary: Get connection logs tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: q in: query required: false description: Search query schema: type: string - name: limit in: query required: true description: Page limit schema: type: integer - name: offset in: query required: false description: Page offset schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.ConnectionLogResponse' /api/v2/entitlements: get: operationId: get-entitlements summary: Get entitlements tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Entitlements' /api/v2/groups: get: operationId: get-groups summary: Get groups tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: query required: true description: Organization ID or name schema: type: string - name: has_member in: query required: true description: User ID or name schema: type: string - name: group_ids in: query required: true description: Comma separated list of group IDs schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.Group' /api/v2/groups/{group}: get: operationId: get-group-by-id summary: Get group by ID tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group id schema: type: string - name: exclude_members in: query required: false description: Exclude members from the response schema: type: boolean responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Group' delete: operationId: delete-group-by-name summary: Delete group by name tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group name schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Group' patch: operationId: update-group-by-name summary: Update group by name tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchGroupRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Group' /api/v2/groups/{group}/ai/budget: get: operationId: get-group-ai-budget summary: Get group AI budget tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupAIBudget' put: operationId: upsert-group-ai-budget summary: Upsert group AI budget tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpsertGroupAIBudgetRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupAIBudget' delete: operationId: delete-group-ai-budget summary: Delete group AI budget tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group ID schema: type: string responses: '204': description: No Content /api/v2/groups/{group}/members: get: operationId: get-group-members-by-group-id summary: Get group members by group ID tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: group in: path required: true description: Group id schema: type: string - name: q in: query required: false description: Member search query schema: type: string - name: after_id in: query required: false description: After ID schema: type: string - name: limit in: query required: false description: Page limit schema: type: integer - name: offset in: query required: false description: Page offset schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupMembersResponse' /api/v2/licenses: get: operationId: get-licenses summary: Get licenses tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.License' post: operationId: add-new-license summary: Add new license tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.AddLicenseRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.License' /api/v2/licenses/refresh-entitlements: post: operationId: update-license-entitlements summary: Update license entitlements tags: - Enterprise security: - CoderSessionToken: [] responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/licenses/{id}: delete: operationId: delete-license summary: Delete license tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: id in: path required: true description: License ID schema: type: string responses: '200': description: OK /api/v2/notifications/templates/{notification_template}/method: put: operationId: update-notification-template-dispatch-method summary: Update notification template dispatch method tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: notification_template in: path required: true description: Notification template UUID schema: type: string responses: '200': description: Success '304': description: Not modified /api/v2/oauth2-provider/apps: get: operationId: get-oauth2-applications summary: Get OAuth2 applications. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user_id in: query required: false description: Filter by applications authorized for a user schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderApp' post: operationId: create-oauth2-application summary: Create OAuth2 application. tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PostOAuth2ProviderAppRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ProviderApp' /api/v2/oauth2-provider/apps/{app}: get: operationId: get-oauth2-application summary: Get OAuth2 application. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ProviderApp' put: operationId: update-oauth2-application summary: Update OAuth2 application. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PutOAuth2ProviderAppRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ProviderApp' delete: operationId: delete-oauth2-application summary: Delete OAuth2 application. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string responses: '204': description: No Content /api/v2/oauth2-provider/apps/{app}/secrets: get: operationId: get-oauth2-application-secrets summary: Get OAuth2 application secrets. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderAppSecret' post: operationId: create-oauth2-application-secret summary: Create OAuth2 application secret. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderAppSecretFull' /api/v2/oauth2-provider/apps/{app}/secrets/{secretID}: delete: operationId: delete-oauth2-application-secret summary: Delete OAuth2 application secret. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: app in: path required: true description: App ID schema: type: string - name: secretID in: path required: true description: Secret ID schema: type: string responses: '204': description: No Content /api/v2/organizations/{organization}/groups: get: operationId: get-groups-by-organization summary: Get groups by organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.Group' post: operationId: create-group-for-organization summary: Create group for organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.CreateGroupRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.Group' /api/v2/organizations/{organization}/groups/{groupName}: get: operationId: get-group-by-organization-and-group-name summary: Get group by organization and group name tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string - name: groupName in: path required: true description: Group name schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Group' /api/v2/organizations/{organization}/groups/{groupName}/members: get: operationId: get-group-members-by-organization-and-group-name summary: Get group members by organization and group name tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string - name: groupName in: path required: true description: Group name schema: type: string - name: q in: query required: false description: Member search query schema: type: string - name: after_id in: query required: false description: After ID schema: type: string - name: limit in: query required: false description: Page limit schema: type: integer - name: offset in: query required: false description: Page offset schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupMembersResponse' /api/v2/organizations/{organization}/members/{user}/workspace-quota: get: operationId: get-workspace-quota-by-user summary: Get workspace quota by user tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, name, or me schema: type: string - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceQuota' /api/v2/organizations/{organization}/provisionerdaemons/serve: get: operationId: serve-provisioner-daemon summary: Serve provisioner daemon tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '101': description: Switching Protocols /api/v2/organizations/{organization}/provisionerkeys: get: operationId: list-provisioner-key summary: List provisioner key tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.ProvisionerKey' post: operationId: create-provisioner-key summary: Create provisioner key tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.CreateProvisionerKeyResponse' /api/v2/organizations/{organization}/provisionerkeys/daemons: get: operationId: list-provisioner-key-daemons summary: List provisioner key daemons tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.ProvisionerKeyDaemons' /api/v2/organizations/{organization}/provisionerkeys/{provisionerkey}: delete: operationId: delete-provisioner-key summary: Delete provisioner key tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string - name: provisionerkey in: path required: true description: Provisioner key name schema: type: string responses: '204': description: No Content /api/v2/organizations/{organization}/settings/idpsync/available-fields: get: operationId: get-the-available-organization-idp-sync-claim-fields summary: Get the available organization idp sync claim fields tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/v2/organizations/{organization}/settings/idpsync/field-values: get: operationId: get-the-organization-idp-sync-claim-field-values summary: Get the organization idp sync claim field values tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string - name: claimField in: query required: true description: Claim Field schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/v2/organizations/{organization}/settings/idpsync/groups: get: operationId: get-group-idp-sync-settings-by-organization summary: Get group IdP Sync settings by organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupSyncSettings' patch: operationId: update-group-idp-sync-settings-by-organization summary: Update group IdP Sync settings by organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupSyncSettings' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupSyncSettings' /api/v2/organizations/{organization}/settings/idpsync/groups/config: patch: operationId: update-group-idp-sync-config summary: Update group IdP Sync config tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID or name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchGroupIDPSyncConfigRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupSyncSettings' /api/v2/organizations/{organization}/settings/idpsync/groups/mapping: patch: operationId: update-group-idp-sync-mapping summary: Update group IdP Sync mapping tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID or name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchGroupIDPSyncMappingRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.GroupSyncSettings' /api/v2/organizations/{organization}/settings/idpsync/roles: get: operationId: get-role-idp-sync-settings-by-organization summary: Get role IdP Sync settings by organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.RoleSyncSettings' patch: operationId: update-role-idp-sync-settings-by-organization summary: Update role IdP Sync settings by organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.RoleSyncSettings' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.RoleSyncSettings' /api/v2/organizations/{organization}/settings/idpsync/roles/config: patch: operationId: update-role-idp-sync-config summary: Update role IdP Sync config tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID or name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchRoleIDPSyncConfigRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.RoleSyncSettings' /api/v2/organizations/{organization}/settings/idpsync/roles/mapping: patch: operationId: update-role-idp-sync-mapping summary: Update role IdP Sync mapping tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID or name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchRoleIDPSyncMappingRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.RoleSyncSettings' /api/v2/organizations/{organization}/settings/workspace-sharing: get: operationId: get-workspace-sharing-settings-for-organization summary: Get workspace sharing settings for organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceSharingSettings' patch: operationId: update-workspace-sharing-settings-for-organization summary: Update workspace sharing settings for organization tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpdateWorkspaceSharingSettingsRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceSharingSettings' /api/v2/provisionerkeys/{provisionerkey}: get: operationId: fetch-provisioner-key-details summary: Fetch provisioner key details tags: - Enterprise security: - CoderProvisionerKey: [] parameters: - name: provisionerkey in: path required: true description: Provisioner Key schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.ProvisionerKey' /api/v2/replicas: get: operationId: get-active-replicas summary: Get active replicas tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.Replica' /api/v2/settings/idpsync/available-fields: get: operationId: get-the-available-idp-sync-claim-fields summary: Get the available idp sync claim fields tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/v2/settings/idpsync/field-values: get: operationId: get-the-idp-sync-claim-field-values summary: Get the idp sync claim field values tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: organization in: path required: true description: Organization ID schema: type: string - name: claimField in: query required: true description: Claim Field schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/v2/settings/idpsync/organization: get: operationId: get-organization-idp-sync-settings summary: Get organization IdP Sync settings tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OrganizationSyncSettings' patch: operationId: update-organization-idp-sync-settings summary: Update organization IdP Sync settings tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.OrganizationSyncSettings' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OrganizationSyncSettings' /api/v2/settings/idpsync/organization/config: patch: operationId: update-organization-idp-sync-config summary: Update organization IdP Sync config tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchOrganizationIDPSyncConfigRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OrganizationSyncSettings' /api/v2/settings/idpsync/organization/mapping: patch: operationId: update-organization-idp-sync-mapping summary: Update organization IdP Sync mapping tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchOrganizationIDPSyncMappingRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OrganizationSyncSettings' /api/v2/templates/{template}/acl: get: operationId: get-template-acls summary: Get template ACLs tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: template in: path required: true description: Template ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.TemplateACL' patch: operationId: update-template-acl summary: Update template ACL tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: template in: path required: true description: Template ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpdateTemplateACL' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/templates/{template}/acl/available: get: operationId: get-template-available-acl-usersgroups summary: Get template available acl users/groups tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: template in: path required: true description: Template ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.ACLAvailable' /api/v2/templates/{template}/prebuilds/invalidate: post: operationId: invalidate-presets-for-template summary: Invalidate presets for template tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: template in: path required: true description: Template ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.InvalidatePresetsResponse' /api/v2/users/{user}/ai/budget: get: operationId: get-user-ai-budget-override summary: Get user AI budget override tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, username, or me schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.UserAIBudgetOverride' put: operationId: upsert-user-ai-budget-override summary: Upsert user AI budget override tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, username, or me schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpsertUserAIBudgetOverrideRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.UserAIBudgetOverride' delete: operationId: delete-user-ai-budget-override summary: Delete user AI budget override tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, username, or me schema: type: string responses: '204': description: No Content /api/v2/users/{user}/quiet-hours: get: operationId: get-user-quiet-hours-schedule summary: Get user quiet hours schedule tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.UserQuietHoursScheduleResponse' put: operationId: update-user-quiet-hours-schedule summary: Update user quiet hours schedule tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.UpdateUserQuietHoursScheduleRequest' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.UserQuietHoursScheduleResponse' /api/v2/workspace-quota/{user}: get: operationId: get-workspace-quota-by-user-deprecated summary: Get workspace quota by user deprecated tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, name, or me schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceQuota' /api/v2/workspaceproxies: get: operationId: get-workspace-proxies summary: Get workspace proxies tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.RegionsResponse-codersdk_WorkspaceProxy' post: operationId: create-workspace-proxy summary: Create workspace proxy tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.CreateWorkspaceProxyRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceProxy' /api/v2/workspaceproxies/me/app-stats: post: operationId: report-workspace-app-stats summary: Report workspace app stats tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.ReportAppStatsRequest' responses: '204': description: No Content /api/v2/workspaceproxies/me/coordinate: get: operationId: workspace-proxy-coordinate summary: Workspace Proxy Coordinate tags: - Enterprise security: - CoderSessionToken: [] responses: '101': description: Switching Protocols /api/v2/workspaceproxies/me/crypto-keys: get: operationId: get-workspace-proxy-crypto-keys summary: Get workspace proxy crypto keys tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: feature in: query required: true description: Feature key schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.CryptoKeysResponse' /api/v2/workspaceproxies/me/deregister: post: operationId: deregister-workspace-proxy summary: Deregister workspace proxy tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.DeregisterWorkspaceProxyRequest' responses: '204': description: No Content /api/v2/workspaceproxies/me/issue-signed-app-token: post: operationId: issue-signed-workspace-app-token summary: Issue signed workspace app token tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/workspaceapps.IssueTokenRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.IssueSignedAppTokenResponse' /api/v2/workspaceproxies/me/register: post: operationId: register-workspace-proxy summary: Register workspace proxy tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.RegisterWorkspaceProxyRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/wsproxysdk.RegisterWorkspaceProxyResponse' /api/v2/workspaceproxies/{workspaceproxy}: get: operationId: get-workspace-proxy summary: Get workspace proxy tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: workspaceproxy in: path required: true description: Proxy ID or name schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceProxy' delete: operationId: delete-workspace-proxy summary: Delete workspace proxy tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: workspaceproxy in: path required: true description: Proxy ID or name schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' patch: operationId: update-workspace-proxy summary: Update workspace proxy tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: workspaceproxy in: path required: true description: Proxy ID or name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.PatchWorkspaceProxy' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceProxy' /api/v2/workspaces/{workspace}/external-agent/{agent}/credentials: get: operationId: get-workspace-external-agent-credentials summary: Get workspace external agent credentials tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: workspace in: path required: true description: Workspace ID schema: type: string - name: agent in: path required: true description: Agent name schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.ExternalAgentCredentials' /oauth2/authorize: get: operationId: oauth2-authorization-request-get summary: OAuth2 authorization request (GET - show authorization page). tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: query required: true description: Client ID schema: type: string - name: state in: query required: true description: A random unguessable string schema: type: string - name: response_type in: query required: true description: Response type schema: type: string enum: - code - token - name: redirect_uri in: query required: false description: Redirect here after authorization schema: type: string - name: scope in: query required: false description: Token scopes (currently ignored) schema: type: string responses: '200': description: Returns HTML authorization page post: operationId: oauth2-authorization-request-post summary: OAuth2 authorization request (POST - process authorization). tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: query required: true description: Client ID schema: type: string - name: state in: query required: true description: A random unguessable string schema: type: string - name: response_type in: query required: true description: Response type schema: type: string enum: - code - token - name: redirect_uri in: query required: false description: Redirect here after authorization schema: type: string - name: scope in: query required: false description: Token scopes (currently ignored) schema: type: string responses: '302': description: Returns redirect with authorization code /oauth2/clients/{client_id}: get: operationId: get-oauth2-client-configuration summary: Get OAuth2 client configuration (RFC 7592) tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: path required: true description: Client ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ClientConfiguration' put: operationId: put-oauth2-client-configuration summary: Update OAuth2 client configuration (RFC 7592) tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: path required: true description: Client ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ClientRegistrationRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ClientConfiguration' delete: operationId: delete-oauth2-client-configuration summary: Delete OAuth2 client registration (RFC 7592) tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: path required: true description: Client ID schema: type: string responses: '204': description: No Content /oauth2/register: post: operationId: oauth2-dynamic-client-registration summary: OAuth2 dynamic client registration (RFC 7591) tags: - Enterprise security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ClientRegistrationRequest' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/codersdk.OAuth2ClientRegistrationResponse' /oauth2/revoke: post: operationId: oauth2-token-revocation summary: Revoke OAuth2 tokens (RFC 7009). tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: formData required: true description: Client ID for authentication schema: type: string - name: token in: formData required: true description: The token to revoke schema: type: string - name: token_type_hint in: formData required: false description: Hint about token type (access_token or refresh_token) schema: type: string responses: '200': description: Token successfully revoked /oauth2/tokens: post: operationId: oauth2-token-exchange summary: OAuth2 token exchange. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: formData required: false description: Client ID, required if grant_type=authorization_code schema: type: string - name: client_secret in: formData required: false description: Client secret, required if grant_type=authorization_code schema: type: string - name: code in: formData required: false description: Authorization code, required if grant_type=authorization_code schema: type: string - name: refresh_token in: formData required: false description: Refresh token, required if grant_type=refresh_token schema: type: string - name: grant_type in: formData required: true description: Grant type schema: type: string enum: - authorization_code - refresh_token - password - client_credentials - implicit responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/oauth2.Token' delete: operationId: delete-oauth2-application-tokens summary: Delete OAuth2 application tokens. tags: - Enterprise security: - CoderSessionToken: [] parameters: - name: client_id in: query required: true description: Client ID schema: type: string responses: '204': description: No Content /scim/v2/ServiceProviderConfig: get: operationId: scim-get-service-provider-config summary: 'SCIM 2.0: Service Provider Config' tags: - Enterprise security: - CoderSessionToken: [] responses: '200': description: OK /scim/v2/Users: get: operationId: scim-get-users summary: 'SCIM 2.0: Get users' tags: - Enterprise security: - Authorization: [] responses: '200': description: OK post: operationId: scim-create-new-user summary: 'SCIM 2.0: Create new user' tags: - Enterprise security: - Authorization: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/legacyscim.SCIMUser' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/legacyscim.SCIMUser' /scim/v2/Users/{id}: get: operationId: scim-get-user-by-id summary: 'SCIM 2.0: Get user by ID' tags: - Enterprise security: - Authorization: [] parameters: - name: id in: path required: true description: User ID schema: type: string responses: '404': description: Not Found put: operationId: scim-replace-user-status summary: 'SCIM 2.0: Replace user account' tags: - Enterprise security: - Authorization: [] parameters: - name: id in: path required: true description: User ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/legacyscim.SCIMUser' responses: '200': description: OK content: application/scim+json: schema: $ref: '#/components/schemas/codersdk.User' patch: operationId: scim-update-user-status summary: 'SCIM 2.0: Update user account' tags: - Enterprise security: - Authorization: [] parameters: - name: id in: path required: true description: User ID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/legacyscim.SCIMUser' responses: '200': description: OK content: application/scim+json: schema: $ref: '#/components/schemas/codersdk.User' components: schemas: codersdk.TemplateUser: type: object properties: avatar_url: type: string format: uri created_at: type: string format: date-time email: type: string format: email has_ai_seat: type: boolean description: 'HasAISeat intentionally omits omitempty so the API always includes the field, even when false.' id: type: string format: uuid is_service_account: type: boolean last_seen_at: type: string format: date-time login_type: $ref: '#/components/schemas/codersdk.LoginType' name: type: string organization_ids: type: array items: type: string format: uuid role: enum: - admin - use allOf: - $ref: '#/components/schemas/codersdk.TemplateRole' roles: type: array items: $ref: '#/components/schemas/codersdk.SlimRole' status: enum: - active - suspended allOf: - $ref: '#/components/schemas/codersdk.UserStatus' theme_preference: type: string description: 'Deprecated: this value should be retrieved from `codersdk.UserPreferenceSettings` instead.' updated_at: type: string format: date-time username: type: string required: - created_at - email - id - username codersdk.ProxyHealthStatus: type: string enum: - ok - unreachable - unhealthy - unregistered codersdk.OAuth2ProviderAppSecretFull: type: object properties: client_secret_full: type: string id: type: string format: uuid codersdk.IssueReconnectingPTYSignedTokenResponse: type: object properties: signed_token: type: string codersdk.PatchOrganizationIDPSyncConfigRequest: type: object properties: assign_default: type: boolean field: type: string codersdk.InvalidatedPreset: type: object properties: preset_name: type: string template_name: type: string template_version_name: type: string codersdk.PatchRoleIDPSyncMappingRequest: type: object properties: add: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has remove: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has codersdk.CreateProvisionerKeyResponse: type: object properties: key: type: string codersdk.UserAIBudgetOverride: type: object properties: created_at: type: string format: date-time group_id: type: string format: uuid spend_limit_micros: type: integer updated_at: type: string format: date-time user_id: type: string format: uuid codersdk.OAuth2ProviderAppSecret: type: object properties: client_secret_truncated: type: string id: type: string format: uuid last_used_at: type: string codersdk.ConnectionType: type: string enum: - ssh - vscode - jetbrains - reconnecting_pty - workspace_app - port_forwarding codersdk.UserStatus: type: string enum: - active - dormant - suspended codersdk.OAuth2AuthorizationServerMetadata: type: object properties: authorization_endpoint: type: string code_challenge_methods_supported: type: array items: $ref: '#/components/schemas/codersdk.OAuth2PKCECodeChallengeMethod' grant_types_supported: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderGrantType' issuer: type: string registration_endpoint: type: string response_types_supported: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderResponseType' revocation_endpoint: type: string scopes_supported: type: array items: type: string token_endpoint: type: string token_endpoint_auth_methods_supported: type: array items: $ref: '#/components/schemas/codersdk.OAuth2TokenEndpointAuthMethod' codersdk.ProvisionerKey: type: object properties: created_at: type: string format: date-time id: type: string format: uuid name: type: string organization: type: string format: uuid tags: $ref: '#/components/schemas/codersdk.ProvisionerKeyTags' codersdk.WorkspaceProxy: type: object properties: created_at: type: string format: date-time deleted: type: boolean derp_enabled: type: boolean derp_only: type: boolean display_name: type: string healthy: type: boolean icon_url: type: string id: type: string format: uuid name: type: string path_app_url: type: string description: 'PathAppURL is the URL to the base path for path apps. Optional unless wildcard_hostname is set. E.g. https://us.example.com' status: description: '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.' allOf: - $ref: '#/components/schemas/codersdk.WorkspaceProxyStatus' updated_at: type: string format: date-time version: type: string wildcard_hostname: type: string description: '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.' codersdk.ProvisionerDaemonJob: type: object properties: id: type: string format: uuid status: enum: - pending - running - succeeded - canceling - canceled - failed allOf: - $ref: '#/components/schemas/codersdk.ProvisionerJobStatus' template_display_name: type: string template_icon: type: string template_name: type: string tailcfg.DERPMap: type: object properties: homeParams: description: 'HomeParams, if non-nil, is a change in home parameters. The rest of the DEPRMap fields, if zero, means unchanged.' allOf: - $ref: '#/components/schemas/tailcfg.DERPHomeParams' omitDefaultRegions: type: boolean description: 'OmitDefaultRegions specifies to not use Tailscale''s DERP servers, and only use those specified in this DERPMap. If there are none set outside of the defaults, this is a noop. This field is only meaningful if the Regions map is non-nil (indicating a change).' regions: type: object description: 'Regions is the set of geographic regions running DERP node(s). It''s keyed by the DERPRegion.RegionID. The numbers are not necessarily contiguous.' additionalProperties: $ref: '#/components/schemas/tailcfg.DERPRegion' codersdk.OAuth2TokenEndpointAuthMethod: type: string enum: - client_secret_basic - client_secret_post - none codersdk.OAuth2AppEndpoints: type: object properties: authorization: type: string device_authorization: type: string description: DeviceAuth is optional. token: type: string token_revoke: type: string codersdk.OAuth2ClientRegistrationResponse: type: object properties: client_id: type: string client_id_issued_at: type: integer client_name: type: string client_secret: type: string client_secret_expires_at: type: integer client_uri: type: string contacts: type: array items: type: string grant_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderGrantType' jwks: type: object jwks_uri: type: string logo_uri: type: string policy_uri: type: string redirect_uris: type: array items: type: string registration_access_token: type: string registration_client_uri: type: string response_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderResponseType' scope: type: string software_id: type: string software_version: type: string token_endpoint_auth_method: $ref: '#/components/schemas/codersdk.OAuth2TokenEndpointAuthMethod' tos_uri: type: string codersdk.CreateAIGatewayKeyResponse: type: object properties: created_at: type: string format: date-time id: type: string format: uuid key: type: string key_prefix: type: string name: type: string codersdk.UpsertUserAIBudgetOverrideRequest: type: object properties: group_id: type: string format: uuid description: 'GroupID is the group the user''s spend is attributed to. The user must be a member of this group.' spend_limit_micros: type: integer required: - group_id codersdk.Entitlement: type: string enum: - entitled - grace_period - not_entitled codersdk.AIGatewayKey: type: object properties: created_at: type: string format: date-time id: type: string format: uuid key_prefix: type: string last_used_at: type: string format: date-time name: type: string codersdk.ACLAvailable: type: object properties: groups: type: array items: $ref: '#/components/schemas/codersdk.Group' users: type: array items: $ref: '#/components/schemas/codersdk.ReducedUser' codersdk.GroupMembersResponse: type: object properties: count: type: integer users: type: array items: $ref: '#/components/schemas/codersdk.ReducedUser' codersdk.PatchGroupIDPSyncConfigRequest: type: object properties: auto_create_missing_groups: type: boolean field: type: string regex_filter: $ref: '#/components/schemas/regexp.Regexp' codersdk.GroupSyncSettings: type: object properties: auto_create_missing_groups: type: boolean description: 'AutoCreateMissing controls whether groups returned by the OIDC provider are automatically created in Coder if they are missing.' field: type: string description: 'Field is the name of the claim field that specifies what groups a user should be in. If empty, no groups will be synced.' legacy_group_name_mapping: type: object description: 'LegacyNameMapping is deprecated. It remaps an IDP group name to a Coder group name. Since configuration is now done at runtime, group IDs are used to account for group renames. For legacy configurations, this config option has to remain. Deprecated: Use Mapping instead.' additionalProperties: type: string mapping: type: object description: Mapping is a map from OIDC groups to Coder group IDs additionalProperties: type: array items: type: string regex_filter: description: 'RegexFilter is a regular expression that filters the groups returned by the OIDC provider. Any group not matched by this regex will be ignored. If the group filter is nil, then no group filtering will occur.' allOf: - $ref: '#/components/schemas/regexp.Regexp' codersdk.InvalidatePresetsResponse: type: object properties: invalidated: type: array items: $ref: '#/components/schemas/codersdk.InvalidatedPreset' codersdk.Feature: type: object properties: actual: type: integer enabled: type: boolean entitlement: $ref: '#/components/schemas/codersdk.Entitlement' limit: type: integer usage_period: description: 'UsagePeriod denotes that the usage is a counter that accumulates over this period (and most likely resets with the issuance of the next license). These dates are determined from the license that this entitlement comes from, see enterprise/coderd/license/license.go. Only certain features set these fields: - FeatureManagedAgentLimit' allOf: - $ref: '#/components/schemas/codersdk.UsagePeriod' codersdk.CryptoKey: type: object properties: deletes_at: type: string format: date-time feature: $ref: '#/components/schemas/codersdk.CryptoKeyFeature' secret: type: string sequence: type: integer starts_at: type: string format: date-time tailcfg.DERPRegion: type: object properties: avoid: type: boolean description: 'Avoid is whether the client should avoid picking this as its home region. The region should only be used if a peer is there. Clients already using this region as their home should migrate away to a new region without Avoid set.' embeddedRelay: type: boolean description: 'EmbeddedRelay is true when the region is bundled with the Coder control plane.' nodes: type: array description: 'Nodes are the DERP nodes running in this region, in priority order for the current client. Client TLS connections should ideally only go to the first entry (falling back to the second if necessary). STUN packets should go to the first 1 or 2. If nodes within a region route packets amongst themselves, but not to other regions. That said, each user/domain should get a the same preferred node order, so if all nodes for a user/network pick the first one (as they should, when things are healthy), the inter-cluster routing is minimal to zero.' items: $ref: '#/components/schemas/tailcfg.DERPNode' regionCode: type: string description: 'RegionCode is a short name for the region. It''s usually a popular city or airport code in the region: "nyc", "sf", "sin", "fra", etc.' regionID: type: integer description: 'RegionID is a unique integer for a geographic region. It corresponds to the legacy derpN.tailscale.com hostnames used by older clients. (Older clients will continue to resolve derpN.tailscale.com when contacting peers, rather than use the server-provided DERPMap) RegionIDs must be non-zero, positive, and guaranteed to fit in a JavaScript number. RegionIDs in range 900-999 are reserved for end users to run their own DERP nodes.' regionName: type: string description: 'RegionName is a long English name for the region: "New York City", "San Francisco", "Singapore", "Frankfurt", etc.' workspaceapps.StatsReport: type: object properties: access_method: $ref: '#/components/schemas/workspaceapps.AccessMethod' agent_id: type: string requests: type: integer session_ended_at: type: string description: Updated periodically while app is in use active and when the last connection is closed. session_id: type: string session_started_at: type: string slug_or_port: type: string user_id: type: string workspace_id: type: string codersdk.TemplateGroup: type: object properties: avatar_url: type: string format: uri display_name: type: string id: type: string format: uuid members: type: array items: $ref: '#/components/schemas/codersdk.ReducedUser' name: type: string organization_display_name: type: string organization_id: type: string format: uuid organization_name: type: string quota_allowance: type: integer role: enum: - admin - use allOf: - $ref: '#/components/schemas/codersdk.TemplateRole' source: $ref: '#/components/schemas/codersdk.GroupSource' total_member_count: type: integer description: 'How many members are in this group. Shows the total count, even if the user is not authorized to read group member details. May be greater than `len(Group.Members)`.' codersdk.UserQuietHoursScheduleResponse: type: object properties: next: type: string format: date-time description: Next is the next time that the quiet hours window will start. raw_schedule: type: string time: type: string description: 'Time is the time of day that the quiet hours window starts in the given Timezone each day.' timezone: type: string description: raw format from the cron expression, UTC if unspecified user_can_set: type: boolean description: 'UserCanSet is true if the user is allowed to set their own quiet hours schedule. If false, the user cannot set a custom schedule and the default schedule will always be used.' user_set: type: boolean description: 'UserSet is true if the user has set their own quiet hours schedule. If false, the user is using the default schedule.' codersdk.OAuth2ProviderResponseType: type: string enum: - code - token codersdk.PutOAuth2ProviderAppRequest: type: object properties: callback_url: type: string icon: type: string name: type: string required: - callback_url - name oauth2.Token: type: object properties: access_token: type: string description: 'AccessToken is the token that authorizes and authenticates the requests.' expires_in: type: integer description: 'ExpiresIn is the OAuth2 wire format "expires_in" field, which specifies how many seconds later the token expires, relative to an unknown time base approximately around "now". It is the application''s responsibility to populate `Expiry` from `ExpiresIn` when required.' expiry: type: string description: 'Expiry is the optional expiration time of the access token. If zero, [TokenSource] implementations will reuse the same token forever and RefreshToken or equivalent mechanisms for that TokenSource will not be used.' refresh_token: type: string description: 'RefreshToken is a token that''s used by the application (as opposed to the user) to refresh the access token if it expires.' token_type: type: string description: 'TokenType is the type of token. The Type method returns either this or "Bearer", the default.' codersdk.OAuth2ClientConfiguration: type: object properties: client_id: type: string client_id_issued_at: type: integer client_name: type: string client_secret_expires_at: type: integer client_uri: type: string contacts: type: array items: type: string grant_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderGrantType' jwks: type: object jwks_uri: type: string logo_uri: type: string policy_uri: type: string redirect_uris: type: array items: type: string registration_access_token: type: string registration_client_uri: type: string response_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderResponseType' scope: type: string software_id: type: string software_version: type: string token_endpoint_auth_method: $ref: '#/components/schemas/codersdk.OAuth2TokenEndpointAuthMethod' tos_uri: type: string codersdk.GroupSource: type: string enum: - user - oidc codersdk.ConnectionLogSSHInfo: type: object properties: connection_id: type: string format: uuid disconnect_reason: type: string description: 'DisconnectReason is omitted if a disconnect event with the same connection ID has not yet been seen.' disconnect_time: type: string format: date-time description: 'DisconnectTime is omitted if a disconnect event with the same connection ID has not yet been seen.' exit_code: type: integer description: 'ExitCode is the exit code of the SSH session. It is omitted if a disconnect event with the same connection ID has not yet been seen.' codersdk.IssueReconnectingPTYSignedTokenRequest: type: object properties: agentID: type: string format: uuid url: type: string description: URL is the URL of the reconnecting-pty endpoint you are connecting to. required: - agentID - url codersdk.TemplateRole: type: string enum: - admin - use - '' codersdk.UpsertGroupAIBudgetRequest: type: object properties: spend_limit_micros: type: integer codersdk.OAuth2ProviderApp: type: object properties: callback_url: type: string endpoints: description: 'Endpoints are included in the app response for easier discovery. The OAuth2 spec does not have a defined place to find these (for comparison, OIDC has a ''/.well-known/openid-configuration'' endpoint).' allOf: - $ref: '#/components/schemas/codersdk.OAuth2AppEndpoints' icon: type: string id: type: string format: uuid name: type: string codersdk.OrganizationSyncSettings: type: object properties: field: type: string description: 'Field selects the claim field to be used as the created user''s organizations. If the field is the empty string, then no organization updates will ever come from the OIDC provider.' mapping: type: object description: Mapping maps from an OIDC claim --> Coder organization uuid additionalProperties: type: array items: type: string organization_assign_default: type: boolean description: 'AssignDefault will ensure the default org is always included for every user, regardless of their claims. This preserves legacy behavior.' codersdk.OAuth2ProviderGrantType: type: string enum: - authorization_code - refresh_token - password - client_credentials - implicit codersdk.CreateAIGatewayKeyRequest: type: object properties: name: type: string required: - name codersdk.CreateGroupRequest: type: object properties: avatar_url: type: string display_name: type: string name: type: string quota_allowance: type: integer required: - name codersdk.LoginType: type: string enum: - '' - password - github - oidc - token - none codersdk.License: type: object properties: claims: type: object description: '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.' additionalProperties: true id: type: integer uploaded_at: type: string format: date-time uuid: type: string format: uuid codersdk.LinkConfig: type: object properties: icon: type: string enum: - bug - chat - docs - star location: type: string enum: - navbar - dropdown name: type: string target: type: string codersdk.User: type: object properties: avatar_url: type: string format: uri created_at: type: string format: date-time email: type: string format: email has_ai_seat: type: boolean description: 'HasAISeat intentionally omits omitempty so the API always includes the field, even when false.' id: type: string format: uuid is_service_account: type: boolean last_seen_at: type: string format: date-time login_type: $ref: '#/components/schemas/codersdk.LoginType' name: type: string organization_ids: type: array items: type: string format: uuid roles: type: array items: $ref: '#/components/schemas/codersdk.SlimRole' status: enum: - active - suspended allOf: - $ref: '#/components/schemas/codersdk.UserStatus' theme_preference: type: string description: 'Deprecated: this value should be retrieved from `codersdk.UserPreferenceSettings` instead.' updated_at: type: string format: date-time username: type: string required: - created_at - email - id - username codersdk.PostOAuth2ProviderAppRequest: type: object properties: callback_url: type: string icon: type: string name: type: string required: - callback_url - name codersdk.TemplateACL: type: object properties: group: type: array items: $ref: '#/components/schemas/codersdk.TemplateGroup' users: type: array items: $ref: '#/components/schemas/codersdk.TemplateUser' codersdk.Replica: type: object properties: created_at: type: string format: date-time description: CreatedAt is the timestamp when the replica was first seen. database_latency: type: integer description: DatabaseLatency is the latency in microseconds to the database. error: type: string description: Error is the replica error. hostname: type: string description: Hostname is the hostname of the replica. id: type: string format: uuid description: ID is the unique identifier for the replica. region_id: type: integer description: RegionID is the region of the replica. relay_address: type: string description: RelayAddress is the accessible address to relay DERP connections. codersdk.OAuth2ClientRegistrationRequest: type: object properties: client_name: type: string client_uri: type: string contacts: type: array items: type: string grant_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderGrantType' jwks: type: object jwks_uri: type: string logo_uri: type: string policy_uri: type: string redirect_uris: type: array items: type: string response_types: type: array items: $ref: '#/components/schemas/codersdk.OAuth2ProviderResponseType' scope: type: string software_id: type: string software_statement: type: string software_version: type: string token_endpoint_auth_method: $ref: '#/components/schemas/codersdk.OAuth2TokenEndpointAuthMethod' tos_uri: type: string codersdk.ExternalAgentCredentials: type: object properties: agent_token: type: string command: type: string codersdk.ConnectionLogWebInfo: type: object properties: slug_or_port: type: string status_code: type: integer description: StatusCode is the HTTP status code of the request. user: description: User is omitted if the connection event was from an unauthenticated user. allOf: - $ref: '#/components/schemas/codersdk.User' user_agent: type: string workspaceapps.IssueTokenRequest: type: object properties: app_hostname: type: string description: 'AppHostname is the optional hostname for subdomain apps on the external proxy. It must start with an asterisk.' app_path: type: string description: AppPath is the path of the user underneath the app base path. app_query: type: string description: AppQuery is the query parameters the user provided in the app request. app_request: $ref: '#/components/schemas/workspaceapps.Request' path_app_base_url: type: string description: PathAppBaseURL is required. session_token: type: string description: SessionToken is the session token provided by the user. tailcfg.DERPNode: type: object properties: canPort80: type: boolean description: 'CanPort80 specifies whether this DERP node is accessible over HTTP on port 80 specifically. This is used for captive portal checks.' certName: type: string description: 'CertName optionally specifies the expected TLS cert common name. If empty, HostName is used. If CertName is non-empty, HostName is only used for the TCP dial (if IPv4/IPv6 are not present) + TLS ClientHello.' derpport: type: integer description: 'DERPPort optionally provides an alternate TLS port number for the DERP HTTPS server. If zero, 443 is used.' forceHTTP: type: boolean description: 'ForceHTTP is used by unit tests to force HTTP. It should not be set by users.' hostName: type: string description: 'HostName is the DERP node''s hostname. It is required but need not be unique; multiple nodes may have the same HostName but vary in configuration otherwise.' insecureForTests: type: boolean description: 'InsecureForTests is used by unit tests to disable TLS verification. It should not be set by users.' ipv4: type: string description: 'IPv4 optionally forces an IPv4 address to use, instead of using DNS. If empty, A record(s) from DNS lookups of HostName are used. If the string is not an IPv4 address, IPv4 is not used; the conventional string to disable IPv4 (and not use DNS) is "none".' ipv6: type: string description: 'IPv6 optionally forces an IPv6 address to use, instead of using DNS. If empty, AAAA record(s) from DNS lookups of HostName are used. If the string is not an IPv6 address, IPv6 is not used; the conventional string to disable IPv6 (and not use DNS) is "none".' name: type: string description: 'Name is a unique node name (across all regions). It is not a host name. It''s typically of the form "1b", "2a", "3b", etc. (region ID + suffix within that region)' regionID: type: integer description: 'RegionID is the RegionID of the DERPRegion that this node is running in.' stunonly: type: boolean description: 'STUNOnly marks a node as only a STUN server and not a DERP server.' stunport: type: integer description: 'Port optionally specifies a STUN port to use. Zero means 3478. To disable STUN on this node, use -1.' stuntestIP: type: string description: 'STUNTestIP is used in tests to override the STUN server''s IP. If empty, it''s assumed to be the same as the DERP server.' codersdk.ProxyHealthReport: type: object properties: errors: type: array description: Errors are problems that prevent the workspace proxy from being healthy items: type: string warnings: type: array description: 'Warnings do not prevent the workspace proxy from being healthy, but should be addressed.' items: type: string codersdk.UpdateWorkspaceSharingSettingsRequest: type: object properties: shareable_workspace_owners: description: 'ShareableWorkspaceOwners controls whose workspaces can be shared within the organization.' enum: - none - everyone - service_accounts allOf: - $ref: '#/components/schemas/codersdk.ShareableWorkspaceOwners' sharing_disabled: type: boolean description: 'SharingDisabled is deprecated and left for backward compatibility purposes. Deprecated: use `ShareableWorkspaceOwners` instead' codersdk.AddLicenseRequest: type: object properties: license: type: string required: - license codersdk.ConnectionLogResponse: type: object properties: connection_logs: type: array items: $ref: '#/components/schemas/codersdk.ConnectionLog' count: type: integer count_cap: type: integer codersdk.PatchRoleIDPSyncConfigRequest: type: object properties: field: type: string codersdk.MinimalOrganization: type: object properties: display_name: type: string icon: type: string id: type: string format: uuid name: type: string required: - id codersdk.ReducedUser: type: object properties: avatar_url: type: string format: uri created_at: type: string format: date-time email: type: string format: email id: type: string format: uuid is_service_account: type: boolean last_seen_at: type: string format: date-time login_type: $ref: '#/components/schemas/codersdk.LoginType' name: type: string status: enum: - active - suspended allOf: - $ref: '#/components/schemas/codersdk.UserStatus' theme_preference: type: string description: 'Deprecated: this value should be retrieved from `codersdk.UserPreferenceSettings` instead.' updated_at: type: string format: date-time username: type: string required: - created_at - email - id - username codersdk.CreateWorkspaceProxyRequest: type: object properties: display_name: type: string icon: type: string name: type: string required: - name codersdk.ProvisionerDaemonStatus: type: string enum: - offline - idle - busy legacyscim.SCIMUser: type: object properties: active: type: boolean description: Active is a ptr to prevent the empty value from being interpreted as false. emails: type: array items: type: object properties: display: type: string primary: type: boolean type: type: string value: type: string format: email groups: type: array items: {} id: type: string meta: type: object properties: resourceType: type: string name: type: object properties: familyName: type: string givenName: type: string schemas: type: array items: type: string userName: type: string wsproxysdk.DeregisterWorkspaceProxyRequest: type: object properties: replica_id: type: string description: 'ReplicaID is a unique identifier for the replica of the proxy that is deregistering. It should be generated by the client on startup and should''ve already been passed to the register endpoint.' codersdk.UpdateTemplateACL: type: object properties: group_perms: type: object description: 'GroupPerms is a mapping from valid group UUIDs to the template role they should be granted. To remove a group from the template, use "" as the role (available as a constant named codersdk.TemplateRoleDeleted)' additionalProperties: $ref: '#/components/schemas/codersdk.TemplateRole' example: 8bd26b20-f3e8-48be-a903-46bb920cf671: use : admin user_perms: type: object description: 'UserPerms is a mapping from valid user UUIDs to the template role they should be granted. To remove a user from the template, use "" as the role (available as a constant named codersdk.TemplateRoleDeleted)' additionalProperties: $ref: '#/components/schemas/codersdk.TemplateRole' example: 4df59e74-c027-470b-ab4d-cbba8963a5e9: use : admin wsproxysdk.CryptoKeysResponse: type: object properties: crypto_keys: type: array items: $ref: '#/components/schemas/codersdk.CryptoKey' codersdk.UpdateAppearanceConfig: type: object properties: announcement_banners: type: array items: $ref: '#/components/schemas/codersdk.BannerConfig' application_name: type: string logo_url: type: string service_banner: description: 'Deprecated: ServiceBanner has been replaced by AnnouncementBanners.' allOf: - $ref: '#/components/schemas/codersdk.BannerConfig' codersdk.WorkspaceProxyStatus: type: object properties: checked_at: type: string format: date-time report: description: Report provides more information about the health of the workspace proxy. allOf: - $ref: '#/components/schemas/codersdk.ProxyHealthReport' status: $ref: '#/components/schemas/codersdk.ProxyHealthStatus' workspaceapps.AccessMethod: type: string enum: - path - subdomain - terminal wsproxysdk.IssueSignedAppTokenResponse: type: object properties: signed_token_str: type: string description: SignedTokenStr should be set as a cookie on the response. codersdk.ProvisionerKeyDaemons: type: object properties: daemons: type: array items: $ref: '#/components/schemas/codersdk.ProvisionerDaemon' key: $ref: '#/components/schemas/codersdk.ProvisionerKey' codersdk.PatchGroupRequest: type: object properties: add_users: type: array items: type: string avatar_url: type: string display_name: type: string name: type: string quota_allowance: type: integer remove_users: type: array items: type: string codersdk.OAuth2PKCECodeChallengeMethod: type: string enum: - S256 - plain codersdk.CryptoKeyFeature: type: string enum: - workspace_apps_api_key - workspace_apps_token - oidc_convert - tailnet_resume codersdk.OAuth2ProtectedResourceMetadata: type: object properties: authorization_servers: type: array items: type: string bearer_methods_supported: type: array items: type: string resource: type: string scopes_supported: type: array items: type: string codersdk.ProvisionerDaemon: type: object properties: api_version: type: string created_at: type: string format: date-time current_job: $ref: '#/components/schemas/codersdk.ProvisionerDaemonJob' id: type: string format: uuid key_id: type: string format: uuid key_name: type: string description: Optional fields. last_seen_at: type: string format: date-time name: type: string organization_id: type: string format: uuid previous_job: $ref: '#/components/schemas/codersdk.ProvisionerDaemonJob' provisioners: type: array items: type: string status: enum: - offline - idle - busy allOf: - $ref: '#/components/schemas/codersdk.ProvisionerDaemonStatus' tags: type: object additionalProperties: type: string version: type: string codersdk.WorkspaceSharingSettings: type: object properties: shareable_workspace_owners: description: 'ShareableWorkspaceOwners controls whose workspaces can be shared within the organization.' enum: - none - everyone - service_accounts allOf: - $ref: '#/components/schemas/codersdk.ShareableWorkspaceOwners' sharing_disabled: type: boolean description: 'SharingDisabled is deprecated and left for backward compatibility purposes. Deprecated: use `ShareableWorkspaceOwners` instead' sharing_globally_disabled: type: boolean description: 'SharingGloballyDisabled is true if sharing has been disabled for this organization because of a deployment-wide setting.' codersdk.UsagePeriod: type: object properties: end: type: string format: date-time issued_at: type: string format: date-time start: type: string format: date-time codersdk.GroupAIBudget: type: object properties: created_at: type: string format: date-time group_id: type: string format: uuid spend_limit_micros: type: integer updated_at: type: string format: date-time regexp.Regexp: type: object codersdk.Group: type: object properties: avatar_url: type: string format: uri display_name: type: string id: type: string format: uuid members: type: array items: $ref: '#/components/schemas/codersdk.ReducedUser' name: type: string organization_display_name: type: string organization_id: type: string format: uuid organization_name: type: string quota_allowance: type: integer source: $ref: '#/components/schemas/codersdk.GroupSource' total_member_count: type: integer description: 'How many members are in this group. Shows the total count, even if the user is not authorized to read group member details. May be greater than `len(Group.Members)`.' wsproxysdk.RegisterWorkspaceProxyResponse: type: object properties: derp_force_websockets: type: boolean derp_map: $ref: '#/components/schemas/tailcfg.DERPMap' derp_mesh_key: type: string derp_region_id: type: integer sibling_replicas: type: array description: 'SiblingReplicas is a list of all other replicas of the proxy that have not timed out.' items: $ref: '#/components/schemas/codersdk.Replica' codersdk.ShareableWorkspaceOwners: type: string enum: - none - everyone - service_accounts codersdk.RegionsResponse-codersdk_WorkspaceProxy: type: object properties: regions: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceProxy' codersdk.RoleSyncSettings: type: object properties: field: type: string description: 'Field is the name of the claim field that specifies what organization roles a user should be given. If empty, no roles will be synced.' mapping: type: object description: Mapping is a map from OIDC groups to Coder organization roles. additionalProperties: type: array items: type: string codersdk.ProvisionerKeyTags: type: object additionalProperties: type: string codersdk.WorkspaceQuota: type: object properties: budget: type: integer credits_consumed: type: integer codersdk.ProvisionerJobStatus: type: string enum: - pending - running - succeeded - canceling - canceled - failed - unknown tailcfg.DERPHomeParams: type: object properties: regionScore: type: object description: 'RegionScore scales latencies of DERP regions by a given scaling factor when determining which region to use as the home ("preferred") DERP. Scores in the range (0, 1) will cause this region to be proportionally more preferred, and scores in the range (1, ∞) will penalize a region. If a region is not present in this map, it is treated as having a score of 1.0. Scores should not be 0 or negative; such scores will be ignored. A nil map means no change from the previous value (if any); an empty non-nil map can be sent to reset all scores back to 1.0.' additionalProperties: type: number format: float64 codersdk.ConnectionLog: type: object properties: agent_name: type: string connect_time: type: string format: date-time id: type: string format: uuid ip: type: string organization: $ref: '#/components/schemas/codersdk.MinimalOrganization' ssh_info: description: 'SSHInfo is only set when `type` is one of: - `ConnectionTypeSSH` - `ConnectionTypeReconnectingPTY` - `ConnectionTypeVSCode` - `ConnectionTypeJetBrains`' allOf: - $ref: '#/components/schemas/codersdk.ConnectionLogSSHInfo' type: $ref: '#/components/schemas/codersdk.ConnectionType' web_info: description: 'WebInfo is only set when `type` is one of: - `ConnectionTypePortForwarding` - `ConnectionTypeWorkspaceApp`' allOf: - $ref: '#/components/schemas/codersdk.ConnectionLogWebInfo' workspace_id: type: string format: uuid workspace_name: type: string workspace_owner_id: type: string format: uuid workspace_owner_username: type: string codersdk.PatchGroupIDPSyncMappingRequest: type: object properties: add: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has remove: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has codersdk.PatchWorkspaceProxy: type: object properties: display_name: type: string icon: type: string id: type: string format: uuid name: type: string regenerate_token: type: boolean required: - display_name - icon - id - name codersdk.Response: type: object properties: detail: type: string description: '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"' message: type: string description: '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."' validations: type: array description: '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''.' items: $ref: '#/components/schemas/codersdk.ValidationError' codersdk.SlimRole: type: object properties: display_name: type: string name: type: string organization_id: type: string codersdk.BannerConfig: type: object properties: background_color: type: string enabled: type: boolean message: type: string wsproxysdk.RegisterWorkspaceProxyRequest: type: object properties: access_url: type: string description: AccessURL that hits the workspace proxy api. derp_enabled: type: boolean description: 'DerpEnabled indicates whether the proxy should be included in the DERP map or not.' derp_only: type: boolean description: 'DerpOnly indicates whether the proxy should only be included in the DERP map and should not be used for serving apps.' hostname: type: string description: 'ReplicaHostname is the OS hostname of the machine that the proxy is running on. This is only used for tracking purposes in the replicas table.' replica_error: type: string description: 'ReplicaError is the error that the replica encountered when trying to dial it''s peers. This is stored in the replicas table for debugging purposes but does not affect the proxy''s ability to register. This value is only stored on subsequent requests to the register endpoint, not the first request.' replica_id: type: string description: 'ReplicaID is a unique identifier for the replica of the proxy that is registering. It should be generated by the client on startup and persisted (in memory only) until the process is restarted.' replica_relay_address: type: string description: 'ReplicaRelayAddress is the DERP address of the replica that other replicas may use to connect internally for DERP meshing.' version: type: string description: Version is the Coder version of the proxy. wildcard_hostname: type: string description: WildcardHostname that the workspace proxy api is serving for subdomain apps. wsproxysdk.ReportAppStatsRequest: type: object properties: stats: type: array items: $ref: '#/components/schemas/workspaceapps.StatsReport' codersdk.UpdateUserQuietHoursScheduleRequest: type: object properties: schedule: type: string description: '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 schedule. 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.' required: - schedule codersdk.PatchOrganizationIDPSyncMappingRequest: type: object properties: add: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has remove: type: array items: type: object properties: gets: type: string description: The ID of the Coder resource the user should be added to given: type: string description: The IdP claim the user has workspaceapps.Request: type: object properties: access_method: $ref: '#/components/schemas/workspaceapps.AccessMethod' agent_name_or_id: type: string description: AgentNameOrID is not required if the workspace has only one agent. app_prefix: type: string description: 'Prefix is the prefix of the subdomain app URL. Prefix should have a trailing "---" if set.' app_slug_or_port: type: string base_path: type: string description: 'BasePath of the app. For path apps, this is the path prefix in the router for this particular app. For subdomain apps, this should be "/". This is used for setting the cookie path.' username_or_id: type: string description: 'For the following fields, if the AccessMethod is AccessMethodTerminal, then only AgentNameOrID may be set and it must be a UUID. The other fields must be left blank.' workspace_name_or_id: type: string codersdk.ValidationError: type: object properties: detail: type: string field: type: string required: - detail - field codersdk.AppearanceConfig: type: object properties: announcement_banners: type: array items: $ref: '#/components/schemas/codersdk.BannerConfig' application_name: type: string docs_url: type: string logo_url: type: string service_banner: description: 'Deprecated: ServiceBanner has been replaced by AnnouncementBanners.' allOf: - $ref: '#/components/schemas/codersdk.BannerConfig' support_links: type: array items: $ref: '#/components/schemas/codersdk.LinkConfig' codersdk.Entitlements: type: object properties: errors: type: array items: type: string features: type: object additionalProperties: $ref: '#/components/schemas/codersdk.Feature' has_license: type: boolean refreshed_at: type: string format: date-time require_telemetry: type: boolean trial: type: boolean warnings: type: array items: type: string securitySchemes: CoderSessionToken: type: apiKey in: header name: Coder-Session-Token externalDocs: {}