Coder Users API

The Users API from Coder — 28 operation(s) for users.

OpenAPI Specification

coder-users-api-openapi.yml Raw ↑
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 Users 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: Users
paths:
  /api/experimental/users/{user}/skills:
    get:
      operationId: list-user-skills
      summary: List user skills
      tags:
      - Users
      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:
                type: array
                items:
                  $ref: '#/components/schemas/codersdk.UserSkillMetadata'
    post:
      operationId: create-a-user-skill
      summary: Create a user skill
      tags:
      - Users
      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.CreateUserSkillRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.UserSkill'
  /api/experimental/users/{user}/skills/{skillName}:
    get:
      operationId: get-a-user-skill-by-name
      summary: Get a user skill by name
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, username, or me
        schema:
          type: string
      - name: skillName
        in: path
        required: true
        description: Skill name
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.UserSkill'
    delete:
      operationId: delete-a-user-skill
      summary: Delete a user skill
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, username, or me
        schema:
          type: string
      - name: skillName
        in: path
        required: true
        description: Skill name
        schema:
          type: string
      responses:
        '204':
          description: No Content
    patch:
      operationId: update-a-user-skill
      summary: Update a user skill
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, username, or me
        schema:
          type: string
      - name: skillName
        in: path
        required: true
        description: Skill name
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateUserSkillRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.UserSkill'
  /api/v2/users:
    get:
      operationId: get-users
      summary: Get users
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: q
        in: query
        required: false
        description: 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.GetUsersResponse'
    post:
      operationId: create-new-user
      summary: Create new user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.CreateUserRequestWithOrgs'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.User'
  /api/v2/users/authmethods:
    get:
      operationId: get-authentication-methods
      summary: Get authentication methods
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.AuthMethods'
  /api/v2/users/first:
    get:
      operationId: check-initial-user-created
      summary: Check initial user created
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.Response'
    post:
      operationId: create-initial-user
      summary: Create initial user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.CreateFirstUserRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.CreateFirstUserResponse'
  /api/v2/users/logout:
    post:
      operationId: log-out-user
      summary: Log out user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.Response'
  /api/v2/users/oauth2/github/callback:
    get:
      operationId: oauth-20-github-callback
      summary: OAuth 2.0 GitHub Callback
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '307':
          description: Temporary Redirect
  /api/v2/users/oauth2/github/device:
    get:
      operationId: get-github-device-auth
      summary: Get Github device auth.
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.ExternalAuthDevice'
  /api/v2/users/oidc-claims:
    get:
      operationId: get-oidc-claims-for-the-authenticated-user
      summary: Get OIDC claims for the authenticated user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.OIDCClaimsResponse'
  /api/v2/users/oidc/callback:
    get:
      operationId: openid-connect-callback
      summary: OpenID Connect Callback
      tags:
      - Users
      security:
      - CoderSessionToken: []
      responses:
        '307':
          description: Temporary Redirect
  /api/v2/users/{user}:
    get:
      operationId: get-user-by-name
      summary: Get user by name
      tags:
      - Users
      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.User'
    delete:
      operationId: delete-user
      summary: Delete user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      responses:
        '200':
          description: OK
  /api/v2/users/{user}/appearance:
    get:
      operationId: get-user-appearance-settings
      summary: Get user appearance settings
      tags:
      - Users
      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.UserAppearanceSettings'
    put:
      operationId: update-user-appearance-settings
      summary: Update user appearance settings
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateUserAppearanceSettingsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.UserAppearanceSettings'
  /api/v2/users/{user}/autofill-parameters:
    get:
      operationId: get-autofill-build-parameters-for-user
      summary: Get autofill build parameters for user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, username, or me
        schema:
          type: string
      - name: template_id
        in: query
        required: true
        description: Template ID
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/codersdk.UserParameter'
  /api/v2/users/{user}/gitsshkey:
    get:
      operationId: get-user-git-ssh-key
      summary: Get user Git SSH key
      tags:
      - Users
      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.GitSSHKey'
    put:
      operationId: regenerate-user-ssh-key
      summary: Regenerate user SSH key
      tags:
      - Users
      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.GitSSHKey'
  /api/v2/users/{user}/keys:
    post:
      operationId: create-new-session-key
      summary: Create new session key
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.GenerateAPIKeyResponse'
  /api/v2/users/{user}/keys/tokens:
    get:
      operationId: get-user-tokens
      summary: Get user tokens
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: include_expired
        in: query
        required: false
        description: Include expired tokens in the list
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/codersdk.APIKey'
    post:
      operationId: create-token-api-key
      summary: Create token API key
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.CreateTokenRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.GenerateAPIKeyResponse'
  /api/v2/users/{user}/keys/tokens/{keyname}:
    get:
      operationId: get-api-key-by-token-name
      summary: Get API key by token name
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: keyname
        in: path
        required: true
        description: Key Name
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.APIKey'
  /api/v2/users/{user}/keys/{keyid}:
    get:
      operationId: get-api-key-by-id
      summary: Get API key by ID
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: keyid
        in: path
        required: true
        description: Key ID
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.APIKey'
    delete:
      operationId: delete-api-key
      summary: Delete API key
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: keyid
        in: path
        required: true
        description: Key ID
        schema:
          type: string
      responses:
        '204':
          description: No Content
  /api/v2/users/{user}/keys/{keyid}/expire:
    put:
      operationId: expire-api-key
      summary: Expire API key
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: keyid
        in: path
        required: true
        description: Key ID
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.Response'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.Response'
  /api/v2/users/{user}/login-type:
    get:
      operationId: get-user-login-type
      summary: Get user login type
      tags:
      - Users
      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.UserLoginType'
  /api/v2/users/{user}/organizations:
    get:
      operationId: get-organizations-by-user
      summary: Get organizations by user
      tags:
      - Users
      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:
                type: array
                items:
                  $ref: '#/components/schemas/codersdk.Organization'
  /api/v2/users/{user}/organizations/{organizationname}:
    get:
      operationId: get-organization-by-user-and-organization-name
      summary: Get organization by user and organization name
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      - name: organizationname
        in: path
        required: true
        description: Organization name
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.Organization'
  /api/v2/users/{user}/password:
    put:
      operationId: update-user-password
      summary: Update user password
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateUserPasswordRequest'
      responses:
        '204':
          description: No Content
  /api/v2/users/{user}/preferences:
    get:
      operationId: get-user-preference-settings
      summary: Get user preference settings
      tags:
      - Users
      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.UserPreferenceSettings'
    put:
      operationId: update-user-preference-settings
      summary: Update user preference settings
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateUserPreferenceSettingsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.UserPreferenceSettings'
  /api/v2/users/{user}/profile:
    put:
      operationId: update-user-profile
      summary: Update user profile
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateUserProfileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.User'
  /api/v2/users/{user}/roles:
    get:
      operationId: get-user-roles
      summary: Get user roles
      tags:
      - Users
      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.User'
    put:
      operationId: assign-role-to-user
      summary: Assign role to user
      tags:
      - Users
      security:
      - CoderSessionToken: []
      parameters:
      - name: user
        in: path
        required: true
        description: User ID, name, or me
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/codersdk.UpdateRoles'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/codersdk.User'
  /api/v2/users/{user}/status/activate:
    put:
      operationId: activate-user-account
      summary: Activate user account
      tags:
      - Users
      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.User'
  /api/v2/users/{user}/status/suspend:
    put:
      operationId: suspend-user-account
      summary: Suspend user account
      tags:
      - Users
      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.User'
