Astronomer User API

The `user` object represents a user account in your Astro Organization. Astro creates a new `user` object whenever you invite a user by email or add a user to Astro through an identity provider. The object contains all information about a user, including their personal information, roles, and login attempts. It doesn't include attributes for actions that the user completes after they log in, such as updating a Deployment. Make requests to `user` endpoints to manage permissions for existing users both at the Organization and Workspace level. To create new users, make requests to `invite` endpoints instead.

OpenAPI Specification

astronomer-user-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  contact: {}
  description: Astro Platform API
  title: Astro Platform AgentToken User API
  version: v1.0
servers:
- url: https://api.astronomer.io/v1
security:
- JWT: []
tags:
- description: The `user` object represents a user account in your Astro Organization. Astro creates a new `user` object whenever you invite a user by email or add a user to Astro through an identity provider. The object contains all information about a user, including their personal information, roles, and login attempts. It doesn't include attributes for actions that the user completes after they log in, such as updating a Deployment. Make requests to `user` endpoints to manage permissions for existing users both at the Organization and Workspace level. To create new users, make requests to `invite` endpoints instead.
  name: User
paths:
  /organizations/{organizationId}/users:
    get:
      description: List users in an Organization or a specific Workspace within an Organization.
      operationId: ListUsers
      parameters:
      - description: The ID of the Organization to list users for.
        in: path
        name: organizationId
        required: true
        schema:
          type: string
      - description: The ID of the Workspace to filter the list of users for. When specified, the API returns only users belonging to the specified Workspace.
        in: query
        name: workspaceId
        schema:
          type: string
      - description: The ID of the Deployment to filter the list of users for. When specified, the API returns only users belonging to the specified Deployment.
        in: query
        name: deploymentId
        schema:
          type: string
      - description: The ID of the DAG to filter the list of users for. When specified, the API returns only users belonging to the specified DAG.
        in: query
        name: dagId
        schema:
          type: string
      - description: The Tags of the DAG to filter the list of users for. When specified, the API returns users belonging to the specified DAG tags.
        in: query
        name: dagTags
        schema:
          items:
            type: string
          type: array
      - description: Offset for pagination
        in: query
        name: offset
        schema:
          default: 0
          minimum: 0
          type: integer
      - description: Limit for pagination
        in: query
        name: limit
        schema:
          default: 20
          maximum: 1000
          minimum: 0
          type: integer
      - description: Sorting criteria, each criterion should conform to format 'fieldName:asc' or 'fieldName:desc'
        in: query
        name: sorts
        schema:
          items:
            enum:
            - id:asc
            - id:desc
            - username:asc
            - username:desc
            - fullName:asc
            - fullName:desc
            - createdAt:asc
            - createdAt:desc
            - updatedAt:asc
            - updatedAt:desc
            type: string
          type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersPaginated'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error
      security:
      - JWT: []
      summary: List users in an Organization
      tags:
      - User
      x-permission:
      - action: organization.users.get
  /organizations/{organizationId}/users/{userId}:
    get:
      description: Retrieve user information about a specific user account.
      operationId: GetUser
      parameters:
      - description: The ID of the Organization to which the user belongs.
        in: path
        name: organizationId
        required: true
        schema:
          type: string
      - description: The user's ID.
        in: path
        name: userId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error
      security:
      - JWT: []
      summary: Get user information
      tags:
      - User
      x-permission:
      - action: organization.users.get
  /organizations/{organizationId}/users/{userId}/roles:
    post:
      description: Update Organization and Workspace roles for a user.
      operationId: UpdateUserRoles
      parameters:
      - description: The ID of the Organization to which the user belongs.
        in: path
        name: organizationId
        required: true
        schema:
          type: string
      - description: The user's ID
        in: path
        name: userId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRolesRequest'
        description: The request body for updating the user's roles
        required: true
        x-originalParamName: body
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubjectRoles'
          description: The response body containing the user's roles
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error
      security:
      - JWT: []
      summary: Update a user's roles
      tags:
      - User
      x-permission:
      - action: organization.userRoles.access
  /organizations/{organizationId}/users/{userId}/teams:
    get:
      description: List the teams a user belongs to within an Organization.
      operationId: ListUserTeams
      parameters:
      - description: The ID of the Organization.
        in: path
        name: organizationId
        required: true
        schema:
          type: string
      - description: The user's ID.
        in: path
        name: userId
        required: true
        schema:
          type: string
      - description: Offset for pagination
        in: query
        name: offset
        schema:
          default: 0
          minimum: 0
          type: integer
      - description: Limit for pagination
        in: query
        name: limit
        schema:
          default: 20
          maximum: 1000
          minimum: 0
          type: integer
      - description: Sorting criteria, each criterion should conform to format 'fieldName:asc' or 'fieldName:desc'
        in: query
        name: sorts
        schema:
          items:
            enum:
            - name:asc
            - name:desc
            - description:asc
            - description:desc
            - createdAt:asc
            - createdAt:desc
            - updatedAt:asc
            - updatedAt:desc
            type: string
          type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserTeamsPaginated'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error
      security:
      - JWT: []
      summary: List teams for a user
      tags:
      - User
      x-permission:
      - action: organization.teams.get
  /users/self:
    get:
      description: Get the authenticated user's profile and roles.
      operationId: GetSelfUser
      parameters:
      - description: Create the user if they don't already exist.
        in: query
        name: createIfNotExist
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SelfUser'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error
      security:
      - JWT: []
      summary: Get current user
      tags:
      - User
