openapi: 3.0.0
info:
  contact:
    name: Canva Developer Community
    url: https://community.canva.dev/
  description: REST API for building admin integrations with Canva
  license:
    name: ©2025 All Rights Reserved
  termsOfService: https://www.canva.com/trust/legal/
  title: Canva Admin API
  version: latest
servers:
- description: Admin API
  url: https://api.canva.com/admin
tags:
- name: audit_event
- name: group
- name: group_member
- name: organization
- name: team
- name: team_member
- name: user
paths:
  /v1/audit-events:
    get:
      description: Lists audit events.
      operationId: listAuditEvents
      parameters:
      - description: "The inclusive lower limit for the time when audit events were\
          \ ingested into the log (in seconds since the Unix Epoch). As this is based\
          \ on the time when events were ingested, the returned list of events may\
          \ contain some events that occurred before this timestamp."
        explode: true
        in: query
        name: ingested_after
        required: false
        schema:
          example: 1735650000
          format: int64
          minimum: 0
          type: integer
        style: form
      - description: "The exclusive upper limit for the time when audit events were\
          \ ingested into the log (in seconds since the Unix Epoch). As this is based\
          \ on the time when events were ingested, the returned list of events may\
          \ contain some events that occurred after this timestamp."
        explode: true
        in: query
        name: ingested_before
        required: false
        schema:
          example: 1759240800
          format: int64
          minimum: 0
          type: integer
        style: form
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of events to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 1000
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAuditEventsResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:auditevent:read
      tags:
      - audit_event
  /v1/teams/{teamId}/groups:
    get:
      description: Lists groups in the specified team.
      operationId: listGroups
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of groups to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGroupsResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:read
      tags:
      - group
    post:
      description: Creates a new group in a team.
      operationId: createGroup
      parameters:
      - description: The team ID the group belongs to.
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGroupRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateGroupResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group
  /v1/teams/{teamId}/groups/{groupId}:
    delete:
      description: Deletes a group in a team.
      operationId: deleteGroup
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "204":
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group
    get:
      description: Gets a group in a team.
      operationId: getGroup
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGroupResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:read
      tags:
      - group
    patch:
      description: Updates a group in a team.
      operationId: updateGroup
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGroupRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGroupResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group
  /v1/teams/{teamId}/groups/{groupId}/members:
    get:
      description: Lists members in a group.
      operationId: listGroupMembers
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of members to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGroupMembersResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:read
      tags:
      - group_member
    post:
      description: Adds a member to a group.
      operationId: createGroupMember
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGroupMemberRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateGroupMemberResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group_member
  /v1/teams/{teamId}/groups/{groupId}/members/{userId}:
    delete:
      description: Removes a member from a group.
      operationId: deleteGroupMember
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The user ID.
        example: UAAAAAAAAA1
        explode: false
        in: path
        name: userId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "204":
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group_member
    get:
      description: Gets a group member.
      operationId: getGroupMember
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The user ID.
        example: UAAAAAAAAA1
        explode: false
        in: path
        name: userId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGroupMemberResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:read
      tags:
      - group_member
    patch:
      description: Updates a group member.
      operationId: updateGroupMember
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The group ID.
        example: GAAAAAAAAA1
        explode: false
        in: path
        name: groupId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The user ID.
        example: UAAAAAAAAA1
        explode: false
        in: path
        name: userId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGroupMemberRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGroupMemberResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:group:write
      tags:
      - group_member
  /v1/organizations/self:
    get:
      description: Gets metadata for an organization.
      operationId: getOrganization
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOrganizationResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:organization:read
      tags:
      - organization
  /v1/teams/{teamId}:
    get:
      description: Gets metadata for a team.
      operationId: getTeam
      parameters:
      - description: The team ID.
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTeamResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:team:read
      tags:
      - team
  /v1/teams:
    get:
      description: Lists teams.
      operationId: listTeams
      parameters:
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of teams to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTeamsResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:team:read
      tags:
      - team
  /v1/teams/{teamId}/members:
    get:
      description: Lists members in a team.
      operationId: listTeamMembers
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of members to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTeamMembersResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:team:read
      tags:
      - team_member
  /v1/teams/{teamId}/members/{userId}:
    get:
      description: Gets a team member.
      operationId: getTeamMember
      parameters:
      - description: The team ID.
        example: BAAAAAAAAA1
        explode: false
        in: path
        name: teamId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      - description: The user ID.
        explode: false
        in: path
        name: userId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTeamMemberResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:team:read
      tags:
      - team_member
  /v1/users:
    get:
      description: Lists users.
      operationId: listUsers
      parameters:
      - description: Filters the response using the email address of a user. This
          must match a user's email exactly.
        explode: true
        in: query
        name: email
        required: false
        schema:
          maxLength: 254
          minLength: 1
          type: string
        style: form
      - description: |-
          If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

          To retrieve all items, you might need to make multiple requests.
        explode: true
        in: query
        name: continuation
        required: false
        schema:
          type: string
        style: form
      - description: The maximum number of users to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUsersResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:user:read
      tags:
      - user
  /v1/users/{userId}:
    get:
      description: Gets a user.
      operationId: getUser
      parameters:
      - description: The user ID.
        explode: false
        in: path
        name: userId
        required: true
        schema:
          pattern: "^[a-zA-Z0-9_-]{1,50}$"
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUserResponse'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthClientCredentials:
        - admin:user:read
      tags:
      - user