components:
  schemas:
    codersdk.APIAllowListTarget:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/codersdk.RBACResource'
    codersdk.ThemeMode:
      type: string
      enum:
      - ''
      - sync
      - single
    codersdk.OIDCAuthMethod:
      type: object
      properties:
        enabled:
          type: boolean
        iconUrl:
          type: string
        signInText:
          type: string
    codersdk.AuthMethod:
      type: object
      properties:
        enabled:
          type: boolean
    codersdk.OIDCClaimsResponse:
      type: object
      properties:
        claims:
          type: object
          description: 'Claims are the merged claims from the OIDC provider. These

            are the union of the ID token claims and the userinfo claims,

            where userinfo claims take precedence on conflict.'
          additionalProperties: true
    codersdk.Organization:
      type: object
      properties:
        created_at:
          type: string
          format: date-time
        default_org_member_roles:
          type: array
          description: 'DefaultOrgMemberRoles are unioned into every member''s effective

            roles at request time. Changes propagate to all members on the

            next request.'
          items:
            type: string
        description:
          type: string
        display_name:
          type: string
        icon:
          type: string
        id:
          type: string
          format: uuid
        is_default:
          type: boolean
        name:
          type: string
        updated_at:
          type: string
          format: date-time
      required:
      - created_at
      - id
      - is_default
      - updated_at
    codersdk.APIKeyScope:
      type: string
      enum:
      - all
      - application_connect
      - ai_gateway_key:*
      - ai_gateway_key:create
      - ai_gateway_key:delete
      - ai_gateway_key:read
      - ai_model_price:*
      - ai_model_price:read
      - ai_model_price:update
      - ai_provider:*
      - ai_provider:create
      - ai_provider:delete
      - ai_provider:read
      - ai_provider:update
      - ai_seat:*
      - ai_seat:create
      - ai_seat:read
      - aibridge_interception:*
      - aibridge_interception:create
      - aibridge_interception:read
      - aibridge_interception:update
      - api_key:*
      - api_key:create
      - api_key:delete
      - api_key:read
      - api_key:update
      - assign_org_role:*
      - assign_org_role:assign
      - assign_org_role:create
      - assign_org_role:delete
      - assign_org_role:read
      - assign_org_role:unassign
      - assign_org_role:update
      - assign_role:*
      - assign_role:assign
      - assign_role:read
      - assign_role:unassign
      - audit_log:*
      - audit_log:create
      - audit_log:read
      - boundary_log:*
      - boundary_log:create
      - boundary_log:delete
      - boundary_log:read
      - boundary_usage:*
      - boundary_usage:delete
      - boundary_usage:read
      - boundary_usage:update
      - chat:*
      - chat:create
      - chat:delete
      - chat:read
      - chat:share
      - chat:update
      - coder:all
      - coder:apikeys.manage_self
      - coder:application_connect
      - coder:templates.author
      - coder:templates.build
      - coder:workspaces.access
      - coder:workspaces.create
      - coder:workspaces.delete
      - coder:workspaces.operate
      - connection_log:*
      - connection_log:read
      - connection_log:update
      - crypto_key:*
      - crypto_key:create
      - crypto_key:delete
      - crypto_key:read
      - crypto_key:update
      - debug_info:*
      - debug_info:read
      - deployment_config:*
      - deployment_config:read
      - deployment_config:update
      - deployment_stats:*
      - deployment_stats:read
      - file:*
      - file:create
      - file:read
      - group:*
      - group:create
      - group:delete
      - group:read
      - group:update
      - group_member:*
      - group_member:read
      - idpsync_settings:*
      - idpsync_settings:read
      - idpsync_settings:update
      - inbox_notification:*
      - inbox_notification:create
      - inbox_notification:read
      - inbox_notification:update
      - license:*
      - license:create
      - license:delete
      - license:read
      - notification_message:*
      - notification_message:create
      - notification_message:delete
      - notification_message:read
      - notification_message:update
      - notification_preference:*
      - notification_preference:read
      - notification_preference:update
      - notification_template:*
      - notification_template:read
      - notification_template:update
      - oauth2_app:*
      - oauth2_app:create
      - oauth2_app:delete
      - oauth2_app:read
      - oauth2_app:update
      - oauth2_app_code_token:*
      - oauth2_app_code_token:create
      - oauth2_app_code_token:delete
      - oauth2_app_code_token:read
      - oauth2_app_secret:*
      - oauth2_app_secret:create
      - oauth2_app_secret:delete
      - oauth2_app_secret:read
      - oauth2_app_secret:update
      - organization:*
      - organization:create
      - organization:delete
      - organization:read
      - organization:update
      - organization_member:*
      - organization_member:create
      - organization_member:delete
      - organization_member:read
      - organization_member:update
      - prebuilt_workspace:*
      - prebuilt_workspace:delete
      - prebuilt_workspace:update
      - provisioner_daemon:*
      - provisioner_daemon:create
      - provisioner_daemon:delete
      - provisioner_daemon:read
      - provisioner_daemon:update
      - provisioner_jobs:*
      - provisioner_jobs:create
      - provisioner_jobs:read
      - provisioner_jobs:update
      - replicas:*
      - replicas:read
      - system:*
      - system:create
      - system:delete
      - system:read
      - system:update
      - tailnet_coordinator:*
      - tailnet_coordinator:create
      - tailnet_coordinator:delete
      - tailnet_coordinator:read
      - tailnet_coordinator:update
      - task:*
      - task:create
      - task:delete
      - task:read
      - task:update
      - template:*
      - template:create
      - template:delete
      - template:read
      - template:update
      - template:use
      - template:view_insights
      - usage_event:*
      - usage_event:create
      - usage_event:read
      - usage_event:update
      - user:*
      - user:create
      - user:delete
      - user:read
      - user:read_personal
      - user:update
      - user:update_personal
      - user_secret:*
      - user_secret:create
      - user_secret:delete
      - user_secret:read
      - user_secret:update
      - user_skill:*
      - user_skill:create
      - user_skill:delete
      - user_skill:read
      - user_skill:update
      - webpush_subscription:*
      - webpush_subscription:create
      - webpush_subscription:delete
      - webpush_subscription:read
      - workspace:*
      - workspace:application_connect
      - workspace:create
      - workspace:create_agent
      - workspace:delete
      - workspace:delete_agent
      - workspace:read
      - workspace:share
      - workspace:ssh
      - workspace:start
      - workspace:stop
      - workspace:update
      - workspace:update_agent
      - workspace_agent_devcontainers:*
      - workspace_agent_devcontainers:create
      - workspace_agent_resource_monitor:*
      - workspace_agent_resource_monitor:create
      - workspace_agent_resource_monitor:read
      - workspace_agent_resource_monitor:update
      - workspace_dormant:*
      - workspace_dormant:application_connect
      - workspace_dormant:create
      - workspace_dormant:create_agent
      - workspace_dormant:delete
      - workspace_dormant:delete_agent
      - workspace_dormant:read
      - workspace_dormant:share
      - workspace_dormant:ssh
      - workspace_dormant:start
      - workspace_dormant:stop
      - workspace_dormant:update
      - workspace_dormant:update_agent
      - workspace_proxy:*
      - workspace_proxy:create
      - workspace_proxy:delete
      - workspace_proxy:read
      - workspace_proxy:update
    codersdk.UserSkill:
      type: object
      properties:
        content:
          type: string
        created_at:
          type: s

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coder/refs/heads/main/openapi/coder-users-api-openapi.yml