components:
  schemas:
    UserTeamMembership:
      properties:
        dagRoles:
          description: The Team's role in each DAG it belongs to.
          items:
            $ref: '#/components/schemas/DagRole'
          type: array
        deploymentRoles:
          description: The Team's role in each Deployment it belongs to.
          items:
            $ref: '#/components/schemas/DeploymentRole'
          type: array
        description:
          description: The Team's description.
          example: My Team description
          type: string
        id:
          description: The Team's ID.
          example: clma5ftgk000008mhgev00k7d
          type: string
        isIdpManaged:
          description: Whether the Team is managed by an identity provider (IdP).
          example: false
          type: boolean
        name:
          description: The Team's name.
          example: My Team
          type: string
        organizationRole:
          description: The Team's Organization role.
          enum:
          - ORGANIZATION_OWNER
          - ORGANIZATION_OBSERVE_ADMIN
          - ORGANIZATION_OBSERVE_MEMBER
          - ORGANIZATION_BILLING_ADMIN
          - ORGANIZATION_MEMBER
          example: ORGANIZATION_MEMBER
          type: string
        rolesCount:
          description: The number of roles the Team has.
          example: 1
          type: integer
        workspaceRoles:
          description: The Team's role in each Workspace it belongs to.
          items:
            $ref: '#/components/schemas/WorkspaceRole'
          type: array
      required:
      - id
      - isIdpManaged
      - name
      - organizationRole
      type: object
    UsersPaginated:
      properties:
        limit:
          description: The maximum number of users in one page.
          example: 10
          type: integer
        offset:
          description: The offset of the current page of users.
          example: 0
          type: integer
        totalCount:
          description: The total number of users.
          example: 100
          type: integer
        users:
          description: The list of users in the current page.
          items:
            $ref: '#/components/schemas/User'
          type: array
      required:
      - limit
      - offset
      - totalCount
      - users
      type: object
    SelfUserFeatureFlag:
      properties:
        key:
          description: The feature flag key.
          type: string
        value:
          description: The feature flag value.
          type: boolean
      required:
      - key
      - value
      type: object
    UserTeamsPaginated:
      properties:
        limit:
          description: The maximum number of teams in one page.
          example: 10
          type: integer
        offset:
          description: The offset of the current page.
          example: 0
          type: integer
        teams:
          description: The list of teams the user belongs to in the current page.
          items:
            $ref: '#/components/schemas/UserTeamMembership'
          type: array
        totalCount:
          description: The total number of teams.
          example: 100
          type: integer
      required:
      - limit
      - offset
      - teams
      - totalCount
      type: object
    FieldValidationError:
      properties:
        code:
          type: string
        field:
          type: string
        message:
          type: string
      required:
      - code
      - field
      - message
      type: object
    SelfUserRoleScope:
      properties:
        dagTag:
          description: The DAG tag (only for DAG tag-scoped roles).
          type: string
        deploymentId:
          description: The Deployment ID (only for DAG-scoped roles).
          type: string
        entityId:
          description: The ID of the scoped entity.
          type: string
        type:
          description: The scope type (e.g. ORGANIZATION, WORKSPACE, DEPLOYMENT, DAG).
          type: string
      required:
      - entityId
      - type
      type: object
    SelfUserRole:
      properties:
        role:
          description: The role name.
          type: string
        scope:
          $ref: '#/components/schemas/SelfUserRoleScope'
      required:
      - role
      - scope
      type: object
    User:
      properties:
        avatarUrl:
          description: The URL for the user's profile image.
          example: https://avatar.url
          type: string
        createdAt:
          description: The time when the user was created in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`.
          example: '2022-11-22T04:37:12Z'
          format: date-time
          type: string
        dagRoles:
          description: The user's DAG roles.
          items:
            $ref: '#/components/schemas/DagRole'
          type: array
        deploymentRoles:
          description: The user's Deployment roles.
          items:
            $ref: '#/components/schemas/DeploymentRole'
          type: array
        fullName:
          description: The user's full name.
          example: Jane Doe
          type: string
        id:
          description: The user's ID.
          example: clm9sq6s0000008kz7uvl7yz7
          type: string
        organizationRole:
          description: The user's Organization role.
          enum:
          - ORGANIZATION_OWNER
          - ORGANIZATION_OBSERVE_ADMIN
          - ORGANIZATION_OBSERVE_MEMBER
          - ORGANIZATION_BILLING_ADMIN
          - ORGANIZATION_MEMBER
          example: ORGANIZATION_MEMBER
          type: string
        status:
          description: The user's status.
          enum:
          - ACTIVE
          - INACTIVE
          - PENDING
          - BANNED
          example: ACTIVE
          type: string
        updatedAt:
          description: The time when the user was updated in UTC, formatted as `YYYY-MM-DDTHH:MM:SSZ`.
          example: '2022-11-22T04:37:12Z'
          format: date-time
          type: string
        username:
          description: The user's username.
          example: user1@company.com
          type: string
        workspaceRoles:
          description: The user's Workspace roles.
          items:
            $ref: '#/components/schemas/WorkspaceRole'
          type: array
      required:
      - avatarUrl
      - createdAt
      - fullName
      - id
      - status
      - updatedAt
      - username
      type: object
    SelfUserInvite:
      properties:
        expiresAt:
          description: The time when the invite expires.
          format: date-time
          type: string
        inviteId:
          description: The invite ID.
          type: string
        organizationId:
          description: The Organization ID.
          type: string
      required:
      - expiresAt
      - inviteId
      - organizationId
      type: object
    DeploymentRole:
      properties:
        deploymentId:
          description: The Deployment ID.
          example: clm8t5u4q000008jq4qoc3031
          type: string
        role:
          description: The name of the role for the subject in the Deployment.
          example: DEPLOYMENT_ADMIN
          type: string
      required:
      - deploymentId
      - role
      type: object
    UpdateUserRolesRequest:
      properties:
        dagRoles:
          description: The user's updated DAG roles.
          items:
            $ref: '#/components/schemas/DagRole'
          type: array
        deploymentRoles:
          description: The user's updated Deployment roles. Requires also specifying an `OrganizationRole`.
          items:
            $ref: '#/components/schemas/DeploymentRole'
          type: array
        organizationRole:
          description: The user's updated Organization role.
          example: ORGANIZATION_OWNER,ORGANIZATION_OBSERVE_ADMIN,ORGANIZATION_OBSERVE_MEMBER,ORGANIZATION_BILLING_ADMIN,ORGANIZATION_MEMBER
          type: string
        workspaceRoles:
          description: The user's updated Workspace roles. Requires also specifying an `OrganizationRole`.
          items:
            $ref: '#/components/schemas/WorkspaceRole'
          type: array
      type: object
    SelfUser:
      properties:
        avatarUrl:
          description: The URL for the user's profile image.
          type: string
        createdAt:
          description: The time when the user was created.
          format: date-time
          type: string
        featureFlags:
          description: The user's feature flags.
          items:
            $ref: '#/components/schemas/SelfUserFeatureFlag'
          type: array
        fullName:
          description: The user's full name.
          type: string
        id:
          description: The user's ID.
          type: string
        invites:
          description: The user's pending Organization invites.
          items:
            $ref: '#/components/schemas/SelfUserInvite'
          type: array
        isIdpManaged:
          description: Whether the user is managed by an identity provider.
          type: boolean
        organizationId:
          description: The user's primary Organization ID.
          type: string
        roles:
          description: The user's roles across all scopes.
          items:
            $ref: '#/components/schemas/SelfUserRole'
          type: array
        status:
          description: The user's status.
          enum:
          - ACTIVE
          - INACTIVE
          - PENDING
          - BANNED
          type: string
        updatedAt:
          description: The time when the user was last updated.
          format: date-time
          type: string
        username:
          description: The user's username.
          type: string
      required:
      - avatarUrl
      - createdAt
      - fullName
      - id
      - status
      - updatedAt
      - username
      type: object
    WorkspaceRole:
      properties:
        role:
          description: The role of the subject in the Workspace.
          enum:
          - WORKSPACE_OWNER
          - WORKSPACE_OPERATOR
          - WORKSPACE_AUTHOR
          - WORKSPACE_MEMBER
          - WORKSPACE_ACCESSOR
          example: WORKSPACE_MEMBER
          type: string
        workspaceId:
          description: The Workspace ID.
          example: clm8t5u4q000008jq4qoc3036
          type: string
      required:
      - role
      - workspaceId
      type: object
    SubjectRoles:
      properties:
        dagRoles:
          description: A list of the subject's DAG roles.
          items:
            $ref: '#/components/schemas/DagRole'
          type: array
        deploymentRoles:
          description: A list of the subject's Deployment roles. Currently only for API tokens.
          items:
            $ref: '#/components/schemas/DeploymentRole'
          type: array
        organizationRole:
          description: The subject's Organization role.
          example: ORGANIZATION_OWNER,ORGANIZATION_OBSERVE_ADMIN,ORGANIZATION_OBSERVE_MEMBER,ORGANIZATION_BILLING_ADMIN,ORGANIZATION_MEMBER
          type: string
        workspaceRoles:
          description: A list of the subject's Workspace roles.
          items:
            $ref: '#/components/schemas/WorkspaceRole'
          type: array
      type: object
    DagRole:
      properties:
        dagId:
          description: The DAG ID. Required if Tag is not specified.
          example: my_dag
          type: string
        dagTag:
          description: The DAG tag. Required if DagId is not specified.
          example: team-a
          type: string
        deploymentId:
          description: The Deployment ID containing the DAG.
          example: clm8t5u4q000008jq4qoc3031
          type: string
        role:
          description: The role name (DAG_VIEWER, DAG_AUTHOR, or custom DAG role).
          example: DAG_VIEWER
          type: string
      required:
      - deploymentId
      - role
      type: object
    Error:
      properties:
        fieldErrors:
          description: 'FieldErrors carries one entry per failed request-validation constraint.

            Only present on 400 responses caused by request binding/validation.'
          items:
            $ref: '#/components/schemas/FieldValidationError'
          type: array
        message:
          type: string
        requestId:
          type: string
        statusCode:
          maximum: 600
          minimum: 400
          type: integer
      required:
      - message
      - requestId
      - statusCode
      type: object
  securitySchemes:
    JWT:
      scheme: bearer
      type: http