components:
  schemas:
    ListAuditEventsResponse:
      description: Successful response from a `listAuditEvents` request
      properties:
        items:
          example:
          - id: 3849ef51-ca85-4028-bae3-1b8de3ee5738
            timestamp: 1704070800123
            actor:
              type: USER
              user:
                id: UXoqDbwwSbQ
                display_name: Jane Doe
                email: jane.doe@example.com
              team:
                id: BXeFatjDhdR
                display_name: Acme Team
              organization:
                id: OXtgecafZvh
                display_name: Acme Corporation
            target:
              target_type: RESOURCE
              resource_type: DESIGN
              id: DXWEBartcNg
              owner:
                user:
                  display_name: Jane Doe
                  email: jane.doe@example.com
                team:
                  id: BXeFatjDhdR
                  display_name: Acme Team
            action:
              type: VIEW_DESIGN
              view_type: VIEW_IN_EDITOR
              design_type: Presentation (16:9)
            outcome:
              result: PERMITTED
            context:
              ip_address: 192.0.2.123
              session: 41cfef61
              request_id: 220d18b47fcb2d23c72a2a954dff09cb
              device_id: d2805fafb9b50fe3f3d6ebbe221fc0e0883bf06b6bc285389147f3b259c2c4c1
          items:
            description: A JSON object representing an AuditEvent as specified by
              https://www.canva.dev/docs/audit-logs/audit-events/
            type: object
          type: array
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.
            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
      type: object
    Error:
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          description: A human-readable description of what went wrong.
          type: string
      required:
      - code
      - message
      type: object
    ErrorCode:
      description: |
        A short string indicating what failed. This field can be used to handle errors programmatically.
      enum:
      - permission_denied
      - too_many_requests
      - max_limit_reached
      - bad_request_body
      - bad_http_method
      - bad_request_params
      - bad_query_params
      - endpoint_not_found
      - invalid_access_token
      - missing_scope
      - input_unsafe
      - display_name_unavailable
      - team_not_found
      - group_not_found
      - user_not_found
      type: string
    CreateGroupRequest:
      properties:
        name:
          description: The display name for the group.
          example: ACME Marketing Group
          type: string
        description:
          description: The description for the group.
          example: All staff members in the marketing department.
          type: string
      required:
      - name
      type: object
    CreateGroupResponse:
      description: Successful response from a `createGroup` request.
      properties:
        group:
          $ref: '#/components/schemas/Group'
      required:
      - group
      type: object
    GetGroupResponse:
      description: Successful response from a `getGroup` request.
      properties:
        group:
          $ref: '#/components/schemas/Group'
      required:
      - group
      type: object
    ListGroupsResponse:
      description: Successful response from a `listGroups` request.
      properties:
        items:
          items:
            $ref: '#/components/schemas/Group'
          type: array
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
      required:
      - items
      type: object
    UpdateGroupRequest:
      description: Updates to be made to a group. Only the fields passed in will be
        updated on the group.
      properties:
        name:
          description: A display name for the group.
          example: ACME Marketing Group
          type: string
        description:
          description: A description for the group.
          example: All staff members in the marketing department.
          type: string
      type: object
    UpdateGroupResponse:
      description: Successful response from an `updateGroup` request.
      properties:
        group:
          $ref: '#/components/schemas/Group'
      required:
      - group
      type: object
    Group:
      description: A group.
      example:
        id: GAAAAAAAAA1
        name: ACME Marketing Group
        description: All staff members in the marketing department.
        created_at: 1601404800
        updated_at: 1601404900
      properties:
        id:
          description: The group ID. This ID is generated by Canva and is unique within
            the team.
          type: string
        name:
          description: The name of the group.
          type: string
        description:
          description: The description of the group.
          type: string
        created_at:
          description: "When the group was created, as a Unix timestamp (in seconds\
            \ since the Unix Epoch)."
          format: int64
          type: integer
        updated_at:
          description: "When the group was last updated, as a Unix timestamp (in seconds\
            \ since the Unix Epoch)."
          format: int64
          type: integer
      required:
      - created_at
      - id
      - name
      - updated_at
      type: object
    ListGroupMembersResponse:
      description: Successful response from a `listGroupMembers` request
      properties:
        items:
          items:
            $ref: '#/components/schemas/GroupMember'
          type: array
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
      required:
      - items
      type: object
    CreateGroupMemberRequest:
      properties:
        user_id:
          description: The user ID.
          example: UAAAAAAAAA1
          type: string
        role:
          $ref: '#/components/schemas/GroupMemberRole'
      required:
      - role
      - user_id
      type: object
    CreateGroupMemberResponse:
      description: Successful response from a `createGroupMember` request
      properties:
        group_member:
          $ref: '#/components/schemas/GroupMember'
      required:
      - group_member
      type: object
    GetGroupMemberResponse:
      description: Successful response from a `getGroupMember` request
      properties:
        group_member:
          $ref: '#/components/schemas/GroupMember'
      required:
      - group_member
      type: object
    UpdateGroupMemberRequest:
      description: Updates to be made to a group member. Only the provided fields
        are updated on the group member.
      properties:
        role:
          $ref: '#/components/schemas/GroupMemberRole'
      required:
      - role
      type: object
    UpdateGroupMemberResponse:
      description: Successful response from an `updateGroupMember` request.
      properties:
        group_member:
          $ref: '#/components/schemas/GroupMember'
      required:
      - group_member
      type: object
    GroupMember:
      description: A member in a group.
      example:
        user_id: UAAAAAAAAA1
        group_id: GAAAAAAAAAA
        team_id: BAAAAAAAAAA
        role: member
      properties:
        user_id:
          description: The user ID.
          type: string
        group_id:
          description: The group ID.
          type: string
        team_id:
          description: The team ID.
          type: string
        role:
          $ref: '#/components/schemas/GroupMemberRole'
      required:
      - group_id
      - role
      - team_id
      - user_id
      type: object
    GroupMemberRole:
      description: The role of the user in the group.
      enum:
      - admin
      - member
      type: string
    GetOrganizationResponse:
      description: Successful response from a `getOrganization` request
      properties:
        organization:
          $ref: '#/components/schemas/Organization'
      required:
      - organization
      type: object
    Organization:
      description: An organization.
      example:
        name: ACME Corporation
      properties:
        name:
          description: The name of the organization.
          type: string
      required:
      - name
      type: object
    GetTeamResponse:
      description: Successful response from a `getTeam` request
      properties:
        team:
          $ref: '#/components/schemas/Team'
      required:
      - team
      type: object
    ListTeamsResponse:
      description: Successful response from a `listTeams` request.
      properties:
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
        items:
          items:
            $ref: '#/components/schemas/Team'
          type: array
      required:
      - items
      type: object
    Team:
      description: A team.
      example:
        id: BAAAAAAAAA1
        name: Acme Team
        created_at: 1601404800
        updated_at: 1601404900
      properties:
        id:
          description: The team ID.
          type: string
        name:
          description: The name of the team.
          type: string
        created_at:
          description: "When the team was created, as a Unix timestamp (in seconds\
            \ since the Unix Epoch)."
          format: int64
          type: integer
        updated_at:
          description: "When the team was updated, as a Unix timestamp (in seconds\
            \ since the Unix Epoch)."
          format: int64
          type: integer
      required:
      - created_at
      - id
      - name
      type: object
    ListTeamMembersResponse:
      description: Successful response from a `listTeamMembers` request
      properties:
        items:
          items:
            $ref: '#/components/schemas/TeamMember'
          type: array
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
      required:
      - items
      type: object
    GetTeamMemberResponse:
      description: Successful response from a `getTeamMember` request
      properties:
        team_member:
          $ref: '#/components/schemas/TeamMember'
      required:
      - team_member
      type: object
    TeamMember:
      description: A user in a team.
      example:
        user_id: UAAAAAAAAA1
        team_id: BAAAAAAAAA1
        role: admin
      properties:
        user_id:
          description: The user ID.
          type: string
        team_id:
          description: The team ID.
          type: string
        role:
          $ref: '#/components/schemas/TeamMemberRole'
      required:
      - role
      - team_id
      - user_id
      type: object
    TeamMemberRole:
      description: The role of the member in the team.
      enum:
      - admin
      - designer
      - member
      type: string
    ListUsersResponse:
      description: Successful response from a `listUsers` request.
      properties:
        continuation:
          description: |-
            If the success response contains a continuation token, the list contains more items you can list. You can use this token as a query parameter and retrieve more items from the list, for example `?continuation={continuation}`.

            To retrieve all items, you might need to make multiple requests.
          example: RkFGMgXlsVTDbMd:MR3L0QjiaUzycIAjx0yMyuNiV0OildoiOwL0x32G4NjNu4FwtAQNxowUQNMMYN
          type: string
        items:
          items:
            $ref: '#/components/schemas/User'
          type: array
      required:
      - items
      type: object
    GetUserResponse:
      description: Successful response from a `getUser` request
      properties:
        user:
          $ref: '#/components/schemas/User'
      required:
      - user
      type: object
    User:
      description: A user.
      example:
        id: UAAAAAAAAA1
        display_name: Joe Smith
        email: joe@acme.com
        first_name: Joe
        last_name: Smith
        last_active_at: 1750300000
        role: admin
      properties:
        id:
          description: The user ID.
          type: string
        display_name:
          description: The display name of the user.
          type: string
        email:
          description: The email address of the user.
          type: string
        first_name:
          description: The first name of the user.
          type: string
        last_name:
          description: The last name of the user.
          type: string
        last_active_at:
          description: "When the user was last active, as a Unix timestamp (in seconds\
            \ since the Unix Epoch)."
          format: int64
          type: integer
        role:
          $ref: '#/components/schemas/OrganizationMemberRole'
      required:
      - id
      type: object
    OrganizationMemberRole:
      description: The role of the user in the organization.
      enum:
      - admin
      - brand_designer
      - member
      type: string
  securitySchemes:
    oauthClientCredentials:
      flows:
        clientCredentials:
          scopes:
            admin:user:read: Read information about a Canva user.
            admin:team:read: Read information about a Canva team and its users.
            admin:group:read: Read information about a Canva group.
            admin:group:write: "Create or modify a Canva group, and add or remove\
              \ its users."
            admin:organization:read: Read information about the Canva organization.
            admin:auditevent:read: List audit events for the Canva organization.
          tokenUrl: https://api.canva.com/auth/v1/oauth/token
      type: oauth2
