openapi: 3.0.3
info:
  title: Workiva API
  version: 1.2734.0
  description: 2026-01-01 Version of the Workiva API
servers:
  - url: https://api.app.wdesk.com
    description: US
  - url: https://api.eu.wdesk.com
    description: EU
  - url: https://api.apac.wdesk.com
    description: APAC
tags:
  - name: Activities
    description: |
      Activities enable you to retrieve a list of actions performed in the organization or a specific workspace, such as: <ul> <li>User logins</li> <li>Added users</li> <li>Changes to roles</li> <li>Changes to organization or workspace settings</li> </ul> These activities are also available in the Workiva platform and can be exported from Organization Admin or Workspace Settings. <br /><br /> To access activities through this API or in Workiva, a user must have a valid admin role: <ul> <li>Org User Admin</li> <li>Org Workspace Admin</li> <li>Org Security Admin, for organization activities</li> <li>Workspace Owner, for workspace activities</li> </ul> Learn more about these roles [here](https://support.workiva.com/hc/en-us/articles/360036006051-Organization-roles) and Workiva activities [here](https://support.workiva.com/hc/en-us/articles/360035646392-View-organization-activities).
  - name: Admin
    description: Endpoints to manage organizations, workspaces, groups, and users
  - name: Content
    description: Endpoints for reading and writing Workiva content. See [**Introduction to Content Endpoints**](ref:content-guide) for more information.
  - name: Custom Fields
    description: Endpoints to manage custom field definitions on platform objects
  - name: Documents
    description: Documents enable you to organize and review data in collaborative files with linked text, documents, and images. Use these endpoints to manage documents and their sections in the Workiva Platform.
  - name: Files
    description: Endpoints to manage files and folders.
  - name: Graph
    description: The Graph endpoints enable access to Integrated Risk workspaces, such as to pull reports and records, create and edit records, and more. <br /><br /> Please refer to the [Graph Guides](ref:graph-guide) for further documentation and examples.
  - name: IAM
    description: |
      Before your application can access private data using other Workiva APIs, it must obtain an access token that grants access to those APIs.

      Use the IAM REST API endpoint to exchange your OAuth credentials (clientID and clientSecret) for a token.
  - name: Milestones
    description: Endpoints for working with Milestones. See [**Introduction to Milestones Endpoints**](ref:milestones-guide) for more information.
  - name: Operations
    description: Use these endpoints to manage operations, such as to check their status.
  - name: Permissions
    description: Endpoints to manage Permissions
  - name: Spreadsheets
    description: Spreadsheets enable you to work with large, complex data in a familiar, collaborative, and controlled environment. Use these endpoints to manage spreadsheets and their sheets in the Workiva platform.
  - name: Presentations
    description: Endpoints to manage presentations
  - name: Reports
    description: Endpoints used to generate Admin reports
  - name: Sustainability
    description: Endpoints to manage Sustainability Programs
  - name: Tasks
    description: |
      Tasks enable users to manage projects, organize responsibilities, and meet deadlines in the Workiva platform. Use these endpoints to create and manage tasks.
  - name: Test Forms
    description: |
      These endpoints are used to manage test forms, test phases, and matrices. They are also used to manage attachments on test phases, matrices, and samples.
paths:
  /activities/{activityId}:
    get:
      description: |
        Retrieves an activity given its ID.

        :::{admonition} Attention
        :class: danger
        The Workiva Platform does not guarantee that actions taken in the platform will always result in the same Activity ID. Please rely on the ActivityAction `alias` field to determine if an activity is relevant to your use case.
        :::
      operationId: getActivityById
      parameters:
        - $ref: '#/components/parameters/ActivityId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFJNYjJjZVFYVmthWFJNYjJjNk5ETXpaamN4TUdVMU5HRTBOR1V5Tm1JeU5ERmtOREJsWXpNMlpHWXhNVFE=
                description: Adam Admin added the user 'John Public' to the workspace 'Organization Management'
                action:
                  id: com.workiva.administration.workspace_membership.create
                  type: com.workiva.administration.workspace_membership.create
                  alias: workspace_membership_create
                  name: Workspace membership created
                  category: Administration
                  deprecated: false
                performer:
                  id: V0ZWc2VyHzE0NT8xNzAyMDA
                  type: com.workiva.iam.principal.user
                  displayName: Adam Admin
                  uniqueName: admin_admin@example.com
                  ipAddress: 192.168.1.1
                targets:
                  - id: V0ZVc2VyHzY0ODY4NjQ1MzE1NTQ
                    uniqueName: john_public
                    displayName: John Public
                    type: com.workiva.administration.user
                activityDateTime: "2021-01-30T13:55:01Z"
                workspace:
                  id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                  name: Organization Management
                organization:
                  id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                  name: Workiva Inc.
                outcome: success
                tags:
                  - correlationId:1a2b3c4d5e6f000db88c0009f9f1
                  - eventId:LM4s-wJyTgW4NTbNZi_86v
              schema:
                $ref: '#/components/schemas/Activity'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - activity:read
      summary: Retrieve a single activity
      tags:
        - Activities
  /activityActions:
    get:
      description: |
        Retrieves a list of actions performed that may produce activities.

        :::{admonition} Attention
        :class: danger
        The Workiva Platform does not guarantee that actions taken in the platform will always result in the same Activity ID. Please rely on the ActivityAction `alias` field to determine if an activity is relevant to your use case.
        :::
      operationId: getActivityActions
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrderBy'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: com.workiva.administration.workspace_membership.create
                    alias: workspace_membership_create
                    name: Workspace membership created
                    category: Administration
                    deprecated: false
                  - id: com.workiva.administration.workspace_membership.delete
                    alias: workspace_membership_delete
                    name: Workspace membership deleted
                    category: Administration
                    deprecated: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ActivityActionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - activity:read
      summary: Retrieve a list of activity actions
      tags:
        - Activities
  /activityActions/{activityActionId}:
    get:
      description: |
        Returns an action performed, given its ID

        :::{admonition} Attention
        :class: danger
        The Workiva Platform does not guarantee that actions taken in the platform will always result in the same Activity ID. Please rely on the ActivityAction `alias` field to determine if an activity is relevant to your use case.
        :::
      operationId: getActivityActionById
      parameters:
        - $ref: '#/components/parameters/ActivityActionId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: com.workiva.administration.workspace_membership.create
                alias: workspace_membership_create
                name: Workspace membership created
                category: Administration
                deprecated: false
              schema:
                $ref: '#/components/schemas/ActivityAction'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - activity:read
      summary: Retrieve a single activity action
      tags:
        - Activities
  /content/anchors/{anchorId}:
    get:
      description: Returns an [`Anchor`](ref:content#anchor) given its id.
      operationId: getAnchorById
      parameters:
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sH
                content:
                  type: richText
                  richText: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                revision: 24601abc
                attachmentPoint:
                  type: richTextSelection
                  richTextSelection:
                    type: sourceLink
                    selection:
                      start:
                        paragraphIndex: 0
                        offset: 0
                      stop:
                        paragraphIndex: 0
                        offset: 10
              schema:
                $ref: '#/components/schemas/Anchor'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve an anchor by ID
      tags:
        - Content
  /content/destinationLinks/{destinationLinkId}:
    get:
      description: Returns a [`DestinationLink`](ref:content#destinationlink) given its id
      operationId: getDestinationLinkById
      parameters:
        - $ref: '#/components/parameters/DestinationLinkId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                content:
                  richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
                  type: richText
                id: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
                revision: 2c6438ab4541de6d
                source:
                  anchor:
                    anchor: WA46Pio9ANITRWdzvNwY4F50bj3yHRZoyHrY2N1L7rNyQywqAva9B4dgqzIvIqHAg4ODg6e
                    content:
                      richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
                      type: richText
                    revision: 2c6438ab4541de6f
                  type: anchor
                status: connected
              schema:
                $ref: '#/components/schemas/DestinationLink'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a destination link by id
      tags:
        - Content
  /content/destinationLinks/{destinationLinkId}/sourceConversion:
    post:
      description: |
        Converts a destination link into a source link. The previous source, if any, will be converted into a destination link.

        Responses include a `Location` header, which indicates where to poll for results. For more details on long-running
        job polling, see [Operations endpoint](ref:getoperationbyid). When the source conversion
        completes, its status will be `completed`, and the response body includes a `resourceURL`. For more details on the `resourceURL`
        see [operation results endpoint](ref:getdestinationlinksourceconversionresults).
        For more details, see [Authentication documentation](ref:authentication).
      operationId: destinationLinkSourceConversion
      parameters:
        - $ref: '#/components/parameters/DestinationLinkId'
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a destination link conversion
      tags:
        - Content
  /content/drawings/{drawingId}/elements:
    get:
      description: Returns a [`DrawingElementListResult`](ref:content#drawingelementlistresult) given its id
      operationId: getDrawingElementsById
      parameters:
        - $ref: '#/components/parameters/DrawingId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: shape
                    shape:
                      id: 2c6438ab45553dfc
                      shapeType: rectangle
                      position:
                        type: designPageRelative
                        designPageRelative:
                          x: 142.88
                          'y': -1.2
                      dimensions:
                        width: 182.25
                        height: 374.09
                      margins:
                        top: 10
                        bottom: 10
                        right: 10
                        left: 10
                      padding:
                        top: 10
                        bottom: 10
                        right: 10
                        left: 10
                      wrapStyle: wrapText
                      rotation: 0
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/DrawingElementListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve drawing elements by id
      tags:
        - Content
  /content/drawings/{drawingId}/anchors:
    get:
      description: Returns an [`AnchorsListResult`](ref:content#anchorslistresult) for a given drawingId.
      operationId: getDrawingAnchors
      parameters:
        - $ref: '#/components/parameters/DrawingId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - attachmentPoint:
                      drawingSelection:
                        selection:
                          - 2c6439ab45553df3
                        type: comment
                      type: drawingSelection
                    content:
                      drawing: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                      type: drawing
                    extensionTypes:
                      - comment
                    id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sH
                    revision: 24601abc
                  - attachmentPoint:
                      drawingRichTextSelection:
                        selection:
                          drawingElement: 2c6439ab45553df3
                          start:
                            offset: 0
                            paragraphIndex: 2
                          stop:
                            offset: 0
                            paragraphIndex: 3
                        type: sourceLink
                      type: drawingRichTextSelection
                    content:
                      drawing: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                      type: drawing
                    extensionTypes:
                      - destinationLink
                    id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR7SkZucm5sD
                    revision: 24601abc
              schema:
                $ref: '#/components/schemas/AnchorsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of drawing anchors
      tags:
        - Content
  /content/drawings/{drawingId}/anchors/{anchorId}:
    get:
      description: Returns an [`Anchor`](ref:content#anchor) given its id.
      operationId: getDrawingAnchorById
      parameters:
        - $ref: '#/components/parameters/DrawingId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Anchor'
              example:
                attachmentPoint:
                  drawingRichTextSelection:
                    selection:
                      drawingElement: 2c64382b45553de7
                      start:
                        offset: 0
                        paragraphIndex: 0
                      stop:
                        offset: 9
                        paragraphIndex: 0
                    type: sourceLink
                  type: drawingRichTextSelection
                content:
                  drawing: WA3Bxc3FzwQKGTFE3MsrXE4JTCTR45nJ5VXdz8JnQj6GVMSra6zB8v27p9Aw
                  type: drawing
                extensionTypes:
                  - destinationLink
                id: WA4OChoKAMvF1v6LEwTkk4HGg9AseLFYGKpoSAA2ojfFJmwtkpGMOPTJ0aCICAIh99uiTspzmUQsW60g3xWWoeKDAMDAwOT
                revision: 2c6438ab45553def
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a drawing anchor by ID
      tags:
        - Content
  /content/drawings/{drawingId}/anchors/{anchorId}/extensions:
    get:
      description: Returns a paginated list of [`AnchorExtensions`](ref:content#anchorextension) for a given anchorId.
      operationId: getDrawingAnchorExtensions
      parameters:
        - $ref: '#/components/parameters/DrawingId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 2c64382b45553de1
                    type: destinationLink
              schema:
                $ref: '#/components/schemas/AnchorExtensionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of drawing anchor extensions
      tags:
        - Content
  /content/images/upload:
    post:
      description: |
        Retrieves a URL that can be used to upload an image, and an operationId to track the image upload progress. Once uploaded, the image can be inserted in content.

        Image uploads must conform to the following constraints:

        - An image must be uploaded once per usage in content.
        - Image uploads must complete within ten minutes.
        - The file size of the uploaded image must 75 MB or smaller.
        - The total number of pixels in the uploaded image must be 50 Megapixels or smaller.
        - The image must be inserted in content within 24 hours or it will be removed.

        Responses include an `uploadUrl` which indicates where to upload the image. To upload the file,
        perform a PUT against the `uploadUrl` with the same authentication credentials and flow as the import request.
        For more details, see [Authentication documentation](ref:authentication). The response will also include
        a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see
        [Operations endpoint](ref:getoperationbyid). When the upload completes, its status will be
        `completed`, and the response body includes a `resourceURL`.
      operationId: imageUpload
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageUpload'
        description: Details about the image upload.
        required: false
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageUploadResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate upload of an image
      tags:
        - Content
  /content/images/{imageId}:
    get:
      description: Returns a [`Image`](ref:content#image) given its id
      operationId: getImageById
      parameters:
        - $ref: '#/components/parameters/ImageId'
      responses:
        "200":
          content:
            application/json:
              example:
                downloadUrl: <opaque_url>
                fileName: example.png
                id: WW91IGZvdW5kIG1lIQ
                mimeType: image/png
              schema:
                $ref: '#/components/schemas/Image'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve an image by id
      tags:
        - Content
  /content/richText/{richTextId}/anchors:
    get:
      description: Returns an [`AnchorsListResult`](ref:content#anchorslistresult) for a given richTextId.
      operationId: getRichTextAnchors
      parameters:
        - $ref: '#/components/parameters/RichTextId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - attachmentPoint:
                      richTextSelection:
                        selection:
                          start:
                            offset: 0
                            paragraphIndex: 0
                          stop:
                            offset: 10
                            paragraphIndex: 0
                        type: sourceLink
                      type: richTextSelection
                    content:
                      richText: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                      type: richText
                    id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sH
                    revision: 24601abc
                  - attachmentPoint:
                      richTextSelection:
                        selection:
                          start:
                            offset: 0
                            paragraphIndex: 0
                          stop:
                            offset: 10
                            paragraphIndex: 0
                        type: sourceLink
                      type: richTextSelection
                    content:
                      richText: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                      type: richText
                    id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR7SkZucm5sD
                    revision: 24601abc
              schema:
                $ref: '#/components/schemas/AnchorsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of rich text anchors
      tags:
        - Content
  /content/richText/{richTextId}/anchors/creation:
    post:
      description: |
        Create a new [`Anchor`](ref:content#anchor) using a [`RichTextAnchorCreation`](ref:content#richtextanchorcreation) request. This is a long running operation.

        Responses include a `Location` header, which indicates where to poll for
        results. For more details on long-running job polling, see
        [Operations endpoint](ref:getoperationbyid).
        When the creation completes, its status will be `completed`, and the response
        body includes a `resourceURL`. To GET the new rich text anchor, perform a GET
        on the `resourceURL` with the same authentication credentials and flow as the
        initial request. For more details, see
        [Authentication documentation](ref:authentication).
      operationId: richTextAnchorCreation
      parameters:
        - $ref: '#/components/parameters/RichTextId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RichTextAnchorCreation'
        description: The anchor creation requests
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate creation of a new rich text anchor
      tags:
        - Content
  /content/richText/{richTextId}/anchors/{anchorId}:
    get:
      description: Returns an [`Anchor`](ref:content#anchor) given its id.
      operationId: getRichTextAnchorById
      parameters:
        - $ref: '#/components/parameters/RichTextId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                attachmentPoint:
                  richTextSelection:
                    selection:
                      start:
                        offset: 0
                        paragraphIndex: 0
                      stop:
                        offset: 10
                        paragraphIndex: 0
                    type: sourceLink
                  type: richTextSelection
                content:
                  richText: WA3NycHJw1VgQZyMYOgbw3kkVJLvc6HF6UnBwbY8WWHcsO3LsRFxaGng2cR
                  type: richText
                id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sH
                revision: 24601abc
              schema:
                $ref: '#/components/schemas/Anchor'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a rich text anchor by id
      tags:
        - Content
  /content/richText/{richTextId}/anchors/{anchorId}/extensions:
    get:
      description: Returns a paginated list of [`AnchorExtensions`](ref:content#anchorextension) for a given anchorId.
      operationId: getRichTextAnchorExtensions
      parameters:
        - $ref: '#/components/parameters/RichTextId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 2c64382b45553de1
                    type: destinationLink
              schema:
                $ref: '#/components/schemas/AnchorExtensionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of rich text anchor extensions
      tags:
        - Content
  /content/richText/{richTextId}/duplication/edit:
    post:
      description: |-
        Sends a [`RichTextDuplicationEdit`](ref:content#richtextduplicationedit) to perform on the rich text.
        The optional revision property can be used to identify a stable version of the text to use for selections. The latest revision is used if not specified.
        This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
        The `resourceUrl` field will be populated with a link to the [Rich Text Duplication Edit Results endpoint](ref:getrichtextduplicationeditresults) to retrieve the IDs of the new resources.
      operationId: richTextDuplicationEdit
      parameters:
        - $ref: '#/components/parameters/RichTextId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RichTextDuplicationEdit'
        description: The rich text duplication edits to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate duplication edits to rich text
      tags:
        - Content
  /content/richText/{richTextId}/edit:
    post:
      description: |-
        Sends a [`RichTextBatchEdit`](ref:content#richtextbatchedit) to perform as a batch on the rich text.
        The optional revision property can be used to identify a stable version of the text to use for selections. The latest revision is used if not specified.
        This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
        If the batch edit creates any new resources such as embedded tables, the `resourceUrl` field will be populated with a link to the [Rich Text Batch Edit Results endpoint](ref:getrichtextbatcheditresults) to retrieve the IDs of the new resources.
      operationId: richTextBatchEdit
      parameters:
        - $ref: '#/components/parameters/RichTextId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RichTextBatchEdit'
        description: The rich text edits to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate edits to rich text
      tags:
        - Content
  /content/richText/{richTextId}/links/edit:
    post:
      description: |-
        Sends a [`RichTextLinksBatchEdit`](ref:content#richtextlinksbatchedit) to perform as a batch on the rich text.
        The optional revision property can be used to identify a stable version of the text to use for selections. The latest revision is used if not specified.
        This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
        If the batch edit creates any new resources, such as destination links, the `resourceUrl` field will be populated with a link to the [Rich Text Links Batch Edit Results endpoint](ref:getrichtextlinksbatcheditresults) to retrieve the IDs of the new resources.
      operationId: richTextLinksBatchEdit
      parameters:
        - $ref: '#/components/parameters/RichTextId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RichTextLinksBatchEdit'
        description: The rich text link edits to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate edits to rich text links
      tags:
        - Content
  /content/richText/{richTextId}/paragraphs:
    get:
      description: Returns a [`ParagraphsListResult`](ref:content#paragraphslistresult) for a rich text object, given its id.
      operationId: getRichTextParagraphs
      parameters:
        - $ref: '#/components/parameters/RichTextId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - index: 0
                    format:
                      bold: true
                    elements:
                      - type: chart
                        chart:
                          style:
                            styleGuide: a4a9271b80e94cccb541160c9f8e61d6
                            style: c3R5bGUta2V5Ol90Ymw
                            revision: 2B3C4D5E
                          dimensions:
                            height: 240
                            width: 240
                          table:
                            table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                            revision: 24601abc
                          length: 10
                          offset: 10
                    style:
                      styleGuide: a4a9271b80e94cccb541160c9f8e61d6
                      style: c3R5bGUta2V5Ol90Ymw
                      revision: 2B3C4D5E
                    properties:
                      alignment: justified
                      endIndent: 240
                      firstLineIndent: 240
                      pageBreakBefore: false
                      startIndent: 240
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ParagraphsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve rich text paragraphs
      tags:
        - Content
  /content/styleGuides/{styleGuideId}:
    get:
      description: |
        Returns the [`StyleGuide`](ref:content#styleguide) populated with the text styles, list styles, etc. The revision will ensure a static content.
      operationId: getStyleGuideById
      parameters:
        - $ref: '#/components/parameters/StyleGuideId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: e810327bd46b4438b7feed9f1e2d055d
                orderedListStyles:
                  - id: bGlzdC5hcmFiaWM6ZTgxMDMyN2JkNDZiNDQzOGI3ZmVlZDlmMWUyZDA1NWQ
                    index: 0
                    isNormalStyle: true
                    listProgressions:
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: numericSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 1
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseAlphabeticSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 2
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignRight
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseRomanSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 3
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: numericSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 4
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseAlphabeticSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 5
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignRight
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseRomanSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 6
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: numericSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 7
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseAlphabeticSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 8
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignRight
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: lowercaseRomanSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 9
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: .
                          style:
                            sequenceType: numericSequence
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 10
                    name: Numbered
                    notes: ""
                    type: orderedListStyle
                revision: 2c6438ab455b1513
                tableStyles:
                  - formats:
                      alignment: null
                      characterSpacing:
                        characterSpacing: 0
                        locked: false
                      emphasis:
                        bold: false
                        italic: false
                        locked: false
                        underline: false
                      firstLineIndent:
                        firstLineIndent: 0
                        locked: false
                      fontColor:
                        fontColor:
                          blue: 0
                          green: 0
                          red: 0
                        locked: false
                      fontFamily:
                        fontFamily: Arial
                        locked: true
                      fontSize:
                        fontSize: 10
                        locked: true
                      lineSpacing:
                        lineSpacing: 100
                        locked: false
                        unit: percent
                      spaceAfterParagraph:
                        locked: false
                        spaceAfterParagraph: 0
                      spaceBeforeParagraph:
                        locked: false
                        spaceBeforeParagraph: 0
                      startIndent:
                        locked: false
                        startIndent: 0
                    id: X3RibDplODEwMzI3YmQ0NmI0NDM4YjdmZWVkOWYxZTJkMDU1ZA
                    index: 0
                    isNormalStyle: true
                    name: Table (Normal)
                    notes: ""
                textStyles:
                  - formats:
                      alignment: null
                      characterSpacing:
                        characterSpacing: 0
                        locked: false
                      emphasis:
                        bold: false
                        italic: false
                        locked: false
                        underline: false
                      firstLineIndent:
                        firstLineIndent: 0
                        locked: false
                      fontColor:
                        fontColor:
                          blue: 0
                          green: 0
                          red: 0
                        locked: false
                      fontFamily:
                        fontFamily: Arial
                        locked: true
                      fontSize:
                        fontSize: 12
                        locked: true
                      lineSpacing:
                        lineSpacing: 120
                        locked: false
                        unit: percent
                      spaceAfterParagraph:
                        locked: false
                        spaceAfterParagraph: 0
                      spaceBeforeParagraph:
                        locked: false
                        spaceBeforeParagraph: 0
                      startIndent:
                        locked: false
                        startIndent: 0
                    id: X3R4dDplODEwMzI3YmQ0NmI0NDM4YjdmZWVkOWYxZTJkMDU1ZA
                    index: 0
                    isNormalStyle: true
                    name: Normal
                    notes: ""
                    type: paragraphStyle
                unorderedListStyles:
                  - id: YnVsbGV0LnJvdW5kOmU4MTAzMjdiZDQ2YjQ0MzhiN2ZlZWQ5ZjFlMmQwNTVk
                    index: 0
                    isNormalStyle: true
                    listProgressions:
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: •
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 1
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ◦
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 2
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ▪
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 3
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: •
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 4
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ◦
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 5
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ▪
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 6
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: •
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 7
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ◦
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 8
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: ▪
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 9
                      - formats:
                          bold: null
                          fontFamily: null
                          glyphAlignment:
                            alignment: glyphAlignLeft
                          indentation: null
                          italic: null
                          listText:
                            locked: false
                            prefix: ""
                            suffix: ""
                          style:
                            sequenceType: unorderedSequence
                            unorderedGlyph: •
                          symbolColor: null
                          symbolSize: null
                          underline: null
                        listLevel: 10
                    name: Bullet
                    notes: ""
                    type: unorderedListStyle
              schema:
                $ref: '#/components/schemas/StyleGuide'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a style guide by id
      tags:
        - Content
  /content/styleGuides/{styleGuideId}/export:
    post:
      description: |
        Export the style guide with the given identifier. Options are
        specified using a
        [StyleGuideExport](ref:content#styleguideexport) object.

        Responses include a `Location` header, which indicates where to poll for
        results. For more details on long-running job polling, see
        [Operations endpoint](ref:getoperationbyid).
        When the export completes, its status will be `completed`, and the response
        body includes a `resourceURL`. To GET the exported style guide, perform a GET
        on the `resourceURL` with the same authentication credentials and flow as the
        initial request. For more details, see
        [Authentication documentation](ref:authentication).
      operationId: styleGuideExport
      parameters:
        - $ref: '#/components/parameters/StyleGuideId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StyleGuideExport'
        description: |
          Details about the style guide export. The most recent version will be exported if revision is omitted from the export details.
        required: false
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Initiate a style guide export
      tags:
        - Content
  /content/styleGuides/{styleGuideId}/import:
    post:
      description: |
        Imports a style guide to the given identifier. This operation will replace the current style guide.

        Responses include an `uploadUrl` which indicates where to upload the style guide import. To upload the file,
        perform a PUT against the `uploadUrl` with the same authentication credentials and flow as the import request.
        For more details, see [Authentication documentation](ref:authentication). The response will also include
        a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see
        [Operations endpoint](ref:getoperationbyid). When the upload completes, its status will be
        `completed`, and the response body includes a `resourceURL`. To GET the style guide, perform a GET
        on the `resourceURL` with the same authentication credentials and flow as the initial request.
      operationId: styleGuideImport
      parameters:
        - $ref: '#/components/parameters/StyleGuideId'
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StyleGuideImportResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate import of a style guide
      tags:
        - Content
  /content/tables/{tableId}/anchors:
    get:
      description: Returns an [`AnchorsListResult`](ref:content#anchorslistresult) given tableId.
      operationId: getTableAnchors
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaqueUrl>
                data:
                  - attachmentPoint:
                      range:
                        startColumn: 0
                        startRow: 0
                        stopColumn: 1
                        stopRow: 2
                      type: tableRange
                    content:
                      table: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
                      type: table
                    extensionTypes:
                      - destinationLink
                    id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sL
                    revision: 24601abc
              schema:
                $ref: '#/components/schemas/AnchorsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of table anchors
      tags:
        - Content
  /content/tables/{tableId}/anchors/creation:
    post:
      description: |
        Create a new [`Anchor`](ref:content#anchor) using a [`TableAnchorCreation`](ref:content#tableanchorcreation) request. This is a long running operation.

        Responses include a `Location` header, which indicates where to poll for
        results. For more details on long-running job polling, see
        [Operations endpoint](ref:getoperationbyid).
        When the creation completes, its status will be `completed`, and the response
        body includes a `resourceURL`. To GET the new table anchor, perform a GET
        on the `resourceURL` with the same authentication credentials and flow as the
        initial request. For more details, see
        [Authentication documentation](ref:authentication).
      operationId: tableAnchorCreation
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TableAnchorCreation'
        description: The details of range for which the table anchor needs to be created
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate creation of a new table anchor
      tags:
        - Content
  /content/tables/{tableId}/anchors/{anchorId}:
    get:
      description: Returns an [`Anchor`](ref:content#anchor) given its id.
      operationId: getTableAnchorById
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                attachmentPoint:
                  range:
                    startColumn: 0
                    startRow: 0
                    stopColumn: 1
                    stopRow: 2
                  type: tableRange
                content:
                  table: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
                  type: table
                id: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBeGR8SkZubm5sL
                revision: 24601abc
              schema:
                $ref: '#/components/schemas/Anchor'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a table anchor by ID
      tags:
        - Content
  /content/tables/{tableId}/anchors/{anchorId}/extensions:
    get:
      description: Returns a paginated list of [`AnchorExtensions`](ref:content#anchorextension) for a given anchorId.
      operationId: getTableAnchorExtensions
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/AnchorId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnchorExtensionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of table anchor extensions
      tags:
        - Content
  /content/tables/{tableId}/cells:
    get:
      description: Returns a [`TableCellsResult`](ref:content#tablecellsresult) for a given tableId.
      operationId: getTableCells
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxCellsPerPage'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/StartRow'
        - $ref: '#/components/parameters/StopRow'
        - $ref: '#/components/parameters/StartColumn'
        - $ref: '#/components/parameters/StopColumn'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - cells:
                      - properties:
                          borders:
                            bottom:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                            diagonalDown:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                            diagonalUp:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                            left:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                            right:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                            top:
                              color:
                                red: 128
                                green: 128
                                blue: 128
                              style: single
                              weight: 1
                          fillColor:
                            red: 136
                            green: 204
                            blue: 255
                          horizontalAlignment: left
                          indent: 10
                          verticalAlignment: middle
                        rawValue: Hello World
                        value:
                          richText:
                            paragraphs:
                              - elements:
                                  - textSpan:
                                      format: {}
                                      length: 5
                                      offset: 0
                                      text: Hello
                                      type: text
                                    type: textSpan
                                format:
                                  bold: true
                                  font: Arial
                                  size: 24
                                index: 3
                          type: richText
                range:
                  startColumn: 0
                  startRow: 0
                  stopColumn: 0
                  stopRow: 0
                revision: 24601abc
              schema:
                $ref: '#/components/schemas/TableCellsResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve table cell content
      tags:
        - Content
  /content/tables/{tableId}/cells/edit:
    post:
      description: |
        Sends a [`TableCellsBatchEdit`](ref:content#tablecellsbatchedit) to perform on the cells in a table.

        The optional revision property can be used to identify a stable cell location in the table. The latest revision is used if not specified.

        Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see[ Operations endpoint ](ref:getoperationbyid). When the creation completes, its status will be `completed`, and the response\nbody includes a `resourceURL`.\n"
      operationId: tableCellsBatchEdit
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TableCellsBatchEdit'
        description: The table cell edit to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate edits to table cells
      tags:
        - Content
  /content/tables/{tableId}/properties/columns:
    get:
      description: |
        Returns a [`ColumnPropertiesListResult`](ref:content#columnpropertieslistresult) for a table
      operationId: getColumnProperties
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/StartColumn'
        - $ref: '#/components/parameters/StopColumn'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - width: 60
                    hidden: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ColumnPropertiesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve table column properties
      tags:
        - Content
  /content/tables/{tableId}/edit:
    post:
      description: |
        Sends a single [`TableEdit`](ref:content#tableedit) to perform on the table.

        Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see
        [ Operations endpoint ](ref:getoperationbyid). When the creation completes, its status will be `completed`, and the response
        body includes a `resourceURL`.
      operationId: tableEdit
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TableEdit'
        description: The table edit to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate edit to a table
      tags:
        - Content
  /content/tables/{tableId}/filters/reapplication:
    post:
      description: |
        Performs a [`TableFiltersReapplication`](ref:content#tablefiltersreapplication) on the specified table.
        This endpoint is used to refresh the table's filters based on the latest state or configuration changes.
        The filters are reapplied in the context of the table's current data state.
        This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on
        long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: tableFiltersReapplication
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TableFiltersReapplication'
        description: The filter reapplication request to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Reapply filters to the table
      tags:
        - Content
  /content/tables/{tableId}/links/edit:
    post:
      description: |
        Sends a [`TableLinksBatchEdit`](ref:content#tablelinksbatchedit) to perform on the links in a table.

        The optional revision property can be used to identify a stable cell location in the table. The latest revision is used if not specified.

        If the edit creates any new resources, such as destination links, the `resourceUrl` field will be populated with a link to the [Table Links Edit Results endpoint](ref:gettablelinkseditresults) to retrieve the IDs of the new resources.
      operationId: tableLinksBatchEdit
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TableLinksBatchEdit'
        description: The table link edits to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate edit to table links
      tags:
        - Content
  /content/tables/{tableId}/rangeLinks:
    get:
      description: Returns a [`RangeLinkListResult`](ref:content#rangelinklistresult) for a given tableId.
      operationId: getRangeLinks
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RangeLinkListResult'
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: f649093edf354cfe8ce52fa60990a109
                    table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                    revision: 24601abc
                    type: destination
                    destination:
                      source:
                        rangeLink: 8ce52fa60990a109f649093edf354cfe
                        table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                        revision: 24601abc
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of range links
      tags:
        - Content
  /content/tables/{tableId}/rangeLinks/{rangeLinkId}:
    get:
      description: Returns a [`RangeLink`](ref:content#rangelink) given its id
      operationId: getRangeLinkById
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/RangeLinkId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RangeLink'
              example:
                id: f649093edf354cfe8ce52fa60990a109
                table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                revision: 24601abc
                type: source
                source:
                  range:
                    startRow: 0
                    stopRow: 0
                    startColumn: 0
                    stopColumn: 1
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a range link by id
      tags:
        - Content
  /content/tables/{tableId}/rangeLinks/{rangeLinkId}/destinations:
    get:
      description: Returns a [`RangeLinkListResult`](ref:content#rangelinklistresult) of destinations for a given source range link.
      operationId: getRangeLinkDestinations
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/RangeLinkId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RangeLinkListResult'
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: f649093edf354cfe8ce52fa60990a109
                    table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                    revision: 24601abc
                    type: destination
                    destination:
                      source:
                        rangeLink: 8ce52fa60990a109f649093edf354cfe
                        table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                        revision: 24601abc
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve range link destinations for a source
      tags:
        - Content
  /content/tables/{tableId}/rangeLinks/edit:
    post:
      description: |
        Sends a [`RangeLinkEdit`](ref:content#rangelinkedit) to perform on the range links in a table.
        This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: tableRangeLinksEdit
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RangeLinkEdit'
        description: The table range link edit to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate range links edits on a table
      tags:
        - Content
  /content/tables/{tableId}/properties:
    get:
      description: |
        Returns a [`TableProperties`](ref:content#tableproperties) for a table
      operationId: getTableProperties
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                alternateRowFills: []
                id: 8610c7b132e944cb9e5c11daf08b1b1c
                lock: null
                name: Sheet 1
                printArea: null
                resizeRowsToFit: true
                revision: 2c6438ab4541de6d
                sheet: 5bd38cdc47bf44e496f0a7bc54e886f9
              schema:
                $ref: '#/components/schemas/TableProperties'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a table's properties by id
      tags:
        - Content
    patch:
      description: |
        Partially updates a table's properties given its ID.

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results.
        For more details on long-running job polling, see [Operations
        endpoint](ref:getoperationbyid).

        ### Options

        | Path                 | PATCH Operations Supported | Value Type                          |
        |----------------------|----------------------------|-------------------------------------|
        | `/name`              | `replace`                  | `string`                            |
        | `/resizeRowsToFit`   | `replace`                  | `boolean`, `null`                   |
        | `/alternateRowFills` | `replace`                  | Array of `AlternateRowFill`         |
        | `/printArea`         | `replace`                  | Array of `CellRange`, `null`        |
        | `/lock`              | `replace`                  | `TableLockType`, `null`             |
      operationId: partiallyUpdateTableProperties
      parameters:
        - $ref: '#/components/parameters/TableId'
      requestBody:
        description: Patch document representing the changes to be made to the table's properties
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
            examples:
              body:
                value:
                  - op: replace
                    path: /resizeRowsToFit
                    value: true
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a table's properties
      tags:
        - Content
  /content/tables/{tableId}/properties/rows:
    get:
      description: |
        Returns a [`RowPropertiesListResult`](ref:content#rowpropertieslistresult) for a table
      operationId: getRowProperties
      parameters:
        - $ref: '#/components/parameters/TableId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/StartRow'
        - $ref: '#/components/parameters/StopRow'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - height: 24
                    hidden: false
                    filtered: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/RowPropertiesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve table row properties
      tags:
        - Content
  /customSchema:
    get:
      description: "Retrieves the [CustomSchema](ref:customfields#customschema), which has the complete schema of custom fields and groups for the entire workspace, optionally filtering to a historical revision.\n\nFor example, to get the CustomSchema as of revision 7:\n\nGET /customSchema?$filter=revision eq 7\n\nNote: This endpoint is rate-limited. You may experience rates as low as 6000 requests per minute. This limit is enforced per workspace and is inclusive of both API and UI based requests. \nWhen polling for updates, examine the `Retry-After` header and retry after that many seconds.\n"
      operationId: getCustomSchema
      parameters:
        - $ref: '#/components/parameters/Filter'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 1487267209
                customFields:
                  gsr.legal_entity:
                    userDefined:
                      id: gsr.legal_entity
                      schema:
                        title: Legal Entity
                        type: string
                        state: Active
                      modified:
                        dateTime: "2019-10-30T15:03:27Z"
                        user:
                          id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                customFieldGroups:
                  gsr:
                    userDefined:
                      id: gsr
                      name: GSR Reporting
                      description: Custom fields relevant to GSR reporting
                      objectTypes:
                        - Document
                        - Spreadsheet
                        - Presentation
                        - Section
                        - Sheet
                        - Slide
                      state: Active
                      modified:
                        dateTime: "2019-10-30T15:03:27Z"
                        user:
                          id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                  Document:
                    builtin:
                      id: Document
                      name: All Documents
                      description: Custom fields that apply to every Document
                      objectTypes:
                        - Document
                      state: Active
                  Spreadsheet:
                    builtin:
                      id: Spreadsheet
                      name: All Spreadsheets
                      description: Custom fields that apply to every Spreadsheet
                      objectTypes:
                        - Spreadsheet
                      state: Active
                  Slide:
                    builtin:
                      id: Slide
                      name: All Slides
                      description: Custom fields that apply to every Slide
                      objectTypes:
                        - Slide
                      state: Active
                  Presentation:
                    builtin:
                      id: Presentation
                      name: All Presentations
                      description: Custom fields that apply to every Presentation
                      objectTypes:
                        - Presentation
                      state: Active
                  Section:
                    builtin:
                      id: Section
                      name: All Sections
                      description: Custom fields that apply to every Section
                      objectTypes:
                        - Section
                      state: Active
                  Sheet:
                    builtin:
                      id: Sheet
                      name: All Sheets
                      description: Custom fields that apply to every Sheet
                      objectTypes:
                        - Sheet
                      state: Active
                customFieldGroupMemberships:
                  gsr.legal_entity:
                    - gsr
              schema:
                $ref: '#/components/schemas/CustomSchema'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a customSchema
      tags:
        - Custom Fields
    patch:
      description: "Partially update the schema of custom fields and custom field groups for the entire workspace.\n\nNote: This endpoint is rate-limited. You may experience rates as low as 60 requests per minute. This limit is enforced per workspace and is inclusive of both API and UI based requests. \nWhen polling for updates, examine the `Retry-After` header and retry after that many seconds.\n"
      operationId: partiallyUpdateCustomSchema
      requestBody:
        content:
          application/json:
            example:
              - op: copy
                from: /customFields/gsr.legal_entity
                path: /customFields/gsr.legal_entity_2
              - op: copy
                from: /customFieldGroupMemberships/gsr.legal_entity
                path: /customFieldGroupMemberships/gsr.legal_entity_2
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: "JSON Patch document to be atomically applied to the custom schema. All valid patch operations are supported, although the operation will error if read-only properties are changed by the patch. Refer to the schema for documentation about which properties are read-only.\n    \nUser-defined custom fields and groups can be added, modified, and removed, but certain state change transition rules must also be obeyed:\n- Custom field ids must be unique within the workspace regardless of case and cannot be changed after creation. However, the display 'title' in the schema of a field can be changed.\n- Custom field group ids must be unique within the workspace regardless of case and cannot be changed after creation. However, the display 'name' of a group can be changed.\n- Once a custom field is transitioned out of 'draft' state, it cannot be transitioned back to 'draft' state or removed.\n- The top-level properties of the custom schema cannot be added or removed.\n- A custom field group must be user defined or built-in, but cannot be both or neither. The type of a group cannot be changed after creation.\n- Builtin custom field groups are provided by the Workiva Platform and cannot be added, modified, or removed.\n    \nNOTE: When adding or removing elements from a list, it is necessary to use a 'test' operation followed by a 'replace' operation to swap the entire list with a new list that includes the desired changes. The order of the lists is not guaranteed.\n    \nPossible error codes in the response:\n- read_only: Changing the requested read-only property is not allowed.\n- remove_unsupported: Removing the requested element is not allowed.\n- missing_subtype: The patch resulted in an object without a required subtype.\n- multiple_subtypes: The patch resulted in an object multiple subtypes, but only one is allowed.\n- changed_subtype: The requested change attempted to change the subtype of an existing object, which is not allowed.\n- backwards_incompatible: The requested change was valid, but cannot be applied because it would be backwards-incompatible.\n- cannot_create_builtin: The request to create a builtin custom field or group is not allowed.\n- cannot_apply_patch: The requested change was valid but could not be applied to the data due to the semantics defined for JSON Patch.\n- invalid_result: The patch would have resulted in data that is not valid.\n- identifier_conflict: The patch would have resulted in a case-insensitive conflict with an existing identifier.\n"
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 1487267209
                customFields:
                  gsr.legal_entity:
                    userDefined:
                      id: gsr.legal_entity
                      schema:
                        title: Legal Entity
                        type: string
                        state: Active
                      modified:
                        dateTime: "2019-10-30T15:03:27Z"
                        user:
                          id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                customFieldGroups:
                  gsr:
                    userDefined:
                      id: gsr
                      name: GSR Reporting
                      description: Custom fields relevant to GSR reporting
                      objectTypes:
                        - Document
                        - Spreadsheet
                        - Presentation
                        - Section
                        - Sheet
                        - Slide
                      state: Active
                      modified:
                        dateTime: "2019-10-30T15:03:27Z"
                        user:
                          id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                  Document:
                    builtin:
                      id: Document
                      name: All Documents
                      description: Custom fields that apply to every Document
                      objectTypes:
                        - Document
                      state: Active
                  Spreadsheet:
                    builtin:
                      id: Spreadsheet
                      name: All Spreadsheets
                      description: Custom fields that apply to every Spreadsheet
                      objectTypes:
                        - Spreadsheet
                      state: Active
                  Slide:
                    builtin:
                      id: Slide
                      name: All Slides
                      description: Custom fields that apply to every Slide
                      objectTypes:
                        - Slide
                      state: Active
                  Presentation:
                    builtin:
                      id: Presentation
                      name: All Presentations
                      description: Custom fields that apply to every Presentation
                      objectTypes:
                        - Presentation
                      state: Active
                  Section:
                    builtin:
                      id: Section
                      name: All Sections
                      description: Custom fields that apply to every Section
                      objectTypes:
                        - Section
                      state: Active
                  Sheet:
                    builtin:
                      id: Sheet
                      name: All Sheets
                      description: Custom fields that apply to every Sheet
                      objectTypes:
                        - Sheet
                      state: Active
                customFieldGroupMemberships:
                  gsr.legal_entity:
                    - gsr
              schema:
                $ref: '#/components/schemas/CustomSchema'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a customSchema
      tags:
        - Custom Fields
  /milestones/creation:
    post:
      operationId: milestoneCreation
      summary: Initiates a request to create a new milestone
      description: |
        Create a new [`Milestone`](ref:milestones#milestone) using a [`MilestoneCreation`](ref:milestones#milestonecreation) request. This is a long running operation. Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the creation completes, its status will be `completed`, and the response body includes a `resourceURL`. To GET the new milestone, perform a GET on the `resourceURL` with the same authentication credentials and flow as the initial request. For more details, see [Authentication documentation](ref:authentication).
      tags:
        - Milestones
      security:
        - oauth:
            - file:write
      requestBody:
        description: The milestone to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MilestoneCreation'
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "500":
          $ref: '#/components/responses/InternalServerError'
  /milestones/{milestoneId}:
    get:
      description: Returns a [`Milestone`](ref:milestones#milestone) given its id
      operationId: getMilestoneById
      parameters:
        - $ref: '#/components/parameters/MilestoneId'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Milestone'
              example:
                id: bWlsZXN0b25lLXYxOjQzODU0ZmU0NmU2MDQ4M2E4MTU0ZjdmMGI3MWI5YjllOjJjNjQzOGFiNDU1NTNkZTY
                resource:
                  type: document
                  document:
                    document: 16b1f641613847469b7aa1ca29af40b1
                    revision: 2c6438ab45553de6
                title: Start of Q1
                remarks: ""
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                  user:
                    id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a milestone by id
      tags:
        - Milestones
    delete:
      operationId: deleteMilestoneById
      summary: Deletes a milestone
      description: Deletes the [`Milestone`](ref:milestones#milestone) with a given id.
      parameters:
        - $ref: '#/components/parameters/MilestoneId'
      tags:
        - Milestones
      security:
        - oauth:
            - file:write
      responses:
        "204":
          description: No Content
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
    patch:
      operationId: partiallyUpdateMilestoneById
      summary: Partially updates a milestone
      description: |
        Partially updates a [`Milestone`](ref:milestones#milestone) with a given id.

        ### Options
        | Path                   | PATCH Operations Supported         | Value Type             |
        |------------------------|------------------------------------|------------------------|
        | `/title`               | `replace`                          | `string`               |
        | `/remarks`             | `replace`                          | `string`, `null`       |
      parameters:
        - $ref: '#/components/parameters/MilestoneId'
      tags:
        - Milestones
      security:
        - oauth:
            - file:write
      requestBody:
        description: The batch of JSON patch operations to apply
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Milestone'
              example:
                id: bWlsZXN0b25lLXYxOjQzODU0ZmU0NmU2MDQ4M2E4MTU0ZjdmMGI3MWI5YjllOjJjNjQzOGFiNDU1NTNkZTY
                resource:
                  type: document
                  document:
                    document: 16b1f641613847469b7aa1ca29af40b1
                    revision: 2c6438ab45553de6
                title: Start of Q1
                remarks: ""
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                  user:
                    id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
  /programs:
    get:
      description: Returns a paginated list of [programs](ref:sustainability#program).
      operationId: getPrograms
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/Filter'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: ca72b647-8e43-44c3-a4e7-2aa3294c37ad
                    name: Sustainability Program
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ProgramsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of programs
      tags:
        - Sustainability
    post:
      description: |
        Creates a new [program](ref:sustainability#program).
      operationId: createProgram
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Program'
        description: The properties of the program to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: ca72b647-8e43-44c3-a4e7-2aa3294c37ad
                name: Sustainability Program
              schema:
                $ref: '#/components/schemas/Program'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new program
      tags:
        - Sustainability
  /programs/{programId}:
    get:
      description: Retrieves a [program](ref:sustainability#program) given its ID
      operationId: getProgramById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: ca72b647-8e43-44c3-a4e7-2aa3294c37ad
                name: Sustainability Program
              schema:
                $ref: '#/components/schemas/Program'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single program
      tags:
        - Sustainability
    patch:
      description: |
        Partially updates the properties of a [program](ref:sustainability#program). Only one property may be updated at a time.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/name`|`replace`, `test`|
      operationId: partiallyUpdateProgramById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Sustainability Program Draft
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the [program](ref:sustainability#program). Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: ca72b647-8e43-44c3-a4e7-2aa3294c37ad
                name: Sustainability Program Draft
              schema:
                $ref: '#/components/schemas/Program'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single program
      tags:
        - Sustainability
  /programs/{programId}/dimensions:
    get:
      description: Returns a paginated list of [dimensions](ref:sustainability#dimension).
      operationId: getDimensions
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: c38353ce-32bc-4ea7-852a-bf5e12b72d76
                    name: Facility
                    active: true
                    values:
                      - id: Ames, IA
                        name: Ames, Iowa
                      - id: Portland, OR
                        name: Portland, Oregon
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/DimensionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of dimensions
      tags:
        - Sustainability
    post:
      description: |
        Creates a new [dimension](ref:sustainability#dimension).
      operationId: createDimension
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Dimension'
        description: The properties of the dimension to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: c38353ce-32bc-4ea7-852a-bf5e12b72d76
                name: Facility
                active: true
                values:
                  - id: Ames, IA
                    name: Ames, Iowa
                  - id: Portland, OR
                    name: Portland, Oregon
              schema:
                $ref: '#/components/schemas/Dimension'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new dimension
      tags:
        - Sustainability
  /programs/{programId}/dimensions/{dimensionId}:
    get:
      description: Retrieves a [dimension](ref:sustainability#dimension) given its ID
      operationId: getDimensionById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/DimensionId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: c38353ce-32bc-4ea7-852a-bf5e12b72d76
                name: Facility
                active: true
                values:
                  - id: Ames, IA
                    name: Ames, Iowa
                  - id: Portland, OR
                    name: Portland, Oregon
              schema:
                $ref: '#/components/schemas/Dimension'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single dimension
      tags:
        - Sustainability
    patch:
      description: |
        Partially updates the properties of a [dimension](ref:sustainability#dimension). Only one property may be updated at a time.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/active`|`replace`, `test`|
        |`/name`|`replace`, `test`|
        |`/values`|`replace`, `test`|
      operationId: partiallyUpdateDimensionById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/DimensionId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Updated Facility
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the [dimension](ref:sustainability#dimension). Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: c38353ce-32bc-4ea7-852a-bf5e12b72d76
                name: Updated Facility
                active: true
                values:
                  - id: Ames, IA
                    name: Ames, Iowa
                  - id: Portland, OR
                    name: Portland, Oregon
              schema:
                $ref: '#/components/schemas/Dimension'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single dimension
      tags:
        - Sustainability
  /programs/{programId}/metrics:
    get:
      description: Returns a paginated list of [Metrics](ref:sustainability#metric).
      operationId: getMetrics
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/Filter'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                    name: Scope 1 Consolidated GHG Emissions
                    topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
                    description: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
                    code: 12
                    strCode: M12
                    index: 0
                    unit: Metric Ton
                    dataType: text
                    requireNotes: false
                    requireSupportingAttachments: false
                  - id: 94c873247-8e43-44c3-bae6-294c87aca4e7
                    name: Total Energy Consumption
                    topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
                    description: Aggregate energy use across all operations, often broken down by source (renewable vs. non-renewable).
                    code: 13
                    strCode: M13
                    index: 1
                    unit: Megawatt hours
                    dataType: text
                    requireNotes: false
                    requireSupportingAttachments: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/MetricsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of metrics
      tags:
        - Sustainability
    post:
      description: |
        Creates a new [metric](ref:sustainability#metric).
      operationId: createMetric
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Metric'
        description: The properties of the metric to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Scope 1 Consolidated GHG Emissions
                topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
                description: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
                code: 12
                strCode: M12
                index: 0
                unit: Metric Ton
                dataType: text
                requireNotes: false
                requireSupportingAttachments: false
              schema:
                $ref: '#/components/schemas/Metric'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new metric
      tags:
        - Sustainability
  /programs/{programId}/metrics/{metricId}:
    delete:
      description: |
        Deletes a [metric](ref:sustainability#metric) given its ID
      operationId: deleteMetricById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single metric
      tags:
        - Sustainability
    get:
      description: Retrieves a [`Metric`](ref:sustainability#metric) given its ID
      operationId: getMetricById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Scope 1 Consolidated GHG Emissions
                topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
                description: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
                code: 12
                strCode: M12
                index: 0
                unit: Metric Ton
                dataType: text
                requireNotes: false
                requireSupportingAttachments: false
              schema:
                $ref: '#/components/schemas/Metric'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single metric
      tags:
        - Sustainability
    patch:
      description: |
        Partially updates the properties of a [metric](ref:sustainability#metric). Only one property may be updated at a time.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/datatype`|`replace`|
        |`/description`|`replace`, `test`|
        |`/index`|`replace`, `test`|
        |`/name`|`replace`, `test`|
        |`/requireNotes`|`replace`, `test`|
        |`/requireSupportingAttachments`|`replace`, `test`|
        |`/topic`|`replace`, `test`|
        |`/unit`|`replace`, `test`|
      operationId: partiallyUpdateMetricById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      requestBody:
        content:
          application/json:
            examples:
              replaceName:
                value:
                  - op: replace
                    path: /name
                    value: Scope 1 Consolidated GHG Emissions
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the [metric](ref:sustainability#metric). Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Scope 1 Consolidated GHG Emissions
                topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
                description: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
                code: 12
                strCode: M12
                index: 0
                unit: Metric Ton
                dataType: text
                requireNotes: false
                requireSupportingAttachments: false
              schema:
                $ref: '#/components/schemas/Metric'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single metric
      tags:
        - Sustainability
  /programs/{programId}/metrics/{metricId}/values:
    get:
      description: Returns a paginated list of [metric Values](ref:sustainability#metricvalue)
      operationId: getValues
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 5955107b-ed9e-43cb-a3a8-6fd1f73649c7
                    reportingPeriod:
                      year: 2024
                      start: 1
                      end: 12
                    coordinates:
                      b38353ce-32bc-4ea7-852a-bf5e12b72d95: Ames, IA
                    value: "512.8768743"
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/MetricValuesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of metric values
      tags:
        - Sustainability
    post:
      description: |
        Creates a new [metric value](ref:sustainability#metricvalue)
      operationId: createValue
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetricValue'
        description: The properties of the metric value to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                reportingPeriod:
                  year: 2024
                  start: 1
                  end: 12
                coordinates:
                  b38353ce-32bc-4ea7-852a-bf5e12b72d95: Ames, IA
                value: "512.8768743"
              schema:
                $ref: '#/components/schemas/MetricValue'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new metric value
      tags:
        - Sustainability
  /programs/{programId}/metrics/{metricId}/values/{metricValueId}:
    delete:
      description: |
        Deletes a [metric value](ref:sustainability#metricvalue) value given its ID
      operationId: deleteMetricValueById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
        - $ref: '#/components/parameters/MetricValueId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single metric value
      tags:
        - Sustainability
    get:
      description: |
        Retrieves a [metric value](ref:sustainability#metricvalue) value given its ID
      operationId: getMetricValueById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
        - $ref: '#/components/parameters/MetricValueId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 2c496b2d-aee4-42a0-b8e2-70cb3268ce41
                reportingPeriod:
                  year: 2024
                  start: 1
                  end: 12
                coordinates: {}
                value: ""
                notes: ""
              schema:
                $ref: '#/components/schemas/MetricValue'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single metric value
      tags:
        - Sustainability
    patch:
      description: |
        Partially updates the properties of a [metric value](ref:sustainability#metricvalue) value. Only one property may be updated at a time.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/notes`|`replace`, `test`|
        |`/value`|`replace`, `test`|
      operationId: partiallyUpdateMetricValueById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
        - $ref: '#/components/parameters/MetricValueId'
      requestBody:
        content:
          application/json:
            examples:
              replaceName:
                value:
                  - op: replace
                    path: /notes
                    value: Updated notes
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the metric value. Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: 2c496b2d-aee4-42a0-b8e2-70cb3268ce41
                reportingPeriod:
                  year: 2024
                  start: 1
                  end: 12
                coordinates: {}
                value: ""
                notes: Updated notes
              schema:
                $ref: '#/components/schemas/MetricValue'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single metric value
      tags:
        - Sustainability
  /programs/{programId}/metrics/{metricId}/values/batchDeletion:
    post:
      description: |
        Batch delete the given metric values.

        For each value, provide either the id or both the reportingPeriod and coordinates (if any).
        If both are provided, the given id will be used.
      operationId: batchDeletionMetricValues
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetricValueIdentifier'
        description: The metric values to delete
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a batch deletion of metric values
      tags:
        - Sustainability
  /programs/{programId}/metrics/{metricId}/values/batchUpsertion:
    post:
      description: |
        Batch upsert values for the given metric. The payload is limited to 10MB; break it into multiple requests if necessary.

        For each value, provide either the id or both the reportingPeriod and coordinates (if any).
        If both are provided, the given id will be used.

        The API will validate the request and return a 202 Accepted status.
        However, the operation will be processed asynchronously, so the values may take some time to appear in the system.
        Poll the location provided in the Location header to check the status of the operation.

        If any of the values fail to be processed, no changes will be stored in the system.
      operationId: batchUpsertionMetricValues
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MetricId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetricValueUpsertion'
        description: The metric values to upsert
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a batch upsertion of metric values
      tags:
        - Sustainability
  /programs/{programId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for a given Sustainability Program
      operationId: getProgramPermissions
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a program
      tags:
        - Sustainability
  /programs/{programId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a Sustainability Program. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: programPermissionsModification
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the Sustainability Program permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a program
      tags:
        - Sustainability
  /programs/{programId}/topics:
    get:
      description: Returns a paginated list of [topics](ref:sustainability#topic).
      operationId: getTopics
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                    name: Climate
                    index: 0
                    parent: 82bae647-8e43-44c3-a4e7-2aa3294c87ac
                  - id: 94c873247-8e43-44c3-bae6-294c87aca4e7
                    name: Fuel Report
                    index: 1
                    parent: aa3a647-8e43-44c3-a4e7-2aa3ae82b294c3
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/TopicsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of topics
      tags:
        - Sustainability
    post:
      description: |
        Creates a new [topic](ref:sustainability#topic).
      operationId: createTopic
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Topic'
        description: The properties of the topic to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                name: Climate
                index: 1
                parent: 82bae647-8e43-44c3-a4e7-2aa3294c87ac
              schema:
                $ref: '#/components/schemas/Topic'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new topic
      tags:
        - Sustainability
  /programs/{programId}/topics/{topicId}:
    delete:
      description: |
        Deletes a [topic](ref:sustainability#topic) given its ID
      operationId: deleteTopicById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/TopicId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single topic
      tags:
        - Sustainability
    get:
      description: |
        Retrieves a [topic](ref:sustainability#topic) given its ID
      operationId: getTopicById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/TopicId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Climate
                index: 1
                parent: 82bae647-8e43-44c3-a4e7-2aa3294c87ac
              schema:
                $ref: '#/components/schemas/Topic'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single topic
      tags:
        - Sustainability
    patch:
      description: |
        Partially updates the properties of a [topic](ref:sustainability#topic). Only one property may be updated at a time.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/index`|`replace`, `test`|
        |`/name`|`replace`, `test`|
        |`/parent`|`replace`, `test`|
      operationId: partiallyUpdateTopicById
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - $ref: '#/components/parameters/TopicId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Climate Report
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the [topic](ref:sustainability#topic). Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Climate Report
                index: 1
                parent: 82bae647-8e43-44c3-a4e7-2aa3294c87ac
              schema:
                $ref: '#/components/schemas/Topic'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single topic
      tags:
        - Sustainability
  /organizations:
    get:
      description: |
        Returns a paginated list of [organizations](ref:admin#organization).
        This functionality is only available to Managed Service Provider Applications. Contact your CSM for assistance.
      operationId: getOrganizations
      parameters:
        - $ref: '#/components/parameters/Wk-Service-Provider'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 1fdc156c-49d4-4f7c-a157-0a54e767f402
                    name: Workiva Inc.
                    created:
                      dateTime: "2014-12-01T15:03:27Z"
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                    status: active
                  - id: 626bc888-3f74-4a44-a5de-74db5a660526
                    name: Example Inc.
                    created:
                      dateTime: "2016-03-01T15:03:27Z"
                    modified:
                      dateTime: "2023-04-14T08:03:02Z"
                    status: active
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/OrganizationsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - contextless-oauth:
            - organization:read
      summary: Retrieve a list of organizations
      tags:
        - Admin
  /organizations/{organizationId}:
    get:
      description: |
        Retrieves an organization given its ID
      operationId: getOrganizationById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      responses:
        "200":
          content:
            application/json:
              examples:
                OK:
                  value:
                    created:
                      dateTime: "2014-12-01T15:03:27Z"
                    id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                    name: Workiva Inc.
                    status: active
              schema:
                $ref: '#/components/schemas/Organization'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a single organization
      tags:
        - Admin
    patch:
      description: |
        Updates the properties of an organization.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/name`|`replace`|
      operationId: partiallyUpdateOrganizationById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Workiva Inc.
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the organization.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                name: Workiva Inc.
                created:
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
                status: active
              schema:
                $ref: '#/components/schemas/Organization'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Update a single organization
      tags:
        - Admin
  /organizations/{organizationId}/activities:
    get:
      description: |
        Returns a paginated list of activities for a given organization.

        :::{admonition} Attention
        :class: danger
        The Workiva Platform does not guarantee that actions taken in the platform will always result in the same Activity ID. Please rely on the ActivityAction `alias` field to determine if an activity is relevant to your use case.
        :::
      operationId: getOrganizationActivities
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/OrganizationId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - action:
                      id: com.workiva.administration.workspace_membership.create
                      alias: workspace_membership_create
                      category: Administration
                      name: Workspace membership created
                      deprecated: false
                    id: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFIzYjJjZVFYVmtiWFJNYjJlNk5ETXpiamN4TUdVMU5HRTlOR1V5Tm1JeU5ENGtOREJsWXpuNFpHWXhNVFE=
                    summary: Adam Admin added the user 'John Public' to the workspace 'Organization Management'
                    performer:
                      id: V0ZWc2VyHzE0NT8xNzAyMDA
                      type: com.workiva.iam.principal.user
                      displayName: Adam Admin
                      uniqueName: admin_admin@example.com
                      ipAddress: 192.168.1.1
                    targets:
                      - id: V0ZVc2VyHzY0ODY4NjQ1MzE1NTQ
                        uniqueName: john_public
                        displayName: John Public
                        type: com.workiva.administration.user
                      - id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                        displayName: Organization Management
                        type: com.workiva.administration.workspace
                    activityDateTime: "2021-01-30T14:11:02Z"
                    workspace:
                      id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                      name: Organization Management
                    organization:
                      id: a25bc16f-fb62-4aff-a87e-1cca4b2113c0
                      name: Workiva
                    outcome: success
                    tags:
                      - correlationId:1a2b3c4d5e6f000db88c0009f9f1
                      - eventId:LM4s-wJyTgW4NTbNZi_86v
                  - action:
                      id: com.workiva.administration.workspace.update
                      alias: workspace_update
                      category: Administration
                      name: Workspace updated
                      deprecated: false
                    id: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFJNYjJjZVFYVmthWFJNYjJjNk5ETXpaamN4TUdVMU5HRTBOR1V5Tm1JeU5ERmtOREJsWXpNMlpHWXhNVFE=
                    summary: Adam Admin updated the workspace 'Organization Management'
                    performer:
                      id: V0ZWc2VyHzE0NT8xNzAyMDA
                      type: com.workiva.iam.principal.user
                      displayName: Adam Admin
                      uniqueName: admin_admin@example.com
                      ipAddress: 192.168.1.1
                    targets:
                      - id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                        uniqueName: string
                        displayName: Organization Management
                        type: com.workiva.administration.workspace
                    activityDateTime: "2021-01-30T13:55:01Z"
                    workspace:
                      id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                      name: Organization Management
                    organization:
                      id: a25bc16f-fb62-4aff-a87e-1cca4b2113c0
                      name: Workiva
                    outcome: success
                    tags:
                      - correlationId:2a1b4dee6e9f001dbbbc0007f7f3
                      - eventId:k94s-vJyTaca5HERbNZi_21v
                    attachments:
                      - entityChanges:
                          propertyName: displayName
                          new: Organization Management
                          old: New Workspace
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ActivitiesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - activity:read
      summary: Retrieve a list of activities for an organization
      tags:
        - Activities
  /organizations/{organizationId}/orgReportUsers:
    get:
      description: |
        Similar to an organization admin's "People View" export, this returns a paged list of specific details about the organization's users, including their usernames, display names, email addresses, SAML IDs, last logins, workspace memberships, licenses and roles. Results are sorted by displayName. <br /><br /> To obtain an organization's users, you need its organizationId. To view the organizationId in Wdesk, click your name in the lower left, and select <strong>Organization Admin</strong>. In the URL in your browser, the organizationId appears as a GUID after the /o/ such as 371b5fc8-fcc4-404a-9d22-d07d8f46a7e0. To view the ID of another organization you manage, select <strong>Switch Organizations</strong> from the left-hand menu, and search for and select the organization. <br /><br /> <strong>Requires the calling user to be an organization admin</strong>.
      operationId: getOrgReportUsers
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - description: Paging cursor
          in: query
          name: page[after]
          schema:
            type: string
        - description: Number of items to return. Maximum of 1000.
          in: query
          name: page[size]
          schema:
            type: integer
            default: 100
            format: int64
            maximum: 1000
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - attributes:
                      active: true
                      displayName: Jane Smith
                      email: jane.smith@example.com
                      firstName: Jane
                      lastLogin: null
                      lastName: Smith
                      licenses:
                        - Support
                      organizationRoles:
                        - Organization User Admin
                        - Organization Security Admin
                      samlId: null
                      userName: jane.smith@example.com
                      workspaceMemberships:
                        - id: QWNjb3VudB82NzUwMjAwMDc
                          workspaceName: Test Workspace
                          workspaceRoles: []
                    id: abc123
                    type: orgReportUser
                links:
                  next: https://api.wdesk.com/admin/v1/organizations/orgId123-456-789/orgReportUsers?page[size]=1&page[after]=...
              schema:
                $ref: '#/components/schemas/GetOrgReportUsersResponse'
          description: OK
          headers: {}
        "400":
          content:
            application/json:
              example:
                errors:
                  - status: "400"
                    source:
                      parameter: page[size]
                    title: Invalid Page Size
                    detail: page[size] must be a positive integer
              schema:
                $ref: '#/components/schemas/Failure'
          description: BAD_REQUEST
          headers: {}
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: UNAUTHORIZED
          headers: {}
        "403":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: FORBIDDEN
          headers: {}
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: NOT_FOUND
          headers: {}
        "405":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: METHOD_NOT_ALLOWED
          headers: {}
        "415":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: UNSUPPORTED_MEDIA_TYPE
          headers: {}
        "500":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: INTERNAL_SERVER_ERROR
          headers: {}
        "501":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: NOT_IMPLEMENTED
          headers: {}
        "503":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
          description: SERVICE_UNAVAILABLE
          headers: {}
      security:
        - oauth:
            - organization:read
      summary: List organization users
      tags:
        - Reports
  /organizations/{organizationId}/roles:
    get:
      description: |
        Retrieves available roles within an organization given its ID
      operationId: getOrganizationRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "3"
                    name: Org User Admin
                  - id: "4"
                    name: Org Security Admin
              schema:
                $ref: '#/components/schemas/OrganizationRolesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve available roles within an organization
      tags:
        - Admin
  /organizations/{organizationId}/solutions:
    get:
      description: |
        Retrieves available solutions within an organization given its ID
      operationId: getOrganizationSolutions
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "60"
                    name: Connected Global Statutory Reporting (with Entity Management)
              schema:
                $ref: '#/components/schemas/OrganizationSolutionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve available solutions within an organization
      tags:
        - Admin
  /organizations/{organizationId}/users:
    get:
      description: Retrieve users in an organization.
      operationId: getOrganizationUsers
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    givenName: Jane
                    familyName: Smith
                    displayName: Jane Smith
                    username: jane.smith@example.com
                    email: jane.smith@example.com
                    status: active
                    created:
                      dateTime: "2019-10-01T15:03:27Z"
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/OrganizationUsersListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve list of an organizations users
      tags:
        - Admin
    post:
      description: |
        Creates a new OrganizationUser resource
      operationId: createOrganizationUser
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationUser'
        description: The properties of the user to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: abc123
                givenName: Jane
                familyName: Smith
                displayName: Jane Smith
                email: jane.smith@example.com
                username: jane.smith@example.com
                status: active
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/OrganizationUser'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Create a new organization User
      tags:
        - Admin
  /organizations/{organizationId}/users/assignment:
    post:
      description: Assign an existing organization user to an organization
      operationId: assignUserToOrganization
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationUserAssignment'
        description: Configuration options for the assignment
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                givenName: Jane
                familyName: Smith
                displayName: Jane Smith
                email: jane.smith@example.com
                username: jane.smith@example.com
                status: active
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/OrganizationUser'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
      summary: Assign existing user to organization
      tags:
        - Admin
  /organizations/{organizationId}/users/{userId}:
    delete:
      description: |
        Delete a user from an organization
      operationId: deleteOrganizationUserById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Delete an organization user
      tags:
        - Admin
    get:
      description: |
        Retrieves an organization user given its ID
      operationId: getOrganizationUserById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                givenName: Jane
                familyName: Smith
                displayName: Jane Smith
                email: jane.smith@example.com
                username: jane.smith@example.com
                status: active
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/OrganizationUser'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a single user in an organization
      tags:
        - Admin
    patch:
      description: |
        Partially update the properties of a [User](ref:admin#user) within an Organization.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/givenName`|`replace`|
        |`/familyName`|`replace`|
        |`/displayName`|`replace`|
        |`/username`|`replace`|
        |`/email`|`replace`|
      operationId: partiallyUpdateOrganizationUserById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /displayName
                    value: Smith, Jane
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: Editable details about the User.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                givenName: Jane
                familyName: Smith
                displayName: Jane Smith
                email: jane.smith@example.com
                username: jane.smith@example.com
                status: active
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/OrganizationUser'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Partially update a single user in an organization
      tags:
        - Admin
  /organizations/{organizationId}/users/{userId}/roles:
    get:
      description: |
        Retrieve a User's roles within an Organization
      operationId: getOrganizationUserRoleList
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "3"
                    name: Org User Admin
                  - id: "4"
                    name: Org Security Admin
              schema:
                $ref: '#/components/schemas/OrganizationRolesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: List Roles assigned to an Organization User
      tags:
        - Admin
  /organizations/{organizationId}/users/{userId}/roles/assignment:
    post:
      description: |
        Assign a User's roles within an Organization. If one assignment fails, all assignments fail.
      operationId: assignOrganizationUserRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationRolesModification'
        description: Editable details about the user's roles.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Assign roles for an Organization User
      tags:
        - Admin
  /organizations/{organizationId}/users/{userId}/roles/revocation:
    post:
      description: |
        Revoke a User's roles within an Organization. If one revocation fails, all revocations fail.
      operationId: revokeOrganizationUserRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/UserId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationRolesModification'
        description: Editable details about the user's roles.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Revoke roles for an Organization User
      tags:
        - Admin
  /organizations/{organizationId}/workspaces:
    get:
      description: Retrieve a list of workspaces in an organization.
      operationId: getWorkspaces
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                    name: Quarterly Planning
                    organization:
                      id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                      name: Workiva Inc.
                    solutions:
                      - id: "60"
                        name: Connected Global Statutory Reporting (with Entity Management)
                    created:
                      dateTime: "2014-12-01T15:03:27Z"
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/WorkspacesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve list of workspaces
      tags:
        - Admin
    post:
      description: |
        Creates a new workspace resource
      operationId: createWorkspace
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workspace'
        description: The properties of the workspace to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                name: Quarterly Planning
                organization:
                  id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                  name: Workiva Inc.
                solutions:
                  - id: "60"
                    name: Connected Global Statutory Reporting (with Entity Management)
                created:
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/Workspace'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Create a new workspace
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}:
    get:
      description: |
        Retrieves a workspace given its ID
      operationId: getWorkspaceById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                name: Quarterly Planning
                organization:
                  id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                  name: Workiva Inc.
                solutions:
                  - id: "60"
                    name: Connected Global Statutory Reporting (with Entity Management)
                created:
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/Workspace'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a single workspace
      tags:
        - Admin
    patch:
      description: |
        Updates the properties of a workspace.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/name`|`replace`|
      operationId: partiallyUpdateWorkspaceById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Legal Entity Reporting
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the workspace.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                name: Quarterly Planning
                organization:
                  id: d6e178fd-4dd5-47e5-9457-68dd64b03655
                  name: Workiva Inc.
                solutions:
                  - id: "60"
                    name: Connected Global Statutory Reporting (with Entity Management)
                created:
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/Workspace'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Update a single workspace
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/activities:
    get:
      description: |
        Returns a paginated list of activities for a given organization and workspace.

        :::{admonition} Attention
        :class: danger
        The Workiva Platform does not guarantee that actions taken in the platform will always result in the same Activity ID. Please rely on the ActivityAction `alias` field to determine if an activity is relevant to your use case.
        :::
      operationId: getOrganizationWorkspaceActivities
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - action:
                      id: com.workiva.administration.workspace_membership.create
                      alias: workspace_membership_create
                      category: Administration
                      name: Workspace membership created
                      deprecated: false
                    id: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFIzYjJjZVFYVmtiWFJNYjJlNk5ETXpiamN4TUdVMU5HRTlOR1V5Tm1JeU5ENGtOREJsWXpuNFpHWXhNVFE=
                    summary: Adam Admin added the user 'John Public' to the workspace 'Organization Management'
                    performer:
                      id: V0ZWc2VyHzE0NT8xNzAyMDA
                      type: com.workiva.iam.principal.user
                      displayName: Adam Admin
                      uniqueName: admin_admin@example.com
                      ipAddress: 192.168.1.1
                    targets:
                      - id: V0ZVc2VyHzY0ODY4NjQ1MzE1NTQ
                        uniqueName: john_public
                        displayName: John Public
                        type: com.workiva.administration.user
                      - id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                        displayName: Organization Management
                        type: com.workiva.administration.workspace
                    activityDateTime: "2021-01-30T14:11:02Z"
                    workspace:
                      id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                      name: Organization Management
                    organization:
                      id: a25bc16f-fb62-4aff-a87e-1cca4b2113c0
                      name: Workiva
                    outcome: success
                    tags:
                      - correlationId:1a2b3c4d5e6f000db88c0009f9f1
                      - eventId:LM4s-wJyTgW4NTbNZi_86v
                  - action:
                      id: com.workiva.administration.workspace.update
                      alias: workspace_update
                      category: Administration
                      name: Workspace updated
                      deprecated: false
                    id: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFJNYjJjZVFYVmthWFJNYjJjNk5ETXpaamN4TUdVMU5HRTBOR1V5Tm1JeU5ERmtOREJsWXpNMlpHWXhNVFE=
                    summary: Adam Admin updated the workspace 'Organization Management'
                    performer:
                      id: V0ZWc2VyHzE0NT8xNzAyMDA
                      type: com.workiva.iam.principal.user
                      displayName: Adam Admin
                      uniqueName: admin_admin@example.com
                      ipAddress: 192.168.1.1
                    targets:
                      - id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                        uniqueName: string
                        displayName: Organization Management
                        type: com.workiva.administration.workspace
                    activityDateTime: "2021-01-30T13:55:01Z"
                    workspace:
                      id: QWNjb3VudB81MzIzMjkwOTM4NzAzODcy
                      name: Organization Management
                    organization:
                      id: a25bc16f-fb62-4aff-a87e-1cca4b2113c0
                      name: Workiva
                    outcome: success
                    tags:
                      - correlationId:2a1b4dee6e9f001dbbbc0007f7f3
                      - eventId:k94s-vJyTaca5HERbNZi_21v
                    attachments:
                      - entityChanges:
                          propertyName: displayName
                          new: Organization Management
                          old: New Workspace
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ActivitiesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - activity:read
      summary: Retrieve a list of activities for a workspace
      tags:
        - Activities
  /organizations/{organizationId}/workspaces/{workspaceId}/groups:
    get:
      description: Retrieve a list of groups in a workspace
      operationId: getWorkspaceGroups
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU0VSUsoxMkE1NSUyNDg3
                    name: All Users
                    created:
                      user:
                        id: V0ZVc2VyHzExNzE7MTMzOTB
                      dateTime: "2014-12-01T15:03:27Z"
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                    memberCount: 153
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/WorkspaceGroupsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve list of groups
      tags:
        - Admin
    post:
      description: |
        Creates a new group resource
      operationId: createWorkspaceGroup
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceGroup'
        description: The properties of the group to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU6VSUsbxMkE1NZUyNDg8
                name: New Group
                created:
                  user:
                    id: V0ZVc2VyHzExNzE7MTMzOTB
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
                memberCount: 0
              schema:
                $ref: '#/components/schemas/WorkspaceGroup'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Create a new group in a workspace
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/groups/{groupId}:
    delete:
      description: |
        Deletes a group given its ID.
      operationId: deleteWorkspaceGroupById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/GroupId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Delete a single group
      tags:
        - Admin
    get:
      description: |
        Retrieves a group given its ID
      operationId: getWorkspaceGroupById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/GroupId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU0VSUsoxMkE1NSUyNDg3
                name: All Users
                created:
                  user:
                    id: V0ZVc2VyHzExNzE7MTMzOTB
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
                memberCount: 153
              schema:
                $ref: '#/components/schemas/WorkspaceGroup'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a single group
      tags:
        - Admin
    patch:
      description: |
        Updates the properties of a group.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/name`|`replace`|
      operationId: partiallyUpdateWorkspaceGroupById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/GroupId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Audit Team
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the group.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU0VSUsoxMkE1NSUyNDg3
                name: All QA Users
                created:
                  user:
                    id: V0ZVc2VyHzExNzE7MTMzOTB
                  dateTime: "2014-12-01T15:03:27Z"
                modified:
                  dateTime: "2023-05-17T02:17:00Z"
                memberCount: 153
              schema:
                $ref: '#/components/schemas/WorkspaceGroup'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Update a single group
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/groups/{groupId}/members:
    get:
      description: Retrieve a list of members in a workspace group
      operationId: getWorkspaceGroupMembers
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/GroupId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: V0ZVc2VyHzExNzE8MTMvOTB
                  - id: V0ZVc2VyHzExNzE6MTMxNTE
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/WorkspaceGroupMembersListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve list of group members
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/groups/{groupId}/members/modification:
    post:
      description: |
        Add and/or remove members from a group. When failures are encountered for particular members, error responses are returned for each.
      operationId: modifyWorkspaceGroupMembers
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/GroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkWorkspaceGroupMembersModification'
        description: Details about the group member modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Modify members in a group
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships:
    get:
      description: Retrieve all memberships of a workspace
      operationId: getWorkspaceMemberships
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: TWVtYmVyc2hpcB81NzY1OTM4MzY0Mjg0OTI4
                    workspace:
                      id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                      name: Quarterly Planning
                    user:
                      id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                      displayName: John Doe
                    created:
                      dateTime: "2019-10-01T15:03:27Z"
                    modified:
                      dateTime: "2021-07-14T08:03:02Z"
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/WorkspaceMembershipsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve list of workspace memberships
      tags:
        - Admin
    post:
      description: |
        Creates a new `WorkspaceMembership` resource
      operationId: createWorkspaceMembership
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  user:
                    id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                  workspace:
                    id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
            schema:
              $ref: '#/components/schemas/WorkspaceMembership'
        description: The properties of the workspace membership to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: TWVtYmVyc2hpcB81NzY1OTM4MzY0Mjg0OTI4
                workspace:
                  id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                  name: Quarterly Planning
                user:
                  id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                  displayName: John Doe
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/WorkspaceMembership'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Create a new workspace membership
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships/membershipCreation:
    post:
      description: |
        Creates a new `WorkspaceMembership` and allows control over notification options.
      operationId: workspaceMembershipCreationWithOptions
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceMembershipCreation'
        description: Details about the workspace membership creation.
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: TWVtYmVyc2hpcB81NzY1OTM4MzY0Mjg0OTI4
                workspace:
                  id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                  name: Quarterly Planning
                user:
                  id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                  displayName: John Doe
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/WorkspaceMembership'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Create a new workspace membership with options
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships/{workspaceMembershipId}:
    delete:
      description: |
        Revoke a user's membership to a `Workspace`.
      operationId: deleteWorkspaceMembershipById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/WorkspaceMembershipId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Delete a workspace membership
      tags:
        - Admin
    get:
      description: |
        Retrieves a workspace membership given its ID
      operationId: getWorkspaceMembershipById
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/WorkspaceMembershipId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: TWVtYmVyc2hpcB81NzY1OTM4MzY0Mjg0OTI4
                user:
                  id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                  displayName: John Doe
                workspace:
                  id: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
                  name: Quarterly Planning
                created:
                  dateTime: "2019-10-01T15:03:27Z"
                modified:
                  dateTime: "2021-07-14T08:03:02Z"
              schema:
                $ref: '#/components/schemas/WorkspaceMembership'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a single workspace membership
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships/{workspaceMembershipId}/roles:
    get:
      description: |
        Retrieves available roles for a workspace membership
      operationId: getOrganizationWorkspaceMembershipRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/WorkspaceMembershipId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "2"
                    name: Workspace Owner
                  - id: "504"
                    name: XBRL
              schema:
                $ref: '#/components/schemas/WorkspaceMembershipRolesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve available roles for a workspace membership
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships/{workspaceMembershipId}/roles/assignment:
    post:
      description: |
        Assign a member's roles within a Workspace. If one assignment fails, all assignments fail.
      operationId: assignWorkspaceMembershipRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/WorkspaceMembershipId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceRolesModification'
        description: Editable details about the workspace member's roles.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Assign roles for a Workspace Membership
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/memberships/{workspaceMembershipId}/roles/revocation:
    post:
      description: |
        Revoke a member's roles within a Workspace. If one revocation fails, all revocations fail.
      operationId: revokeWorkspaceMembershipRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/WorkspaceMembershipId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceRolesModification'
        description: Editable details about the workspace member's roles.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:write
        - contextless-oauth:
            - organization:write
      summary: Revoke roles for a Workspace Membership
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/roles:
    get:
      description: |
        Retrieves available roles within a workspace given an organization and workspace ID
      operationId: getOrganizationWorkspaceRoles
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "2"
                    name: Workspace Owner
                  - id: "504"
                    name: XBRL
              schema:
                $ref: '#/components/schemas/WorkspaceRolesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve available roles within a workspace
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/solutions:
    get:
      description: |
        Retrieves available solutions within a workspace given its ID
      operationId: getWorkspaceSolutions
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - id: "60"
                    name: Connected Global Statutory Reporting (with Entity Management)
              schema:
                $ref: '#/components/schemas/WorkspaceSolutionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve available solutions within a workspace
      tags:
        - Admin
  /organizations/{organizationId}/workspaces/{workspaceId}/solutions/{solutionId}:
    get:
      description: |
        Retrieve a solutions within a workspace given its ID
      operationId: getWorkspaceSolutionsByID
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
        - $ref: '#/components/parameters/WorkspaceId'
        - $ref: '#/components/parameters/SolutionId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: "60"
                name: Connected Global Statutory Reporting (with Entity Management)
              schema:
                $ref: '#/components/schemas/Solution'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - organization:read
        - contextless-oauth:
            - organization:read
      summary: Retrieve a solution by id
      tags:
        - Admin
  /oauth2/token:
    post:
      summary: Retrieve a token
      description: |
        Include the client_id and client_secret in the body of the request as form encoded parameters. For example, the body of the request would be `grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>`. The client can optionally specify a `scope` parameter to limit the scope of the returned [access token](ref:helpers#bearertoken). In turn, the server uses a `scope` response parameter to inform the client of the scope of the actual access token issued. The actual `scope` returned may not match the `scope` requested. Subsequent requests to Workiva APIs are authorized using the bearer token.
      operationId: tokenRequest
      tags:
        - IAM
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                client_id:
                  description: A previously obtained client id.
                  type: string
                client_secret:
                  description: A previously obtained client secret.
                  type: string
                grant_type:
                  description: The grant type for the Bearer token. Must be client_credentials.
                  type: string
                  enum:
                    - client_credentials
                scope:
                  description: The scope of the access request.
                  type: string
              required:
                - grant_type
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BearerToken'
          description: OK
          headers: {}
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IamError'
          description: Bad Request
          headers: {}
        "401":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IamError'
          description: Unauthorized
          headers: {}
  /documents:
    get:
      description: Returns a paginated list of [documents](ref:documents#document).
      operationId: getDocuments
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 625efb2c141f482bb1cdab14ec18715d
                    name: 2019 Year-End Summary
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                    modified:
                      dateTime: "2019-11-21T13:47:33Z"
                    template: false
                  - id: 233eae2b142f461bb2cfbb49ee58825b
                    name: 2020 Projections
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                    modified:
                      dateTime: "2019-11-21T13:47:33Z"
                    template: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/DocumentsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of documents
      tags:
        - Documents
  /documents/{documentId}:
    get:
      description: |
        Retrieves a [document](ref:documents#document) given its ID.
      operationId: getDocumentById
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                customFieldGroups: []
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                id: 625efb2c141f482bb1cdab14ec18715d
                linksStatus:
                  allLinks: unpublished
                  ownLinks: published
                lock: null
                modified:
                  dateTime: "2019-11-21T13:47:33Z"
                name: 2019 Year-End Summary
                properties:
                  backgroundColor: null
                  footnotes:
                    style: numeric
                    sequenceStarts: 1
                    restartsAt: continuous
                    prefix: ""
                    suffix: ""
                    line:
                      enabled: true
                      weight: 1
                      length: 180
                      style: single
                      color:
                        red: 0
                        green: 0
                        blue: 0
                        alpha: 100
                  lineNumbersType: none
                  pageBorder:
                    color:
                      blue: 0
                      green: 0
                      red: 0
                    enabled: false
                    margins:
                      bottom: 24
                      left: 24
                      right: 24
                      top: 24
                    weight: 0.5
                  pageLayout:
                    pageDimensions:
                      height: 792
                      width: 612
                  pageMargins:
                    bottom: 72
                    left: 72
                    right: 72
                    top: 72
                    type: normal
                  printBleed: 0
                  tableFormats:
                    resizeRowsToFit: true
                  trackChanges: false
                  type: 10-Q
                sectionCustomFieldGroups: []
                template: false
              schema:
                $ref: '#/components/schemas/Document'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single document
      tags:
        - Documents
    patch:
      description: |
        Updates the properties of a [document](ref:documents#document).

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running job polling,
        see [Operations endpoint](ref:getoperationbyid).

        ### Options

        | Path                                            | PATCH Operations Supported         | Value Type                                                                |
        |-------------------------------------------------|------------------------------------|---------------------------------------------------------------------------|
        | `/customFields/<custom field id>`               | `add`, `remove`, `replace`, `test` | `boolean`, `string`, 64-bit `integer`, 64-bit `number`                    |
        | `/customFieldGroups`                            | `add`, `remove`, `replace`, `test` | Array of custom field group ids                                           |
        | `/sectionCustomFieldGroups`                     | `add`, `remove`, `replace`, `test` | Array of custom field group ids                                           |
        | `/lock`                                         | `replace`                          | `DocumentLockType`, `null`                                                |
        | `/properties/pageLayout/pageDimensions/width`   | `replace`                          | `number`                                                                  |
        | `/properties/pageLayout/pageDimensions/height`  | `replace`                          | `number`                                                                  |
        | `/properties/pageMargins/type`                  | `replace`                          | `PageMarginsType`                                                         |
        | `/properties/pageMargins/top`                   | `replace`                          | `number`                                                                  |
        | `/properties/pageMargins/bottom`                | `replace`                          | `number`                                                                  |
        | `/properties/pageMargins/right`                 | `replace`                          | `number`                                                                  |
        | `/properties/pageMargins/left`                  | `replace`                          | `number`                                                                  |
        | `/properties/backgroundColor`                   | `replace`                          | `Color`, `null`                                                           |
        | `/properties/pageBorder/enabled`                | `replace`                          | `boolean`                                                                 |
        | `/properties/pageBorder/color`                  | `replace`                          | `Color`                                                                   |
        | `/properties/pageBorder/weight`                 | `replace`                          | `number`                                                                  |
        | `/properties/pageBorder/margins/top`            | `replace`                          | `number`                                                                  |
        | `/properties/pageBorder/margins/bottom`         | `replace`                          | `number`                                                                  |
        | `/properties/pageBorder/margins/left`           | `replace`                          | `number`                                                                  |
        | `/properties/pageBorder/margins/right`          | `replace`                          | `number`                                                                  |
        | `/properties/lineNumbersType`                   | `replace`                          | `LineNumbersType`                                                         |
        | `/properties/printBleed`                        | `replace`                          | `number`                                                                  |
        | `/properties/tableFormats/resizeRowsToFit`      | `replace`                          | `boolean`                                                                 |
        | `/properties/footnotes/style`                   | `replace`                          | `FootnoteStyle`                                                           |
        | `/properties/footnotes/sequenceStarts`          | `replace`                          | `integer`                                                                 |
        | `/properties/footnotes/restartsAt`              | `replace`                          | `FootnoteRestartsAt`                                                      |
        | `/properties/footnotes/prefix`                  | `replace`                          | `string`                                                                  |
        | `/properties/footnotes/suffix`                  | `replace`                          | `string`                                                                  |
        | `/properties/footnotes/line/enabled`            | `replace`                          | `boolean`                                                                 |
        | `/properties/footnotes/line/weight`             | `replace`                          | `number`                                                                  |
        | `/properties/footnotes/line/length`             | `replace`                          | `number`                                                                  |
        | `/properties/footnotes/line/style`              | `replace`                          | `FootnoteLineStyle`                                                       |
        | `/properties/footnotes/line/color`              | `replace`                          | `RGBAColor`                                                               |
        | `/properties/trackChanges`                      | `replace`                          | `boolean`                                                                 |


        ### Examples

        #### Add a custom field value

        ```json
        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value

        ```json
        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```

        #### Verifying customFieldGroup is empty before replacing the list

        ```json
        [
          {
            "op": "test",
            "path": "/customFieldGroups",
            "value": []
          },
          {
            "op": "replace",
            "path": "/customFieldGroups",
            "value": ["gsr.reporting"]
          }
        ]
        ```

        #### Adding a customFieldGroup to the end of a list

        ```json
        [
          {
            "op": "add",
            "path": "/customFieldGroups/-",
            "value": "gsr.reporting"
          }
        ]
        ```
      operationId: partiallyUpdateDocumentById
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /customFields/com.workiva.gsr.legal_entity
                    value: US Entity
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the document.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single document
      tags:
        - Documents
  /documents/{documentId}/export:
    post:
      description: |
        Asynchronously exports a [document](ref:documents#document) as .PDF or .DOCX., or .XHTML. Options are specified using a [DocumentExport](ref:documents#documentexport) object.
        When exporting XHTML that you plan to edit or modify, use the `editableXhtml` option. Otherwise, the export retains fidelity so it visually matches the document as it appears in the browser.
        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: documentExport
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentExport'
        description: Details about the document export.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Initiate a document export
      tags:
        - Documents
  /documents/{documentId}/filters/reapplication:
    post:
      description: |
        Performs a [`DocumentFiltersReapplication`](ref:content#documentfiltersreapplication) on the specified document.
        This endpoint is used to refresh the document's filters based on the latest state or configuration changes.
        The filters are reapplied in the context of the document's current data state.

        This is a long-running operation. Responses include a `Location` header, which indicates where to poll for results.
        For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: documentFiltersReapplication
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentFiltersReapplication'
        description: The filter reapplication request to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Reapply filters to the document
      tags:
        - Documents
  /documents/{documentId}/links/publication:
    post:
      description: |
        Publishes the links in a document - either all (as document owner) or only one's own. Content at the latest document revision will be used for publish.
        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: documentLinksPublication
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinksPublicationOptions'
        description: Details about the link publication.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate publication of links in a document
      tags:
        - Documents
  /documents/{documentId}/milestones:
    get:
      description: Returns [MilestoneListResult](ref:milestones#milestonelistresult).
      operationId: getDocumentMilestones
      parameters:
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/DocumentId'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MilestoneListResult'
              example:
                data:
                  - id: bWlsZXN0b25lLXYxOjQzODU0ZmU0NmU2MDQ4M2E4MTU0ZjdmMGI3MWI5YjllOjJjNjQzOGFiNDU1NTNkZTY
                    resource:
                      type: document
                      document:
                        document: 16b1f641613847469b7aa1ca29af40b1
                        revision: 2c6438ab45553de6
                    title: Start of Q1
                    remarks: ""
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                '@nextLink': <opaque_url>
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of milestones for a document
      tags:
        - Documents
  /documents/{documentId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for a given document
      operationId: getDocumentPermissions
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a document
      tags:
        - Documents
  /documents/{documentId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a document. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: documentPermissionsModification
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the document permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a document
      tags:
        - Documents
  /documents/{documentId}/sections:
    get:
      description: |
        Returns a list of [sections](ref:documents#section).
      operationId: getSections
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: a8b3adb687644b27fafcb3a9875f0f0d_13
                    revision: 5B3C4D7B
                    name: Section
                    parent: null
                    index: 0
                    children:
                      - id: a8b3adb687644b27fafcb3a9875f0f0d_34
                        name: Subsection
                    nonPrinting: false
                    body:
                      richText: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
                      revision: 2c6438ab454db9bc
                    headers:
                      odd:
                        richText: WA15fXV99dpoorkriHFJL6dPHE11C99clxdpoorkriHFJL6dPHE11C99cl1dzfqg99I8GEl9BEmZubioYbgg
                        revision: 2c6438ab454db9bc
                      even: null
                      first: null
                      last: null
                    footers:
                      odd:
                        richText: WA1BRU1FTqIQlnLaJGpz0ev9BK2V6zfFJTqIQlnLaJGpz0ev9BK2V6zfFNTf11ymDudGJfgVT99BTOUAbA
                        revision: 2c6438ab454db9bc
                      even: null
                      first: null
                      last: null
                    properties:
                      pageDimensions: null
                      margins:
                        top: null
                        bottom: null
                        right: null
                        left: null
                      pageBreakBefore: false
                      exhibit: false
                      edgarKeepTogether: false
                      trackChanges: false
                      pageNumber:
                        reset: false
                        startAt: 1
                      background: null
                      restartFootnoteNumbering: false
                      footnotes:
                        style: numeric
                        sequenceStarts: 1
                        restartsAt: continuous
                        prefix: ""
                        suffix: ""
                        line:
                          enabled: true
                          weight: 1
                          length: 180
                          style: single
                          color:
                            red: 0
                            green: 0
                            blue: 0
                            alpha: 100
                      header:
                        alternatingPage: false
                        differentFirstPage: false
                        differentLastPage: false
                        margin: null
                        matchSectionMargins: true
                        sameAsPrevious: false
                        positionFromTop: null
                      footer:
                        alternatingPage: false
                        differentFirstPage: false
                        differentLastPage: false
                        margin: null
                        matchSectionMargins: true
                        sameAsPrevious: false
                        positionFromBottom: null
                    lock: null
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/SectionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of sections
      tags:
        - Documents
    post:
      description: |
        Creates a new [section](ref:documents#section) in a [document](ref:documents#document), given its properties. By default, the new section appears at the top-most position.
      operationId: createSection
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  name: Risk Factor
                  parent:
                    id: a8b3adb687644b27fafcb3a9875f0f0d_18
            schema:
              $ref: '#/components/schemas/Section'
        description: The properties of the section to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: b9b3ddb587744a27aafda3c9865f1f0a_1
                name: January
                parent: null
                index: 0
                children: []
                nonPrinting: false
              schema:
                $ref: '#/components/schemas/Section'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new section in a document
      tags:
        - Documents
  /documents/{documentId}/sections/{sectionId}:
    delete:
      description: |
        Deletes a [section](ref:documents#section) given its ID.
      operationId: deleteSectionById
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single section
      tags:
        - Documents
    get:
      description: |
        Retrieves a [section](ref:documents#section) given its ID.
      operationId: getSectionById
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
        - $ref: '#/components/parameters/Expand'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: a8b3adb687644b27fafcb3a9875f0f0d_34
                revision: 5B3C4D7B
                name: Subsection
                parent:
                  id: a8b3adb687644b27fafcb3a9875f0f0d_13
                  name: Section
                index: 0
                children: []
                nonPrinting: false
                body:
                  richText: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
                  revision: 2c6438ab454db9bc
                headers:
                  odd:
                    richText: WA15fXV99dpoorkriHFJL6dPHE11C99clxdpoorkriHFJL6dPHE11C99cl1dzfqg99I8GEl9BEmZubioYbgg
                    revision: 2c6438ab454db9bc
                  even: null
                  first: null
                  last: null
                footers:
                  odd:
                    richText: WA1BRU1FTqIQlnLaJGpz0ev9BK2V6zfFJTqIQlnLaJGpz0ev9BK2V6zfFNTf11ymDudGJfgVT99BTOUAbA
                    revision: 2c6438ab454db9bc
                  even: null
                  first: null
                  last: null
                properties:
                  pageDimensions: null
                  margins:
                    top: 90
                    bottom: 81
                    right: 99
                    left: 103.5
                  pageBreakBefore: false
                  exhibit: true
                  edgarKeepTogether: true
                  trackChanges: false
                  pageNumber:
                    reset: true
                    startAt: 2
                  background:
                    color:
                      red: 0
                      green: 0
                      blue: 0
                    image: null
                  restartFootnoteNumbering: false
                  footnotes:
                    style: numeric
                    sequenceStarts: 1
                    restartsAt: continuous
                    prefix: ""
                    suffix: ""
                    line:
                      enabled: true
                      weight: 1
                      length: 180
                      style: single
                      color:
                        red: 0
                        green: 0
                        blue: 0
                        alpha: 100
                  header:
                    alternatingPage: false
                    differentFirstPage: false
                    differentLastPage: false
                    margin: null
                    matchSectionMargins: true
                    sameAsPrevious: false
                    positionFromTop: null
                  footer:
                    alternatingPage: false
                    differentFirstPage: false
                    differentLastPage: false
                    margin:
                      right: 85.5
                      left: 85.5
                    matchSectionMargins: true
                    sameAsPrevious: false
                    positionFromBottom: 27
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                lock: null
              schema:
                $ref: '#/components/schemas/Section'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single section
      tags:
        - Documents
    patch:
      description: |
        Updates the properties of a [section](ref:documents#section).

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running job polling,
        see [Operations endpoint](ref:getoperationbyid).

        ### Options

        | Path                                     | PATCH Operations Supported         | Value Type                                                                |
        |------------------------------------------|------------------------------------|---------------------------------------------------------------------------|
        | `/name`                                  | `replace`                          | `string`                                                                  |
        | `/parent`                                | `replace`                          | `Section`, `null`                                                         |
        | `/parent/id`                             | `replace`                          | `string`                                                                  |
        | `/index`                                 | `replace`                          | `integer`                                                                 |
        | `/nonPrinting`                           | `replace`                          | `boolean`                                                                 |
        | `/customFields`                          | `add`, `remove`, `replace`, `test` | map of `string` to `boolean`, `string`, `integer`, `number`                                  |
        | `/customFields/<customFieldId>`          | `add`, `remove`, `replace`, `test` | `boolean`, `string`, `integer`, `number`                                  |
        | `/lock`                                  | `replace`                          | `SectionLockType`, `null`                                                 |
        | `/properties/margins/top`                | `replace`                          | `number`                                                                  |
        | `/properties/margins/bottom`             | `replace`                          | `number`                                                                  |
        | `/properties/margins/right`              | `replace`                          | `number`                                                                  |
        | `/properties/margins/left`               | `replace`                          | `number`                                                                  |
        | `/properties/pageBreakBefore`            | `replace`                          | `boolean`                                                                 |
        | `/properties/exhibit`                    | `replace`                          | `boolean`, `null`                                                         |
        | `/properties/edgarKeepTogether`          | `replace`                          | `boolean`, `null`                                                         |
        | `/properties/pageNumber/reset`           | `replace`                          | `boolean`                                                                 |
        | `/properties/pageNumber/startAt`         | `replace`                          | `integer`                                                                 |
        | `/properties/background/color`           | `replace`                          | `Color`, `null`                                                           |
        | `/properties/background/image`           | `replace`                          | `string`, `null`                                                          |
        | `/properties/restartFootnoteNumbering`   | `replace`                          | `boolean`                                                                 |
        | `/properties/footnotes/style`            | `replace`                          | `FootnoteStyle`, `null`                                                   |
        | `/properties/footnotes/sequenceStarts`   | `replace`                          | `integer`, `null`                                                         |
        | `/properties/footnotes/restartsAt`       | `replace`                          | `FootnoteRestartsAt`, `null`                                              |
        | `/properties/footnotes/prefix`           | `replace`                          | `string`, `null`                                                          |
        | `/properties/footnotes/suffix`           | `replace`                          | `string`, `null`                                                          |
        | `/properties/footnotes/line/enabled`     | `replace`                          | `boolean`, `null`                                                         |
        | `/properties/footnotes/line/weight`      | `replace`                          | `number`, `null`                                                          |
        | `/properties/footnotes/line/length`      | `replace`                          | `number`, `null`                                                          |
        | `/properties/footnotes/line/style`       | `replace`                          | `FootnoteLineStyle`, `null`                                               |
        | `/properties/footnotes/line/color`       | `replace`                          | `RGBAColor`, `null`                                                       |
        | `/properties/header/alternatingPage`     | `replace`                          | `boolean`                                                                 |
        | `/properties/header/differentFirstPage`  | `replace`                          | `boolean`                                                                 |
        | `/properties/header/differentLastPage`   | `replace`                          | `boolean`                                                                 |
        | `/properties/header/margin/right`        | `replace`                          | `number`, `null`                                                          |
        | `/properties/header/margin/left`         | `replace`                          | `number`, `null`                                                          |
        | `/properties/header/matchSectionMargins` | `replace`                          | `boolean`                                                                 |
        | `/properties/header/positionFromTop`     | `replace`                          | `number`, `null`                                                          |
        | `/properties/header/sameAsPrevious`      | `replace`                          | `boolean`                                                                 |
        | `/properties/footer/alternatingPage`     | `replace`                          | `boolean`                                                                 |
        | `/properties/footer/differentFirstPage`  | `replace`                          | `boolean`                                                                 |
        | `/properties/footer/differentLastPage`   | `replace`                          | `boolean`                                                                 |
        | `/properties/footer/margin/right`        | `replace`                          | `number`, `null`                                                          |
        | `/properties/footer/margin/left`         | `replace`                          | `number`, `null`                                                          |
        | `/properties/footer/matchSectionMargins` | `replace`                          | `boolean`                                                                 |
        | `/properties/footer/positionFromBottom`  | `replace`                          | `number`, `null`                                                          |
        | `/properties/footer/sameAsPrevious`      | `replace`                          | `boolean`                                                                 |
        | `/properties/trackChanges`               | `replace`                          | `boolean`                                                                 |

        ### Examples

        #### Update the name of a section

        ```json
        [
          {
            "op": "replace",
            "path": "/name",
            "value": "Introduction"
          }
        ]
        ```

        #### Update the parent of a section (preserving its index)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "b9b3ddb587744a27aafda3c9865f1f0a_1"
            }
          }
        ]
        ```

        #### Update the parent of a section (making it the first child)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "b9b3ddb587744a27aafda3c9865f1f0a_1"
            }
          },
          {
            "op": "replace",
            "path": "/index",
            "value": 0
          }
        ]
        ```

        #### Add a custom field value
        ```json

        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value
        ```json

        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```
      operationId: partiallyUpdateSectionById
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: My Section
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the section.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single section
      tags:
        - Documents
  /documents/{documentId}/sections/{sectionId}/copy:
    post:
      description: |-
        Asynchronously copies a [section](ref:documents#section) given details about the copy's destination within the same or another document. Options are specified using a [SectionCopy](ref:documents#sectioncopy) object.

        Copies only the section's content — not any labels, comments, tasks, or formatting from a style guide. Unless otherwise specified, the copy appears at the top level of its destination document, with an index of 0, and with the same name as the original section.
      operationId: copySection
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SectionCopy'
        description: A SectionCopy object
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Copy section
      tags:
        - Documents
  /documents/{documentId}/sections/edit:
    post:
      description: |
        Updates the properties of a collection of [sections](ref:documents#section) in a document using [SectionsEdits](ref:documents#sectionsedit) request. This is a long running operation.
        Responses include a `Location` header, which indicates where to poll for results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the update completes, its status will be `completed`.
      operationId: editSections
      parameters:
        - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  data:
                    - setNonPrinting:
                        nonPrinting: true
                        selection:
                          - 9fdff0887cb5425292dfb1fdd759753a_35
                          - 9fdff0887cb5425292dfb1fdd759753a_50
                      type: setNonPrinting
            schema:
              $ref: '#/components/schemas/SectionsEdits'
        description: The edits for one or more sections in a document
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate sections edits
      tags:
        - Documents
  /documents/{documentId}/sections/{sectionId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for the given section in a document
      operationId: getSectionPermissions
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a section in a document
      tags:
        - Documents
  /documents/{documentId}/sections/{sectionId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a section. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: sectionPermissionsModification
      parameters:
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/SectionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the section permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a given section of a document
      tags:
        - Documents
  /documents/{documentId}/tables:
    get:
      description: Returns the collection of tables within a document.
      operationId: getDocumentTableCollection
      parameters:
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/DocumentId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentTableCollectionResult'
              example:
                data:
                  - id: TmVsc29uIHdhcyBoZXJl
                    name: Sheet 1
                    index: 0
                    parent:
                      type: richText
                      richText: dG90YWwgcmFuZG9tbmVzcw
                  - id: YmFzZTY0IGlzIGdyZWF0
                    name: Sheet 2
                    index: 1
                    parent:
                      type: drawing
                      drawing: ZHJhd2luZ0lkMTIzNDU2Nzg5
                revision: 24601abc
                '@nextLink': <opaque_url>
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a collection of tables from a document
      tags:
        - Documents
  /files:
    get:
      description: Returns a paginated list of [files](ref:files#file).
      operationId: getFiles
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - container: ""
                    created:
                      dateTime: "2018-10-21T15:03:27Z"
                    name: 2019 Supporting Documents
                    id: V0ZFYXRhSW50aXR5IkZvbGRlcjoxSkFGOTZGRjiENDk1Qzk4RjQ4OTgzN0M6ODdDNjZENi
                    kind: Folder
                    modified:
                      dateTime: "2018-10-21T15:03:27Z"
                    type: Folder
                    template: false
                  - container: ""
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                    name: 2019 Year-End Summary
                    id: 124efa2a142f472ba1ceab34ed18915f
                    kind: Document
                    modified:
                      dateTime: "2019-10-29T13:15:27Z"
                    type: Document
                    template: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/FilesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of files
      tags:
        - Files
    post:
      description: |
        Creates a new [file](ref:files#file). Requires name and kind. kind
        must be one of `Document`, `Spreadsheet`, `Presentation`, or `Folder` and
        is case-sensitive. Use the `container` attribute to specify the container that houses the file, such
        as a folder. If empty, the root folder is the container. Files are created
        asynchronously and may not immediately be available on a subsequent `GET`.

        ### Examples
        #### Create a new document at the root of the file system
        ```json
        {
          "name": "2019 Year-End Summary",
          "kind": "Document"
        }
        ```

        #### Create a folder within an existing folder
        ```json
        {
          "name": "2019 Year-End Documents",
          "kind": "Folder",
          "container": "V0ZFYXRhSW50aXR5IkZvbGRlcjoxSkFGOTZGRjiENDk1Qzk4RjQ4OTgzN0M6ODdDNjZENi"
        }
        ```
      operationId: createFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/File'
        description: The properties of the file to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                container: ""
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                name: 2019 Year-End Summary
                id: 124efa2a142f472ba1ceab34ed18915f
                kind: Document
                modified:
                  dateTime: "2019-10-28T15:03:27Z"
                type: Document
                template: false
              schema:
                $ref: '#/components/schemas/File'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new file
      tags:
        - Files
  /files/import:
    post:
      description: |
        Import a file for conversion to a Workiva equivalent. This is a long running operation.
        Response includes an `uploadUrl` which indicates where to upload the file for import. To upload the file, perform a PUT against the `uploadUrl` with the same authentication credentials and flow as the import request. For more details, see [Authentication documentation](ref:authentication).
      operationId: importFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileImport'
        description: The details of the file import
        required: true
      responses:
        "202":
          content:
            application/json:
              example:
                uploadUrl: <opaque_url>
              schema:
                $ref: '#/components/schemas/FileImportResponse'
          description: Accepted
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a file import
      tags:
        - Files
  /files/trash:
    get:
      description: Returns a paginated list of files that have been trashed.
      operationId: getTrashedFiles
      parameters:
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - container: ""
                    created:
                      dateTime: "2018-10-21T15:03:27Z"
                    name: Folder to be deleted
                    id: V0ZFYXRhSW50aXR5IkZvbGRlcjoxSkFGOTZGRjiENDk1Qzk4RjQ4OTgzN0M6ODdDNjZENi
                    kind: Folder
                    modified:
                      dateTime: "2018-10-21T15:03:27Z"
                    type: Folder
                    template: false
                  - container: ""
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                    name: Document to be deleted
                    id: 124efa2a142f472ba1ceab34ed18915f
                    kind: Document
                    modified:
                      dateTime: "2019-10-29T13:15:27Z"
                    type: Document
                    template: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/FilesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of trashed files
      tags:
        - Files
  /files/{fileId}:
    get:
      description: |
        Retrieves a [file](ref:files#file) given its ID
      operationId: getFileById
      parameters:
        - $ref: '#/components/parameters/FileId'
      responses:
        "200":
          content:
            application/json:
              example:
                container: ""
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                name: 2019 Year-End Summary
                id: 124efa2a142f472ba1ceab34ed18915f
                kind: Document
                modified:
                  dateTime: "2019-10-28T15:03:27Z"
                type: Document
                template: false
              schema:
                $ref: '#/components/schemas/File'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single file
      tags:
        - Files
    patch:
      description: |
        Partially updates the properties of a [file](ref:files#file). Only one property may be updated at a time.
        Updates are applied asynchronously and may not immediately be reflected on a subsequent `GET`.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/container`|`replace`|
        |`/name`|`replace`|
      operationId: partiallyUpdateFileById
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /container
                    value: ""
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the file. Currently only one operation may be applied at a time.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                container: ""
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                name: 1989 Year-End Summary
                id: 124efa2a142f472ba1ceab34ed18915f
                kind: Document
                modified:
                  dateTime: "2020-04-01T11:31:06Z"
                type: Document
                template: false
              schema:
                $ref: '#/components/schemas/File'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single file
      tags:
        - Files
  /files/{fileId}/copy:
    post:
      description: |
        Copy a file to a new location. This is a long running operation. Responses include a `Location` header, which indicates where to poll for copy results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
        Once the operation is completed, the `resourceUrl` field will be populated with a link to the   [Retrieve copy file results for a single operation endpoint](ref:getcopyfileresults)  to see the results of the File Copy Request.
      operationId: copyFile
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileCopy'
        description: The details of the file copy
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a file copy
      tags:
        - Files
  /files/{fileId}/export:
    post:
      description: |
        Export a file by its unique ID. This is a long running operation. Responses include a `Location` header, which indicates where to poll for export results. For  more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
        When the export process is complete, the status of the Operation  will change to completed. The `resourceUrl` field of the operation will contain the download url of the exported file. To download the file, perform a GET against  the `resourceUrl` with the same authentication credentials and flow as the export request.  For more details, see Authentication documentation.
        For more on Document, Spreadsheet, and Presentation export options, see the following: [Documents](https://developers.workiva.com/2026-01-01/platform-documentexport), [Spreadsheets](https://developers.workiva.com/2026-01-01/platform-spreadsheetexport), and [Presentations](https://developers.workiva.com/2026-01-01/platform-presentationexport).
      operationId: exportFileById
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileExportById'
        description: The details of the file export.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate a file export by ID
      tags:
        - Files
  /files/{fileId}/restore:
    post:
      description: Restores a file given its ID. If the file being restored is a Folder, its contents will be recursively restored.
      operationId: restoreFileById
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileRestoreOptions'
        description: Request body for File restore endpoint
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate restoration of a single file
      tags:
        - Files
  /files/{fileId}/trash:
    post:
      description: Trashes a file given its ID. If the file being trashed is a Folder, its contents will be recursively trashed.
      operationId: trashFileById
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileTrashOptions'
        description: The request body for the file trash endpoint
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate trash of a single file
      tags:
        - Files
  /files/{fileId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for a given file
      operationId: getFilePermissions
      parameters:
        - $ref: '#/components/parameters/FileId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a file
      tags:
        - Files
  /files/{fileId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a file. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: filePermissionsModification
      parameters:
        - $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the file permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a file
      tags:
        - Files
  /graph/edits:
    post:
      description: |-
        Creates new record [edits](ref:graph#edit) given their properties. Each edit in the supplied array requires at least an `operation` and `targetId`. Up to 1000 edits may be processed per request.
        If there are invalid edits, the error details will include a list of errors encountered. Each message will include the zero-based position of the failed edit in the provided list of edits.
      operationId: createEdits
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Edits'
        description: An array of edits
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                recordIdMap:
                  myTempId123: 3f9d4e19-6281-4efb-8821-709d299809e7
              schema:
                $ref: '#/components/schemas/EditsResult'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Create new record edits
      tags:
        - Graph
  /graph/records:
    get:
      description: Returns a list of [records](ref:graph#record) matching the provided filters. At least one filter is required. If no filter is provided an error will be returned.
      operationId: getRecords
      parameters:
        - $ref: '#/components/parameters/Expand'
        - $ref: '#/components/parameters/Filter'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 931c768b-c3dd-4392-b56e-06d7d6ff88a6
                    properties:
                      dateReported:
                        datatype: date-time
                        value: "2019-12-11T00:00:00Z"
                      email:
                        datatype: string
                        value: jane.doe@example.com
                      hyperlink:
                        datatype: map
                        value:
                          text: Example Website
                          url: www.example.com
                    type: Issue
              schema:
                $ref: '#/components/schemas/RecordsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of records
      tags:
        - Graph
  /graph/records/{recordId}:
    get:
      description: Retrieves a [record](ref:graph#record) given its ID. The unique identifier is typically a UUID, but it may be a different unique string in some cases.
      operationId: getRecordById
      parameters:
        - $ref: '#/components/parameters/RecordId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 931c768b-c3dd-4392-b56e-06d7d6ff88a6
                properties:
                  dateReported:
                    datatype: date-time
                    value: "2019-12-11T00:00:00Z"
                  email:
                    datatype: string
                    value: jane.doe@example.com
                  hyperlink:
                    datatype: map
                    value:
                      text: Example Website
                      url: www.example.com
                type: Issue
              schema:
                $ref: '#/components/schemas/Record'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single record
      tags:
        - Graph
  /graph/reports/{reportId}/export:
    post:
      description: |
        Asynchronously exports a graph report (only CSV available at this time).
        This endpoint will execute the query of a saved report and export to the specified format (only CSV available at this time). The ID of the [record](ref:graph#record) containing the saved report is used for the `reportID` path element. Reports are stored in records of type `DataSource` and `ReportView`. The list of applicable records can be retrieved from the `/records` endpoint such as `GET /records?$filter=type eq DataSource or type eq ReportView`. A filter on the `title` property should be used to return a particular report.
        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: graphReportExport
      parameters:
        - $ref: '#/components/parameters/ReportId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphReportExport'
        description: Details about the report export
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a graph report export
      tags:
        - Graph
  /graph/types:
    get:
      description: |
        The Types endpoint is used to discover what [types](ref:graph#type) of records exist and their attributes. This endpoint lets you know what to expect from the Records endpoints.
      operationId: getTypes
      parameters:
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: User
                    properties:
                      - userName
                      - firstName
                      - lastName
                      - email
              schema:
                $ref: '#/components/schemas/TypesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of types
      tags:
        - Graph
  /graph/types/{typeId}:
    get:
      description: |
        Returns a record [type](ref:graph#type) given its ID (name)
      operationId: getTypeById
      parameters:
        - $ref: '#/components/parameters/TypeId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: User
                properties:
                  - userName
                  - firstName
                  - lastName
                  - email
              schema:
                $ref: '#/components/schemas/Type'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single type
      tags:
        - Graph
  /operations/{operationId}:
    get:
      description: |
        Retrieves an [operation](ref:operations#operation) given its ID. <br /><br /> Note: This endpoint is rate-limited. You may experience rates as low as 1 request per second. When polling for updates, examine the `Retry-After` header and retry after that many seconds.
      operationId: getOperationById
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 129g274495354cf18edb6b3ea3d023b2
                status: started
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                updated:
                  dateTime: "2019-10-28T15:04:20Z"
                originalRequest: 7bee78f7-417b-42bc-ace9-e588c65d19bf
              schema:
                $ref: '#/components/schemas/Operation'
          description: OK
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth: []
      summary: Retrieve a single operation
      tags:
        - Operations
  /operations/{operationId}/copyFileResults:
    get:
      description: |
        Returns a [`CopyFileListResult`](ref:operations#copyfilelistresult) describing the results of a file copy operation. <br /><br /> Note: This endpoint is rate-limited. You may experience rates as low as 1 request per second. When polling for updates, examine the `Retry-After` header and retry after that many seconds.
      operationId: getCopyFileResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 124efa2a142f472ba1ceab34ed18915f
                    container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
                    kind: Document
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/CopyFileListResult'
          description: OK
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve copy file results for a single operation
      tags:
        - Operations
  /operations/{operationId}/destinationLinkSourceConversionResults:
    get:
      description: |
        Returns the results for a destination link source conversion.
        This will include the new source anchor's ID and the destination link ID for the old source (if any).
      operationId: getDestinationLinkSourceConversionResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - anchor: WA46Pio9ANITRWdzvNwY4F50bj3yHRZoyHrY2N1L7rNyQywqAva9B4dgqzIvIqHAg4ODg6e
                    type: anchor
                  - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
                    type: destinationLink
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/DestinationLinkSourceConversionResultListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieves the results from a destination link source conversion.
      tags:
        - Operations
  /operations/{operationId}/imageUploadResults:
    get:
      description: Returns a [`ImageUploadResultCollection`](ref:operations#imageuploadresultcollection) describing the results of a image upload.
      operationId: getImageUploadCreationResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: image
                    image: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ImageUploadResultCollection'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a image upload
      tags:
        - Operations
  /operations/{operationId}/importFileResults:
    get:
      description: |
        Returns a [`ImportFileListResult`](ref:operations#importfilelistresult) describing the results of a file import operation. <br /><br /> Note: This endpoint is rate-limited. You may experience rates as low as 1 request per second. When polling for updates, examine the `Retry-After` header and retry after that many seconds.
      operationId: getImportFileResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 124efa2a142f472ba1ceab34ed18915f
                    container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
                    kind: Document
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ImportFileListResult'
          description: OK
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve import file results for a single operation
      tags:
        - Operations
  /operations/{operationId}/metricValuesBatchUpsertionResults:
    get:
      description: |
        Returns a [`MetricValuesListResult`](ref:sustainability#metricvalueslistresult) describing the results of a metric values batch upsertion operation. <br /><br /> Note: This endpoint is rate-limited. You may experience rates as low as 1 request per second. When polling for updates, examine the `Retry-After` header and retry after that many seconds.
      operationId: getBatchUpsertionMetricValuesResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 2c496b2d-aee4-42a0-b8e2-70cb3268ce41
                    reportingPeriod:
                      year: 2024
                      start: 1
                      end: 12
                    coordinates: {}
                    value: ""
                    notes: ""
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/MetricValuesListResult'
          description: OK
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve the results of a metric values batch upsertion operation
      tags:
        - Operations
  /operations/{operationId}/milestoneCreationResults:
    get:
      operationId: getMilestoneCreationResults
      summary: Retrieve results for a milestone creation
      description: Returns a [`MilestoneCreationListResult`](ref:operations#milestonecreationlistresult) describing the results of a milestone creation.
      tags:
        - Operations
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      security:
        - oauth:
            - file:read
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MilestoneCreationListResult'
              example:
                data:
                  - type: milestone
                    milestone: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "500":
          $ref: '#/components/responses/InternalServerError'
  /operations/{operationId}/patchDocumentResults:
    get:
      description: Returns a [`PatchDocumentListResult`](ref:operations#patchdocumentlistresult) describing the results of a patch document.
      operationId: getPatchDocumentResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchDocumentListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch document
      tags:
        - Operations
  /operations/{operationId}/patchPresentationResults:
    get:
      description: Returns a [`PatchPresentationListResult`](ref:operations#patchpresentationlistresult) describing the results of a patch presentation.
      operationId: getPatchPresentationResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchPresentationListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch presentation
      tags:
        - Operations
  /operations/{operationId}/patchSectionResults:
    get:
      description: Returns a [`PatchSectionListResult`](ref:operations#patchsectionlistresult) describing the results of a patch section.
      operationId: getPatchSectionResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchSectionListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch Section
      tags:
        - Operations
  /operations/{operationId}/patchSheetResults:
    get:
      description: Returns a [`PatchSheetListResult`](ref:operations#patchsheetlistresult) describing the results of a patch sheet.
      operationId: getPatchSheetResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchSheetListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch sheet
      tags:
        - Operations
  /operations/{operationId}/patchSlideLayoutResults:
    get:
      description: Returns a [`PatchSlideLayoutListResult`](ref:operations#patchslidelayoutlistresult) describing the results of a patch slide layout.
      operationId: getPatchSlideLayoutResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchSlideLayoutListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch slide layout
      tags:
        - Operations
  /operations/{operationId}/patchSlideResults:
    get:
      description: Returns a [`PatchSlideListResult`](ref:operations#patchslidelistresult) describing the results of a patch slide.
      operationId: getPatchSlideResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchSlideListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch slide
      tags:
        - Operations
  /operations/{operationId}/patchSpreadsheetResults:
    get:
      description: Returns a [`PatchSpreadsheetListResult`](ref:operations#patchspreadsheetlistresult) describing the results of a patch spreadsheet.
      operationId: getPatchSpreadsheetResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchSpreadsheetListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch spreadsheet
      tags:
        - Operations
  /operations/{operationId}/patchTablePropertiesResults:
    get:
      description: Returns a [`PatchTablePropertiesListResult`](ref:operations#patchtablepropertieslistresult) describing the results of a patch table properties.
      operationId: getPatchTablePropertiesResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/PatchTablePropertiesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a patch table properties
      tags:
        - Operations
  /operations/{operationId}/rangeLinkEditResults:
    get:
      description: Returns a [`RangeLinkEditResultCollection`](ref:operations#rangelinkeditresultcollection) describing the results of a range link edit.
      operationId: getRangeLinkEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: rangeLink
                    rangeLink: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/RangeLinkEditResultCollection'
          description: OK
          headers:
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a range link edit
      tags:
        - Operations
  /operations/{operationId}/richTextBatchEditResults:
    get:
      description: Returns a [`RichTextEditListResult`](ref:operations#richtexteditlistresult) describing the results of a rich text batch edit.
      operationId: getRichTextBatchEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: table
                    table: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/RichTextEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a rich text batch edit
      tags:
        - Operations
  /operations/{operationId}/richTextAnchorCreationResults:
    get:
      description: Returns a [`RichTextAnchorCreationResultCollection`](ref:operations#richtextanchorcreationresultcollection) describing the results of a rich text anchor creation.
      operationId: getRichTextAnchorCreationResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: anchor
                    anchor: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/RichTextAnchorCreationResultCollection'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a rich text anchor creation
      tags:
        - Operations
  /operations/{operationId}/richTextDuplicationEditResults:
    get:
      description: Returns a [`RichTextDuplicationEditListResult`](ref:operations#richtextduplicationeditlistresult) describing the results of a rich text duplication edit.
      operationId: getRichTextDuplicationEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: table
                    table: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/RichTextDuplicationEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a rich text duplication edit
      tags:
        - Operations
  /operations/{operationId}/richTextLinksBatchEditResults:
    get:
      description: Returns a [`RichTextLinksEditListResult`](ref:operations#richtextlinkseditlistresult) describing the results of a rich text batch edit.
      operationId: getRichTextLinksBatchEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: destinationLink
                    destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/RichTextLinksEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a rich text links batch edit
      tags:
        - Operations
  /operations/{operationId}/tableAnchorCreationResults:
    get:
      description: Returns a [`TableAnchorCreationResultCollection`](ref:operations#tableanchorcreationresultcollection) describing the results of a table anchor creation.
      operationId: getTableAnchorCreationResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - type: anchor
                    anchor: 8610c7b132e944cb9e5c11daf08b1b1c
                '@nextLink': <opaque_url>
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/TableAnchorCreationResultCollection'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a table anchor creation
      tags:
        - Operations
  /operations/{operationId}/tableCellEditResults:
    get:
      description: Returns a [`TableCellEditListResult`](ref:operations#tablecelleditlistresult) describing the results of a table cell edit.
      operationId: getTableCellEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/TableCellEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a table cell edit
      tags:
        - Operations
  /operations/{operationId}/tableEditResults:
    get:
      description: Returns a [`TableEditListResult`](ref:operations#tableeditlistresult) describing the results of a table edit.
      operationId: getTableEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/TableEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a table edit
      tags:
        - Operations
  /operations/{operationId}/tableLinksEditResults:
    get:
      description: Returns a [`TableLinksEditListResult`](ref:operations#tablelinkseditlistresult) describing the results of a table links edit.
      operationId: getTableLinksEditResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example: |
                {
                  "data": [
                    {
                      "type": "destinationLink",
                      "destinationLink": "WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru"
                    }
                  ],
                  "@nextLink": "<opaque_url>",
                  "revision" : "2B3C4D5E"
                }
              schema:
                $ref: '#/components/schemas/TableLinksEditListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a table links edit
      tags:
        - Operations
  /operations/{operationId}/tableReapplyFilterResults:
    get:
      description: Returns a [`TableReapplyFilterListResult`](ref:operations#tablereapplyfilterlistresult) describing the results of a table reapply filter.
      operationId: getTableReapplyFilterResults
      parameters:
        - $ref: '#/components/parameters/OperationId'
      responses:
        "200":
          content:
            application/json:
              example:
                revision: 2B3C4D5E
              schema:
                $ref: '#/components/schemas/TableReapplyFilterListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve results for a table reapply filter
      tags:
        - Operations
  /permissions:
    get:
      description: Returns a list of permissions.
      operationId: getPermissions
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    name: Editor
                  - id: 228d55c7-10d0-4ac3-85a3-1ac30ae97ac1
                    name: Viewer
                  - id: 598e8fa3-3e7c-4fb7-b662-f44522216e2b
                    name: Owner
                  - id: 23692e42-0e0d-463d-b1fb-f28096b7bc96
                    name: None
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/PermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve a list of all available permissions
      tags:
        - Permissions
  /permissions/{permissionId}:
    get:
      description: |
        Retrieves a permission given its ID
      operationId: getPermissionById
      parameters:
        - $ref: '#/components/parameters/PermissionId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
                name: Editor
              schema:
                $ref: '#/components/schemas/Permission'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve a single permission
      tags:
        - Permissions
  /presentations/{presentationId}:
    get:
      description: |
        Retrieves a presentation given its ID.
      operationId: getPresentationById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 625efb2c141f482bb1cdab14ec18715d
                name: 2019 Year-End Summary
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                modified:
                  dateTime: "2019-11-21T13:47:33Z"
                template: false
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                customFieldGroups: []
                slideCustomFieldGroups: []
                lock: null
              schema:
                $ref: '#/components/schemas/Presentation'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single presentation
      tags:
        - Presentations
    patch:
      description: |
        Updates the properties of a [presentation](ref:presentations#presentation).

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running
        job polling, see [Operations endpoint](ref:getoperationbyid).


        ### Options

        | Path                              | PATCH Operations Supported         |
        |-----------------------------------|------------------------------------|
        | `/customFields/<custom field id>` | `add`, `remove`, `replace`, `test` |
        | `/customFieldGroups`              | `add`, `remove`, `replace`, `test` |
        | `/slideCustomFieldGroups`         | `add`, `remove`, `replace`, `test` |
        | `/lock`                           | `replace`                          |


        ### Examples

        #### Add a custom field value

        ```json
        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value

        ```json
        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```

        #### Verifying customFieldGroup is empty before replacing the list

        ```json
        [
          {
            "op": "test",
            "path": "/customFieldGroups",
            "value": []
          },
          {
            "op": "replace",
            "path": "/customFieldGroups",
            "value": ["gsr.reporting"]
          }
        ]
        ```

        #### Adding a customFieldGroup to the end of a list

        ```json
        [
          {
            "op": "add",
            "path": "/customFieldGroups/-",
            "value": "gsr.reporting"
          }
        ]
        ```
      operationId: partiallyUpdatePresentationById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /customFields/com.workiva.gsr.legal_entity
                    value: US Entity
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the presentation.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially updates a single presentation
      tags:
        - Presentations
  /presentations/{presentationId}/export:
    post:
      description: |
        Asynchronously export a presentation as .PDF or .PPTX. Options are specified using a [PresentationExport](ref:presentations#presentationexport) object.

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [ Operations endpoint ](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: presentationExport
      parameters:
        - $ref: '#/components/parameters/PresentationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresentationExport'
        description: Details about the presentation export.
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Initiate a presentation export
      tags:
        - Presentations
  /presentations/{presentationId}/filters/reapplication:
    post:
      description: |
        Performs a [`PresentationFiltersReapplication`](ref:content#presentationfiltersreapplication) on the specified presentation.
        This endpoint is used to refresh the presentation's filters based on the latest state or configuration changes.
        The filters are reapplied in the context of the presentation's current data state.

        This is a long-running operation. Responses include a `Location` header, which indicates where to poll for results.
        For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: presentationFiltersReapplication
      parameters:
        - $ref: '#/components/parameters/PresentationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresentationFiltersReapplication'
        description: The filter reapplication request to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Reapply filters to the presentation
      tags:
        - Presentations
  /presentations/{presentationId}/links/publication:
    post:
      description: |
        Publishes the links in a presentation - either all (as document owner) or only one's own. Content at the latest presentation revision will be used for publish.
        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: presentationLinksPublication
      parameters:
        - $ref: '#/components/parameters/PresentationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinksPublicationOptions'
        description: Details about the link publication.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate publication of links in a presentation
      tags:
        - Presentations
  /presentations/{presentationId}/milestones:
    get:
      description: Returns [MilestoneListResult](ref:milestones#milestonelistresult).
      operationId: getPresentationMilestones
      parameters:
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/PresentationId'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MilestoneListResult'
              example:
                data:
                  - id: bWlsZXN0b25lLXYxOjQzODU0ZmU0NmU2MDQ4M2E4MTU0ZjdmMGI3MWI5YjllOjJjNjQzOGFiNDU1NTNkZTY
                    resource:
                      type: presentation
                      presentation:
                        presentation: 16b1f641613847469b7aa1ca29af40b1
                        revision: 2c6438ab45553de6
                    title: Start of Q1
                    remarks: ""
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                '@nextLink': <opaque_url>
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of milestones for a presentation
      tags:
        - Presentations
  /presentations/{presentationId}/slideLayouts:
    get:
      description: Returns a list of slide layouts.
      operationId: getSlideLayouts
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: a8b3adb687644b27fafcb3a9875f0f0d_13
                    name: Layout 1
                    index: 0
                    slideLayoutBody:
                      drawing: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
                      revision: 2c6438ab454db9bc
                    lock: null
                  - id: a8b3adb687644b27fafcb3a9875f0f0d_34
                    name: Layout 2
                    index: 1
                    slideLayoutBody:
                      drawing: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
                      revision: 2c6438ab454db9bc
                    lock: null
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/SlideLayoutsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of slide layouts
      tags:
        - Presentations
  /presentations/{presentationId}/slideLayouts/{slideLayoutId}:
    get:
      description: |
        Retrieves a slide layout given its ID.
      operationId: getSlideLayoutById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/SlideLayoutId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: a8b3adb687644b27fafcb3a9875f0f0d_34
                index: 0
                name: Title
              schema:
                $ref: '#/components/schemas/SlideLayout'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single slide layout
      tags:
        - Presentations
    patch:
      description: |
        Updates one or more properties of a single slide layout.

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running
        job polling, see [Operations endpoint](ref:getoperationbyid).

        ### Options

        | Path            | PATCH Operations Supported |
        |-----------------|----------------------------|
        | `/name`         | `replace`                  |
        | `/index`        | `replace`                  |
        | `/lock`         | `replace`                  |
      operationId: partiallyUpdateSlideLayoutById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/SlideLayoutId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Slide Layout Name
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: Patch document representing the changes to be made to the slide layout
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single slide layout
      tags:
        - Presentations
  /presentations/{presentationId}/slides:
    get:
      description: Returns a list of slides.
      operationId: getSlides
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                '@nextLink': <opaque_url>
                data:
                  - children:
                      - id: a8b3adb687644b27fafcb3a9875f0f0d_34
                        name: Subslide
                    id: a8b3adb687644b27fafcb3a9875f0f0d_13
                    index: 0
                    layoutSource: a8b3adb687644b27fafcb3a9875f0f0d_1
                    lock: null
                    name: Slide
                    parent: null
                  - children: []
                    id: a8b3adb687644b27fafcb3a9875f0f0d_34
                    index: 0
                    layoutSource: a8b3adb687644b27fafcb3a9875f0f0d_1
                    lock: null
                    name: Subslide
                    parent:
                      id: a8b3adb687644b27fafcb3a9875f0f0d_13
                      name: Slide
              schema:
                $ref: '#/components/schemas/SlidesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of slides
      tags:
        - Presentations
  /presentations/{presentationId}/slides/{slideId}:
    get:
      description: |
        Retrieves a slide given its ID.
      operationId: getSlideById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/SlideId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                id: a8b3adb687644b27fafcb3a9875f0f0d_34
                name: Subslide
                parent:
                  id: a8b3adb687644b27fafcb3a9875f0f0d_13
                  name: Slide
                index: 0
                children:
                  - id: a8b3adb687644b27fafcb3a9875f0f0d_21
                    name: Subslide
                layoutSource: a8b3adb687644b27fafcb3a9875f0f0d_1
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                lock: null
              schema:
                $ref: '#/components/schemas/Slide'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single slide
      tags:
        - Presentations
    patch:
      description: |
        Updates one or more properties of a single slide.

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running
        job polling, see [Operations endpoint](ref:getoperationbyid).

        ### Options

        | Path                              | PATCH Operations Supported         |
        |-----------------------------------|------------------------------------|
        | `/name`                           | `replace`                          |
        | `/index`                          | `replace`                          |
        | `/parent`                         | `replace`                          |
        | `/customFields/<custom field id>` | `add`, `remove`, `replace`, `test` |
        | `/lock`                           | `replace`                          |

        ### Examples

        #### Update the name of a slide

        ```json
        [
          {
            "op": "replace",
            "path": "/name",
            "value": "Risk Factor"
          }
        ]
        ```

        #### Update the parent of a slide (preserving its index)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "b9b3ddb587744a27aafda3c9865f1f0a_1"
            }
          }
        ]
        ```

        #### Update the parent of a slide (making it the first child)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "b9b3ddb587744a27aafda3c9865f1f0a_1"
            }
          },
          {
            "op": "replace",
            "path": "/index",
            "value": 0
          }
        ]
        ```

        #### Add a custom field value

        ```json
        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value

        ```json
        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```
      operationId: partiallyUpdateSlideById
      parameters:
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/SlideId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Slide 1
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the slide.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single slide
      tags:
        - Presentations
  /presentations/{presentationId}/tables:
    get:
      description: Returns the collection of tables within a presentation.
      operationId: getPresentationTableCollection
      parameters:
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/PresentationId'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresentationTableCollectionResult'
              example:
                data:
                  - id: TmVsc29uIHdhcyBoZXJl
                    name: Sheet 1
                    index: 0
                    parent:
                      type: drawing
                      drawing: ZHJhd2luZ0lkMTIzNDU2Nzg5
                revision: 24601abc
                '@nextLink': <opaque_url>
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a collection of tables from a presentation
      tags:
        - Presentations
  /spreadsheets:
    get:
      description: |
        Returns a paginated list of [spreadsheets](ref:spreadsheets#spreadsheet).
      operationId: getSpreadsheets
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - created:
                      dateTime: "2018-10-21T15:03:27Z"
                    name: Year-end review
                    id: 124efa2a142f472ba1ceab34ed18915f
                    modified:
                      dateTime: "2018-10-21T15:03:27Z"
                    template: false
                  - created:
                      dateTime: "2020-02-20T15:03:27Z"
                    name: Q1 Review
                    id: 164cfb2b132c4623a2cfaa31ef13925a
                    modified:
                      dateTime: "2020-03-29T13:15:27Z"
                    template: false
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/SpreadsheetsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of spreadsheets
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}:
    get:
      description: |
        Retrieves a [spreadsheet](ref:spreadsheets#spreadsheet) given its ID.
      operationId: getSpreadsheetById
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                created:
                  dateTime: "2019-10-28T15:03:27Z"
                customFieldGroups: []
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                id: 625efb2c141f482bb1cdab14ec18715d
                linksStatus:
                  allLinks: unpublished
                  ownLinks: published
                lock: null
                modified:
                  dateTime: "2019-11-21T13:47:33Z"
                name: 2019 Year-End Summary
                properties:
                  tableFormats:
                    resizeRowsToFit: true
                  trackChanges: false
                revision: 24601abc
                sheetCustomFieldGroups: []
                template: false
              schema:
                $ref: '#/components/schemas/Spreadsheet'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single spreadsheet
      tags:
        - Spreadsheets
    patch:
      description: |
        Updates the properties of a [spreadsheet](ref:spreadsheets#spreadsheet).

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running job polling,
        see [Operations endpoint](ref:getoperationbyid).

        ### Options
        | Path                                         | PATCH Operations Supported         | Value Type                                                                |
        |----------------------------------------------|------------------------------------|---------------------------------------------------------------------------|
        | `/customFields/<custom field id>`            | `add`, `remove`, `replace`, `test` | `boolean`, `string`, 64-bit `integer`, 64-bit `number`                    |
        | `/customFieldGroups`                         | `add`, `remove`, `replace`, `test` | Array of custom field group ids                                           |
        | `/sheetCustomFieldGroups`                    | `add`, `remove`, `replace`, `test` | Array of custom field group ids                                           |
        | `/lock`                                      | `replace`                          | `SpreadsheetLockType`, `null`                                             |
        | `/properties/tableFormats/resizeRowsToFit`   | `replace`                          | `boolean`                                                                 |
        | `/properties/trackChanges`                   | `replace`                          | `boolean`                                                                 |

        ### Examples

        #### Add a custom field value

        ```json
        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value

        ```json
        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```

        #### Verifying customFieldGroup is empty before replacing the list

        ```json
        [
          {
            "op": "test",
            "path": "/customFieldGroups",
            "value": []
          },
          {
            "op": "replace",
            "path": "/customFieldGroups",
            "value": ["gsr.reporting"]
          }
        ]
        ```

        #### Adding a customFieldGroup to the end of a list

        ```json
        [
          {
            "op": "add",
            "path": "/customFieldGroups/-",
            "value": "gsr.reporting"
          }
        ]
        ```
      operationId: partiallyUpdateSpreadsheetById
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /customFields/com.workiva.gsr.legal_entity
                    value: US Entity
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the spreadsheet.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/datasets:
    get:
      description: Returns a list of [datasets](ref:spreadsheets#dataset). <br /><br /> Use this endpoint to identify any datasets that exist within a given [spreadsheet](ref:spreadsheets#spreadsheet), up to one per [sheet](ref:spreadsheets#sheet).
      operationId: getDatasets
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - sheet: 27f1b61c04ae4b0991bc73c631914e1d
                    range: A1:Q7
                  - sheet: 242a56d3cc0742c8abad0820bd318b23
                    range: A1
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/DatasetsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of datasets
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/datasets/bulkUpsert:
    post:
      description: Asynchronously upserts an array of [datasets](ref:spreadsheets#dataset) to a [spreadsheet](ref:spreadsheets#spreadsheet), given their properties. Each [sheet](ref:spreadsheets#sheet) can have only one dataset, and its range will always start with `A1`. <br /><br /> Bulk upsertion creates or updates datasets in sheets and performs any calculations after it completes. When complete, the dataset's range is locked through both the UI and endpoints that write values to a sheet. To change the values in a dataset, either upsert new values using this endpoint again, or delete the dataset. <br /><br /> If any dataset fails to upsert, no datasets upsert, and no changes commit. <br /><br /> Each dataset in the array requires `sheet` and `values`. Partial upserts are not supported. <br /><br /> Values may be strings, numbers, integers, or booleans. To indicate an empty cell, provide an empty string.
      operationId: upsertDatasets
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Datasets'
        description: An array of datasets
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Bulk upsert of datasets
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/export:
    post:
      description: |
        Asynchronously exports a [spreadsheet](ref:spreadsheets#spreadsheet) as .XLSX, .PDF, or .CSV.

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).

        Note: To export to .PDF, the spreadsheet can have no more than 250,000 cells.
      operationId: spreadsheetExport
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SpreadsheetExport'
        description: Details about the spreadsheet export, including its format and options
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Initiate a spreadsheet export
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/filters/reapplication:
    post:
      description: |
        Performs a [`SpreadsheetFiltersReapplication`](ref:content#spreadsheetfiltersreapplication) on the specified spreadsheet.
        This endpoint is used to refresh the spreadsheet's filters based on the latest state or configuration changes.
        The filters are reapplied in the context of the spreadsheet's current data state.

        This is a long-running operation. Responses include a `Location` header, which indicates where to poll for results.
        For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: spreadsheetFiltersReapplication
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SpreadsheetFiltersReapplication'
        description: The filter reapplication request to apply
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Reapply filters to the spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/links/publication:
    post:
      description: |
        Publishes the links in a spreadsheet - either all (as document owner) or only one's own. Content at the latest spreadsheet revision will be used for publish.
        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: spreadsheetLinksPublication
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinksPublicationOptions'
        description: Details about the link publication.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Initiate publication of links in a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/milestones:
    get:
      description: Returns [MilestoneListResult](ref:milestones#milestonelistresult).
      operationId: getSpreadsheetMilestones
      parameters:
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/SpreadsheetId'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MilestoneListResult'
              example:
                data:
                  - id: bWlsZXN0b25lLXYxOjQzODU0ZmU0NmU2MDQ4M2E4MTU0ZjdmMGI3MWI5YjllOjJjNjQzOGFiNDU1NTNkZTY
                    resource:
                      type: spreadsheet
                      spreadsheet:
                        spreadsheet: 16b1f641613847469b7aa1ca29af40b1
                        revision: 2c6438ab45553de6
                    title: Start of Q1
                    remarks: ""
                    created:
                      dateTime: "2019-10-28T15:03:27Z"
                      user:
                        id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                '@nextLink': <opaque_url>
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of milestones for a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for a given spreadsheet
      operationId: getSpreadsheetPermissions
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a spreadsheet. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: spreadsheetPermissionsModification
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the spreadsheet permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets:
    get:
      description: Returns a list of [sheets](ref:spreadsheets#sheet).
      operationId: getSheets
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/Revision'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 242a56d3cc0742c8abad0820bd318b23
                    name: Q1
                    parent: null
                    index: 0
                    children: []
                    properties:
                      trackChanges: false
                    table:
                      table: V0ZVc2VyHzY0ODY4NjQ1MzE1NTQ
                      revision: 2B3C4D5E
                    dataset: null
                    lock: null
                  - id: 132b55d1cd0543c1aaae0924bc328a24
                    name: Q2
                    parent: null
                    index: 1
                    children: []
                    properties:
                      trackChanges: false
                    table:
                      table: 8610c7b132e944cb9e5c11daf08b1b1c
                      revision: 2B3C4D5E
                    dataset: null
                    lock: null
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/SheetsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of sheets
      tags:
        - Spreadsheets
    post:
      description: |
        Creates a new [sheet](ref:spreadsheets#sheet) in a [spreadsheet](ref:spreadsheets#spreadsheet), given its properties. If the sheet name provided isn't unique, a number is appended to make it unique. By default, creates a top-level sheet in the top-most position.
      operationId: createSheet
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  index: 2
                  name: Q3
            schema:
              $ref: '#/components/schemas/Sheet'
        description: The properties of the sheet to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: 281c26d8ca0145c2cabe1714dc318c26
                name: Q3
                parent: null
                index: 2
                children: []
                dataset: null
              schema:
                $ref: '#/components/schemas/Sheet'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Create a new sheet in a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}:
    delete:
      description: |
        Deletes a [sheet](ref:spreadsheets#sheet) given its ID.
      operationId: deleteSheetById
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single sheet
      tags:
        - Spreadsheets
    get:
      description: |
        Retrieves a [sheet](ref:spreadsheets#sheet) given its ID.
      operationId: getSheetById
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/Revision'
      responses:
        "200":
          content:
            application/json:
              example:
                name: Q1
                id: 242a56d3cc0742c8abad0820bd318b23
                modified:
                  dateTime: "2020-03-21T15:03:27Z"
                parent: null
                index: 0
                children: []
                properties:
                  trackChanges: false
                table:
                  table: 8610c7b132e944cb9e5c11daf08b1b1c
                  revision: 2B3C4D5E
                dataset: null
                customFields:
                  com.workiva.gsr.legal_entity: Workiva
                lock: null
              schema:
                $ref: '#/components/schemas/Sheet'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a single sheet
      tags:
        - Spreadsheets
    patch:
      description: |
        Updates the properties of a [sheet](ref:spreadsheets#sheet).

        This is a long running operation. Responses include a `Location` header,
        which indicates where to poll for results. For more details on long-running job polling,
        see [Operations endpoint](ref:getoperationbyid).

        ### Options
        | Path                              | PATCH Operations Supported         | Value Type                              |
        |-----------------------------------|------------------------------------|-----------------------------------------|
        | `/name`                           | `replace`                          | `string`                                |
        | `/index`                          | `replace`                          | `integer`                               |
        | `/parent`                         | `replace`                          | `Sheet`, `null`                         |
        | `/customFields/<custom field id>` | `add`, `remove`, `replace`, `test` | `boolean`, `string`, `integer`, `number`|
        | `/lock`                           | `replace`                          | `SheetLockType`, `null`                 |
        | `/properties/trackChanges`        | `replace`                          | `boolean`                               |

        ### Examples

        #### Lock an unlocked sheet

        ```json
        [
          {
            "op": "replace",
            "path": "/lock",
            "value": "lock"
          }
        ]
        ```

        #### Unlock a locked sheet

        ```json
        [
          {
            "op": "replace",
            "path": "/lock",
            "value": null
          }
        ]
        ```

        #### Update the name of a sheet

        ```json
        [
          {
            "op": "replace",
            "path": "/name",
            "value": "Q1 Draft"
          }
        ]
        ```

        #### Update the parent of a sheet (preserving its index)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "242a56d3cc0742c8abad0820bd318b23"
            }
          }
        ]
        ```

        #### Update the parent of a sheet (making it the first child)

        ```json
        [
          {
            "op": "replace",
            "path": "/parent",
            "value": {
              "id": "242a56d3cc0742c8abad0820bd318b23"
            }
          },
          {
            "op": "replace",
            "path": "/index",
            "value": 0
          }
        ]
        ```

        #### Add a custom field value

        ```json
        [
          {
            "op": "add",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva"
          }
        ]
        ```

        #### Remove a custom field value

        ```json
        [
          {
            "op": "remove",
            "path": "/customFields/com.workiva.gsr.legal_entity"
          }
        ]
        ```

        #### Replace a custom field value

        ```json
        [
          {
            "op": "replace",
            "path": "/customFields/com.workiva.gsr.legal_entity",
            "value": "Workiva, Inc."
          }
        ]
        ```
      operationId: partiallyUpdateSheetById
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /name
                    value: Sheet 1
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the sheet.
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Partially update a single sheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/copy:
    post:
      description: |-
        Asynchronously copies a [sheet](ref:spreadsheets#sheet) given details about the copy's destination within the same or another spreadsheet. Options are specified using a [SheetCopy](ref:spreadsheets#sheetcopy) object.

        This endpoint copies a sheet's content, but does not copy labels, comments, or tasks. It will copy over most formatting, however it does not copy user-defined style guides across spreadsheets. So if the source sheet has  formatting that depends on a user-defined style guide, that formatting will be lost when copying to a new spreadsheet.

        Unless otherwise specified, the copy appears at the top level of its  destination spreadsheet, with an index of 0, and with the same name as the original sheet.
      operationId: copySheet
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SheetCopy'
        description: A SheetCopy object
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Copy sheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/dataset:
    delete:
      description: Deletes the [dataset](ref:spreadsheets#dataset) for the specified [sheet](ref:spreadsheets#sheet). <br /><br /> When you delete a dataset, you can select whether to leave its associated values in place. To delete its values, pass `true` for query parameter `$deletevalues` (default is `false`).
      operationId: deleteDatasetBySheetId
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/DatasetDeleteValues'
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Delete a single dataset
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/permissions:
    get:
      description: |
        Retrieves a paginated list of permissions for the given sheet in a spreadsheet
      operationId: getSheetPermissions
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
                    principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
                    principalType: user
                  - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
                    resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
                    principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
                    principalType: group
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/ResourcePermissionsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
        - contextless-oauth:
            - file:read
      summary: Retrieve permissions for a sheet in a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/permissions/modification:
    post:
      description: |
        Assign and/or revoke permissions on a sheet. If any modification in a request fails, all modifications on that request fail. <br /><br /> _To modify an existing permission, the existing permission must first be  explicitly revoked. Then, the new permission needs to be assigned. This  can be done in a single request by sending `toAssign` and `toRevoke` in  the request body._
      operationId: sheetPermissionsModification
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcePermissionsModification'
        description: Details about the sheet permissions modification.
        required: true
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
        - contextless-oauth:
            - file:write
      summary: Modify permissions on a given sheet of a spreadsheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata:
    get:
      description: |-
        Retrieve data from a range in a sheet. Includes the value & formatting of cells, visibility of columns and cells, merged ranges, etc.
        Limit the results to particular fields by providing a comma-separated list of paths, rooted at the `data` object.
        Example: $fields=cells.calculatedValue,cells.formats.valueFormat <br /><br /> Note: This endpoint is rate-limited. You may experience rates as low as 600 requests per minute.  This rate is shared across your workspace. When you encounter a 429, examine the `Retry-After`  header and retry after that many seconds.
      operationId: getSheetData
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/CellRange'
        - $ref: '#/components/parameters/MaxCellsPerPage'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/Fields'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SheetDataResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve data from a sheet
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/update:
    post:
      description: |-
        Asynchronously submits a [SheetUpdate](ref:spreadsheets#sheetupdate) to a [sheet](ref:spreadsheets#sheet). Each [SheetUpdate](ref:spreadsheets#sheetupdate) can have only one update field set per request.
        <br /><br />
        **Understanding "one update field per request":** This means each request body can include only **one top-level field** from the `SheetUpdate` object — for example, `applyFormats` or `editCells`, but not both in the same request. It does **not** mean you can only perform one operation per request. The value inside each top-level field is an **array** that can contain many operations, all executed in a single API call.
        <br /><br />
        **Wrong approach** — sending one request per format, per range:<br /> `Request 1: applyFormats → bold header row`<br /> `Request 2: applyFormats → currency format column B`<br /> `Request 3: applyFormats → currency format column C`<br /> `...`<br /> `Request 40: applyBorders → border under totals`
        <br /><br />
        **Right approach** — batch everything into the array:<br /> `Request 1: applyFormats → formats: [ bold header, currency col B-K, shading rows 2/4/6/... ]`<br /> `Request 2: applyBorders → borders: [ bottom border on totals row ]`
        <br /><br />
        Two requests instead of 40+. The `formats` array and `borders` array each accept **multiple objects**, and each object can target **multiple ranges**.
        <br /><br />
        Note: This endpoint is rate-limited to as low as **60 requests per minute**, shared across your entire workspace. Every unnecessary request counts against that limit for all users and integrations in the workspace. Always batch operations into arrays rather than sending one-operation-per-request. When you encounter a 429, examine the `Retry-After` header and retry after that many seconds.
        <br /><br />
        Refer to the [Spreadsheet Data Guide](ref:spreadsheet-data-guide) for comprehensive guidance on this functionality.
      operationId: updateSheet
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SheetUpdate'
        description: A SheetUpdate
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Update sheet content
      tags:
        - Spreadsheets
  /spreadsheets/{spreadsheetId}/sheets/{sheetId}/values/{range}:
    get:
      description: |-
        Returns the paginated values for a specified range.
        When you retrieve values from a range, Ones scale is used regardless of the cell's scale formatting.
      operationId: getValuesByRange
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/Range'
        - $ref: '#/components/parameters/MaxCellsPerPage'
        - $ref: '#/components/parameters/Next'
        - $ref: '#/components/parameters/ValueStyle'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - range: A1:C3
                    values:
                      - - First
                        - Second
                        - Third
                      - - 1
                        - 2
                        - ""
                      - - 3
                        - 4
                        - 5
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/RangeValuesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:read
      summary: Retrieve a list of range values
      tags:
        - Spreadsheets
    put:
      description: |-
        Overwrites all values in a range with new values. The provided range must not exceed the specified range. If the provided range of values is *smaller* than the specified range, it clears all cells in the range **and** those not covered by the range values. Rows of values in the provided range must be of equal length. An empty range of values is valid and may be used to clear a range.
        To indicate that a cell's value shouldn't be replaced, use the special cell value `null`.
        When you add a value to a cell, it uses Ones scale regardless of the cell's scale formatting.
      operationId: updateValuesByRange
      parameters:
        - $ref: '#/components/parameters/SpreadsheetId'
        - $ref: '#/components/parameters/SheetId'
        - $ref: '#/components/parameters/Range'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  values:
                    - - 1
                      - 4
                    - - 2
                      - ""
            schema:
              $ref: '#/components/schemas/RangeValues'
        description: All values for the range, not just those to update
        required: true
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncAcceptedResponse'
          headers:
            Location:
              description: The location to poll for the operation result.
              schema:
                type: string
            Retry-After:
              description: The number of seconds to wait before polling for a result and between polling attempts.
              schema:
                type: integer
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - file:write
      summary: Update values in a range
      tags:
        - Spreadsheets
  /tasks:
    get:
      description: |
        > Returns a paginated list of [tasks](ref:tasks#task). Currently this endpoint returns general tasks
        (such as those created as part of editing documents, sheets, and presentations) and tasks that have been associated  with a Sustainability Program.
        It does not return tasks created as part of a process.
      operationId: getTasks
      parameters:
        - $ref: '#/components/parameters/Filter'
        - $ref: '#/components/parameters/OrderBy'
        - $ref: '#/components/parameters/MaxPageSize'
        - $ref: '#/components/parameters/Next'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 129g274495354cf18edb6b3ea3d023b2
                    title: Review Document
                    description: Review document for spelling and grammar
                    status: Completed
                    dueAt: "2019-10-30T00:00:00Z"
                    sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF4OENNJEV3NUTBmA?token=NTc0NDU2MTg1MjM0ODUyTM
                    modified:
                      dateTime: "2019-10-29T15:03:27Z"
                    assignees:
                      - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                        type: USER
                    approvalSteps:
                      - completionMode: ONE
                        dueAt: null
                        participants:
                          - type: USER
                            id: V0ZVc2VyHzY0MTI5NzM0MzkxODg5OTI
                          - type: USER
                            id: V0ZVc2VyHzU1MDg3OTc0MDE4MDg4OTY
                        responses:
                          - created:
                              user_id: V0ZVc2VyHzU1MDg3OTc0MDE4MDg4OTY
                              dateTime: "2023-06-11T13:00:00+00:00"
                            action: APPROVE
                            comment: Changes are approved till eternity
                    created:
                      user:
                        id: V3ZVc2VyFzV3NiQ5NDA2NjIzNxk2njH
                        displayName: John Doe
                        email: john.doe@example.com
                      dateTime: "2019-10-28T15:03:27Z"
                    location:
                      resource: 124efa2a142f472ba1ceab34ed18915f
                      segment: 465ttdh2a142y75ehsft5ab34edf5675
                  - id: 120h274405355cf18ecb6b3ea3d023a7
                    title: Add example
                    description: Add an example of an object
                    status: Completed
                    dueAt: "2019-10-29T00:00:00Z"
                    sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF21ENNJEU3NUTBmB?token=NTc0NDU2MTk1MjM3ODDyTZ
                    modified:
                      dateTime: "2019-10-28T15:03:27Z"
                    assignees:
                      - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                        type: USER
                    created:
                      user:
                        id: V3ZVc2VyFzV3NiQ5NDA2NjIzNxk2njH
                        displayName: John Doe
                        email: john.doe@example.com
                      dateTime: "2019-10-27T15:03:27Z"
                    location:
                      resource: 124efa2a142f472ba1ceab34ed18915f
                      segment: 465ttdh2a142y75ehsft5ab34edf5675
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/TasksListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - task:read
      summary: Retrieve a list of tasks
      tags:
        - Tasks
    post:
      description: |
        Creates a new [task](ref:tasks#task) given its properties.
      operationId: createTask
      requestBody:
        content:
          application/json:
            example:
              title: Review Document
              description: Review document for spelling and grammar
              dueAt: "2019-10-30T00:00:00Z"
              assignees:
                - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                  type: USER
              approvalSteps:
                - completionMode: ONE
                  dueAt: null
                  participants:
                    - type: USER
                      id: V0ZVc2VyHzU1MDg3OTc0MDE4MDg4OTY
                    - type: USER
                      id: V0ZVc2VyHzU1MDg3OTc0MDE4MDg4OTY
              location:
                resource: 124efa2a142f472ba1ceab34ed18915f
                segment: 465ttdh2a142y75ehsft5ab34edf5675
            schema:
              $ref: '#/components/schemas/Task'
        description: The properties of the task to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: 129g274495354cf18edb6b3ea3d023b2
                title: Review Document
                description: Review document for spelling and grammar
                status: Created
                dueAt: "2019-10-30T00:00:00Z"
                sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF4OENNJEV3NUTBmA?token=NTc0NDU2MTg1MjM0ODUyTM
                completed:
                  dateTime: "2019-10-29T15:03:27Z"
                modified:
                  dateTime: "2019-10-29T15:03:27Z"
                assignees:
                  - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    type: USER
                created:
                  user:
                    id: V3ZVc2VyFzV3NiQ5NDA2NjIzNxk2njH
                    displayName: John Doe
                    email: john.doe@example.com
                  dateTime: "2019-10-28T15:03:27Z"
                location:
                  resource: 124efa2a142f472ba1ceab34ed18915f
                  segment: 465ttdh2a142y75ehsft5ab34edf5675
              schema:
                $ref: '#/components/schemas/Task'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - task:write
      summary: Create a new task
      tags:
        - Tasks
  /tasks/{taskId}:
    delete:
      description: |
        Deletes a [task](ref:tasks#task) given its ID
      operationId: deleteTaskById
      parameters:
        - $ref: '#/components/parameters/TaskId'
      responses:
        "204":
          description: No Content
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - task:write
      summary: Delete a single task
      tags:
        - Tasks
    get:
      description: |
        Retrieves a [task](ref:tasks#task) given its ID
      operationId: getTaskById
      parameters:
        - $ref: '#/components/parameters/TaskId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: VGFzax41MWNmOGZjMDQxMzc1MmRlYWZjMTA2ZjgyMzJiNDllZg
                title: Review Document
                description: Review document for spelling and grammar
                status: Awaiting Approval
                dueAt: "2019-10-30T00:00:00Z"
                sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF4OENNJEV3NUTBmA?token=NTc0NDU2MTg1MjM0ODUyTM
                modified:
                  dateTime: "2019-10-29T15:03:27Z"
                assignees:
                  - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    type: USER
                created:
                  dateTime: "2019-10-29T15:03:27Z"
                approvalSteps:
                  - completionMode: ONE
                    dueAt: null
                    participants:
                      - type: USER
                        id: V0ZVc2VyHzY0MTI5NzM0MzkxODg5OTI
                      - type: USER
                        id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                    responses:
                      - created:
                          user_id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                          dateTime: "2023-06-11T13:00:00+00:00"
                        action: REJECT
                        comment: please refine
              schema:
                $ref: '#/components/schemas/Task'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - task:read
      summary: Retrieve a single task
      tags:
        - Tasks
    patch:
      description: |
        Partially updates the properties of a [task](ref:tasks#task).
        Please note: Tasks are automatically restarted when the following properties are updated:
        - `assignees`
        - `approvalSteps`: If any `participants` who have already approved are updated, the task will be restarted.
        - `location`
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/approvalSteps`|`replace`|
        |`/assignees`|`replace`|
        |`/description`|`replace`|
        |`/dueDate`|`replace`|
        |`/location`|`replace`|
        |`/owner`|`replace`|
        |`/title`|`replace`|
      operationId: partiallyUpdateTaskById
      parameters:
        - $ref: '#/components/parameters/TaskId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /title
                    value: New Title
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the task.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: VGFzax41MWNmOGZjMDQxMzc1MmRlYWZjMTA2ZjgyMzJiNDllZg
                title: Review Document
                description: Review document for spelling and grammar
                status: Awaiting Approval
                dueAt: "2019-10-30T00:00:00Z"
                sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF4OENNJEV3NUTBmA?token=NTc0NDU2MTg1MjM0ODUyTM
                modified:
                  dateTime: "2019-10-29T15:03:27Z"
                assignees:
                  - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    type: USER
                created:
                  dateTime: "2019-10-29T15:03:27Z"
                approvalSteps:
                  - completionMode: ONE
                    dueAt: null
                    participants:
                      - type: USER
                        id: V0ZVc2VyHzY0MTI5NzM0MzkxODg5OTI
                      - type: USER
                        id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                    responses:
                      - created:
                          user_id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                          dateTime: "2023-06-11T13:00:00+00:00"
                        action: REJECT
                        comment: please refine
              schema:
                $ref: '#/components/schemas/Task'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - task:write
      summary: Partially update a single task
      tags:
        - Tasks
  /tasks/{taskId}/actionSubmission:
    post:
      operationId: submitTaskAction
      parameters:
        - $ref: '#/components/parameters/TaskId'
      summary: Initiate a task action submission
      description: |
        This endpoint enables submitting actions on a [task](ref:tasks#task). For tasks with multiple approval steps, it's the only way to advance a task through the approval process.
      tags:
        - Tasks
      security:
        - oauth:
            - task:write
      requestBody:
        required: true
        description: The action to be applied on the task.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskAction'
            example:
              action: APPROVE
              comment: Data confirmed
      responses:
        "200":
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: VGFzax41MWNmOGZjMDQxMzc1MmRlYWZjMTA2ZjgyMzJiNDllZg
                title: Review Document
                description: Review document for spelling and grammar
                status: Awaiting Approval
                dueAt: "2019-10-30T00:00:00Z"
                sourceUrl: https://app.wdesk.com/tasks/d/UVdOauIzVaVkQjdxTmzNNUOEUTQOakEnTnpJTE9ENXkuEkdGeaF4OENNJEV3NUTBmA?token=NTc0NDU2MTg1MjM0ODUyTM
                modified:
                  dateTime: "2019-10-29T15:03:27Z"
                assignees:
                  - id: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
                    type: USER
                created:
                  dateTime: "2019-10-29T15:03:27Z"
                approvalSteps:
                  - completionMode: ONE
                    dueAt: null
                    participants:
                      - type: USER
                        id: V0ZVc2VyHzY0MTI5NzM0MzkxODg5OTI
                      - type: USER
                        id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                    responses:
                      - created:
                          user_id: V0ZVc2VyHzU0MDg3OTc0MDE4MDg4OTY
                          dateTime: "2023-06-11T13:00:00+00:00"
                        action: REJECT
                        comment: please refine
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
  /testForms:
    get:
      description: |
        Retrieves a list of [test forms](ref:testforms#testform).
      operationId: getTestForms
      parameters:
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 7e1c2b1c-c4d1-475f-963b-4187bda1af67
                    name: Process Improvement
                  - id: 0628220b-735d-4f59-af04-a341c704359f
                    name: Expense Reports
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/TestFormsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of test forms
      tags:
        - Test Forms
  /testForms/{testFormId}:
    get:
      description: |
        Retrieves a [test form](ref:testforms#testform) given its ID.
      operationId: getTestFormById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 124efa2a142f472ba1ceab34ed18915f
                name: Process Improvement
              schema:
                $ref: '#/components/schemas/TestForm'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single test form
      tags:
        - Test Forms
  /testForms/{testFormId}/export:
    post:
      description: |
        Asynchronously exports a [test form](ref:testforms#testform).

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: testFormExport
      parameters:
        - $ref: '#/components/parameters/TestFormId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestFormExport'
        description: Details about the test form export
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a test form export
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases:
    get:
      description: |
        Returns a list of [test phases](ref:testforms#testphase).
      operationId: getTestPhases
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: bac770b8-1673-11ec-9621-0242ac130002
                    name: Walkthrough
                  - id: fac4ae02-de87-4956-8c58-125e55b19127
                    name: Follow Up
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/TestPhasesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of test phases
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}:
    get:
      description: |
        Retrieves a [test phase](ref:testforms#testphase) given its ID.
      operationId: getTestPhaseById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: bac770b8-1673-11ec-9621-0242ac130002
                name: Walkthrough
              schema:
                $ref: '#/components/schemas/TestPhase'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrive a single test phase
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/attachmentUpload:
    post:
      description: |-
        Starts the process to upload and attach a file to a [test phase](ref:testforms#testphase) using a [graph attachment upload](ref:testforms#graphattachmentupload) object. The response body will include an `uploadUrl`. To upload the file contents, perform a PUT on the `uploadUrl` with the same authentication credentials and flow as the attachmentUpload request. For more details, see [Authentication documentation](ref:authentication).

        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: testPhaseAttachmentUpload
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentUpload'
        description: Details about the attachment
        required: true
      responses:
        "202":
          content:
            application/json:
              example:
                uploadUrl: <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentUploadResponse'
          description: Accepted
          headers:
            Location:
              $ref: '#/components/headers/Location'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Initiate a test phase attachment upload
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/attachments:
    get:
      description: |
        Returns a list of [attachments](ref:testforms#graphattachment) for a [test phase](ref:testforms#testphase).
      operationId: getTestPhaseAttachments
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                    fileName: status.pdf
                  - id: 8b37229a-4f8b-47c4-aba8-122e48d63a85
                    fileName: process.pdf
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of test phase attachments
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/attachments/{attachmentId}:
    get:
      description: |
        Retrieve a single [attachment](ref:testforms#graphattachment) by its ID.
      operationId: getTestPhaseAttachmentById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                fileName: status.pdf
              schema:
                $ref: '#/components/schemas/GraphAttachment'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single test phase attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/attachments/{attachmentId}/download:
    post:
      description: |
        Asynchronously downloads an attachment from a [test phase](ref:testforms#testphase).

        Responses include a `Location` header, which indicates where to poll for download results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the download is ready, its status will be `completed`, and the response body includes a `resourceURL`. To download the file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the download request. For more details, see [Authentication documentation](ref:authentication).
      operationId: testPhaseAttachmentDownloadById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a test phase attachment download
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/attachments/{attachmentId}/export:
    post:
      description: |
        Asynchronously exports an attachment for a [test phase](ref:testforms#testphase) to .PDF.

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: testPhaseAttachmentExportById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/AttachmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentExport'
        description: Details about the attachment export
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a test phase attachment export
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices:
    get:
      description: |
        Returns a list of [matrices](ref:testforms#matrix).
      operationId: getMatrices
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 30053df2-75fa-4a1e-9e8c-0e18cdd66cd1
                    name: Purchase Orders
                    dataColumns:
                      - id: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                        name: PO Number
                      - id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                        name: Amount
                    resultColumns:
                      - id: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                        name: A
                  - id: 4f241ab3-cb2c-47e0-9a11-63156768494f
                    name: Back Orders
                    dataColumns:
                      - id: 21abeadf-d6c4-4e0e-bc3c-2e93eb2af3c8
                        name: PO Number
                      - id: bbd4ff3e-1c0b-4656-bcb5-30297377fb01
                        name: Amount
                    resultColumns:
                      - id: ebf2ba9d-d2e7-461f-8d43-48fea0e3b567
                        name: A
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/MatricesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of matrices
      tags:
        - Test Forms
    post:
      description: |
        Create a new empty [matrix](ref:testforms#matrix). The `id` field for the matrix and its columns should be left blank; this will be populated by the endpoint.
      operationId: createMatrix
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  dataColumns:
                    - externalId: TA05
                      name: PO Number
                    - externalId: TA06
                      name: Amount
                  name: Purchase Orders
                  resultColumns:
                    - externalId: TA07
                      name: A
            schema:
              $ref: '#/components/schemas/Matrix'
        description: The properties of the matrix to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: 30053df2-75fa-4a1e-9e8c-0e18cdd66cd1
                name: Purchase Orders
                dataColumns:
                  - id: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                    name: PO Number
                    externalId: TA05
                  - id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                    name: Amount
                    externalId: TA06
                resultColumns:
                  - id: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                    name: A
                    externalId: TA07
              schema:
                $ref: '#/components/schemas/Matrix'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Create a new matrix
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}:
    get:
      description: |
        Retrieves a [matrix](ref:testforms#matrix) given its ID.
      operationId: getMatrixById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 30053df2-75fa-4a1e-9e8c-0e18cdd66cd1
                name: Purchase Orders
                dataColumns:
                  - id: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                    name: PO Number
                  - id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                    name: Amount
                resultColumns:
                  - id: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                    name: A
              schema:
                $ref: '#/components/schemas/Matrix'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single matrix
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/attachmentUpload:
    post:
      description: |
        Starts the process to upload and attach a file to a [matrix](ref:testforms#matrix) using a [graph attachment upload](ref:testforms#graphattachmentupload) object. The response body will include an `uploadUrl`. To upload the file contents, perform a PUT on the `uploadUrl` with the same authentication credentials and flow as the attachmentUpload request. For more details, see [Authentication documentation](ref:overview#authentication).

        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: matrixAttachmentUpload
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentUpload'
        description: Details about the attachment upload
        required: true
      responses:
        "202":
          content:
            application/json:
              example:
                uploadUrl: <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentUploadResponse'
          description: Accepted
          headers:
            Location:
              $ref: '#/components/headers/Location'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Initiate a matrix attachment upload
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/attachments:
    get:
      description: |
        Returns a list of [attachments](ref:testforms#graphattachment) for a matrix.
      operationId: getMatrixAttachments
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                    fileName: status.pdf
                  - id: 8b37229a-4f8b-47c4-aba8-122e48d63a85
                    fileName: process.pdf
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of matrix attachments
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/attachments/{attachmentId}:
    get:
      description: |
        Retrieve a single [attachment](ref:testforms#graphattachment) by its ID.
      operationId: getMatrixAttachmentById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                fileName: status.pdf
              schema:
                $ref: '#/components/schemas/GraphAttachment'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single matrix attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/attachments/{attachmentId}/download:
    post:
      description: |
        Asynchronously downloads an attachment from a [matrix](ref:testforms#matrix).

        Responses include a `Location` header, which indicates where to poll for download results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the download is ready, its status will be `completed`, and the response body includes a `resourceURL`. To download the file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the download request. For more details, see [Authentication documentation](ref:authentication).
      operationId: matrixAttachmentDownloadById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a matrix attachment download
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/attachments/{attachmentId}/export:
    post:
      description: |
        Asynchronously exports an attachment for a [matrix](ref:testforms#matrix) to .PDF.

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: matrixAttachmentExportById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/AttachmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentExport'
        description: Details about the attachment upload
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate an export of a matrix attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples:
    get:
      description: |
        Returns a list of [samples](ref:testforms#matrixsample).
      operationId: getSamples
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: ce4a6c7f-15ad-445c-a76a-f457d53f667a
                    dataValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                        value: "123"
                      - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                        value: "101.10"
                    resultValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                        value: PASS
                  - id: c4d64a06-f151-4d78-9618-3ba3b298ef7b
                    dataValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                        value: "456"
                      - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                        value: "202.20"
                    resultValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                        value: FAIL
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/MatrixSamplesListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of samples
      tags:
        - Test Forms
    post:
      description: |
        Create a new [sample](ref:testforms#matrixsample) in a [matrix](ref:testforms#matrix). The new sample will be appended to the end of the matrix.
      operationId: createSample
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  dataValues:
                    - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                      value: "789"
                    - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                      value: "303.3"
                  resultValues:
                    - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                      value: PASS
            schema:
              $ref: '#/components/schemas/MatrixSample'
        description: The properties of the sample to create
        required: true
      responses:
        "201":
          content:
            application/json:
              example:
                id: df5a6c7f-15ad-445c-a76a-f457d53f678b
                dataValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                    value: "789"
                  - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                    value: "303.30"
                resultValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                    value: PASS
              schema:
                $ref: '#/components/schemas/MatrixSample'
          description: Created
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Create a new sample
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/insertion:
    post:
      description: Inserts multiple [samples](ref:testforms#matrixsamples) into a [matrix](ref:testforms#matrix), and appends new samples to the end of the matrix. You can leave columns empty for later use. For new samples, provide no IDs; the endpoint generates them.
      operationId: sampleInsertion
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - dataValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                        value: "123"
                      - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                        value: "101.1"
                    resultValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                        value: PASS
                  - dataValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                        value: "456"
                      - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                        value: "202.2"
                    resultValues:
                      - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                        value: FAIL
            schema:
              $ref: '#/components/schemas/MatrixSamples'
        description: Details about the samples to insert
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Insert samples
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/update:
    post:
      description: Updates multiple [samples](ref:testforms#matrixsamples), with the requestBody of each specifying columns to update by their IDs. Columns not included in the request remain as-is.
      operationId: sampleUpdate
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - dataValues:
                      - column: 6d870cd1-7bbe-4b14-b85d-f152913b068c
                        value: "23897"
                    id: 3dd42da0-3543-4e03-ac4a-2ddefebe27d6
                    resultValues:
                      - column: 674a9283-fd03-425d-bd62-0552263699e2
                        value: PASS
                  - dataValues:
                      - column: 6d870cd1-7bbe-4b14-b85d-f152913b068c
                        value: "9125"
                    id: 4ee53eb1-3543-4e03-ac4a-3eef0fcf38e7
                    resultValues:
                      - column: 674a9283-fd03-425d-bd62-0552263699e2
                        value: FAIL
            schema:
              $ref: '#/components/schemas/MatrixSamples'
        description: Details about the samples to update
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Update samples
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}:
    get:
      description: |
        Retrieves a [sample](ref:testforms#matrixsample) given its ID.
      operationId: getSampleById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
        - $ref: '#/components/parameters/Expand'
      responses:
        "200":
          content:
            application/json:
              example:
                id: ce4a6c7f-15ad-445c-a76a-f457d53f667a
                dataValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                    value: "123"
                  - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                    value: "101.10"
                resultValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                    value: PASS
              schema:
                $ref: '#/components/schemas/MatrixSample'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single sample
      tags:
        - Test Forms
    patch:
      description: |
        Partially updates the properties of a [sample](ref:testforms#matrixsample). Note: Cell values must always be strings, even if they represent a number.
        ### Options
        |Path|PATCH Operations Supported|
        |---|---|
        |`/dataValues/<index>/value`|`replace`|
        |`/resultValues/<index>/value`|`replace`|
      operationId: partiallyUpdateSampleById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
      requestBody:
        content:
          application/json:
            examples:
              body:
                value:
                  - op: replace
                    path: /dataValues/0/value
                    value: "22.5"
            schema:
              $ref: '#/components/schemas/JSONPatchDocument'
        description: A collection of patch operations to apply to the sample.
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                id: ce4a6c7f-15ad-445c-a76a-f457d53f667a
                dataValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2929b
                    value: "22.5"
                  - column: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
                    value: "101.20"
                resultValues:
                  - column: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
                    value: PASS
              schema:
                $ref: '#/components/schemas/MatrixSample'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Partially update a single sample
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}/attachmentUpload:
    post:
      description: |
        Starts the process to upload and attach a file to a [sample](ref:testforms#matrixsample) using a [graph attachment upload](ref:testforms#graphattachmentupload) object. The response body will include an `uploadUrl`. To upload the file contents, perform a PUT on the `uploadUrl` with the same authentication credentials and flow as the attachmentUpload request. For more details, see [Authentication documentation](ref:authentication).

        The response also includes a `Location` header, which indicates where to poll for operation results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid).
      operationId: sampleAttachmentUpload
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentUpload'
        description: Details about the attachment upload
        required: true
      responses:
        "202":
          content:
            application/json:
              example:
                uploadUrl: <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentUploadResponse'
          description: Accepted
          headers:
            Location:
              $ref: '#/components/headers/Location'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:write
      summary: Initiate an upload of a sample attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}/attachments:
    get:
      description: |
        Returns a list of [attachments](ref:testforms#graphattachment) for a [sample](ref:testforms#matrixsample).
      operationId: getSampleAttachments
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
      responses:
        "200":
          content:
            application/json:
              example:
                data:
                  - id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                    fileName: status.pdf
                  - id: 8b37229a-4f8b-47c4-aba8-122e48d63a85
                    fileName: process.pdf
                '@nextLink': <opaque_url>
              schema:
                $ref: '#/components/schemas/GraphAttachmentsListResult'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a list of sample attachments
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}/attachments/{attachmentId}:
    get:
      description: |
        Retrieve a single [attachment](ref:testforms#graphattachment) by its ID.
      operationId: getSampleAttachmentById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "200":
          content:
            application/json:
              example:
                id: 80eb580a-60c3-4b48-9ea2-2e9faa3fe8b8
                fileName: status.pdf
              schema:
                $ref: '#/components/schemas/GraphAttachment'
          description: OK
          headers: {}
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Retrieve a single sample attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}/attachments/{attachmentId}/download:
    post:
      description: |
        Asynchronously downloads an attachment from a [sample](ref:testforms#matrixsample).

        Responses include a `Location` header, which indicates where to poll for download results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the download is ready, its status will be `completed`, and the response body includes a `resourceURL`. To download the file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the download request. For more details, see [Authentication documentation](ref:authentication).
      operationId: sampleAttachmentDownloadById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate a download of a sample attachment
      tags:
        - Test Forms
  /testForms/{testFormId}/testPhases/{testPhaseId}/matrices/{matrixId}/samples/{sampleId}/attachments/{attachmentId}/export:
    post:
      description: |
        Asynchronously exports an attachment for a [sample](ref:testforms#matrixsample) to .PDF.

        Responses include a `Location` header, which indicates where to poll for export results. For more details on long-running job polling, see [Operations endpoint](ref:getoperationbyid). When the export completes, its status will be `completed`, and the response body includes a `resourceURL`. To download the exported file, perform a GET on the `resourceURL` with the same authentication credentials and flow as the export request. For more details, see [Authentication documentation](ref:authentication).
      operationId: sampleAttachmentExportById
      parameters:
        - $ref: '#/components/parameters/TestFormId'
        - $ref: '#/components/parameters/TestPhaseId'
        - $ref: '#/components/parameters/MatrixId'
        - $ref: '#/components/parameters/SampleId'
        - $ref: '#/components/parameters/AttachmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphAttachmentExport'
        description: Details about the attachment export
        required: true
      responses:
        "202":
          $ref: '#/components/responses/LongRunningSuccess'
        "400":
          $ref: '#/components/responses/BadRequest'
        "401":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFound'
        "409":
          $ref: '#/components/responses/Conflict'
        "429":
          $ref: '#/components/responses/TooManyRequests'
        "500":
          $ref: '#/components/responses/InternalServerError'
        "503":
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - oauth:
            - graph:read
      summary: Initiate an export of a sample attachment
      tags:
        - Test Forms
components:
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /iam/v1/oauth2/token
          scopes:
            activity:read: Read Activity data.
            file:read: Read files.
            file:write: Write files.
            graph:read: Read Graph data.
            graph:write: Write Graph data.
            organization:read: Read Organization data.
            organization:write: Write Organization data.
    contextless-oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /iam/v1/oauth2/token
          scopes:
            file:read: Read files.
            file:write: Write files.
            organization:read: Read Organization data.
            organization:write: Write Organization data.
  parameters:
    ActivityId:
      description: The unique identifier of the activity
      example: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFJNYjJjZVFYVmthWFJNYjJjNk5ETXpaamN4TUdVMU5HRTBOR1V5Tm1JeU5ERmtOREJsWXpNMlpHWXhNVFE=
      in: path
      name: activityId
      required: true
      schema:
        type: string
    MaxPageSize:
      description: The maximum number of results to retrieve
      in: query
      name: $maxpagesize
      required: false
      schema:
        default: 1000
        maximum: 1000
        minimum: 1
        type: integer
    Next:
      description: Pagination cursor for next set of results.
      in: query
      name: $next
      required: false
      schema:
        example: JTI0bGltaXQ9MTAwJiUyNG9mZnNldD0xMDA
        type: string
    OrderBy:
      description: One or more comma-separated expressions to indicate the order in which to sort the results.
      in: query
      name: $orderBy
      required: false
      schema:
        type: string
    ActivityActionId:
      description: The unique identifier of the activity action
      example: com.workiva.activity.retention_policy.update
      in: path
      name: activityActionId
      required: true
      schema:
        type: string
    AnchorId:
      description: The unique identifier of the anchor
      in: path
      name: anchorId
      required: true
      schema:
        type: string
    Revision:
      description: Returns resources at a specific revision
      example: 1A2B3C4D
      in: query
      name: $revision
      required: false
      schema:
        type: string
    DestinationLinkId:
      description: The unique identifier of the destination link
      example: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
      in: path
      name: destinationLinkId
      required: true
      schema:
        type: string
    DrawingId:
      description: The unique identifier of a drawing
      in: path
      name: drawingId
      required: true
      schema:
        type: string
    ImageId:
      description: The unique identifier of the image
      in: path
      name: imageId
      required: true
      schema:
        type: string
    RichTextId:
      description: The unique identifier of the rich text content
      in: path
      name: richTextId
      required: true
      schema:
        type: string
    StyleGuideId:
      description: The unique identifier of the style guide
      example: WW91IGZvdW5kIG1lIQ
      in: path
      name: styleGuideId
      required: true
      schema:
        type: string
    TableId:
      description: The unique identifier for the table
      example: WW91IGZvdW5kfIG1lIQ
      in: path
      name: tableId
      required: true
      schema:
        type: string
    MaxCellsPerPage:
      description: The maximum number of cells to retrieve. The default is 50000. The maximum allowed value is 50000.
      in: query
      name: $maxcellsperpage
      required: false
      schema:
        default: 50000
        maximum: 50000
        minimum: 1
        type: integer
    StartRow:
      description: The inclusive start row of the range of cells to retrieve. If this parameter is omitted, then the range will be unbounded in this direction.
      example: 1
      in: query
      name: startRow
      required: false
      schema:
        type: integer
    StopRow:
      description: The inclusive stop row of the range of cells to retrieve. If this parameter is omitted, then the range will be unbounded in this direction.
      example: 1
      in: query
      name: stopRow
      required: false
      schema:
        type: integer
    StartColumn:
      description: The inclusive start column of the range of cells to retrieve. If this parameter is omitted, then the range will be unbounded in this direction.
      example: 1
      in: query
      name: startColumn
      required: false
      schema:
        type: integer
    StopColumn:
      description: The inclusive stop column of the range of cells to retrieve. If this parameter is omitted, then the range will be unbounded in this direction.
      example: 1
      in: query
      name: stopColumn
      required: false
      schema:
        type: integer
    RangeLinkId:
      description: The unique identifier of a range link.
      in: path
      name: rangeLinkId
      required: true
      schema:
        $ref: '#/components/schemas/RangeLinkId'
    Filter:
      description: The properties to filter the results by.
      in: query
      name: $filter
      required: false
      schema:
        type: string
    MilestoneId:
      description: The unique identifier of a milestone.
      in: path
      name: milestoneId
      required: true
      schema:
        $ref: '#/components/schemas/MilestoneId'
    ProgramId:
      description: The unique identifier of the program
      in: path
      name: programId
      required: true
      schema:
        type: string
    DimensionId:
      description: The unique identifier of the dimension
      in: path
      name: dimensionId
      required: true
      schema:
        type: string
    MetricId:
      description: The unique identifier of the metric
      in: path
      name: metricId
      required: true
      schema:
        type: string
    MetricValueId:
      description: The unique identifier of the value
      in: path
      name: metricValueId
      required: true
      schema:
        type: string
    TopicId:
      description: The unique identifier of the topic
      in: path
      name: topicId
      required: true
      schema:
        type: string
    Wk-Service-Provider:
      description: The unique identifier of the service provider
      in: header
      name: Wk-Service-Provider
      required: true
      schema:
        type: string
    OrganizationId:
      description: The unique identifier of the organization
      example: d6e178fd-4dd5-47e5-9457-68dd64b03655
      in: path
      name: organizationId
      required: true
      schema:
        format: uuid
        type: string
    UserId:
      description: The unique identifier of the user
      in: path
      name: userId
      required: true
      schema:
        type: string
    Expand:
      description: Returns related resources inline with the main resource
      example: |
        ?$expand=relationships
      in: query
      name: $expand
      required: false
      schema:
        type: string
    WorkspaceId:
      description: The unique identifier of the workspace
      in: path
      name: workspaceId
      required: true
      schema:
        type: string
    GroupId:
      description: The unique identifier of the group
      example: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU0VSUznxMjD1NTVyNDg3
      in: path
      name: groupId
      required: true
      schema:
        type: string
    WorkspaceMembershipId:
      description: The unique identifier of the workspace membership
      in: path
      name: workspaceMembershipId
      required: true
      schema:
        type: string
    SolutionId:
      description: The unique identifier of the solution
      in: path
      name: solutionId
      required: true
      schema:
        type: string
    IamCookie:
      description: Cookie header for IAM requests.
      in: header
      name: Cookie
      required: false
      schema:
        type: string
    DocumentId:
      description: The unique identifier of the document
      in: path
      name: documentId
      required: true
      schema:
        type: string
    SectionId:
      description: The unique identifier of the section
      in: path
      name: sectionId
      required: true
      schema:
        type: string
    FileId:
      description: The unique identifier of the file
      in: path
      name: fileId
      required: true
      schema:
        type: string
    RecordId:
      description: The unique identifier of the record
      in: path
      name: recordId
      required: true
      schema:
        type: string
    ReportId:
      description: The unique identifier of the report
      in: path
      name: reportId
      required: true
      schema:
        type: string
    TypeId:
      description: The unique identifier of the type
      in: path
      name: typeId
      required: true
      schema:
        type: string
    OperationId:
      description: The unique identifier of the operation
      in: path
      name: operationId
      required: true
      schema:
        type: string
    PermissionId:
      description: The unique identifier of the permission
      in: path
      name: permissionId
      required: true
      schema:
        type: string
    PresentationId:
      description: The unique identifier of the presentation
      in: path
      name: presentationId
      required: true
      schema:
        type: string
    SlideLayoutId:
      description: The unique identifier of the slide layout
      in: path
      name: slideLayoutId
      required: true
      schema:
        type: string
    SlideId:
      description: The unique identifier of the slide
      in: path
      name: slideId
      required: true
      schema:
        type: string
    SpreadsheetId:
      description: The unique identifier of the spreadsheet
      in: path
      name: spreadsheetId
      required: true
      schema:
        type: string
    SheetId:
      description: The unique identifier of the sheet
      in: path
      name: sheetId
      required: true
      schema:
        type: string
    DatasetDeleteValues:
      description: Indicates whether values should be deleted along with the dataset
      example: false
      in: query
      name: $deletevalues
      required: false
      schema:
        default: false
        type: boolean
    CellRange:
      description: |
        The range to query. If not provided, the entire sheet will be queried.
        A1 style representation of a cell or range. A range my be unbounded in any/all directions by leaving off the corresponding column or row.
      in: query
      name: $cellrange
      required: false
      schema:
        example: A2:B
        type: string
    Fields:
      description: A restricted set of fields for a given resource.
      in: query
      name: $fields
      required: false
      schema:
        type: string
    Range:
      description: The range of values, in A1-style notation
      in: path
      name: range
      required: true
      schema:
        type: string
        nullable: true
    ValueStyle:
      description: Whether to retrieve `raw` or `calculated` cell values. For example, if a cell's value is `=1+1`, `raw` retrieves the value `=1+1`, while `calculated` retrieves `2`.
      example: raw
      in: query
      name: $valuestyle
      required: false
      schema:
        default: calculated
        enum:
          - raw
          - calculated
        type: string
    TaskId:
      description: The unique identifier of the task
      in: path
      name: taskId
      required: true
      schema:
        type: string
    TestFormId:
      description: The unique identifier of the test form
      in: path
      name: testFormId
      required: true
      schema:
        type: string
    TestPhaseId:
      description: The unique identifier of the test phase
      in: path
      name: testPhaseId
      required: true
      schema:
        type: string
    AttachmentId:
      description: The unique identifier of the attachment
      in: path
      name: attachmentId
      required: true
      schema:
        type: string
    MatrixId:
      description: The unique identifier of the matrix
      in: path
      name: matrixId
      required: true
      schema:
        type: string
    SampleId:
      description: The unique identifier of the sample
      in: path
      name: sampleId
      required: true
      schema:
        type: string
  headers:
    RetryAfter:
      description: The number of seconds to wait before polling for a result and between polling attempts.
      schema:
        type: integer
    Location:
      description: The location to poll for the operation result.
      schema:
        type: string
  schemas:
    ActivityAction:
      description: Details about the activity action
      properties:
        alias:
          description: The legacy identifier of the activity action
          example: workspace_membership_create
          readOnly: true
          type: string
        category:
          description: Category of the activity action
          example: Administration
          readOnly: true
          type: string
        deprecated:
          description: Whether or not the activity action has been identified for removal
          readOnly: true
          type: boolean
        id:
          description: The unique identifier of the activity action
          example: com.workiva.administration.workspace_membership.create
          readOnly: true
          type: string
        name:
          description: Name of the activity action
          example: Workspace membership created
          readOnly: true
          type: string
      required:
        - id
      type: object
    ActivityAttachments:
      description: An array of activity attachments which are generic JSON elements which can provide more context and information
      example:
        - enabled:
            new: true
            old: false
      items:
        type: object
      readOnly: true
      type: array
    User:
      description: |
        A user refernenced by their unique identifier
      type: object
      properties:
        id:
          description: The unique identifier of the user
          type: string
          example: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
          nullable: false
    Action:
      description: |
        When the action was performed, and details about the user who did it
      properties:
        dateTime:
          description: When the action was performed
          example: "2019-10-30T15:03:27Z"
          format: date-time
          readOnly: true
          type: string
        user:
          allOf:
            - $ref: '#/components/schemas/User'
          nullable: true
      type: object
    Organization:
      description: |
        Details about the organization
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        id:
          description: The unique identifier of the organization
          example: d6e178fd-4dd5-47e5-9457-68dd64b03655
          readOnly: true
          type: string
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        name:
          description: The name of the organization
          example: Workiva Inc.
          type: string
        status:
          enum:
            - active
            - inactive
          readOnly: true
          type: string
      type: object
    Outcome:
      description: Result of the activity action performed
      enum:
        - success
        - failure
        - pending
        - unknown
      type: string
    Performer:
      description: Details about the resource that performed an activity
      properties:
        displayName:
          description: Display name of the performer
          example: Adam Admin
          readOnly: true
          type: string
        id:
          description: The unique identifier of the Performer
          example: V0ZWc2VyHzE0NT8xNzAyMDA
          readOnly: true
          type: string
        ipAddress:
          description: The IP address of origination for the Performer
          example: |
            192.168.1.1
          readOnly: true
          type: string
        type:
          description: Type of the resource that performed the Activity
          example: com.workiva.iam.principal.user
          readOnly: true
          type: string
        uniqueName:
          description: Human-friendly identifier of the resource that performed the Activity
          example: admin_admin@example.com
          readOnly: true
          type: string
      required:
        - id
        - type
      type: object
    ActivityTags:
      description: An array of tags for the activity
      example:
        - correlationId:1a2b3c4d5e6f000db88c0009f9f1
        - eventId:LM4s-wJyTgW4NTbNZi_86v
      items:
        type: string
      readOnly: true
      type: array
    Target:
      description: Details about the resource affected by an Activity
      properties:
        displayName:
          description: Display name of the target
          example: John Public
          readOnly: true
          type: string
        id:
          description: The unique identifier of the target
          example: V0ZVc2VyHzY0ODY4NjQ1MzE1NTQ
          readOnly: true
          type: string
        type:
          description: Type of the target resource
          example: com.workiva.administration.user
          readOnly: true
          type: string
        uniqueName:
          description: Human-friendly identifier of the target
          example: john_public
          readOnly: true
          type: string
      required:
        - id
        - type
      type: object
    TargetList:
      items:
        $ref: '#/components/schemas/Target'
      type: array
    Solution:
      description: |
        A set of capabilities available to an Organization
      properties:
        id:
          description: The unique identifier for the Solution
          example: "60"
          type: string
        name:
          description: The name of the Solution
          example: Connected Global Statutory Reporting (with Entity Management)
          type: string
          nullable: true
      type: object
    Workspace:
      description: |
        Details about a workspace
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        id:
          description: The unique identifier of the workspace
          example: QWNjb3VudB81NjM5NDQ1NjA0NzI4ODMy
          type: string
          nullable: true
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        name:
          description: The name of the workspace
          example: Quarterly Planning
          type: string
        organization:
          allOf:
            - $ref: '#/components/schemas/Organization'
          description: The organization that this workspace belongs to
          nullable: true
          readOnly: true
        solutions:
          items:
            $ref: '#/components/schemas/Solution'
          nullable: true
          maxItems: 1
          type: array
      type: object
    Activity:
      description: Details about the activity
      properties:
        action:
          $ref: '#/components/schemas/ActivityAction'
        activityDateTime:
          description: When the activity occurred
          example: "2021-01-30T13:55:01Z"
          format: date-time
          readOnly: true
          type: string
        attachments:
          $ref: '#/components/schemas/ActivityAttachments'
        id:
          description: The unique identifier of the activity
          example: NjE0MjIxODItOTVkYi00YmFjLWI4ZjktNzRkMDg1OTdlMDgwOlFYVmthWFJNYjJjZVFYVmthWFJNYjJjNk5ETXpaamN4TUdVMU5HRTBOR1V5Tm1JeU5ERmtOREJsWXpNMlpHWXhNVFE=
          readOnly: true
          type: string
        organization:
          allOf:
            - $ref: '#/components/schemas/Organization'
          description: The organization's ID and name
        outcome:
          $ref: '#/components/schemas/Outcome'
        performer:
          $ref: '#/components/schemas/Performer'
        summary:
          description: Summary of the activity performed
          example: Adam Admin added the user 'John Public' to the workspace 'Organization Management'
          readOnly: true
          type: string
        tags:
          $ref: '#/components/schemas/ActivityTags'
        targets:
          $ref: '#/components/schemas/TargetList'
        workspace:
          allOf:
            - $ref: '#/components/schemas/Workspace'
          nullable: true
          description: The workspace's ID and name
      required:
        - id
        - action
        - performer
        - targets
        - activityDateTime
      type: object
    ErrorDetails:
      description: Additional details of the error
      properties:
        code:
          example: InvalidOrder
          type: string
        message:
          example: Ordering by 'name desc' is not supported
          type: string
        target:
          example: name
          type: string
      type: object
    ErrorResponse:
      description: Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.
      properties:
        code:
          description: One of a server-defined set of error codes.
          example: BadArgument
          type: string
        details:
          items:
            $ref: '#/components/schemas/ErrorDetails'
          type: array
        documentationUrl:
          description: Link to some documentation relevant to the issue or endpoint in use.
          example: https://developers.workiva.com
          type: string
        message:
          description: A human-readable representation of the error.
          example: The provided $orderBy option is not supported.
          type: string
        target:
          description: The target of the error.
          example: $orderBy
          type: string
        version:
          description: The API version in use when the error occurred.
          example: "2026-01-01"
          type: string
      type: object
    ActivityActionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `ActivityAction` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/ActivityAction'
          type: array
      required:
        - data
      type: object
    Caret:
      description: A caret (as in Caret Navigation) is a location between two characters in a paragraph.
      properties:
        offset:
          description: The number of characters to skip over in a paragraph to where the Caret is located.
          example: 10
          type: integer
        paragraphIndex:
          description: The zero-based index of a paragraph.
          example: 1
          type: integer
      required:
        - paragraphIndex
        - offset
      type: object
    RichTextSelection:
      description: Describes a selection within piece of rich text
      example:
        start:
          offset: 0
          paragraphIndex: 0
        stop:
          offset: 10
          paragraphIndex: 2
      properties:
        start:
          $ref: '#/components/schemas/Caret'
        stop:
          $ref: '#/components/schemas/Caret'
      required:
        - start
        - stop
      type: object
    RichTextSelectionAnchorAttachmentPointType:
      description: The type of attachment point.
      enum:
        - comment
        - sourceLink
      example: sourceLink
      type: string
    RichTextSelectionAnchorAttachmentPoint:
      description: An attachment point to a selection in rich text content.
      example:
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 0
        type: sourceLink
      properties:
        selection:
          $ref: '#/components/schemas/RichTextSelection'
        type:
          $ref: '#/components/schemas/RichTextSelectionAnchorAttachmentPointType'
      type: object
    CellRange:
      description: |
        A range of cells in a table. If any field is omitted or null, the range is unbounded in that direction. All indexes  are zero based.
      example:
        startColumn: 0
        startRow: 5
        stopColumn: 3
        stopRow: 9
      properties:
        startColumn:
          description: The index of the first column (inclusive) of the range.
          example: 0
          nullable: true
          type: integer
        startRow:
          description: The index of the first row (inclusive) of the range.
          example: 5
          nullable: true
          type: integer
        stopColumn:
          description: The index of the last column (inclusive) of the range.
          example: 3
          nullable: true
          type: integer
        stopRow:
          description: The index of the last row (inclusive) of the range.
          example: 9
          nullable: true
          type: integer
      type: object
    TableRangeAnchorAttachmentPoint:
      additionalProperties: false
      description: A table range anchor attachment point.
      properties:
        range:
          allOf:
            - $ref: '#/components/schemas/CellRange'
      type: object
    DrawingElementId:
      description: Identifier of the drawing element
      example: WW91IGZvdW5kIG1lIQ
      minLength: 1
      type: string
    DrawingElementAnchorAttachmentPointType:
      description: The type of attachment point.
      enum:
        - comment
      example: comment
      type: string
    DrawingElementAnchorAttachmentPoint:
      description: An attachment point to a selection of drawing elements in a drawing.
      properties:
        selection:
          description: A selection of one or more drawing elements
          items:
            $ref: '#/components/schemas/DrawingElementId'
          type: array
        type:
          $ref: '#/components/schemas/DrawingElementAnchorAttachmentPointType'
      required:
        - selection
        - type
      type: object
    DrawingRichTextSelection:
      description: Describes a selection within a drawing element's text
      example:
        start:
          offset: 0
          paragraphIndex: 0
        stop:
          offset: 10
          paragraphIndex: 0
        drawingElement: 2c64382b45553de1
      properties:
        start:
          $ref: '#/components/schemas/Caret'
        stop:
          $ref: '#/components/schemas/Caret'
        drawingElement:
          $ref: '#/components/schemas/DrawingElementId'
      required:
        - start
        - stop
        - drawingElement
      type: object
    DrawingRichTextSelectionAnchorAttachmentPointType:
      description: The type of attachment point.
      enum:
        - comment
        - sourceLink
      example: comment
      type: string
    DrawingRichTextSelectionAnchorAttachmentPoint:
      description: An attachment point to a selection in a drawing's rich text content.
      properties:
        selection:
          $ref: '#/components/schemas/DrawingRichTextSelection'
        type:
          $ref: '#/components/schemas/DrawingRichTextSelectionAnchorAttachmentPointType'
      required:
        - selection
        - type
      type: object
    AnchorAttachmentPoint:
      description: An attachment point for an anchor.
      example:
        richTextSelection:
          selection:
            start:
              offset: 0
              paragraphIndex: 0
            stop:
              offset: 10
              paragraphIndex: 0
          type: sourceLink
        type: richTextSelection
      properties:
        richTextSelection:
          allOf:
            - $ref: '#/components/schemas/RichTextSelectionAnchorAttachmentPoint'
          nullable: true
        tableRange:
          allOf:
            - $ref: '#/components/schemas/TableRangeAnchorAttachmentPoint'
          nullable: true
        drawingSelection:
          allOf:
            - $ref: '#/components/schemas/DrawingElementAnchorAttachmentPoint'
          nullable: true
        drawingRichTextSelection:
          allOf:
            - $ref: '#/components/schemas/DrawingRichTextSelectionAnchorAttachmentPoint'
          nullable: true
        type:
          description: The type of attachment point.
          enum:
            - richTextSelection
            - tableRange
            - drawingSelection
            - drawingRichTextSelection
          example: richTextSelection
          type: string
      type: object
    TableId:
      description: The unique identifier of a table
      type: string
      minLength: 1
      example: WA7i5vbm7lNaEn6XT97lNaEn6XT9AtcW5vb22BJjMrqxmrujMrqxmru
    ContentRef:
      description: A reference to a specific content item.
      example:
        richText: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
        type: richText
      properties:
        richText:
          description: Identifier of a rich text or null if the content isn't a rich text.
          nullable: true
          type: string
        table:
          description: Identifier of a table or null if the content isn't a table.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TableId'
        drawing:
          description: Identifier of a drawing or null if the content isn't a drawing.
          nullable: true
          type: string
        type:
          description: The type of content.
          enum:
            - richText
            - table
            - drawing
          example: richText
          type: string
      type: object
    ExtensionType:
      description: Indicates the type of the anchor extension.
      enum:
        - comment
        - destinationLink
      example: comment
      type: string
    Anchor:
      description: |
        An anchor is a reference to a specific location within a piece of content.
      properties:
        attachmentPoint:
          $ref: '#/components/schemas/AnchorAttachmentPoint'
        content:
          $ref: '#/components/schemas/ContentRef'
        extensionTypes:
          items:
            $ref: '#/components/schemas/ExtensionType'
          type: array
        id:
          description: The unique identifier for the anchor.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          type: string
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    AnchorRef:
      description: A reference to an anchor
      example:
        anchor: WA46Pio9ANITRWdzvNwY4F50bj3yHRZoyHrY2N1L7rNyQywqAva9B4dgqzIvIqHAg4ODg6e
        content:
          richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
          type: richText
        revision: 2c6438ab4541de6f
      properties:
        anchor:
          description: The unique identifier for the anchor.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          type: string
        content:
          $ref: '#/components/schemas/ContentRef'
        revision:
          description: The revision of the anchor being referred to
          example: 24601abc
          type: string
      required:
        - anchor
        - content
        - revision
      title: AnchorRef
      type: object
    DestinationLinkSourceType:
      default: unidentified
      description: |
        The type of the source for a destination link. Will be unidentified if the type of the source isn't currently supported.
      enum:
        - unidentified
        - anchor
      example: anchor
      type: string
    DestinationLinkSource:
      description: The source of destination link content.
      example:
        anchor:
          anchor: WA46Pio9ANITRWdzvNwY4F50bj3yHRZoyHrY2N1L7rNyQywqAva9B4dgqzIvIqHAg4ODg6e
          content:
            richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
            type: richText
          revision: 2c6438ab4541de6f
        type: anchor
      properties:
        anchor:
          allOf:
            - $ref: '#/components/schemas/AnchorRef'
          description: Reference to the source anchor if the type is anchor.
          nullable: true
        type:
          $ref: '#/components/schemas/DestinationLinkSourceType'
        unidentified:
          description: Reference to an unidentified source if the type is unidentified.
          nullable: true
          type: object
      required:
        - type
      type: object
    DestinationLinkStatus:
      default: connected
      description: Destination link status
      enum:
        - connected
        - disconnected
      example: connected
      type: string
    DestinationLink:
      description: Content containing a destination link.
      example:
        content:
          richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
          type: richText
        id: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
        revision: 2c6438ab4541de6d
        source:
          anchor:
            anchor: WA46Pio9ANITRWdzvNwY4F50bj3yHRZoyHrY2N1L7rNyQywqAva9B4dgqzIvIqHAg4ODg6e
            content:
              richText: WA9ATl59AXnS148HVGnq9ARvjSyJtUu7DObtx9AfnvtSBXU5YqMpFAZR36Mai1g
              type: richText
            revision: 2c6438ab4541de6f
          type: anchor
        status: connected
      properties:
        content:
          $ref: '#/components/schemas/ContentRef'
        id:
          description: The unique identifier for the destination link.
          example: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
          type: string
        revision:
          description: Identifies a unique revision of content.
          example: 2c6438ab4541de6d
          type: string
        source:
          $ref: '#/components/schemas/DestinationLinkSource'
        status:
          $ref: '#/components/schemas/DestinationLinkStatus'
      required:
        - id
        - content
        - revision
        - source
        - status
      type: object
    AsyncAcceptedResponse:
      description: |
        Response body for asynchronous operations. Contains an `operationLocation` field that specifies the URL to poll for the operation result. This URL can also be found in the `Location`  header on the response.
      type: object
      properties:
        operationLocation:
          description: The URL to poll for the operation result.
          type: string
          example: https://api.app.wdesk.com/operations/128f274395254cf17eda6b3eb3d021b9
    Dimensions:
      description: |
        A dimension of a rectangle for properties of objects such as a shape, text box, table, chart, image, or page.
      example:
        height: 240
        width: 320
      properties:
        height:
          description: The vertical measurement in points.
          example: 240
          minimum: 1
          type: number
        width:
          description: The horizontal measurement in points.
          example: 320
          minimum: 1
          type: number
      required:
        - width
        - height
      type: object
    Color:
      description: Represents a color.
      example:
        blue: 128
        green: 128
        red: 128
      properties:
        blue:
          description: The blue component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
        green:
          description: The green component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
        red:
          description: The red component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
      required:
        - red
        - green
        - blue
      type: object
    Opacity:
      default: 1
      description: The opacity of a color where 1.0 is completely opaque and 0.0 is completely transparent.
      example: 0.5
      type: number
    Fill:
      description: A shape or box fill settings for things like shapes. Use a null to indicate no fill.
      nullable: true
      properties:
        color:
          $ref: '#/components/schemas/Color'
        opacity:
          $ref: '#/components/schemas/Opacity'
      required:
        - color
      type: object
    Margins:
      description: |
        The margins of a rectangle for properties of objects such as a shape, text box, or page.
      example:
        bottom: 10
        left: 10
        right: 10
        top: 10
      nullable: true
      properties:
        bottom:
          description: The bottom edge margin in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        left:
          description: The left edge margin in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        right:
          description: The right edge margin in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        top:
          description: The top edge margin in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
      type: object
    Position:
      description: A coordinate position on a page, slide, etc.
      properties:
        x:
          description: The horizontal offset in points typically from the left edge.
          example: 0
          type: number
        'y':
          description: The vertical offset in points typically from the top edge where larger numbers are further down/
          example: 0
          type: number
      required:
        - x
        - 'y'
      type: object
    DesignPageRelative:
      allOf:
        - $ref: '#/components/schemas/Position'
      description: Represents the position of a drawing relative to the top-left corner of the section.
      nullable: true
      type: object
    ParagraphRelative:
      allOf:
        - $ref: '#/components/schemas/Position'
        - properties:
            paragraphIndex:
              description: The zero-based inclusive index of a paragraph.
              example: 3
              minimum: 0
              type: integer
          required:
            - paragraphIndex
          type: object
      description: Represents a position relative to the start of the paragraph corresponding to the paragraph index.
      nullable: true
      type: object
    SlideRelative:
      allOf:
        - $ref: '#/components/schemas/Position'
      description: Represents the position of a drawing relative to the top-left corner a slide.
      nullable: true
      type: object
    DrawingRelativeType:
      description: The relative position type used for a drawing element.
      enum:
        - designPageRelative
        - paragraphRelative
        - slideRelative
      example: paragraphRelative
      type: string
    DrawingRelativePosition:
      description: The relative position of a drawing element.
      example:
        paragraphRelative:
          paragraphIndex: 3
          x: 0
          'y': 0
        type: paragraphRelative
      properties:
        designPageRelative:
          $ref: '#/components/schemas/DesignPageRelative'
        paragraphRelative:
          $ref: '#/components/schemas/ParagraphRelative'
        slideRelative:
          $ref: '#/components/schemas/SlideRelative'
        type:
          $ref: '#/components/schemas/DrawingRelativeType'
      required:
        - type
      type: object
    StrokePattern:
      default: solid
      description: The pattern to apply to the stroke.
      enum:
        - solid
        - dashed
        - dotted
        - dash-dot
        - ditted
        - small-dash
        - long-dash
        - long-dash-dot
        - long-dash-dot-dot
      example: solid
      type: string
    Stroke:
      description: Line stroke setting for things like shape edges. Use a null to indicate no stroke line.
      nullable: true
      properties:
        color:
          $ref: '#/components/schemas/Color'
        pattern:
          $ref: '#/components/schemas/StrokePattern'
        width:
          default: 1
          description: The width of the stroke in points.
          example: 2
          type: number
      required:
        - color
      type: object
    WrapStyleType:
      description: The relative position type
      enum:
        - inFrontOfText
        - wrapText
        - behindText
      nullable: true
      type: string
    BaseDrawingElement:
      description: A foundational element for all drawing models.
      properties:
        dimensions:
          $ref: '#/components/schemas/Dimensions'
        fill:
          $ref: '#/components/schemas/Fill'
        id:
          $ref: '#/components/schemas/DrawingElementId'
        margins:
          $ref: '#/components/schemas/Margins'
        position:
          $ref: '#/components/schemas/DrawingRelativePosition'
        stroke:
          $ref: '#/components/schemas/Stroke'
        wrapStyle:
          $ref: '#/components/schemas/WrapStyleType'
      required:
        - id
        - position
        - dimensions
        - wrapStyle
        - margins
      type: object
    TableRef:
      description: |
        A reference to table content in a document, spreadsheet, or presentation
      properties:
        revision:
          description: The revision of the table being referred to
          example: 2B3C4D5E
          readOnly: true
          type: string
        table:
          $ref: '#/components/schemas/TableId'
      type: object
    ChartDrawingElement:
      allOf:
        - $ref: '#/components/schemas/BaseDrawingElement'
        - properties:
            table:
              $ref: '#/components/schemas/TableRef'
          required:
            - table
          type: object
      description: A drawing element for a chart.
      nullable: true
      type: object
    ImageRef:
      description: A reference to image content in a document, spreadsheet, or presentation
      example:
        image: 8610c7b132e944cb9e5c11daf08b1b1c
      properties:
        image:
          description: The unique identifier of the image being referred to
          example: 8610c7b132e944cb9e5c11daf08b1b1c
          type: string
      type: object
    Rotation:
      default: 0
      description: |
        The rotation in degrees of a shape around the center point of
        the shape. The rotation is applied after the shape is positioned and sized
        meaning the position and dimensions are for the shape without any rotation.
      example: 90
      exclusiveMaximum: true
      maximum: 360
      minimum: 0
      type: number
    ImageDrawingElement:
      allOf:
        - $ref: '#/components/schemas/BaseDrawingElement'
        - properties:
            image:
              $ref: '#/components/schemas/ImageRef'
            rotation:
              $ref: '#/components/schemas/Rotation'
          required:
            - rotation
            - image
          type: object
      description: A drawing element for an image.
      nullable: true
      type: object
    LineCap:
      default: none
      description: The way the terminator of a line looks.
      enum:
        - none
        - triangle
        - circle
        - diamond
      type: string
    LineRelativeType:
      description: The relative position type used for the head and tail of a line drawing element.
      enum:
        - designPageRelative
        - paragraphRelative
        - slideRelative
      example: paragraphRelative
      type: string
    LineRelativePosition:
      description: The relative position for the head and tail of a line drawing element.
      example:
        paragraphRelative:
          paragraphIndex: 3
          x: 0
          'y': 0
        type: paragraphRelative
      properties:
        designPageRelative:
          $ref: '#/components/schemas/DesignPageRelative'
        paragraphRelative:
          $ref: '#/components/schemas/ParagraphRelative'
        slideRelative:
          $ref: '#/components/schemas/SlideRelative'
        type:
          $ref: '#/components/schemas/LineRelativeType'
      required:
        - type
      type: object
    LineCapSize:
      default: medium
      description: The size of a cap at a line terminator.
      enum:
        - small
        - medium
        - large
      type: string
    LineTerminator:
      description: |
        Defines the shape, size, and location of a line''s head and tail
        (the starting point and stop point of a line segment or connector).
      properties:
        cap:
          $ref: '#/components/schemas/LineCap'
        position:
          $ref: '#/components/schemas/LineRelativePosition'
        size:
          $ref: '#/components/schemas/LineCapSize'
      required:
        - position
        - cap
        - size
    Line:
      description: |
        A drawing element for lines, arrows, connectors, etc. All of these elements have two points: a head and tail.
      nullable: true
      properties:
        head:
          $ref: '#/components/schemas/LineTerminator'
        id:
          $ref: '#/components/schemas/DrawingElementId'
        length:
          description: The length of the line in points.
          example: 120
          type: number
        margins:
          $ref: '#/components/schemas/Margins'
        stroke:
          $ref: '#/components/schemas/Stroke'
        tail:
          $ref: '#/components/schemas/LineTerminator'
        wrapStyle:
          $ref: '#/components/schemas/WrapStyleType'
      required:
        - id
        - length
        - stroke
        - head
        - tail
        - wrapStyle
        - margins
      type: object
    Paddings:
      description: The paddings of a rectangle for properties of objects such as a shape, text box, or page.
      properties:
        bottom:
          description: The bottom edge padding in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        left:
          description: The left edge padding in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        right:
          description: The right edge padding in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
        top:
          description: The top edge padding in points.
          example: 10
          minimum: 0
          nullable: true
          type: number
      required:
        - top
        - bottom
        - right
        - left
      type: object
    RichTextBaselineShift:
      description: |
        Indicates the offset from the baseline of the characters. The baseline is the imaginary bottom line for a line of text which the bottom of the characters are placed, not including any descender such as g, j, p, and y have. `superscript` shifts the baseline up and reduces the rendered font size to 65% of the specified font size. `subscript` works the same as `superscript` except it moves the baseline down. `baseline` uses the default size and baseline for regular text. type: string
      enum:
        - baseline
        - superscript
        - subscript
      example: superscript
      nullable: true
      type: string
    RichTextFormat:
      description: The formatting options applied to rich text elements.
      nullable: true
      properties:
        backgroundColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The background color in RGB format
          nullable: true
        baselineShift:
          $ref: '#/components/schemas/RichTextBaselineShift'
        bold:
          description: Whether or not the text is bold
          example: true
          nullable: true
          type: boolean
        characterSpacing:
          description: The amount of space, in 1/1000 of an em, between characters.
          example: -25
          nullable: true
          type: integer
        font:
          description: The name of the font
          example: Times New Roman
          nullable: true
          type: string
        italic:
          description: Whether or not the text is italicized
          example: true
          nullable: true
          type: boolean
        size:
          description: The font size of the characters in points
          example: 14
          maximum: 100
          minimum: 1
          nullable: true
          type: number
        strikethrough:
          description: Whether or not the text is struck through
          example: true
          nullable: true
          type: boolean
        textColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The text color in RGB format
          nullable: true
          type: object
        underline:
          description: Whether or not the text is underlined
          example: true
          nullable: true
          type: boolean
      type: object
    StyleRef:
      description: A reference to a style.
      example:
        revision: 2B3C4D5E
        style: c3R5bGUta2V5Ol90Ymw
        styleGuide: a4a9271b80e94cccb541160c9f8e61d6
      properties:
        revision:
          description: The revision of the referenced style.
          example: 2B3C4D5E
          readOnly: true
          type: string
        style:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
        styleGuide:
          description: The unique identifier of a style guide.
          example: a4a9271b80e94cccb541160c9f8e61d6
          readOnly: true
          type: string
      type: object
    BaseTextElement:
      description: |
        A base text element is the common requirement for all text element models.
      properties:
        format:
          $ref: '#/components/schemas/RichTextFormat'
        length:
          default: 1
          description: |
            The number of characters (32-bit unicode code point) for a text element or range of text in a selection. Most elements will have a length of 1, even if it is dynamic content which will be replaced by possibly multiple characters. The lengths are used when editing with offsets from an element. The sum of the lengths up to a specific element from another is the offset between those text elements.
          minimum: 1
          type: integer
        offset:
          default: 0
          description: |
            The number of items to skip over in a collection before the items which will be returned or worked on. The items may be shapes, sections, elements, characters, slides, etc depending on which object or path the offset is being used on.
          example: 10
          minimum: 0
          type: integer
        style:
          $ref: '#/components/schemas/StyleRef'
      required:
        - offset
        - length
      type: object
    ChartTextElement:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            dimensions:
              $ref: '#/components/schemas/Dimensions'
            table:
              $ref: '#/components/schemas/TableRef'
          required:
            - dimensions
            - table
          type: object
      description: An embedded content text element for a chart.
      nullable: true
    DestinationLinkRef:
      description: A reference to a destination link.
      example:
        destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
        revision: 24601abc
      properties:
        destinationLink:
          description: The unique identifier of a destination link.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          type: string
        revision:
          description: The version of the destination link.
          example: 24601abc
          type: string
      required:
        - destinationLink
        - revision
      type: object
    SoftReturn:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - required:
            - length
          type: object
      description: |
        A text element for a soft return. This moves the following text elements to a new line without creating a new  paragraph.
    TextSpan:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            text:
              description: The string of characters (32-bit unicode code point)
              example: Thank you
              type: string
          required:
            - length
            - text
          type: object
      description: |
        A text element for a span of text with the same formatting.
        The text string may contain almost any unicode character except for unicode from the Private Use Area (PUA) of unicode (U+E000..U+F8FF), paragraph separators (U+2029), line feeds (U+000A), and carriage returns (U+000D). Paragraph separators and line feeds will be turned into paragraphs. Carriage returns will be normalized out of the text during insertion. Other control unicode, like line separators (U+2028), no break space (U+00A0), and tabs (U+0009), may appear in this text. The text will be quote escaped and may contain unicode escaped characters like \t or \u0000.
      nullable: true
    UnspecifiedTextElement:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - required:
            - length
          type: object
      description: |
        An unspecified text element to use as a placeholder for elements that have not been explicitly defined in API models.
      nullable: true
    SourceTextElement:
      description: |
        A text element containing rich text content that is from a source link. This is a subset of TextElement and contains  only types that are allowed within source links.
      example:
        textSpan:
          format: null
          length: 5
          offset: 0
          style: {}
          text: Hello
        type: textSpan
      properties:
        softReturn:
          allOf:
            - $ref: '#/components/schemas/SoftReturn'
          nullable: true
        textSpan:
          allOf:
            - $ref: '#/components/schemas/TextSpan'
          nullable: true
        type:
          default: textSpan
          description: The type of the text element in rich text that is from a source link.
          enum:
            - softReturn
            - textSpan
            - unspecified
          type: string
        unspecified:
          allOf:
            - $ref: '#/components/schemas/UnspecifiedTextElement'
          nullable: true
      required:
        - type
      type: object
    ListFormat:
      description: |
        The list formatting options applied to the given paragraph.
      example:
        level: 1
        prefix: '['
        startAt: 1
        style:
          revision: 2B3C4D5E
          style: c3R5bGUta2V5Ol90Ymw
          styleGuide: a4a9271b80e94cccb541160c9f8e61d6
        suffix: ']'
      nullable: true
      properties:
        level:
          description: The list level associated with the list.
          example: 0
          minimum: 0
          type: integer
        prefix:
          description: The list value prefix
          nullable: true
          type: string
        startAt:
          description: The value the list starts at (for ordered lists). Null indicates that the list continues from the previous item.
          nullable: true
          type: integer
        style:
          $ref: '#/components/schemas/StyleRef'
        suffix:
          description: The list value suffix
          nullable: true
          type: string
      type: object
    ParagraphPropertiesAlignment:
      default: left
      description: Indicates the horizontal alignment of the text within a paragraph
      enum:
        - left
        - center
        - right
        - justified
      example: justified
      nullable: true
      type: string
    LineSpacing:
      description: |
        Defines the line spacing of a paragraph.
      example:
        unit: percent
        value: 100
      properties:
        unit:
          description: The unit of the line spacing value.
          enum:
            - percent
            - points
          type: string
        value:
          description: |
            The line spacing value. Valid percent range: 80% - 720% Valid points range: 1 - 400 points
          example: 100
          minimum: 1
          type: number
      type: object
    ParagraphProperties:
      description: |
        The properties for rich-text paragraphs. Null values indicate that the format is inheriting from style or the container when reading.
      example:
        alignment: justified
        endIndent: 240
        firstLineIndent: 240
        lineSpacing:
          unit: percent
          value: 100
        pageBreakBefore: false
        spaceAfterParagraph: 10.5
        spaceBeforeParagraph: 12.5
        startIndent: 240
      nullable: true
      properties:
        alignment:
          $ref: '#/components/schemas/ParagraphPropertiesAlignment'
        endIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph at the end of each line. Positive is towards the enter of the page.
          example: 240
          nullable: true
          type: number
        firstLineIndent:
          description: |
            The amount of indent, in points, from the margin to apply to the first line of a paragraph in addition to the start indent. Positive is towards the center of the page.
          example: 240
          nullable: true
          type: number
        lineSpacing:
          $ref: '#/components/schemas/LineSpacing'
        pageBreakBefore:
          default: false
          description: Whether or not this paragraph starts on a new page
          example: true
          nullable: true
          type: boolean
        spaceAfterParagraph:
          description: The amount space, in points, after the paragraph.
          example: 10.5
          nullable: true
          type: number
        spaceBeforeParagraph:
          description: The amount of space, in points, before the paragraph.
          example: 12.5
          nullable: true
          type: number
        startIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph from the start of each line. Positive is towards the center of the page.
          example: 240
          nullable: true
          type: number
      type: object
    SourceParagraph:
      description: A paragraph of rich text content that is from a source link.
      example:
        elements:
          - textSpan:
              format:
                font: Times New Roman
                italic: true
                size: 12
              length: 11
              offset: 0
              style:
                revision: 1A2B3C4D
                style: WW91IGZvdW5kIG1lIQ
                styleGuide: WW91IGZvdW5kIG1lIQ
              text: Hello World
            type: textSpan
        format:
          bold: true
        list:
          level: 2
          prefix: '['
          startAt: 1
          style:
            style: WW91IGZvdW5kIG1lIQ
            styleGuide: WW91IGZvdW5kIG1lIQ
          suffix: ']'
        properties: {}
        style:
          style: X3R4dDozZDUyMDg4ODBlNDk0YmYxYWVjYTIzM2VlYmY3ODM4Mg
          styleGuide: 3d5208880e494bf1aeca233eebf78382
      properties:
        elements:
          description: Elements contained in this paragraph.
          items:
            $ref: '#/components/schemas/SourceTextElement'
          type: array
        format:
          allOf:
            - $ref: '#/components/schemas/RichTextFormat'
          nullable: true
        list:
          allOf:
            - $ref: '#/components/schemas/ListFormat'
          nullable: true
        properties:
          allOf:
            - $ref: '#/components/schemas/ParagraphProperties'
          nullable: true
        style:
          $ref: '#/components/schemas/StyleRef'
      required:
        - format
        - elements
        - properties
        - style
      type: object
    DestinationLinkTextElement:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            destinationLink:
              $ref: '#/components/schemas/DestinationLinkRef'
            paragraphs:
              description: Paragraphs contained in this destination link.
              items:
                $ref: '#/components/schemas/SourceParagraph'
              type: array
          required:
            - destinationLink
            - paragraphs
          type: object
      description: |
        A destination link is an element which is replaced with content from a source link.
      nullable: true
    FootnoteAnnotation:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
      description: |
        A dynamic content text element which will be replaced with a footnote number for the footnote content which this element is within. This may only be added to footnotes.
      nullable: true
    RichTextId:
      description: The unique identifier of rich text.
      type: string
      minLength: 1
      example: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
    RichTextRef:
      description: |
        A reference to rich text content in a document, spreadsheet, or presentation
      properties:
        revision:
          description: The revision of the rich text being referred to
          example: 2B3C4D5E
          readOnly: true
          type: string
        richText:
          type: string
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/RichTextId'
      type: object
    FootnoteIndicator:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            footnote:
              $ref: '#/components/schemas/RichTextRef'
          required:
            - footnote
          type: object
      description: |
        A dynamic content text element which will be replaced with a footnote number within rich text content to indicate that there is a footnote and works as an anchor to help determine which page of the document the footnote will be added to.
      nullable: true
    HyperlinkType:
      title: HyperlinkType
      description: The type of the hyperlink
      type: string
      enum:
        - document
        - section
        - presentation
        - slide
        - spreadsheet
        - sheet
        - url
        - unspecified
    Revision:
      description: |
        Identifies a unique revision of content. The same revision can be used for any content request within a file because revisions are allocated at the file-level.
        When querying for content, this can be used to get a consistent version of the content. When editing content, this can be used to make the change to the content at a known state. In either case, omitting the revision (when allowed) will always default to the latest revision of the file.
      type: string
      example: 2c6438ab4541de6d
    DocumentRef:
      type: object
      description: |
        A reference to a document
      properties:
        document:
          description: The unique identifier of the document being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1
        revision:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      example:
        document: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
    SectionRef:
      description: |
        A reference to a section in a document outline
      example:
        document: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
        section: 16b1f641613847469b7aa1ca29af40b1_650855815308
      properties:
        document:
          description: The unique identifier of the document containing the section being referred to
          example: 16b1f641613847469b7aa1ca29af40b1
          readOnly: true
          type: string
        revision:
          description: The revision of the document and section being referred to
          example: 2B3C4D5E
          readOnly: true
          type: string
        section:
          description: The unique identifier of the section being referred to
          example: 16b1f641613847469b7aa1ca29af40b1_650855815308
          readOnly: true
          type: string
      type: object
    SpreadsheetRef:
      type: object
      description: |
        A reference to a spreadsheet
      properties:
        spreadsheet:
          description: The unique identifier of the spreadsheet being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1
        revision:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      example:
        spreadsheet: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
    SheetRef:
      type: object
      description: |
        A reference to a sheet in a spreadsheet outline
      properties:
        sheet:
          description: The unique identifier of the sheet being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1_650855815308
        spreadsheet:
          description: The unique identifier of the spreadsheet containing the sheet being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1
        revision:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      example:
        sheet: 16b1f641613847469b7aa1ca29af40b1_650855815308
        spreadsheet: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
    PresentationRef:
      type: object
      description: |
        A reference to a presentation
      properties:
        presentation:
          description: The unique identifier of the presentation being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1
        revision:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      example:
        presentation: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
    SlideRef:
      type: object
      description: |
        A reference to a slide in a presentation outline
      properties:
        slide:
          description: The unique identifier of the slide being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1_650855815308
        presentation:
          description: The unique identifier of the presentation containing the slide being referred to
          type: string
          readOnly: true
          example: 16b1f641613847469b7aa1ca29af40b1
        revision:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      example:
        slide: 16b1f641613847469b7aa1ca29af40b1_650855815308
        presentation: 16b1f641613847469b7aa1ca29af40b1
        revision: 2B3C4D5E
    Hyperlink:
      description: |
        Represents a hyperlink to another location. The `type` property will determine which of the other properties is set.
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/HyperlinkType'
        document:
          description: The reference to the linked document for `document` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DocumentRef'
        section:
          description: The reference to the linked section for `section` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SectionRef'
        spreadsheet:
          description: The reference to the linked spreadsheet for `spreadsheet` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SpreadsheetRef'
        sheet:
          description: The reference to the linked sheet for `sheet` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SheetRef'
        presentation:
          description: The reference to the linked presentation for `presentation` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PresentationRef'
        slide:
          description: The reference to the linked slide for `slide` type hyperlinks
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SlideRef'
        url:
          description: The raw URL for `url` type hyperlinks.
          type: string
          nullable: true
          minLength: 1
          example: https://example.com
    HyperlinkTextElement:
      description: A text element for a hyperlink.
      nullable: true
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - type: object
          required:
            - hyperlink
            - text
          properties:
            hyperlink:
              $ref: '#/components/schemas/Hyperlink'
            text:
              description: The string of characters (32-bit unicode code point)
              type: string
              example: Thank you
    ImageTextElement:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            dimensions:
              $ref: '#/components/schemas/Dimensions'
            image:
              $ref: '#/components/schemas/ImageRef'
          required:
            - dimensions
          type: object
      description: A text element for image embedded content.
      nullable: true
    PageNumber:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
      description: |
        A dynamic content text element which will be replaced with the current page number.
      nullable: true
    SectionPageNumber:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            section:
              $ref: '#/components/schemas/SectionRef'
          required:
            - section
          type: object
      description: |
        A dynamic content text element which will be replaced with the page number of a specified section.
      nullable: true
    TableBreakingType:
      description: The type of table breaking
      enum:
        - neverBreak
        - alwaysBreak
        - breakWhenExceeds
      type: string
    TableBreaking:
      description: The property that will dictate how the table will be broken up
      nullable: true
      properties:
        breakingPercentage:
          description: The percentage the table will break at, only set when type is breakWhenExceeds
          nullable: true
          type: integer
        type:
          $ref: '#/components/schemas/TableBreakingType'
      type: object
    TableTextElementProperties:
      description: The properties for a table text element.
      example:
        headerRows: 1
        preferredBreakRows:
          - 2
          - 5
        tableBreaking:
          breakingPercentage: 25
          type: breakWhenExceeds
        titleRow: true
        titleSuffix: Title
      properties:
        headerRows:
          default: 0
          description: The rows that are going to be headers
          type: integer
        preferredBreakRows:
          default: []
          description: Zero-indexed row indices below which a column or page break is preferred. Empty if no breakpoints are set.
          items:
            type: integer
          type: array
        tableBreaking:
          $ref: '#/components/schemas/TableBreaking'
        titleRow:
          default: false
          description: Whether the table has a title row
          type: boolean
        titleSuffix:
          description: Optional table title suffix when title row is enabled.
          nullable: true
          type: string
      required:
        - titleRow
        - headerRows
        - tableBreaking
        - preferredBreakRows
      type: object
    TableTextElement:
      allOf:
        - $ref: '#/components/schemas/BaseTextElement'
        - properties:
            properties:
              $ref: '#/components/schemas/TableTextElementProperties'
            table:
              $ref: '#/components/schemas/TableRef'
          required:
            - table
          type: object
      description: A text element representing a table.
      nullable: true
    TextElement:
      description: A text element containing rich text content.
      example:
        chart:
          dimensions:
            height: 240
            width: 240
          table:
            table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
            revision: 24601abc
          length: 10
          offset: 10
          style:
            revision: 2B3C4D5E
            style: c3R5bGUta2V5Ol90Ymw
            styleGuide: a4a9271b80e94cccb541160c9f8e61d6
        type: chart
      properties:
        chart:
          $ref: '#/components/schemas/ChartTextElement'
        destinationLink:
          $ref: '#/components/schemas/DestinationLinkTextElement'
        footnoteAnnotation:
          $ref: '#/components/schemas/FootnoteAnnotation'
        footnoteIndicator:
          $ref: '#/components/schemas/FootnoteIndicator'
        hyperlink:
          $ref: '#/components/schemas/HyperlinkTextElement'
        image:
          $ref: '#/components/schemas/ImageTextElement'
        pageNumber:
          $ref: '#/components/schemas/PageNumber'
        sectionPageNumber:
          $ref: '#/components/schemas/SectionPageNumber'
        table:
          $ref: '#/components/schemas/TableTextElement'
        textSpan:
          $ref: '#/components/schemas/TextSpan'
        type:
          default: textSpan
          description: The type of the text element in rich text
          enum:
            - chart
            - destinationLink
            - footnoteAnnotation
            - footnoteIndicator
            - hyperlink
            - image
            - pageNumber
            - sectionPageNumber
            - table
            - textSpan
            - softReturn
            - unspecified
          type: string
        unspecified:
          $ref: '#/components/schemas/UnspecifiedTextElement'
      required:
        - type
      type: object
    Paragraph:
      description: |
        A paragraph of rich-text content.
      properties:
        elements:
          description: The text elements that make up the paragraph
          items:
            $ref: '#/components/schemas/TextElement'
          readOnly: true
          type: array
        format:
          $ref: '#/components/schemas/RichTextFormat'
        index:
          description: The index of this paragraph relative to other paragraphs in a RichText
          example: 0
          minimum: 0
          readOnly: true
          type: integer
        list:
          $ref: '#/components/schemas/ListFormat'
        properties:
          $ref: '#/components/schemas/ParagraphProperties'
        style:
          $ref: '#/components/schemas/StyleRef'
      type: object
    ShapeType:
      description: |
        The type of a shape to draw. Some shapes are aliased to others;
        for example, decision is an alias of diamond. The shape "offPageReference"
        is unsupported by some non-Workiva applications and may cause issues during
        export if used.
      enum:
        - rectangle
        - roundedRectangle
        - ellipse
        - triangle
        - diamond
        - trapezoid
        - parallelogram
        - pentagon
        - hexagon
        - octagon
        - arrowRight
        - arrowLeft
        - arrowUp
        - arrowDown
        - chevron
        - cylinder
        - rectangularCallout
        - roundedRectangularCallout
        - ovalCallout
        - leftBracket
        - rightBracket
        - inputOutput
        - terminator
        - subroutine
        - internalStorage
        - manualInput
        - manualOperation
        - offPageConnector
        - card
        - document
        - preparation
        - display
        - database
        - directAccess
        - storedData
        - offPageReference
      example: rectangle
      type: string
    Shape:
      allOf:
        - $ref: '#/components/schemas/BaseDrawingElement'
        - properties:
            paddings:
              $ref: '#/components/schemas/Paddings'
            paragraphs:
              description: The rich text paragraphs.
              items:
                $ref: '#/components/schemas/Paragraph'
              type: array
            rotation:
              $ref: '#/components/schemas/Rotation'
            shapeType:
              $ref: '#/components/schemas/ShapeType'
          required:
            - shapeType
          type: object
      description: |
        A drawing element for a shape such as a rectangle, ellipse, polygon,
        etc. This also includes arrows, left bracket, right bracket, and flow chart
        shapes. Shapes can have zero to two modifiers or an auxiliary point depending
        on the shape type.
      nullable: true
      type: object
    TableDrawingElement:
      allOf:
        - $ref: '#/components/schemas/BaseDrawingElement'
        - properties:
            table:
              $ref: '#/components/schemas/TableRef'
          required:
            - table
          type: object
      description: A drawing element for a table.
      nullable: true
      type: object
    DrawingElementType:
      default: shape
      description: The type of the drawing element in a drawing
      enum:
        - shape
        - line
        - chart
        - image
        - table
        - unspecified
      example: shape
      type: string
    UnspecifiedDrawingElement:
      allOf:
        - $ref: '#/components/schemas/BaseDrawingElement'
      description: |
        An unspecified drawing element to use as a placeholder for elements
        that have not been explicitly defined in API models.

        The unspecified element makes it possible to add new features to the editor
        without requiring the API models to be updated in tandem. Not only does this
        element give some information about where the unspecified element is drawn,
        it gives the  element''s identifier.
      nullable: true
      type: object
    DrawingElement:
      description: |
        A drawing elements represents a text box, shapes, lines, and any other component of a drawing.
      example:
        image:
          dimensions:
            height: 240
            width: 320
          fill:
            color:
              blue: 128
              green: 128
              red: 128
            opacity: 0.5
          id: WW91IGZvdW5kIG1lIQ
          image:
            image: 8610c7b132e944cb9e5c11daf08b1b1c
          margins:
            bottom: 10
            left: 10
            right: 10
            top: 10
          paddings:
            bottom: 10
            left: 10
            right: 10
            top: 10
          position:
            paragraphRelative:
              paragraphIndex: 3
              x: 0
              'y': 0
            type: paragraphRelative
          rotation: 90
          stroke:
            color:
              blue: 128
              green: 128
              red: 128
            pattern: solid
            width: 2
          wrapStyle: inFrontOfText
        type: image
      properties:
        chart:
          $ref: '#/components/schemas/ChartDrawingElement'
        image:
          $ref: '#/components/schemas/ImageDrawingElement'
        line:
          $ref: '#/components/schemas/Line'
        shape:
          $ref: '#/components/schemas/Shape'
        table:
          $ref: '#/components/schemas/TableDrawingElement'
        type:
          $ref: '#/components/schemas/DrawingElementType'
        unspecified:
          $ref: '#/components/schemas/UnspecifiedDrawingElement'
      required:
        - type
      type: object
    DrawingElementListResult:
      description: A collection of elements in a drawing. This contains the shapes, text boxes, and lines for drawing content including slides, layout slides, and drawings in documents. When there are no additional elements before the current  collection, the previous property will be null. When there are no additional elements after the current collection, the next property will be null.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: Elements contained by this drawing.
          items:
            $ref: '#/components/schemas/DrawingElement'
          type: array
      required:
        - data
      type: object
    AnchorsListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Anchor` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/Anchor'
          readOnly: true
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    AnchorExtension:
      description: |
        Information about how an anchor is used. When an anchor is first created  it will not be associated with any extensions. Once an anchor is used, its  extension type will be set.
      properties:
        id:
          description: |
            The unique identifier of the extension. This can be used to lookup the  associated resource. This ID will be null if the resource doesn't have an ID. For example, comment extensions don't have an id because they're  looked up by their respective anchor IDs instead.
          example: 2c64382b45553de1
          type: string
        type:
          $ref: '#/components/schemas/ExtensionType'
      type: object
    AnchorExtensionsListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `AnchorExtension` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/AnchorExtension'
          readOnly: true
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    ImageUpload:
      description: Details about the image upload, including its options.
      example:
        fileName: example.png
      properties:
        fileName:
          description: The name for the new image.
          example: example.png
          type: string
      required:
        - fileName
      type: object
    ImageUploadResponse:
      description: Response to an image upload including the URL to upload the image to.
      example:
        uploadUrl: <opaque_url>
      properties:
        operationLocation:
          description: The URL to poll for the operation result.
          type: string
          example: https://api.app.wdesk.com/operations/128f274395254cf17eda6b3eb3d021b9
        uploadUrl:
          description: The URL used to upload the image. Make a PUT request to this URL whose body is the contents of the image.
          example: <opaque_url>
          type: string
      required:
        - uploadUrl
      type: object
    Image:
      description: Content containing an image.
      example:
        downloadUrl: <opaque_url>
        fileName: example.png
        id: WW91IGZvdW5kIG1lIQ
        mimeType: image/png
      properties:
        downloadUrl:
          description: The URL to download an image. Send an authorized GET request to this URL to get the image bytes.
          example: <opaque_url>
          type: string
        fileName:
          description: The name of the image.
          example: example.png
          type: string
        id:
          description: The unique identifier for the image.
          example: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
          type: string
        mimeType:
          description: The mime type of the image.
          example: example.png
          type: string
      required:
        - id
        - fileName
        - mimeType
        - downloadUrl
      type: object
    RichTextAnchorCreation:
      description: Details about the rich text anchor creation.
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
        selection:
          $ref: '#/components/schemas/RichTextSelection'
        type:
          $ref: '#/components/schemas/RichTextSelectionAnchorAttachmentPointType'
      required:
        - revision
        - type
        - selection
      type: object
    DuplicateTable:
      description: |
        An edit to duplicate a table in rich text.
      example:
        insertAt:
          offset: 0
          paragraphIndex: 2
        sourceTable: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
        sourceTable:
          description: The unique identifier for the source table.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          allOf:
            - $ref: '#/components/schemas/TableId'
      required:
        - insertAt
        - sourceTable
    RichTextDuplicationEdit:
      description: |
        A text edit for duplicating content into rich text. The edit property associated with the edit type is required. Any edit property that doesn't correspond to its type will be ignored.
      example:
        duplicateTable:
          insertAt:
            offset: 0
            paragraphIndex: 2
          sourceTable: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
        revision: 24601abc
        type: duplicateTable
      properties:
        duplicateTable:
          allOf:
            - $ref: '#/components/schemas/DuplicateTable'
          nullable: true
        revision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Revision'
        type:
          description: The type of rich text duplication edit.
          enum:
            - duplicateTable
          type: string
      required:
        - type
    ParagraphSelection:
      description: |
        A selection of one or more paragraphs, starting from the start paragraph and ending with the stop paragraph. Both start and stop paragraph indexes are inclusive.
      example:
        start: 1
        stop: 3
      properties:
        start:
          description: The zero-based inclusive starting index of a paragraph.
          example: 1
          minimum: 0
          type: integer
        stop:
          description: The zero-based inclusive stopping index of a paragraph.
          example: 3
          minimum: 0
          type: integer
    ClearListFormat:
      description: |
        An edit to clear list formatting from a range of paragraphs in rich text. Not supported when the parent batch has isolated edits turned on.
      example:
        clearAll: false
        clearPrefix: true
        clearStartAt: true
        clearStyle: true
        clearSuffix: true
        selection:
          start: 1
          stop: 3
      properties:
        clearAll:
          default: false
          description: Whether to clear all list formats. This is the same as setting every other option to true. When new list formats are added to the api those will also be cleared. When true, all other clear option values are ignored.
          example: true
          type: boolean
        clearPrefix:
          default: false
          description: Whether to clear the list prefix.
          example: true
          type: boolean
        clearStartAt:
          default: false
          description: Whether to clear the start number of the list.
          example: true
          type: boolean
        clearStyle:
          default: false
          description: Whether to clear the list style.
          example: true
          type: boolean
        clearSuffix:
          default: false
          description: Whether to clear the list suffix.
          example: true
          type: boolean
        selection:
          $ref: '#/components/schemas/ParagraphSelection'
      required:
        - selection
      type: object
    ClearParagraphProperties:
      description: |
        An edit to clear paragraph properties from a range of paragraphs in rich text.
      example:
        clearAlignment: true
        clearAll: false
        clearEndIndent: true
        clearFirstLineIndent: true
        clearLineSpacing: true
        clearPageBreakBefore: true
        clearSpaceAfterParagraph: true
        clearSpaceBeforeParagraph: true
        clearStartIndent: true
        selection:
          start: 1
          stop: 3
      properties:
        clearAlignment:
          default: false
          description: Whether to clear the alignment.
          example: true
          type: boolean
        clearAll:
          default: false
          description: Whether to clear all paragraph properties. This is the same as setting every other option to true. When new paragraph properties are added those will also be cleared. When true, all other clear option values are ignored.
          example: true
          type: boolean
        clearEndIndent:
          default: false
          description: Whether to clear the end indent.
          example: true
          type: boolean
        clearFirstLineIndent:
          default: false
          description: Whether to clear the first line indent.
          example: true
          type: boolean
        clearLineSpacing:
          default: false
          description: Whether to clear the line spacing.
          example: true
          type: boolean
        clearPageBreakBefore:
          default: false
          description: Whether to clear page break before.
          example: true
          type: boolean
        clearSpaceAfterParagraph:
          default: false
          description: Whether to clear the space after paragraph.
          example: true
          type: boolean
        clearSpaceBeforeParagraph:
          default: false
          description: Whether to clear the space before paragraph.
          example: true
          type: boolean
        clearStartIndent:
          default: false
          description: Whether to clear the start indent.
          example: true
          type: boolean
        selection:
          $ref: '#/components/schemas/ParagraphSelection'
      required:
        - selection
      type: object
    ClearTextFormat:
      description: |
        An edit to clear formatting from a range of rich text. This will not clear out styles nor hyperlinks.
      example:
        clearAll: false
        clearBackgroundColor: true
        clearBaselineShift: true
        clearBold: true
        clearCharacterSpacing: true
        clearFont: true
        clearItalic: true
        clearSize: true
        clearStrikethrough: true
        clearTextColor: true
        clearUnderline: true
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 2
      properties:
        clearAll:
          default: false
          description: Whether to clear all text formats. This is the same as setting every other option to true. When new text formats are added those will also be cleared. When true, all other clear option values are ignored.
          example: true
          type: boolean
        clearBackgroundColor:
          default: false
          description: Whether to clear the background color.
          example: true
          type: boolean
        clearBaselineShift:
          default: false
          description: Whether to clear the baseline shift.
          example: true
          type: boolean
        clearBold:
          default: false
          description: Whether to clear bold.
          example: true
          type: boolean
        clearCharacterSpacing:
          default: false
          description: Whether to clear the character spacing.
          example: true
          type: boolean
        clearFont:
          default: false
          description: Whether to clear the font.
          example: true
          type: boolean
        clearItalic:
          default: false
          description: Whether to clear italic.
          example: true
          type: boolean
        clearSize:
          default: false
          description: Whether to clear the font size.
          example: true
          type: boolean
        clearStrikethrough:
          default: false
          description: Whether to clear strikethrough.
          example: true
          type: boolean
        clearTextColor:
          default: false
          description: Whether to clear the text color.
          example: true
          type: boolean
        clearUnderline:
          default: false
          description: Whether to clear underline.
          example: true
          type: boolean
        selection:
          $ref: '#/components/schemas/RichTextSelection'
      required:
        - selection
      type: object
    DeleteText:
      description: |
        An edit to delete text from a range of rich text.  Note that all content, such as tables, images, charts, or footnotes, will also be deleted. Links must be removed from the selection using a [`RemoveLinks`](ref:content#removelinks) [links edit](ref:richtextlinksbatchedit) before deleting a selection containing links.
      example:
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 2
      properties:
        selection:
          $ref: '#/components/schemas/RichTextSelection'
      required:
        - selection
      type: object
    FormatText:
      description: |
        An edit to format a range of rich text.
      example:
        backgroundColor:
          blue: 255
          green: 255
          red: 255
        baselineShift: baseline
        bold: true
        characterSpacing: 100
        font: Times New Roman
        italic: true
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 2
        size: 14
        strikethrough: true
        textColor:
          blue: 0
          green: 0
          red: 0
        underline: true
      properties:
        backgroundColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          nullable: true
        baselineShift:
          $ref: '#/components/schemas/RichTextBaselineShift'
        bold:
          default: false
          description: Whether or not the text is bold
          example: true
          nullable: true
          type: boolean
        characterSpacing:
          description: |
            The amount of space between characters in thousanths of an em.
          example: 100
          maximum: 1000
          minimum: -1000
          nullable: true
          type: integer
        font:
          description: The name of the font
          example: Times New Roman
          nullable: true
          type: string
        italic:
          default: false
          description: Whether or not the text is italicized
          example: true
          nullable: true
          type: boolean
        selection:
          $ref: '#/components/schemas/RichTextSelection'
        size:
          default: 12
          description: The font size of the characters in points
          example: 14
          maximum: 720
          minimum: 1
          nullable: true
          type: number
        strikethrough:
          default: false
          description: Whether or not the text is struck through
          example: true
          nullable: true
          type: boolean
        textColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          nullable: true
        underline:
          default: false
          description: Whether or not the text is underlined
          example: true
          nullable: true
          type: boolean
      required:
        - selection
      type: object
    InsertFootnote:
      description: |
        A text edit for inserting a footnote into rich text. The created rich text id associated with the footnote annotation area can be retrieved from the rich text edit operation results. This edit is not supported in table rich cell edits.
      type: object
      nullable: true
      required:
        - insertAt
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
    InsertImage:
      description: A text edit for inserting an image into rich text.
      example:
        dimensions:
          height: 240
          width: 320
        image: 8610c7b132e944cb9e5c11daf08b1b1c
        insertAt:
          offset: 5
          paragraphIndex: 0
      properties:
        dimensions:
          description: The dimensions of the inserted image.
          properties:
            height:
              description: The vertical measurement in points.
              example: 240
              minimum: 1
              type: number
            width:
              description: The horizontal measurement in points.
              example: 320
              minimum: 1
              type: number
          required:
            - width
            - height
          type: object
        image:
          description: The unique identifier of the image to insert. Each image can only be inserted into content once.
          example: 8610c7b132e944cb9e5c11daf08b1b1c
          type: string
        insertAt:
          $ref: '#/components/schemas/Caret'
      required:
        - insertAt
        - image
        - dimensions
      type: object
    InsertPageNumber:
      description: |
        A text edit for inserting a page number into header or footer text.
      example:
        insertAt:
          offset: 5
          paragraphIndex: 0
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
      required:
        - insertAt
      type: object
    InsertParagraph:
      description: |
        A text edit for inserting a new paragraph.
      example:
        insertAt:
          offset: 5
          paragraphIndex: 0
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
      required:
        - insertAt
      type: object
    InsertSoftReturn:
      description: |
        A text edit for inserting a soft return into text. This moves the following text elements to a new line without creating a new paragraph.
      example:
        insertAt:
          offset: 5
          paragraphIndex: 0
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
      required:
        - insertAt
      type: object
    RichTextInsertTable:
      description: |
        A text edit for inserting an embedded table into rich text. If a dimensions property is set it will be respected unless it forces a cell to shrink beyond a minimum width. The created table id associated with the embedded table can be retrieved from the rich text edit operation results. This edit is not supported in table rich cell edits.
      example:
        columnCount: 3
        dimensions:
          height: 240
          width: 320
        insertAt:
          offset: 5
          paragraphIndex: 0
        rowCount: 10
      properties:
        columnCount:
          default: 5
          description: The number of columns in the table.
          example: 3
          minimum: 1
          type: integer
        dimensions:
          description: |
            The dimensions of the inserted table. If a width or height are omitted the width or height will be defaulted based off the number of columns or rows.
          properties:
            height:
              description: The vertical measurement in points.
              example: 240
              minimum: 1
              nullable: true
              type: number
            width:
              description: The horizontal measurement in points.
              example: 320
              minimum: 1
              nullable: true
              type: number
          type: object
        insertAt:
          $ref: '#/components/schemas/Caret'
        rowCount:
          default: 10
          description: The number of rows in the table.
          example: 10
          minimum: 1
          type: integer
      required:
        - insertAt
        - columnCount
        - rowCount
      type: object
    ApplicableTextFormat:
      description: Formatting options to be applied to rich text elements
      example:
        backgroundColor:
          blue: 255
          green: 255
          red: 255
        baselineShift: superscript
        bold: true
        characterSpacing: 100
        font: Times New Roman
        italic: true
        size: 14
        strikethrough: true
        textColor:
          blue: 0
          green: 0
          red: 0
        underline: true
      nullable: true
      properties:
        backgroundColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          nullable: true
        baselineShift:
          $ref: '#/components/schemas/RichTextBaselineShift'
        bold:
          default: false
          description: Whether or not the text is bold
          example: true
          nullable: true
          type: boolean
        characterSpacing:
          description: |
            The amount of space between characters in thousanths of an em
          example: 100
          maximum: 1000
          minimum: -1000
          nullable: true
          type: integer
        font:
          description: The name of the font
          example: Times New Roman
          nullable: true
          type: string
        italic:
          default: false
          description: Whether or not the text is italicized
          example: true
          nullable: true
          type: boolean
        size:
          default: 12
          description: The font size of the characters in points
          example: 14
          maximum: 720
          minimum: 1
          nullable: true
          type: number
        strikethrough:
          default: false
          description: Whether or not the text is struck through
          example: true
          nullable: true
          type: boolean
        textColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          nullable: true
        underline:
          default: false
          description: Whether or not to underline the text
          example: true
          nullable: true
          type: boolean
      type: object
    InsertText:
      description: |
        A text edit for inserting new rich text.
      example:
        format:
          bold: true
          font: Times New Roman
        inheritFormats: true
        insertAt:
          offset: 5
          paragraphIndex: 0
        style: c3R5bGUta2V5Ol90Ymw
        text: Hello, world!
      properties:
        format:
          $ref: '#/components/schemas/ApplicableTextFormat'
        inheritFormats:
          default: true
          description: |
            Indicates if this text should use the formats from the text around where this new text is being inserted at. The specified formats will override inherited formats.
          example: true
          type: boolean
        insertAt:
          $ref: '#/components/schemas/Caret'
        style:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          nullable: true
          type: string
        text:
          description: The text to insert.
          example: Hello, world!
          minLength: 1
          pattern: ^[^-]*$
          type: string
      required:
        - insertAt
        - text
      type: object
    RemoveHyperlinks:
      description: |
        Removes hyperlinks from a range of text. If a selection starts or stops in the middle of an existing hyperlink the selection will be expanded to include the start and stop of the existing hyperlink.
      type: object
      nullable: true
      required:
        - selection
      properties:
        selection:
          description: |
            The selection where the hyperlinks will be removed. All hyperlinks within the selection will be removed.
          type: object
          allOf:
            - $ref: '#/components/schemas/RichTextSelection'
    SetHyperlink:
      description: |
        Applies a hyperlink to a range of text. Any existing hyperlinks in a selection will be overwritten to point to the new hyperlink associated with this edit. If a selection starts or stops in the middle of an existing hyperlink the selection will be expanded to include the start and stop of the existing hyperlink.
      example:
        section:
          document: 327afa1a152f372fa1aeadb35ed28925d
          section: 327afa1a152f372fa1aeadb35ed28925d_42
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 2
        type: section
      properties:
        document:
          description: The document id associated with the document hyperlink
          example: 327afa1a152f372fa1aeadb35ed28925d
          nullable: true
          type: string
        presentation:
          description: The presentation id associated with the presentation hyperlink
          example: 0d7379bfd62549f0b8d9887ad9ab08b2
          nullable: true
          type: string
        section:
          description: The document and section ids associated with the section hyperlink
          nullable: true
          properties:
            document:
              description: The document id associated with the section hyperlink
              example: 327afa1a152f372fa1aeadb35ed28925d
              type: string
            section:
              description: The section id associated with the section hyperlink
              example: 327afa1a152f372fa1aeadb35ed28925d_42
              type: string
          type: object
        selection:
          allOf:
            - $ref: '#/components/schemas/RichTextSelection'
          description: |
            The selection where the hyperlink will be applied. The selection range cannot contain any new lines, source links,
            destination links, embedded content (tables, images, charts, etc.), footnotes, or any dynamic references (page numbers,
            list item references, etc.)
          type: object
        sheet:
          description: The spreadsheet and sheet ids associated with the sheet hyperlink
          nullable: true
          properties:
            sheet:
              description: The sheet id associated with the sheet hyperlink
              example: 482ce5aff72341458079f4d99e880ab6
              type: string
            spreadsheet:
              description: The spreadsheet id associated with the sheet hyperlink
              example: c2163136199c48f387f5093f79b31122
              type: string
          type: object
        slide:
          description: The presentation and slide ids associated with the slide hyperlink
          nullable: true
          properties:
            presentation:
              description: The presentation id associated with the slide hyperlink
              example: 0d7379bfd62549f0b8d9887ad9ab08b2
              type: string
            slide:
              description: The slide id associated with the slide hyperlink
              example: 0d7379bfd62549f0b8d9887ad9ab08b2_29
              type: string
          type: object
        spreadsheet:
          description: The spreadsheet id associated with the spreadsheet hyperlink
          example: c2163136199c48f387f5093f79b31122
          nullable: true
          type: string
        type:
          description: The type of hyperlink to create. The property associated with this hyperlink type is required.
          enum:
            - document
            - section
            - presentation
            - slide
            - spreadsheet
            - sheet
            - url
          type: string
        url:
          description: The raw URL associated with the URL hyperlink
          example: https://example.com
          minLength: 1
          nullable: true
          type: string
      required:
        - selection
        - type
      type: object
    SetListFormat:
      description: |
        An edit to set list formats on a range of paragraphs in rich text. Not supported when the parent batch has isolated edits turned on.
      example:
        level: 1
        prefix: A
        selection:
          start: 1
          stop: 3
        startAt: 1
        style: c3R5bGUta2V5Ol90Ymw
        suffix: .
      properties:
        level:
          description: |
            The list level to apply to each list paragraph in the selection. Ignored if null.  Ignored for non-list paragraphs in the selection.
          example: 1
          maximum: 10
          minimum: 1
          nullable: true
          type: integer
        prefix:
          description: |
            The prefix for each list paragraph in the selection. Ignored if null.  Ignored for non-list paragraphs in the selection.
          maxLength: 10
          nullable: true
          type: string
        selection:
          $ref: '#/components/schemas/ParagraphSelection'
        startAt:
          description: |
            The starting number for each list paragraph in the selection. Ignored if null.  Ignored for non-list paragraphs in the selection. Can only be set on ordered lists.
          example: 1
          minimum: 1
          nullable: true
          type: integer
        style:
          description: |
            Identifier for a style. The list style to apply to the selection. Ignored if null. Will make all normal paragraphs in the selection list paragraphs.
          example: c3R5bGUta2V5Ol90Ymw
          minLength: 1
          nullable: true
          type: string
        suffix:
          description: |
            The suffix for each list paragraph in the selection. Ignored if null.  Ignored for non-list paragraphs in the selection.
          maxLength: 10
          nullable: true
          type: string
      required:
        - selection
      type: object
    SetParagraphProperties:
      description: |
        An edit to set properties on a range of paragraphs in rich text. Null properties are ignored.
      example:
        alignment: center
        endIndent: 24
        firstLineIndent: 24
        lineSpacing:
          unit: percent
          value: 120
        pageBreakBefore: true
        selection:
          start: 1
          stop: 3
        spaceAfterParagraph: 12
        spaceBeforeParagraph: 12
        startIndent: 24
      properties:
        alignment:
          description: |
            The alignment of the paragraph.
          enum:
            - left
            - center
            - right
            - justified
          example: center
          nullable: true
          type: string
        endIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph  at the end of each line. Positive is towards the center of the page.
          example: 240
          nullable: true
          type: number
        firstLineIndent:
          description: |
            The amount of indent, in points, from the margin to apply to the first line of a paragraph  in addition to the start indent. Positive is towards the center of the page.
          example: 240
          nullable: true
          type: number
        lineSpacing:
          allOf:
            - $ref: '#/components/schemas/LineSpacing'
          nullable: true
        pageBreakBefore:
          description: |
            Whether the paragraph starts a new page. Cannot be set for rich text cells.
          example: true
          nullable: true
          type: boolean
        selection:
          $ref: '#/components/schemas/ParagraphSelection'
        spaceAfterParagraph:
          description: |
            The amount of space, in points, after the paragraph.
          example: 24
          maximum: 791
          minimum: 0
          nullable: true
          type: number
        spaceBeforeParagraph:
          description: |
            The amount of space, in points, before the paragraph.
          example: 24
          maximum: 791
          minimum: 0
          nullable: true
          type: number
        startIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph  from the start of each line. Positive is towards the center of the page.
          example: 240
          nullable: true
          type: number
      required:
        - selection
      type: object
    SetParagraphStyle:
      description: |
        Applies a text or table style to a range of paragraphs.
        The  "Table (Normal)" style can only be applied to text in table cells. Likewise, the "Normal" style can only be applied to non-table text.
      example:
        selection:
          start: 1
          stop: 3
        style: c3R5bGUta2V5Ol90Ymw
      properties:
        selection:
          $ref: '#/components/schemas/ParagraphSelection'
        style:
          description: The unique identifier of a style.
          type: string
          example: c3R5bGUta2V5Ol90Ymw
      required:
        - selection
        - style
    SetTableBreaking:
      description: |
        The property that will dictate how the table will break across pages
      example:
        type: breakWhenExceeds
        breakingPercentage: 100
      properties:
        type:
          type: string
          description: The type of table breaking
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TableBreakingType'
        breakingPercentage:
          type: integer
          description: The percentage the table will break at, only set when type is breakWhenExceeds
          maximum: 100
          minimum: 0
          nullable: true
    SetTableTextElementProperties:
      description: |
        An edit for configuring table behavior when the table spans multiple pages. If a property is null in the request, then it will be ignored.
      example:
        titleRow: true
        titleSuffix: suffix
        headerRows: 1
        tableBreaking:
          type: breakWhenExceeds
          breakingPercentage: 33
        selection:
          start:
            paragraphIndex: 0
            offset: 0
          stop:
            paragraphIndex: 2
            offset: 10
      properties:
        selection:
          $ref: '#/components/schemas/RichTextSelection'
        titleRow:
          description: Whether the title row displays on each page
          type: boolean
          nullable: true
        titleSuffix:
          description: The table title suffix
          type: string
          nullable: true
        headerRows:
          description: The rows that are going to be headers. The value must be smaller than the row size minus 2.
          type: integer
          nullable: true
          minimum: 0
          maximum: 10
        tableBreaking:
          nullable: true
          description: The property that will dictate how the table will break across pages
          allOf:
            - $ref: '#/components/schemas/SetTableBreaking'
        preferredBreakRows:
          description: Zero-indexed row indices below which a column or page break is preferred. Set to empty array to clear all breakpoints.
          items:
            type: integer
          nullable: true
          type: array
      required:
        - selection
      type: object
    StyleText:
      description: |
        Applies a text/table style to a range of text. Table styles can only be applied to cells. Likewise, the "Normal" text style can only be applied to non-table text and the "Table (Normal)" style can only be applied to table text.
      example:
        selection:
          start:
            offset: 0
            paragraphIndex: 0
          stop:
            offset: 10
            paragraphIndex: 2
        style: c3R5bGUta2V5Ol90Ymw
      properties:
        selection:
          $ref: '#/components/schemas/RichTextSelection'
        style:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
      required:
        - selection
        - style
      title: StyleText
      type: object
    TextEdit:
      description: |
        An edit for modifying rich text.  The `type` of the edit is required. Any edit property that doesn't correspond to its specified type will be ignored.
      example:
        insertText:
          format:
            bold: true
            font: Times New Roman
          inheritFormats: true
          insertAt:
            offset: 5
            paragraphIndex: 0
          text: Hello, world!
        type: insertText
      properties:
        clearListFormat:
          allOf:
            - $ref: '#/components/schemas/ClearListFormat'
          nullable: true
          type: object
        clearParagraphProperties:
          allOf:
            - $ref: '#/components/schemas/ClearParagraphProperties'
          nullable: true
          type: object
        clearTextFormat:
          allOf:
            - $ref: '#/components/schemas/ClearTextFormat'
          nullable: true
          type: object
        deleteText:
          allOf:
            - $ref: '#/components/schemas/DeleteText'
          nullable: true
          type: object
        formatText:
          allOf:
            - $ref: '#/components/schemas/FormatText'
          nullable: true
          type: object
        insertFootnote:
          allOf:
            - $ref: '#/components/schemas/InsertFootnote'
          nullable: true
          type: object
        insertImage:
          allOf:
            - $ref: '#/components/schemas/InsertImage'
          nullable: true
          type: object
        insertPageNumber:
          allOf:
            - $ref: '#/components/schemas/InsertPageNumber'
          nullable: true
          type: object
        insertParagraph:
          allOf:
            - $ref: '#/components/schemas/InsertParagraph'
          nullable: true
          type: object
        insertSoftReturn:
          allOf:
            - $ref: '#/components/schemas/InsertSoftReturn'
          nullable: true
          type: object
        insertTable:
          allOf:
            - $ref: '#/components/schemas/RichTextInsertTable'
          nullable: true
          type: object
        insertText:
          allOf:
            - $ref: '#/components/schemas/InsertText'
          nullable: true
          type: object
        removeHyperlinks:
          allOf:
            - $ref: '#/components/schemas/RemoveHyperlinks'
          nullable: true
          type: object
        setHyperlink:
          allOf:
            - $ref: '#/components/schemas/SetHyperlink'
          nullable: true
          type: object
        setListFormat:
          allOf:
            - $ref: '#/components/schemas/SetListFormat'
          nullable: true
          type: object
        setParagraphProperties:
          allOf:
            - $ref: '#/components/schemas/SetParagraphProperties'
          nullable: true
          type: object
        setParagraphStyle:
          allOf:
            - $ref: '#/components/schemas/SetParagraphStyle'
          nullable: true
          type: object
        setTableProperties:
          allOf:
            - $ref: '#/components/schemas/SetTableTextElementProperties'
          nullable: true
          type: object
        styleText:
          allOf:
            - $ref: '#/components/schemas/StyleText'
          nullable: true
          type: object
        type:
          description: The type of rich text edit.
          enum:
            - clearListFormat
            - clearParagraphProperties
            - clearTextFormat
            - deleteText
            - formatText
            - insertFootnote
            - insertImage
            - insertPageNumber
            - insertParagraph
            - insertSoftReturn
            - insertTable
            - insertText
            - removeHyperlinks
            - setHyperlink
            - setListFormat
            - setParagraphProperties
            - setParagraphStyle
            - setTableProperties
            - styleText
          type: string
      required:
        - type
    RichTextBatchEdit:
      description: A collection of edits to apply to rich text.
      example:
        data:
          - insertText:
              format:
                bold: true
                font: Times New Roman
              inheritFormats: true
              insertAt:
                offset: 5
                paragraphIndex: 0
              text: Hello, world!
            type: insertText
        isolateEdits: false
        revision: 24601abc
      properties:
        data:
          description: The edits to apply to the rich text.
          items:
            $ref: '#/components/schemas/TextEdit'
          maxItems: 100
          minItems: 1
          type: array
        islolateEdits:
          default: false
          description: |
            Whether the edits in a batch should be isolated from one-another. The edits will still be applied in order, but subsequent edits are unaffected by the previous edits in the same batch. For example, if one edit inserts some content, the next edits will act as if the content doesn't exist yet. Or if an edit deletes some content, the next edits will act as if the content is still there. This mode makes it easier to apply many edits on existing content because you don't need to manually keep track of how the previous edits have moved the content. For example, if you want to replace all instances of one word with another it will be easier to do this with isolated edits.
          example: true
          type: boolean
        revision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      required:
        - data
      type: object
    InsertDestinationLink:
      description: |
        A text edit for inserting a destination link in rich text. The destination link will reference the latest published revision of the source link.
      example:
        insertAt:
          offset: 2
          paragraphIndex: 4
        sourceAnchor: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
      properties:
        insertAt:
          $ref: '#/components/schemas/Caret'
        sourceAnchor:
          description: The unique identifier for the source anchor.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          type: string
      required:
        - insertAt
        - sourceAnchor
      type: object
    RemoveLinks:
      description: |
        A text edit for removing source and destination links in rich text. This operation will be a no-op if no links exist within the range of text.
      example:
        selection:
          start:
            offset: 0
            paragraphIndex: 2
          stop:
            offset: 70
            paragraphIndex: 4
      properties:
        selection:
          $ref: '#/components/schemas/RichTextSelection'
      required:
        - selection
      type: object
    TextLinkEdit:
      description: |
        An edit for modifying a link in rich text.  The `type` of the edit is required. Any edit property that doesn't correspond to its specified type will be ignored.
      example:
        insertDestinationLink:
          insertAt:
            offset: 10
            paragraphIndex: 4
          sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
        type: insertDestinationLink
      properties:
        insertDestinationLink:
          allOf:
            - $ref: '#/components/schemas/InsertDestinationLink'
          nullable: true
        removeLinks:
          allOf:
            - $ref: '#/components/schemas/RemoveLinks'
          nullable: true
        type:
          description: The type of the link edit of rich text.
          enum:
            - insertDestinationLink
            - removeLinks
          type: string
      required:
        - type
    RichTextLinksBatchEdit:
      description: A collection of link edits to perform on rich text content.
      example:
        data:
          - insertDestinationLink:
              insertAt:
                offset: 10
                paragraphIndex: 4
              sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: insertDestinationLink
        isolateEdits: false
        revision: 24601abc
      properties:
        data:
          description: The link edits to apply to rich text.
          items:
            $ref: '#/components/schemas/TextLinkEdit'
          maxItems: 100
          minItems: 1
          type: array
        isolateEdits:
          default: false
          description: |
            Whether the edits in a batch should be isolated from one-another. The edits will still be applied in order, but subsequent edits are unaffected by the previous edits in the same batch. For example, if one edit inserts some content, the next edits will act as if the content doesn't exist yet. Or if an edit deletes some content, the next edits will act as if the content is still there. This mode makes it easier to apply many edits on existing content because you don't need to manually keep track of how the previous edits have moved the content. For example, if you want to replace all instances of one word with another it will be easier to do this with isolated edits.
          example: true
          type: boolean
        revision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Revision'
      required:
        - data
      type: object
    ParagraphsListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Paragraph` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - elements:
              - chart:
                  dimensions:
                    height: 240
                    width: 240
                  table:
                    table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                    revision: 24601abc
                  length: 10
                  offset: 10
                  style:
                    revision: 2B3C4D5E
                    style: c3R5bGUta2V5Ol90Ymw
                    styleGuide: a4a9271b80e94cccb541160c9f8e61d6
                type: chart
            format:
              bold: true
            index: 0
            properties:
              alignment: justified
              endIndent: 240
              firstLineIndent: 240
              pageBreakBefore: false
              startIndent: 240
            style:
              revision: 2B3C4D5E
              style: c3R5bGUta2V5Ol90Ymw
              styleGuide: a4a9271b80e94cccb541160c9f8e61d6
        revision: 2c6438ab4541de6d
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          readOnly: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/Paragraph'
          readOnly: true
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    ListProgressionBold:
      description: The bold format applied to the list progression glyph.
      nullable: true
      properties:
        bold:
          description: Whether or not the glyph is bold
          example: false
          type: boolean
        locked:
          description: Whether the bold format is locked.
          example: false
          type: boolean
      type: object
    ListProgressionFont:
      description: The font family of the list progression glyph.
      nullable: true
      properties:
        fontFamily:
          description: The name of the font.
          example: Times New Roman
          type: string
        locked:
          description: Whether the font family is locked.
          example: false
          type: boolean
      type: object
    ListGlyphAlignment:
      default: glyphAlignLeft
      description: How the list glyph is aligned relative to the indentation point of the list level.
      enum:
        - glyphAlignLeft
        - glyphAlignRight
      example: glyphAlignLeft
      type: string
    ListProgressionAlignment:
      description: The alignment of the list progression glyph.
      properties:
        alignment:
          $ref: '#/components/schemas/ListGlyphAlignment'
      type: object
    ListProgressionIndentation:
      description: The indentation formats applied to the list progression.
      nullable: true
      properties:
        firstLineIndent:
          description: |
            The amount of indent, in points, from the margin to apply to the first line of a paragraph in addition to the start indent. Positive is towards the center of the page.
          example: 54
          type: number
        startIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph from the start of each line. Positive is towards the center of the page.
          example: 27
          type: number
      type: object
    ListProgressionItalic:
      description: The italic format applied to the list progression glyph.
      nullable: true
      properties:
        italic:
          description: Whether or not the glyph is italicized
          example: false
          type: boolean
        locked:
          description: Whether the italic format is locked.
          example: false
          type: boolean
      type: object
    ListProgressionText:
      description: The prefix and suffix text applied to the list progression glyph.
      properties:
        locked:
          description: Whether the prefix and suffix are locked.
          example: false
          type: boolean
        prefix:
          description: Prefix to be prepended to the glyph.
          example: Item
          type: string
        suffix:
          description: Suffix to be appended to the glyph.
          example: .
          type: string
      type: object
    ListSequenceType:
      default: unorderedSequence
      description: |
        The type of list sequence. If the list style is unordered, the sequence type of the first list progression must be unordered. If the list style is ordered, the sequence type of the first list progression may not be unordered.
      enum:
        - unorderedSequence
        - numericSequence
        - uppercaseAlphabeticSequence
        - lowercaseAlphabeticSequence
        - uppercaseRomanSequence
        - lowercaseRomanSequence
        - enclosedSequence
        - chineseSequence
        - formalChineseSequence
      example: unorderedSequence
      type: string
    ListProgressionStyle:
      description: The list sequence style of this list progression.
      properties:
        sequenceType:
          $ref: '#/components/schemas/ListSequenceType'
        unorderedGlyph:
          description: |
            The custom glyph to use for unordered lists. If the sequenceType is not set to unordered, then this field is ignored.
          example: •
          nullable: true
          type: string
      type: object
    ListProgressionColor:
      description: The color of the list progression glyph.
      nullable: true
      properties:
        locked:
          description: Whether the color is locked.
          example: false
          type: boolean
        symbolColor:
          $ref: '#/components/schemas/Color'
      type: object
    ListProgressionSize:
      description: The size of the list progression glyph.
      nullable: true
      properties:
        locked:
          description: Whether the size is locked.
          example: false
          type: boolean
        symbolSize:
          description: The size of the list item glyph in points.
          example: 14
          type: number
      type: object
    ListProgressionUnderline:
      description: The underline format applied to the list progression glyph.
      nullable: true
      properties:
        locked:
          description: Whether the underline format is locked.
          example: false
          type: boolean
        underline:
          description: Whether or not the glyph be underline?
          example: false
          type: boolean
      type: object
    ListProgressionFormats:
      description: The formats applied at a list progression.
      properties:
        bold:
          $ref: '#/components/schemas/ListProgressionBold'
        fontFamily:
          $ref: '#/components/schemas/ListProgressionFont'
        glyphAlignment:
          $ref: '#/components/schemas/ListProgressionAlignment'
        indentation:
          $ref: '#/components/schemas/ListProgressionIndentation'
        italic:
          $ref: '#/components/schemas/ListProgressionItalic'
        listText:
          $ref: '#/components/schemas/ListProgressionText'
        style:
          $ref: '#/components/schemas/ListProgressionStyle'
        symbolColor:
          $ref: '#/components/schemas/ListProgressionColor'
        symbolSize:
          $ref: '#/components/schemas/ListProgressionSize'
        underline:
          $ref: '#/components/schemas/ListProgressionUnderline'
      type: object
    ListProgression:
      description: The properties applied at a particular level of a list.
      properties:
        formats:
          $ref: '#/components/schemas/ListProgressionFormats'
        listLevel:
          description: The list indentation level of this list progression.
          example: 1
          type: integer
      type: object
    StyleNotes:
      description: Custom tooltip for a style.
      example: My Style
      type: string
    ListStyleType:
      default: orderedListStyle
      description: The type of the list style.
      enum:
        - orderedListStyle
        - unorderedListStyle
      example: orderedListStyle
      type: string
    ListStyle:
      description: A style which describes a set for formats for the levels of a list.
      properties:
        id:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
        index:
          description: The index of this style in its group.
          example: 1
          type: integer
        isNormalStyle:
          description: Whether this style is a "normal" style. Normals styles cannot be deleted or renamed.
          example: false
          type: boolean
        listProgressions:
          description: The ten list progression levels for this list style.
          items:
            $ref: '#/components/schemas/ListProgression'
          type: array
        name:
          description: The name of the text style.
          example: My List Style
          minLength: 1
          type: string
        notes:
          $ref: '#/components/schemas/StyleNotes'
        type:
          $ref: '#/components/schemas/ListStyleType'
      type: object
    TextAlignment:
      default: left
      description: Indicates the horizontal alignment of the text within a paragraph.
      enum:
        - left
        - center
        - right
        - justified
        - distributed
      example: justified
      nullable: true
      type: string
    TextStyleAlignment:
      description: The alignment applied by the text style.
      nullable: true
      properties:
        alignment:
          $ref: '#/components/schemas/TextAlignment'
        locked:
          description: Whether the alignment is locked.
          example: false
          type: boolean
      type: object
    TextStyleCharacterSpacing:
      description: The character spacing applied by the text style. Setting this format requires the Edit Character Spacing ability.
      properties:
        characterSpacing:
          description: The space between characters, in 1/1000 of an em.
          example: -25
          type: number
        locked:
          description: Whether the space between characters is locked.
          example: false
          type: boolean
      type: object
    TextStyleEmphasis:
      description: |
        The emphasis formats applied by the text style. This consists of the bold, italic, and underline formats.
      properties:
        bold:
          description: Whether or not the text is bold
          example: false
          type: boolean
        italic:
          description: Whether or not the text is italicized
          example: false
          type: boolean
        locked:
          description: Whether the emphasis group is locked.
          example: false
          type: boolean
        underline:
          description: Whether or not the text is underlined
          example: false
          type: boolean
      type: object
    TextStyleFirstLineIndent:
      description: The first line indent applied by the text style.
      properties:
        firstLineIndent:
          description: |
            The amount of indent, in points, from the margin to apply to the first line of a paragraph in addition to the start indent. Positive is towards the center of the page.
          example: 54
          type: number
        locked:
          description: Whether the first line indent is locked.
          example: false
          type: boolean
      type: object
    TextStyleFontColor:
      description: The font color applied by the text style.
      properties:
        fontColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The font color in RGB format
          nullable: true
        locked:
          description: Whether the font color is locked.
          example: false
          type: boolean
      type: object
    TextStyleFontFamily:
      description: The font applied by the text style.
      properties:
        fontFamily:
          description: The name of the font.
          example: Times New Roman
          type: string
        locked:
          description: Whether the font is locked.
          example: false
          type: boolean
      type: object
    TextStyleFontSize:
      description: The font size applied by the text style.
      properties:
        fontSize:
          description: The font size of the characters in points.
          example: 14
          type: number
        locked:
          description: Whether the font size is locked.
          example: false
          type: boolean
      type: object
    LineSpacingUnit:
      description: The units for a line spacing value as a percent of line height or points.
      enum:
        - percent
        - points
      example: percent
      type: string
    TextStyleLineSpacing:
      description: The line spacing applied by the text style.
      properties:
        lineSpacing:
          description: |
            How far apart lines should be spaced, as a percentage of line height or points.
            Valid percent range: 80% - 720%
            Valid points range: 1 - 400 points
          example: 120
          type: number
        locked:
          description: Whether the line spacing is locked.
          example: false
          type: boolean
        unit:
          $ref: '#/components/schemas/LineSpacingUnit'
      type: object
    TextStyleSpaceAfterParagraph:
      description: The space after the paragraph applied by the text style.
      properties:
        locked:
          description: Whether the space after paragraph is locked.
          example: false
          type: boolean
        spaceAfterParagraph:
          description: The space after the paragraph, in points.
          example: 10.5
          type: number
      type: object
    TextStyleSpaceBeforeParagraph:
      description: The space before the paragraph applied by the text style.
      properties:
        locked:
          description: Whether the space before paragraph is locked.
          example: false
          type: boolean
        spaceBeforeParagraph:
          description: The space before the paragraph, in points.
          example: 12.5
          type: number
      type: object
    TextStyleStartIndent:
      description: The start indent applied by the text style.
      properties:
        locked:
          description: Whether the start indent is locked.
          example: false
          type: boolean
        startIndent:
          description: |
            The amount of indent, in points, from the margin to apply to all the lines of a paragraph from the start of each line. Positive is towards the center of the page.
          example: 27
          type: number
      type: object
    TextStyleFormats:
      description: The formats applied by a text style.
      properties:
        alignment:
          $ref: '#/components/schemas/TextStyleAlignment'
        characterSpacing:
          $ref: '#/components/schemas/TextStyleCharacterSpacing'
        emphasis:
          $ref: '#/components/schemas/TextStyleEmphasis'
        firstLineIndent:
          $ref: '#/components/schemas/TextStyleFirstLineIndent'
        fontColor:
          $ref: '#/components/schemas/TextStyleFontColor'
        fontFamily:
          $ref: '#/components/schemas/TextStyleFontFamily'
        fontSize:
          $ref: '#/components/schemas/TextStyleFontSize'
        lineSpacing:
          $ref: '#/components/schemas/TextStyleLineSpacing'
        spaceAfterParagraph:
          $ref: '#/components/schemas/TextStyleSpaceAfterParagraph'
        spaceBeforeParagraph:
          $ref: '#/components/schemas/TextStyleSpaceBeforeParagraph'
        startIndent:
          $ref: '#/components/schemas/TextStyleStartIndent'
      type: object
    TableStyle:
      description: A style which describes a set of formats for content in table cells.
      properties:
        formats:
          $ref: '#/components/schemas/TextStyleFormats'
        id:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
        index:
          description: The index of this style in its group.
          example: 1
          type: integer
        isNormalStyle:
          description: Whether this style is a "normal" style. Normals styles cannot be deleted or renamed.
          example: false
          type: boolean
        name:
          description: The name of the table style.
          example: Table Style
          minLength: 1
          type: string
        notes:
          $ref: '#/components/schemas/StyleNotes'
      type: object
    TextStyleType:
      default: paragraphStyle
      description: The type of the text style.
      enum:
        - paragraphStyle
        - headingStyle
      example: paragraphStyle
      type: string
    TextStyle:
      description: A style which describes a set of formats for text elements.
      properties:
        formats:
          $ref: '#/components/schemas/TextStyleFormats'
        id:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
        index:
          description: The index of this style in its group.
          example: 1
          type: integer
        isNormalStyle:
          description: Whether this style is a "normal" style. Normals styles cannot be deleted or renamed.
          example: false
          type: boolean
        name:
          description: The name of the text style.
          example: My Custom Style
          minLength: 1
          type: string
        notes:
          $ref: '#/components/schemas/StyleNotes'
        type:
          $ref: '#/components/schemas/TextStyleType'
      type: object
    StyleGuide:
      description: |
        Content containing a style guide. This holds the text styles, table styles, and list styles which comprise a style guide.
      example:
        id: e810327bd46b4438b7feed9f1e2d055d
        orderedListStyles:
          - id: bGlzdC5hcmFiaWM6ZTgxMDMyN2JkNDZiNDQzOGI3ZmVlZDlmMWUyZDA1NWQ
            index: 0
            isNormalStyle: true
            listProgressions:
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: numericSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 1
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseAlphabeticSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 2
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignRight
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseRomanSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 3
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: numericSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 4
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseAlphabeticSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 5
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignRight
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseRomanSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 6
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: numericSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 7
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseAlphabeticSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 8
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignRight
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: lowercaseRomanSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 9
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: .
                  style:
                    sequenceType: numericSequence
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 10
            name: Numbered
            notes: ""
            type: orderedListStyle
        revision: 2c6438ab455b1513
        tableStyles:
          - formats:
              alignment: null
              characterSpacing:
                characterSpacing: 0
                locked: false
              emphasis:
                bold: false
                italic: false
                locked: false
                underline: false
              firstLineIndent:
                firstLineIndent: 0
                locked: false
              fontColor:
                fontColor:
                  blue: 0
                  green: 0
                  red: 0
                locked: false
              fontFamily:
                fontFamily: Arial
                locked: true
              fontSize:
                fontSize: 10
                locked: true
              lineSpacing:
                lineSpacing: 100
                locked: false
                unit: percent
              spaceAfterParagraph:
                locked: false
                spaceAfterParagraph: 0
              spaceBeforeParagraph:
                locked: false
                spaceBeforeParagraph: 0
              startIndent:
                locked: false
                startIndent: 0
            id: X3RibDplODEwMzI3YmQ0NmI0NDM4YjdmZWVkOWYxZTJkMDU1ZA
            index: 0
            isNormalStyle: true
            name: Table (Normal)
            notes: ""
        textStyles:
          - formats:
              alignment: null
              characterSpacing:
                characterSpacing: 0
                locked: false
              emphasis:
                bold: false
                italic: false
                locked: false
                underline: false
              firstLineIndent:
                firstLineIndent: 0
                locked: false
              fontColor:
                fontColor:
                  blue: 0
                  green: 0
                  red: 0
                locked: false
              fontFamily:
                fontFamily: Arial
                locked: true
              fontSize:
                fontSize: 12
                locked: true
              lineSpacing:
                lineSpacing: 120
                locked: false
                unit: percent
              spaceAfterParagraph:
                locked: false
                spaceAfterParagraph: 0
              spaceBeforeParagraph:
                locked: false
                spaceBeforeParagraph: 0
              startIndent:
                locked: false
                startIndent: 0
            id: X3R4dDplODEwMzI3YmQ0NmI0NDM4YjdmZWVkOWYxZTJkMDU1ZA
            index: 0
            isNormalStyle: true
            name: Normal
            notes: ""
            type: paragraphStyle
        unorderedListStyles:
          - id: YnVsbGV0LnJvdW5kOmU4MTAzMjdiZDQ2YjQ0MzhiN2ZlZWQ5ZjFlMmQwNTVk
            index: 0
            isNormalStyle: true
            listProgressions:
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: •
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 1
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ◦
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 2
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ▪
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 3
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: •
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 4
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ◦
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 5
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ▪
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 6
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: •
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 7
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ◦
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 8
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: ▪
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 9
              - formats:
                  bold: null
                  fontFamily: null
                  glyphAlignment:
                    alignment: glyphAlignLeft
                  indentation: null
                  italic: null
                  listText:
                    locked: false
                    prefix: ""
                    suffix: ""
                  style:
                    sequenceType: unorderedSequence
                    unorderedGlyph: •
                  symbolColor: null
                  symbolSize: null
                  underline: null
                listLevel: 10
            name: Bullet
            notes: ""
            type: unorderedListStyle
      properties:
        id:
          description: The unique identifier of a style guide.
          example: af96388538e3448093a2eba192c86222
          type: string
        orderedListStyles:
          description: The ordered styles.
          items:
            $ref: '#/components/schemas/ListStyle'
          maxItems: 1000
          type: array
        revision:
          description: The current revision of the style guide
          example: 1A2B3C4D
          readOnly: true
          type: string
        tableStyles:
          description: The table styles.
          items:
            $ref: '#/components/schemas/TableStyle'
          maxItems: 1000
          type: array
        textStyles:
          description: The text styles.
          items:
            $ref: '#/components/schemas/TextStyle'
          maxItems: 1000
          type: array
        unorderedListStyles:
          description: The unordered list styles.
          items:
            $ref: '#/components/schemas/ListStyle'
          maxItems: 1000
          type: array
      type: object
    StyleGuideExport:
      description: |
        Details about the style guide export, including its options. The most recent version will be exported  if revision is omitted from the export details.
      example:
        revision: 1A2B3C4D
      nullable: true
      properties:
        revision:
          description: The revision of the style guide to export
          example: 1A2B3C4D
          type: string
      type: object
    StyleGuideImportResponse:
      description: |
        Response to a style guide import including the URL to upload the file to.
      example:
        uploadUrl: <opaque_url>
      properties:
        operationLocation:
          description: The URL to poll for the operation result.
          type: string
          example: https://api.app.wdesk.com/operations/128f274395254cf17eda6b3eb3d021b9
        uploadUrl:
          description: The signed URL used to upload the style guide. Make a POST request to this URL whose body is the contents of the style guide to upload.
          type: string
      required:
        - uploadUrl
      type: object
    TableAnchorCreation:
      description: Table anchor creation object
      example:
        range:
          startColumn: 0
          startRow: 5
          stopColumn: 3
          stopRow: 9
        revision: 24601abc
      properties:
        range:
          $ref: '#/components/schemas/CellRange'
        revision:
          description: Revision string value
          example: 24601abc
          type: string
      required:
        - revision
        - range
      type: object
    Cell:
      description: |
        A cell indicates a single cell in a table. All indexes are zero based.
      example:
        column: 9
        row: 5
      properties:
        column:
          description: The zero-based index of a column in a table.
          example: 9
          minimum: 0
          type: integer
        row:
          description: The zero-based index of a row in a table.
          example: 5
          minimum: 0
          type: integer
      required:
        - row
        - column
      type: object
    TableCellMerges:
      description: |
        Describes whether the current cell is merged with other cells. If the cell is the top left cell in a merge the  parentOf type will be set. If a cell is not the top left cell in a merge the childOf type will be set.
      example:
        childOf:
          column: 3
          row: 5
        type: childOf
      properties:
        childOf:
          allOf:
            - $ref: '#/components/schemas/Cell'
          description: The parent cell containing the content associated with this cell's merge.
          nullable: true
        parentOf:
          allOf:
            - $ref: '#/components/schemas/CellRange'
          description: The range of cells included in this cell's merge.
          nullable: true
        type:
          description: The raw value or formula of the cell with no value formatting applied. This matches the formula bar value in the app.
          enum:
            - parentOf
            - childOf
          example: parentOf
          type: string
      required:
        - type
      type: object
      nullable: true
    CellBorder:
      description: The border of a rectangle for properties of objects such as a table cell.
      example:
        color:
          blue: 255
          green: 136
          red: 155
        style: single
        weight: 1.5
      properties:
        color:
          $ref: '#/components/schemas/Color'
        style:
          description: The style of the border to apply.
          enum:
            - single
            - double
            - dashed1
            - dashed2
            - dashed3
            - dashed4
            - dashed5
          type: string
        weight:
          description: The thickness of the border, in points. Rounded to the nearest hundredth.
          example: 1.5
          type: number
      required:
        - style
        - color
        - weight
      type: object
    CellBorders:
      description: The borders of the table cell.
      example:
        bottom:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        diagonalDown:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        diagonalUp:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        left:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        right:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        top:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
      properties:
        bottom:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        diagonalDown:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        diagonalUp:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        left:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        right:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        top:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
      type: object
    CellHorizontalAlignment:
      description: The horizontal alignment of the content in the cell.
      enum:
        - left
        - center
        - right
        - justified
      example: center
      nullable: true
      type: string
    TableCellProperties:
      description: |
        The properties for a table cell. Null values indicate that the property is inheriting from style or the container when reading. Null values will not be modified when writing.
      example:
        borders:
          bottom:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
          diagonalDown:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
          diagonalUp:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
          left:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
          right:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
          top:
            color:
              blue: 255
              green: 136
              red: 155
            style: single
            weight: 1
        fillColor:
          blue: 255
          green: 136
          red: 155
        horizontalAlignment: left
        indent: 10
        verticalAlignment: middle
      properties:
        borders:
          allOf:
            - $ref: '#/components/schemas/CellBorders'
          nullable: true
        fillColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          nullable: true
        horizontalAlignment:
          $ref: '#/components/schemas/CellHorizontalAlignment'
        indent:
          description: The indentation of content in the cell.
          example: 10
          nullable: true
          type: number
        verticalAlignment:
          description: The vertical alignment of the content in the cell.
          enum:
            - top
            - middle
            - bottom
          example: middle
          nullable: true
          type: string
      type: object
    CellDestinationLinkValue:
      description: |
        A cell-level destination link. The content of cell destination links cannot be edited with rich cell edits, but other  cell edits are supported.
      example:
        destinationLink:
          destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          revision: 24601abc
        paragraphs:
          - elements:
              - textSpan:
                  format:
                    font: Times New Roman
                    italic: true
                    size: 12
                  length: 11
                  offset: 0
                  style:
                    revision: 1A2B3C4D
                    style: WW91IGZvdW5kIG1lIQ
                    styleGuide: WW91IGZvdW5kIG1lIQ
                  text: Hello World
                type: textSpan
            format:
              bold: true
            list:
              level: 2
              prefix: '['
              startAt: 1
              style:
                style: WW91IGZvdW5kIG1lIQ
                styleGuide: WW91IGZvdW5kIG1lIQ
              suffix: ']'
            properties: {}
            style:
              style: X3R4dDozZDUyMDg4ODBlNDk0YmYxYWVjYTIzM2VlYmY3ODM4Mg
              styleGuide: 3d5208880e494bf1aeca233eebf78382
      properties:
        destinationLink:
          $ref: '#/components/schemas/DestinationLinkRef'
        paragraphs:
          description: Paragraphs contained in this cell.
          items:
            $ref: '#/components/schemas/SourceParagraph'
          type: array
      required:
        - destinationLink
        - paragraphs
      type: object
    CellFormulaValue:
      description: |
        The content of a formula cell. These cells cannot be edited with rich cell edits, but other cell edits are supported.
      example:
        calculatedValue: "24"
        effectiveValue: "25"
        format:
          bold: true
          font: Arial
          size: 24
        style:
          revision: 1A2B3C4D
          style: WW91IGZvdW5kIG1lIQ
          styleGuide: WW91IGZvdW5kIG1lIQ
      properties:
        calculatedValue:
          description: The computed value of the formula without any value formatting applied The formula itself is in the "rawValue" property of the cell.
          example: "24"
          type: string
        effectiveValue:
          description: The computed value of the formula with value formatting applied, exactly as it is displayed in the app. The formula itself is in the cell's "rawValue" property.
          example: "25"
          type: string
        format:
          allOf:
            - $ref: '#/components/schemas/RichTextFormat'
          nullable: true
        style:
          $ref: '#/components/schemas/StyleRef'
      required:
        - calculatedValue
        - effectiveValue
        - format
        - style
      type: object
    CellPlainTextValue:
      description: |
        The content of a plain text cell. These cells contain a non-text value formatted value (such as a number or a date) and thus cannot be edited with rich cell edits, but other cell edits are supported. To perform rich edits on this cell you first need to either change the value format to "Text" or assign the cell's value to something that cannot be value formatted.
      example:
        effectiveValue: "25"
        format:
          bold: true
          font: Arial
          size: 24
        style:
          revision: 1A2B3C4D
          style: WW91IGZvdW5kIG1lIQ
          styleGuide: WW91IGZvdW5kIG1lIQ
      properties:
        effectiveValue:
          description: The value after it has been value formatted, exactly as it is displayed in the app. The original value is in the cell's "rawValue" property.
          example: "25"
          type: string
        format:
          allOf:
            - $ref: '#/components/schemas/RichTextFormat'
          nullable: true
        style:
          $ref: '#/components/schemas/StyleRef'
      required:
        - effectiveValue
        - format
        - style
      type: object
    CellRichTextValue:
      description: |
        The content of a rich text cell. This is the default type for cells before any content is set on them.
      example:
        paragraphs:
          - elements:
              - chart:
                  dimensions:
                    height: 240
                    width: 240
                  table:
                    table: WA66srK9AtGU3PvTjs4dMCR9B34EoH6LqyloPIRNdxS5Bgs3p199MQzPsA
                    revision: 24601abc
                  length: 10
                  offset: 10
                  style:
                    revision: 2B3C4D5E
                    style: c3R5bGUta2V5Ol90Ymw
                    styleGuide: a4a9271b80e94cccb541160c9f8e61d6
                type: chart
            format:
              bold: true
              font: Arial
              size: 24
            index: 3
            properties: {}
      properties:
        paragraphs:
          description: Paragraphs contained in this cell.
          items:
            $ref: '#/components/schemas/Paragraph'
          type: array
      required:
        - paragraphs
      type: object
    CellValue:
      description: The content of a cell.
      example:
        destinationLink:
          destinationLink:
            destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            revision: 24601abc
          paragraphs:
            - elements:
                - textSpan:
                    format:
                      font: Times New Roman
                      italic: true
                      size: 12
                    length: 11
                    offset: 0
                    style:
                      revision: 1A2B3C4D
                      style: WW91IGZvdW5kIG1lIQ
                      styleGuide: WW91IGZvdW5kIG1lIQ
                    text: Hello World
                  type: textSpan
              format:
                bold: true
              list:
                level: 2
                prefix: '['
                startAt: 1
                style:
                  style: WW91IGZvdW5kIG1lIQ
                  styleGuide: WW91IGZvdW5kIG1lIQ
                suffix: ']'
              properties: {}
              style:
                style: X3R4dDozZDUyMDg4ODBlNDk0YmYxYWVjYTIzM2VlYmY3ODM4Mg
                styleGuide: 3d5208880e494bf1aeca233eebf78382
        type: destinationLink
      properties:
        destinationLink:
          allOf:
            - $ref: '#/components/schemas/CellDestinationLinkValue'
          nullable: true
        formula:
          allOf:
            - $ref: '#/components/schemas/CellFormulaValue'
          nullable: true
        plainText:
          allOf:
            - $ref: '#/components/schemas/CellPlainTextValue'
          nullable: true
        richText:
          allOf:
            - $ref: '#/components/schemas/CellRichTextValue'
          nullable: true
        type:
          description: The type of content in a cell.
          enum:
            - destinationLink
            - formula
            - plainText
            - richText
          example: formula
          type: string
      required:
        - type
      type: object
    TableCell:
      description: Content containing a cell of a table.
      example:
        inputCell: true
        locked: true
        merges:
          childOf:
            column: 3
            row: 5
          type: childOf
        properties:
          borders:
            bottom:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
            diagonalDown:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
            diagonalUp:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
            left:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
            right:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
            top:
              color:
                blue: 255
                green: 136
                red: 155
              style: single
              weight: 1
          fillColor:
            blue: 255
            green: 136
            red: 155
          horizontalAlignment: left
          indent: 10
          verticalAlignment: middle
        rawValue: Hello World
        value:
          plainText:
            effectiveValue: "25"
            format:
              bold: true
              font: Arial
              size: 24
            style: {}
          type: plainText
      properties:
        inputCell:
          description: Whether this cell is an input cell.
          type: boolean
        locked:
          description: Whether this cell is locked.
          type: boolean
        merges:
          allOf:
            - $ref: '#/components/schemas/TableCellMerges'
          nullable: true
        properties:
          allOf:
            - $ref: '#/components/schemas/TableCellProperties'
          nullable: true
        rawValue:
          description: The raw value or formula of the cell with no value formatting applied. This matches the formula bar value in the app.
          example: =A1+B1
          type: string
        value:
          $ref: '#/components/schemas/CellValue'
      type: object
    TableRow:
      description: A row of cell data in a cell.
      example:
        cells:
          - merges:
              childOf:
                column: 3
                row: 5
              type: childOf
            properties:
              borders:
                bottom:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
                diagonalDown:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
                diagonalUp:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
                left:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
                right:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
                top:
                  color:
                    blue: 255
                    green: 136
                    red: 155
                  style: single
                  weight: 1
              fillColor:
                blue: 255
                green: 136
                red: 155
              horizontalAlignment: left
              indent: 10
              verticalAlignment: middle
            rawValue: Hello World
            value:
              formula:
                calculatedValue: "25"
                effectiveValue: "25"
                format:
                  bold: true
                  font: Arial
                  size: 24
                style:
                  style: X3R4dDozZDUyMDg4ODBlNDk0YmYxYWVjYTIzM2VlYmY3ODM4Mg
                  styleGuide: 3d5208880e494bf1aeca233eebf78382
              type: formula
      properties:
        cells:
          items:
            $ref: '#/components/schemas/TableCell'
          type: array
      type: object
    TableCellsResult:
      description: "This represents a page of table cell results.\nTable content is paginated into smaller rectangles (pages) based on the limit in the given page range. The  limit represents the total number of cells in a page such that each page `page.rows * page.columns <= maxcellsperpage`. \nThe page will try to fill a whole row or column based off the offset and limit, filling either vertically from  top to bottom or horizontally left to right. If the limit is less than the number of cells in a row or column,  the page at the end of a row or column may be less than the limit to prevent a page from spanning across rows  or columns.\n"
      example:
        '@nextLink': <opaque_url>
        data:
          - cells:
              - properties:
                  borders:
                    bottom:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                    diagonalDown:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                    diagonalUp:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                    left:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                    right:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                    top:
                      color:
                        blue: 128
                        green: 128
                        red: 128
                      style: single
                      weight: 1
                  fillColor:
                    blue: 128
                    green: 128
                    red: 128
                  horizontalAlignment: left
                  indent: 10
                  verticalAlignment: middle
                rawValue: Hello World
                value:
                  destinationLink:
                    destinationLink:
                      destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
                      revision: 24601abc
                    paragraphs:
                      - elements:
                          - textSpan:
                              format:
                                font: Times New Roman
                                italic: true
                                size: 12
                              length: 11
                              offset: 0
                              style:
                                revision: 1A2B3C4D
                                style: WW91IGZvdW5kIG1lIQ
                                styleGuide: WW91IGZvdW5kIG1lIQ
                              text: Hello World
                            type: textSpan
                        format:
                          bold: true
                        list:
                          level: 2
                          prefix: '['
                          startAt: 1
                          style:
                            style: WW91IGZvdW5kIG1lIQ
                            styleGuide: WW91IGZvdW5kIG1lIQ
                          suffix: ']'
                        properties: {}
                        style:
                          style: X3R4dDozZDUyMDg4ODBlNDk0YmYxYWVjYTIzM2VlYmY3ODM4Mg
                          styleGuide: 3d5208880e494bf1aeca233eebf78382
                  type: destinationLink
        range:
          startColumn: 0
          startRow: 0
          stopColumn: 0
          stopRow: 0
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for the next page of results.
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: Cells for the current page of results.
          items:
            $ref: '#/components/schemas/TableRow'
          type: array
        range:
          $ref: '#/components/schemas/CellRange'
        revision:
          description: The revision of the table.
          example: 24601abc
          type: string
      required:
        - revision
      type: object
    CellRanges:
      description: |
        A collection of cell ranges in a table.
      items:
        $ref: '#/components/schemas/CellRange'
      minItems: 1
      type: array
    ClearCellsBorders:
      description: |
        Clears the cell borders from all the cells in the given ranges of a table.
      example:
        clearAll: true
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
      properties:
        clearAll:
          default: false
          description: |
            Whether to clear all cell borders.
          type: boolean
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    ClearCellsFormat:
      description: |
        Clears the text formatting from all the cells in the given ranges of a table. This will not clear out styles nor hyperlinks.
      example:
        clearAll: false
        clearBackgroundColor: true
        clearBold: false
        clearCharacterSpacing: true
        clearFont: true
        clearItalic: true
        clearSize: false
        clearStrikeThrough: true
        clearTextColor: true
        clearUnderline: true
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
      properties:
        clearAll:
          default: false
          description: Whether or not to clear all cell formats. This is the same as setting every other option to true. When new text formats are added those will also be cleared. When true, all other clear option values are ignored.
          example: true
          type: boolean
        clearBackgroundColor:
          default: false
          description: Whether or not clear the background color.
          example: true
          type: boolean
        clearBold:
          default: false
          description: Whether or not clear the bold format.
          example: true
          type: boolean
        clearCharacterSpacing:
          default: false
          description: Whether or not clear the character spacing.
          example: true
          type: boolean
        clearFont:
          default: false
          description: Whether or not to clear the font.
          example: true
          type: boolean
        clearItalic:
          default: false
          description: Whether or not clear the italic format.
          example: true
          type: boolean
        clearSize:
          default: false
          description: Whether or not clear the font size.
          example: true
          type: boolean
        clearStrikeThrough:
          default: false
          description: Whether or not clear the strikethrough.
          example: true
          type: boolean
        clearTextColor:
          default: false
          description: Whether or not clear the text color.
          example: true
          type: boolean
        clearUnderline:
          default: false
          description: Whether or not clear the underline.
          example: true
          type: boolean
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    ClearCellsProperties:
      description: |
        Clears the cell properties from all the cells in the given ranges of a table. This will not clear out styles, formats, or hyperlinks.
      example:
        clearAll: false
        clearFillColor: true
        clearHorizontalAlignment: false
        clearIndent: false
        clearVerticalAlignment: false
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
      properties:
        clearAll:
          default: false
          description: |
            Whether to clear all cell properties.
            This is the same as setting every other option to true. When new cell properties are added those will also be cleared.
            When true, all other clear option values are ignored.
          type: boolean
        clearFillColor:
          default: false
          description: Whether to clear the fill color.
          type: boolean
        clearHorizontalAlignment:
          default: false
          description: Whether to clear the horizontal alignment.
          type: boolean
        clearIndent:
          default: false
          description: Whether to clear the indent.
          type: boolean
        clearVerticalAlignment:
          default: false
          description: Whether to clear the vertical alignment.
          type: boolean
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    ClearCellsText:
      description: |
        Deletes the text from all the cells in the ranges of a table. This will not remove the text formatting applied to the cells. The cells locations will remain, although empty, even if a complete row or column is specified by the range.
      example:
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
      properties:
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    FormatCells:
      description: |
        Applies formatting to cells in the given ranges of a table. Null properties are ignored.
      example:
        backgroundColor: '#808080'
        bold: true
        characterSpacing: 50
        font: Arial
        italic: true
        ranges:
          - startColumn: 2
            startRow: 2
            stopColumn: 2
            stopRow: 2
        size: 12
        strikethrough: true
        textColor:
          blue: 128
          green: 128
          red: 128
        underline: true
      properties:
        backgroundColor:
          description: color to apply to the background represented as a hex-code
          example: '#FFFFFF'
          nullable: true
          type: string
        bold:
          description: whether or not to bold the text
          example: true
          nullable: true
          type: boolean
        characterSpacing:
          description: space between characters
          example: -1
          maximum: 1000
          minimum: -1000
          nullable: true
          type: integer
        font:
          description: name of the font
          example: Arial
          nullable: true
          type: string
        italic:
          description: whether or not to italicise the text
          example: true
          nullable: true
          type: boolean
        ranges:
          $ref: '#/components/schemas/CellRanges'
        size:
          description: font size in points
          example: 12
          maximum: 720
          minimum: 1
          nullable: true
          type: number
        strikethrough:
          description: whether or not to apply strikethrough to the text
          example: true
          nullable: true
          type: boolean
        textColor:
          $ref: '#/components/schemas/Color'
        underline:
          description: whether or not to underline the text
          example: true
          nullable: true
          type: boolean
      required:
        - ranges
      type: object
    RichCellBatchEdit:
      description: |
        Collection of edits to perform on the rich text of a cell in the table.
      example:
        cell:
          column: 2
          row: 5
        data:
          - insertText:
              format:
                font: Times New Roman
                size: 14
                underline: true
              inheritFormats: true
              insertAt:
                offset: 0
                paragraphIndex: 0
              text: Thank you
            type: insertText
        isolateEdits: true
      properties:
        cell:
          $ref: '#/components/schemas/Cell'
        data:
          items:
            $ref: '#/components/schemas/TextEdit'
          type: array
        isolateEdits:
          description: Whether the edits in a batch should be isolated from one-another. The edits will still be applied in order, but subsequent edits are unaffected by the previous edits in the same batch. For example, if one edit inserts some content, the next edits will act as if the content doesn't exist yet. Or if an edit deletes some content, the next edits will act as if the content is still there. This mode makes it easier to apply many edits on existing content because you don't need to manually keep track of how the previous edits have moved the content. For example, if you want to replace all instances of one word with another it will be easier to do this with isolated edits.
          example: true
          type: boolean
      required:
        - cell
        - isolateEdits
        - data
      type: object
    SetCellsBorders:
      description: |
        Applies borders to cells in the given ranges of a table.
      example:
        bottom:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        diagonalDown: null
        diagonalUp:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
        left: null
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
        right: null
        top:
          color:
            blue: 255
            green: 136
            red: 155
          style: single
          weight: 1
      properties:
        bottom:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        diagonalDown:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        diagonalUp:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        left:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        ranges:
          $ref: '#/components/schemas/CellRanges'
        right:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
        top:
          allOf:
            - $ref: '#/components/schemas/CellBorder'
          nullable: true
      required:
        - ranges
      type: object
    SetCellsLock:
      description: |
        Locks or unlocks cells in the given ranges of a table. The operation will no-op if the cell is already in the state associated with the lock.
      example:
        lock: true
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
      properties:
        lock:
          description: Whether to lock or unlock the ranges of cells.
          example: false
          type: boolean
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
        - lock
      type: object
    CellVerticalAlignment:
      description: The vertical alignment of the content in the cell.
      enum:
        - top
        - middle
        - bottom
        - distributed
      example: middle
      nullable: true
      type: string
    SetCellsProperties:
      description: |
        Applies properties to cells in the given ranges of a table.
      example:
        fillColor:
          blue: 255
          green: 136
          red: 155
        horizontalAlignment: center
        indent: 4.2
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
        verticalAlignment: middle
      properties:
        fillColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The fill color in RGB format
          nullable: true
        horizontalAlignment:
          allOf:
            - $ref: '#/components/schemas/CellHorizontalAlignment'
          description: The horizontal alignment of the content in the cell.
          nullable: true
          type: string
        indent:
          description: The indentation of content in the cell.
          example: 0
          minimum: 0
          nullable: true
          type: number
        ranges:
          $ref: '#/components/schemas/CellRanges'
        verticalAlignment:
          allOf:
            - $ref: '#/components/schemas/CellVerticalAlignment'
          description: The vertical alignment of the content in the cell.
          nullable: true
          type: string
      required:
        - ranges
      type: object
    SetCellsStyle:
      description: |
        Applies a style to cells in the given ranges of a table. The "Normal" text style is not supported in table cells. Use the "Table (Normal)" style to apply normal styles to text in a table cell.
      example:
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 2
            stopRow: 2
        style: c3R5bGUta2V5Ol90Ymw
      properties:
        ranges:
          $ref: '#/components/schemas/CellRanges'
        style:
          description: The unique identifier of a style.
          example: c3R5bGUta2V5Ol90Ymw
          type: string
      required:
        - ranges
        - style
      title: SetCellsStyle
      type: object
    SetCellsText:
      description: |
        Writes text to a range of a table. This will overwrite any existing text with the given text. Cell properties and some formatting will be preserved. Some formatting on text will be removed by the overwrite.
        The provided text may not be larger than the specified range. Any null or missing elements in the text will not modify the corresponding cell.
      example:
        range:
          startColumn: 0
          startRow: 0
          stopColumn: 2
          stopRow: 2
        text:
          - - A1
            - B1
          - - A2
            - B2
      properties:
        range:
          $ref: '#/components/schemas/CellRange'
        text:
          items:
            items:
              type: string
            type: array
          type: array
      required:
        - range
        - text
      type: object
    SetInputCells:
      description: |
        Sets the input cells for a range of cells in a table. Setting input cells requires the input mode ability. The operation will no-op if the cell is already in the state associated with the input cell.
      example:
        ranges:
          - startRow: 0
            stopRow: 2
            startColumn: 0
            stopColumn: 2
        inputCell: true
      properties:
        ranges:
          $ref: '#/components/schemas/CellRanges'
        inputCell:
          description: Whether the cells should be input cells.
          type: boolean
          example: false
      required:
        - ranges
        - inputCell
      type: object
    TableCellsEdit:
      description: An edit for modifying a table cells. The edit property associated with the edit type is required. Any edit property that doesn't correspond to its type will be ignored.
      example:
        clearCellsFormat:
          clearAll: false
          clearBackgroundColor: true
          clearBold: false
          clearCharacterSpacing: true
          clearFont: false
          clearItalic: true
          clearSize: true
          clearStrikeThrough: true
          clearTextColor: true
          clearUnderline: true
          ranges:
            - startColumn: 0
              startRow: 0
              stopColumn: 2
              stopRow: 2
        type: clearCellsFormat
      nullable: false
      properties:
        clearCellsBorders:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClearCellsBorders'
        clearCellsFormat:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClearCellsFormat'
        clearCellsProperties:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClearCellsProperties'
        clearCellsText:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClearCellsText'
        formatCells:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/FormatCells'
        richCellBatchEdit:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RichCellBatchEdit'
        setCellsBorders:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetCellsBorders'
        setCellsLock:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetCellsLock'
        setCellsProperties:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetCellsProperties'
        setCellsStyle:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetCellsStyle'
        setCellsText:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetCellsText'
        setInputCells:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SetInputCells'
        type:
          description: The type of cells edit
          enum:
            - clearCellsBorders
            - clearCellsFormat
            - clearCellsProperties
            - clearCellsText
            - formatCells
            - richCellBatchEdit
            - setCellsBorders
            - setCellsLock
            - setCellsProperties
            - setCellsStyle
            - setCellsText
            - setInputCells
          example: clearCellsFormat
          type: string
      required:
        - type
      type: object
    LockedCellEditMode:
      default: strict
      description: |
        Whether or not an edit applied to locked cells is prevented. Validation will prevent an edit with a locked
        cell when set to `strict`. When set to `trim` the edit will succeed with the locked cells trimmed out.
      enum:
        - strict
        - trim
      type: string
    TableCellsBatchEdit:
      description: A collection of edits to apply to table cells.
      example:
        data:
          - clearCellsFormat:
              clearAll: false
              clearBackgroundColor: true
              clearBold: false
              clearCharacterSpacing: true
              clearFont: false
              clearItalic: true
              clearSize: true
              clearStrikeThrough: true
              clearTextColor: true
              clearUnderline: true
              ranges:
                - startColumn: 0
                  startRow: 0
                  stopColumn: 2
                  stopRow: 2
            type: clearCellsFormat
        lockedCellEditMode: strict
        revision: 24601abc
      nullable: false
      properties:
        data:
          description: The edits to apply to table cells.
          items:
            $ref: '#/components/schemas/TableCellsEdit'
          maxItems: 100
          minItems: 1
          type: array
        lockedCellEditMode:
          $ref: '#/components/schemas/LockedCellEditMode'
        revision:
          description: |
            Identifies the version of the table to apply the edits to. Defaults to the latest revision if not specified.
          example: 24601abc
          nullable: true
          type: string
      required:
        - data
      type: object
    TableColumnProperties:
      description: |
        Table column properties
      properties:
        hidden:
          description: Whether the column is hidden
          example: false
          type: boolean
        width:
          description: The width of a column in points
          example: 60
          type: integer
      type: object
    ColumnPropertiesListResult:
      description: |
        Data model for column properties list
      example:
        '@nextLink': <opaque_url>
        data:
          - hidden: false
            width: 60
        revision: 2c6438ab4541de6d
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of column properties
          items:
            $ref: '#/components/schemas/TableColumnProperties'
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    ColumnRange:
      description: |
        Describes a column range
      example:
        startColumn: 5
        stopColumn: 5
      properties:
        startColumn:
          description: The zero based index of the start of the range (inclusive).
          example: 10
          minimum: 0
          type: integer
        stopColumn:
          description: The zero based index of the end of the range (inclusive).
          example: 5
          minimum: 0
          type: integer
      type: object
    AutofitColumns:
      description: Autofits one or more columns in the table to their content.
      example:
        columns:
          - startColumn: 0
            stopColumn: 2
      properties:
        columns:
          description: The column ranges to autofit.
          items:
            $ref: '#/components/schemas/ColumnRange'
          minItems: 1
          type: array
      required:
        - columns
      type: object
    RowRange:
      description: |
        Describes a row range
      example:
        startRow: 5
        stopRow: 5
      properties:
        startRow:
          description: The zero based index of the start of the range (inclusive).
          example: 10
          minimum: 0
          type: integer
        stopRow:
          description: The zero based index of the end of the range (inclusive).
          example: 5
          minimum: 0
          type: integer
      type: object
    AutofitRows:
      description: Autofits one or more rows in the table to their content.
      example:
        rows:
          - startRow: 0
            stopRow: 2
      properties:
        rows:
          description: The row ranges to autofit.
          items:
            $ref: '#/components/schemas/RowRange'
          minItems: 1
          type: array
      required:
        - rows
      type: object
    DeleteColumns:
      description: |
        Delete one or more columns from the table
      example:
        columns:
          startColumn: 5
          stopColumn: 5
      properties:
        columns:
          allOf:
            - $ref: '#/components/schemas/ColumnRange'
          nullable: true
      type: object
    DeleteRows:
      description: |
        Delete one or more rows from the table
      example:
        rows:
          startRow: 5
          stopRow: 5
      properties:
        rows:
          allOf:
            - $ref: '#/components/schemas/RowRange'
          nullable: true
      type: object
    HideColumns:
      description: Hides one or more columns in the table.
      example:
        columns:
          - startColumn: 2
            stopColumn: 4
      properties:
        columns:
          description: The column ranges to hide.
          items:
            $ref: '#/components/schemas/ColumnRange'
          minItems: 1
          type: array
      required:
        - columns
      type: object
    HideRows:
      description: Hides one or more rows in the table.
      example:
        rows:
          - startRow: 2
            stopRow: 4
      properties:
        rows:
          description: The row ranges to hide.
          items:
            $ref: '#/components/schemas/RowRange'
          minItems: 1
          type: array
      required:
        - rows
      type: object
    InsertColumns:
      description: |
        Insert one or more columns into the table next to the given column on specified side
      example:
        count: 5
        nextTo: 5
        side: putAfter
      properties:
        count:
          description: The number of columns to insert
          example: 10
          minimum: 1
          type: integer
        nextTo:
          description: The position after which to insert the columns
          example: 5
          minimum: 0
          type: integer
        side:
          description: The direction where to insert nextTo
          enum:
            - putAfter
            - putBefore
          example: putAfter
          type: string
      type: object
    InsertRows:
      description: |
        Insert one or more rows into the table next to the given row on specified side
      example:
        count: 5
        nextTo: 5
        side: putAfter
      properties:
        count:
          description: The number of rows to insert
          example: 10
          minimum: 1
          type: integer
        nextTo:
          description: The position after which to insert the rows
          example: 5
          minimum: 0
          type: integer
        side:
          description: The direction where to insert nextTo
          enum:
            - putAfter
            - putBefore
          example: putAfter
          type: string
      type: object
    MergeCellsType:
      description: The type of cell merge to perform.
      enum:
        - all
        - horizontal
        - vertical
      default: all
      type: string
    MergeCells:
      description: Merges one or more cell ranges in the table.
      example:
        mergeType: all
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 1
            stopRow: 1
      properties:
        mergeType:
          $ref: '#/components/schemas/MergeCellsType'
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    MoveColumns:
      description: |
        Moves one or more columns from one location in the table to next to the given column on the specified side of that column. The column to move the other columns next to may not be within the set of columns to move.
      example:
        move:
          startColumn: 5
          stopColumn: 5
        nextTo: 5
        side: putAfter
      properties:
        move:
          allOf:
            - $ref: '#/components/schemas/ColumnRange'
          nullable: true
        nextTo:
          description: The position after which to move the columns
          example: 5
          minimum: 0
          type: integer
        side:
          description: The direction where to move from nextTo
          enum:
            - putAfter
            - putBefore
          example: putAfter
          type: string
      type: object
    MoveRows:
      description: |
        Move one or more row from one location in the table to next to the given row on the specified side
      example:
        move:
          startRow: 5
          stopRow: 5
        nextTo: 5
        side: putAfter
      properties:
        move:
          allOf:
            - $ref: '#/components/schemas/RowRange'
          nullable: true
        nextTo:
          description: The position after which to move the rows
          example: 5
          minimum: 0
          type: integer
        side:
          description: The direction where to move from nextTo
          enum:
            - putAfter
            - putBefore
          example: putAfter
          type: string
      type: object
    ResizeColumns:
      description: Resizes one or more columns in the table to the specified width.
      example:
        columns:
          - startColumn: 0
            stopColumn: 2
        width: 120
      properties:
        columns:
          description: The column ranges to resize.
          items:
            $ref: '#/components/schemas/ColumnRange'
          minItems: 1
          type: array
        width:
          description: The new width for the columns, in points.
          maximum: 10000
          minimum: 3
          type: integer
      required:
        - columns
        - width
      type: object
    ResizeRows:
      description: Resizes one or more rows in the table to the specified height.
      example:
        height: 24
        rows:
          - startRow: 1
            stopRow: 3
      properties:
        height:
          description: The new height for the rows, in points.
          maximum: 10000
          minimum: 3
          type: integer
        rows:
          description: The row ranges to resize.
          items:
            $ref: '#/components/schemas/RowRange'
          minItems: 1
          type: array
      required:
        - rows
        - height
      type: object
    UnhideColumns:
      description: Unhides one or more columns in the table.
      example:
        columns:
          - startColumn: 2
            stopColumn: 4
      properties:
        columns:
          description: The column ranges to unhide.
          items:
            $ref: '#/components/schemas/ColumnRange'
          minItems: 1
          type: array
      required:
        - columns
      type: object
    UnhideRows:
      description: Unhides one or more rows in the table.
      example:
        rows:
          - startRow: 2
            stopRow: 4
      properties:
        rows:
          description: The row ranges to unhide.
          items:
            $ref: '#/components/schemas/RowRange'
          minItems: 1
          type: array
      required:
        - rows
      type: object
    UnmergeCells:
      description: Unmerges one or more cell ranges in the table.
      example:
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 1
            stopRow: 1
      properties:
        ranges:
          $ref: '#/components/schemas/CellRanges'
      required:
        - ranges
      type: object
    TableEdit:
      description: A table edit for modifying a table. The edit property associated with the edit type is required. Any edit property that doesn't correspond to its type will be ignored.
      example:
        mergeCells:
          ranges:
            - startColumn: 0
              startRow: 0
              stopColumn: 1
              stopRow: 1
        type: mergeCells
      properties:
        autofitColumns:
          allOf:
            - $ref: '#/components/schemas/AutofitColumns'
          nullable: true
        autofitRows:
          allOf:
            - $ref: '#/components/schemas/AutofitRows'
          nullable: true
        deleteColumns:
          allOf:
            - $ref: '#/components/schemas/DeleteColumns'
          nullable: true
        deleteRows:
          allOf:
            - $ref: '#/components/schemas/DeleteRows'
          nullable: true
        hideColumns:
          allOf:
            - $ref: '#/components/schemas/HideColumns'
          nullable: true
        hideRows:
          allOf:
            - $ref: '#/components/schemas/HideRows'
          nullable: true
        insertColumns:
          allOf:
            - $ref: '#/components/schemas/InsertColumns'
          nullable: true
        insertRows:
          allOf:
            - $ref: '#/components/schemas/InsertRows'
          nullable: true
        mergeCells:
          allOf:
            - $ref: '#/components/schemas/MergeCells'
          nullable: true
        moveColumns:
          allOf:
            - $ref: '#/components/schemas/MoveColumns'
          nullable: true
        moveRows:
          allOf:
            - $ref: '#/components/schemas/MoveRows'
          nullable: true
        resizeColumns:
          allOf:
            - $ref: '#/components/schemas/ResizeColumns'
          nullable: true
        resizeRows:
          allOf:
            - $ref: '#/components/schemas/ResizeRows'
          nullable: true
        unhideColumns:
          allOf:
            - $ref: '#/components/schemas/UnhideColumns'
          nullable: true
        unhideRows:
          allOf:
            - $ref: '#/components/schemas/UnhideRows'
          nullable: true
        unmergeCells:
          allOf:
            - $ref: '#/components/schemas/UnmergeCells'
          nullable: true
        type:
          description: The type of edit operation to perform on the table
          enum:
            - autofitColumns
            - autofitRows
            - deleteColumns
            - deleteRows
            - hideColumns
            - hideRows
            - insertColumns
            - insertRows
            - mergeCells
            - moveColumns
            - moveRows
            - resizeColumns
            - resizeRows
            - unhideColumns
            - unhideRows
            - unmergeCells
          example: mergeCells
          type: string
      required:
        - type
      type: object
    TableFiltersReapplication:
      description: A table filter reapply operation, which can reapply filters to a table and optionally force hide footnotes.
      example:
        forceHideFootnotes: true
      properties:
        forceHideFootnotes:
          default: false
          description: Whether the filter should be reapplied if doing so would cause footnotes to be hidden.
          example: true
          type: boolean
      type: object
    InsertCellDestinationLink:
      description: |
        Inserts a destination link at the provided cell. Creates a source link at the source anchor if one doesn't already exist. The destination link will reference the latest published revision of the source link.
      example:
        insertAt:
          column: 2
          row: 41
        sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
      properties:
        insertAt:
          $ref: '#/components/schemas/Cell'
        sourceAnchor:
          description: The unique identifier for the source anchor.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          type: string
      required:
        - insertAt
        - sourceAnchor
      type: object
    RemoveCellsLink:
      description: |
        Removes source and destination links in a table range. This operation will be a no-op if no cell links exist within the table range.
      example:
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 3
            stopRow: 5
      properties:
        ranges:
          description: The ranges to remove links from.
          items:
            $ref: '#/components/schemas/CellRange'
          type: array
      required:
        - ranges
      type: object
    RichCellLinkBatchEdit:
      description: |
        A collection of edits to perform on the rich text links of a cell in table content.
      example:
        cell:
          column: 0
          row: 1
        data:
          - insertDestinationLink:
              insertAt:
                offset: 10
                paragraphIndex: 2
              sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: insertDestinationLink
          - removeLinks:
              selection:
                start:
                  offset: 0
                  paragraphIndex: 4
                stop:
                  offset: 12
                  paragraphIndex: 6
            type: removeLinks
        isolateEdits: false
      properties:
        cell:
          $ref: '#/components/schemas/Cell'
        data:
          description: The link edits to apply.
          items:
            $ref: '#/components/schemas/TextLinkEdit'
          type: array
        isolateEdits:
          default: false
          description: |
            Whether the edits in a batch should be isolated from one-another. The edits will still be applied in order, but subsequent edits are unaffected by the previous edits in the same batch. For example, if one edit inserts some content, the next edits will act as if the content doesn't exist yet. Or if an edit deletes some content, the next edits will act as if the content is still there. This mode makes it easier to apply many edits on existing content because you don't need to manually keep track of how the previous edits have moved the content. For example, if you want to replace all instances of one word with another it will be easier to do this with isolated edits.
          example: true
          type: boolean
      required:
        - cell
        - isolateEdits
        - data
      type: object
    TableLinksEdit:
      description: |
        An edit for modifying a link in a table.  The edit property associated with the edit type is required. Any edit property that doesn't correspond to its type will be ignored.
      example:
        insertCellDestinationLink:
          insertAt:
            column: 2
            row: 41
          sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
        type: insertCellDestinationLink
      properties:
        insertCellDestinationLink:
          allOf:
            - $ref: '#/components/schemas/InsertCellDestinationLink'
          nullable: true
        removeCellsLink:
          allOf:
            - $ref: '#/components/schemas/RemoveCellsLink'
          nullable: true
        richCellLinkBatchEdit:
          allOf:
            - $ref: '#/components/schemas/RichCellLinkBatchEdit'
          nullable: true
        type:
          description: The type of the table links edit
          enum:
            - insertCellDestinationLink
            - removeCellsLink
            - richCellLinkBatchEdit
          type: string
      required:
        - type
      type: object
    TableLinksBatchEdit:
      description: A collection of link edits to perform on table content.
      example:
        data:
          - insertCellDestinationLink:
              insertAt:
                column: 2
                row: 41
              sourceAnchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: insertCellDestinationLink
        lockedCellEditMode: strict
        revision: 24601abc
      properties:
        data:
          description: The edits to apply to the table.
          items:
            $ref: '#/components/schemas/TableLinksEdit'
          maxItems: 100
          minItems: 1
          type: array
        lockedCellEditMode:
          $ref: '#/components/schemas/LockedCellEditMode'
        revision:
          description: |
            Identifies the version of the table to apply the edits to. Defaults to the latest revision if not specified.
          example: 24601abc
          nullable: true
          type: string
      required:
        - data
      type: object
    RangeLinkId:
      description: The unique identifier of a range link.
      type: string
      minLength: 1
      example: f649093edf354cfe8ce52fa60990a109
    RangeLinkType:
      description: The type of range link.
      type: string
      enum:
        - source
        - destination
    RangeLinkSource:
      description: Contains properties for a range link source.
      type: object
      nullable: true
      required:
        - range
      properties:
        range:
          $ref: '#/components/schemas/CellRange'
    RangeLinkRef:
      description: A reference to a range link.
      type: object
      required:
        - rangeLink
        - table
      properties:
        rangeLink:
          $ref: '#/components/schemas/RangeLinkId'
        table:
          $ref: '#/components/schemas/TableId'
        revision:
          $ref: '#/components/schemas/Revision'
      example:
        rangeLink: f649093edf354cfe8ce52fa60990a109
        table: 8610c7b132e944cb9e5c11daf08b1b1c
        revision: 2B3C4D5E
    RangeLinkDestination:
      description: Contains properties for a range link destination.
      type: object
      nullable: true
      required:
        - source
      properties:
        source:
          $ref: '#/components/schemas/RangeLinkRef'
    RangeLink:
      description: Contains properties for a range link.
      type: object
      required:
        - id
        - table
        - revision
        - type
      properties:
        id:
          $ref: '#/components/schemas/RangeLinkId'
        table:
          $ref: '#/components/schemas/TableId'
        revision:
          $ref: '#/components/schemas/Revision'
        type:
          $ref: '#/components/schemas/RangeLinkType'
        source:
          $ref: '#/components/schemas/RangeLinkSource'
        destination:
          $ref: '#/components/schemas/RangeLinkDestination'
    RangeLinkListResult:
      type: object
      description: |
        Data model for range link list
      properties:
        data:
          description: The current page of range links
          type: array
          items:
            $ref: '#/components/schemas/RangeLink'
        '@nextLink':
          description: Pagination link for next set of results
          nullable: true
          type: string
          example: <opaque_url>
    ChangeSourceRange:
      description: Changes a source links range
      example:
        range:
          startColumn: 0
          startRow: 5
          stopColumn: 3
          stopRow: 9
        rangeLink: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
      properties:
        range:
          $ref: '#/components/schemas/CellRange'
        rangeLink:
          $ref: '#/components/schemas/RangeLinkId'
      required:
        - rangeLink
        - range
      type: object
    CreateDestinationRangeLink:
      description: Creates a range destination link on the provided range
      example:
        applyColumnWidth: true
        applyFormatting: true
        sourceRangeLink: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
        sourceTable: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
      properties:
        applyColumnWidth:
          default: true
          description: Whether to inherit column widths from the source.
          type: boolean
        applyFormatting:
          default: true
          description: Whether to inherit formatting from the source.
          type: boolean
        sourceRangeLink:
          $ref: '#/components/schemas/RangeLinkId'
        sourceTable:
          description: The unique identifier for the source table.
          example: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
          type: string
      required:
        - sourceRangeLink
        - sourceTable
      type: object
    CreateSourceRangeLink:
      description: Creates a range source link on the provided range
      example:
        range:
          startColumn: 0
          startRow: 5
          stopColumn: 3
          stopRow: 9
      properties:
        range:
          $ref: '#/components/schemas/CellRange'
      required:
        - range
      type: object
    RemoveDestinationRangeLink:
      description: Removes a range destination link on the provided range
      properties:
        rangeLink:
          $ref: '#/components/schemas/RangeLinkId'
      required:
        - rangeLink
      type: object
    RemoveSourceRangeLink:
      description: Removes a range source link on the provided range
      example:
        rangeLink: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
      properties:
        rangeLink:
          $ref: '#/components/schemas/RangeLinkId'
      required:
        - rangeLink
      type: object
    RangeLinkEdit:
      description: |
        An edit for modifying, creating, removing a range link over a table The edit property associated with the edit type is required. Any edit property that doesn''t correspond to its type will be ignored.
      example:
        removeSource:
          range:
            startColumn: 0
            startRow: 5
            stopColumn: 3
            stopRow: 9
          rangeLink: WAxsaHxoYvTB4D0twUm6YtiF99TNO0gBkSOhgYBed9AMB99EUxqELDQychBaGR9SkZucm5sK
        type: removeSource
      properties:
        changeSourceRange:
          allOf:
            - $ref: '#/components/schemas/ChangeSourceRange'
          nullable: true
        createDestination:
          allOf:
            - $ref: '#/components/schemas/CreateDestinationRangeLink'
          nullable: true
        createSource:
          allOf:
            - $ref: '#/components/schemas/CreateSourceRangeLink'
          nullable: true
        removeDestination:
          allOf:
            - $ref: '#/components/schemas/RemoveDestinationRangeLink'
          nullable: true
        removeSource:
          allOf:
            - $ref: '#/components/schemas/RemoveSourceRangeLink'
          nullable: true
        type:
          description: The type of the table range links edit
          enum:
            - createSource
            - createDestination
            - removeSource
            - removeDestination
            - changeSourceRange
          type: string
      required:
        - type
      type: object
    AlternateRowFill:
      description: A range-scoped alternate row fill configuration. Cells within the range that do not have an explicit background fill will alternate between primaryColor and secondaryColor by row.
      example:
        primaryColor:
          blue: 255
          green: 255
          red: 255
        range:
          startColumn: 0
          startRow: 0
          stopColumn: 5
          stopRow: 20
        secondaryColor:
          blue: 240
          green: 240
          red: 240
      properties:
        primaryColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The primary (first) row fill color.
        range:
          allOf:
            - $ref: '#/components/schemas/CellRange'
          description: The cell range this alternate row fill applies to.
        secondaryColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The secondary (alternating) row fill color.
      required:
        - range
        - primaryColor
        - secondaryColor
      type: object
    TableLockType:
      description: A lock applied to a table.
      enum:
        - formatting
      title: TableLockType
      type: string
    TableProperties:
      description: |
        The properties for a table.
      properties:
        alternateRowFills:
          description: The alternate row fill configurations for this table. Each entry defines a range and its alternating colors. Empty if no alternate row fills are configured.
          items:
            $ref: '#/components/schemas/AlternateRowFill'
          type: array
        id:
          description: The unique identifier for the table.
          type: string
        lock:
          allOf:
            - $ref: '#/components/schemas/TableLockType'
          description: The type of lock applied to this table, if any. Note this property is not tied to revision and will always reflect the table's current lock state.
          nullable: true
          type: string
        name:
          description: The name of the table. This will match the name of the sheet if this table is in a spreadsheet.
          type: string
        printArea:
          description: The print area for this table, defined as an array of cell ranges, or null if no print area is set.
          items:
            $ref: '#/components/schemas/CellRange'
          nullable: true
          type: array
        resizeRowsToFit:
          description: Whether the rows of the table will resize automatically to fit the content of the cells.
          example: false
          type: boolean
          nullable: true
        revision:
          $ref: '#/components/schemas/Revision'
        sheet:
          description: The unique identifier of the sheet.
          type: string
      required:
        - id
        - revision
        - sheet
        - name
        - resizeRowsToFit
        - alternateRowFills
        - printArea
        - lock
      type: object
    JSONPatchOperation:
      description: |
        Represents a single JSON Patch operation. For more information, refer to the [PATCH Update documentation](ref:patch-updates).
      example:
        op: replace
        path: /name
        value: New name
      properties:
        from:
          type: string
        op:
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
          type: string
        path:
          type: string
        value:
          nullable: true
      required:
        - path
        - op
      type: object
    JSONPatchDocument:
      description: |
        Represents a collection of JSON patch operations. For more information, refer to the [PATCH Update documentation](ref:patch-updates).
      items:
        $ref: '#/components/schemas/JSONPatchOperation'
      type: array
    TableRowProperties:
      description: |
        Table row properties
      properties:
        filtered:
          description: Whether the row is filtered
          example: false
          type: boolean
        height:
          description: The height of a row in points
          example: 60
          type: integer
        hidden:
          description: Whether the row is hidden
          example: false
          type: boolean
      type: object
    RowPropertiesListResult:
      description: |
        Data model for row properties list
      example:
        '@nextLink': <opaque_url>
        data:
          - filtered: false
            height: 24
            hidden: false
        revision: 2c6438ab4541de6d
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of row properties
          items:
            $ref: '#/components/schemas/TableRowProperties'
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    CustomFieldIdentifier:
      description: User-defined unique identifier. A prefix of "Workiva" (case insensitive) is reserved for internal use.
      example: gsr.legal_entity
      readOnly: true
      type: string
    ObjectType:
      description: Type of object within the Workiva Platform
      enum:
        - Document
        - Spreadsheet
        - Presentation
        - Section
        - Sheet
        - Slide
      example: Document
      type: string
    CustomFieldGroupState:
      default: Active
      description: |
        The state of a custom field group in its usage lifecycle.
        Active groups are in active use and can be associated with data.
        Inactive groups are "archived" and can no longer be associated with new data.
      enum:
        - Active
        - Inactive
      type: string
    BuiltinCustomFieldGroupProperties:
      description: Subtype property for a custom field group defined by the Workiva platform
      example:
        description: Custom fields that apply to every Document
        id: Document
        name: All Documents
        objectTypes:
          - Document
        state: Active
      properties:
        description:
          description: A human-readable description of the group and its purpose
          type: string
        id:
          $ref: '#/components/schemas/CustomFieldIdentifier'
        name:
          description: A human-readable display name for the group
          type: string
        objectTypes:
          description: The object types for which use of this group is intended
          items:
            $ref: '#/components/schemas/ObjectType'
          type: array
          uniqueItems: true
        state:
          $ref: '#/components/schemas/CustomFieldGroupState'
      readOnly: true
      required:
        - id
        - name
        - description
        - objectTypes
        - state
      type: object
    UserDefinedCustomFieldGroupProperties:
      description: Subtype property for a custom field group defined by a user of the Workiva platform
      example:
        description: Custom fields relevant to GSR reporting
        id: gsr
        modified:
          dateTime: "2019-10-30T15:03:27Z"
          user:
            id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
        name: GSR Reporting
        objectTypes:
          - Document
          - Spreadsheet
          - Presentation
          - Section
          - Sheet
          - Slide
        state: Active
      properties:
        description:
          nullable: true
          description: A human-readable description of the group and its purpose
          type: string
        id:
          $ref: '#/components/schemas/CustomFieldIdentifier'
        modified:
          $ref: '#/components/schemas/Action'
        name:
          description: A human-readable display name for the group
          type: string
        objectTypes:
          description: The object types for which use of this group is intended
          items:
            $ref: '#/components/schemas/ObjectType'
          type: array
          uniqueItems: true
        state:
          $ref: '#/components/schemas/CustomFieldGroupState'
      required:
        - id
        - name
      type: object
    CustomFieldGroup:
      description: |
        A group of custom fields with related purpose that is intended for use with particular record types.
        A group has a subtype, either builtin or userDefined. Exactly one of these is always set, and the subtype of a group cannot be changed.
      properties:
        builtin:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BuiltinCustomFieldGroupProperties'
        userDefined:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/UserDefinedCustomFieldGroupProperties'
      type: object
    CustomFieldState:
      description: The lifecycle state of a custom field definition. 'Draft' fields are proposed but do not yet accept values. 'Active' fields are in use and can accept values. 'Inactive' fields are previously-active fields that are now read-only.
      enum:
        - Draft
        - Active
        - Inactive
      type: string
    CustomFieldSchema:
      additionalProperties: false
      description: Supported subset of JSON Schema Draft 2020-12 that is supported for use in custom fields.
      properties:
        description:
          description: Human-readable description explaining the field's purpose
          type: string
        enum:
          description: A list of specific valid values
          items: {}
          minItems: 1
          type: array
        format:
          description: (string) Constrains the valid format of a string field. See https://json-schema.org/understanding-json-schema/reference/string.html#built-in-formats
          enum:
            - date-time
            - time
            - date
            - duration
            - email
            - idn-email
            - hostname
            - idn-hostname
            - ipv4
            - ipv6
            - uuid
            - uri
            - uri-reference
            - iri
            - iri-reference
            - regex
          type: string
        maxLength:
          description: (string) Inclusive maximum number of characters allowed
          minimum: 0
          type: integer
        maximum:
          description: (integer, number) Inclusive maximum value
          minimum: 0
          type: integer
        minLength:
          description: (string) Inclusive minimum number of characters allowed
          minimum: 0
          type: integer
        minimum:
          description: (integer, number) Inclusive minimum value
          minimum: 0
          type: integer
        pattern:
          description: (string) Constrains valid strings with an ECMA 262 regular expression
          format: regex
          type: string
        reference:
          additionalProperties: false
          description: Documentation that field values are programmatic references something else at Workiva
          properties:
            $comment:
              description: A comment to help document the reference.
              type: string
            cardinality:
              default: one
              description: Denotes how many resources the value references. Defaults to 'one'
              enum:
                - one
                - many
              type: string
            description:
              description: A human-readable description
              type: string
            field:
              description: The field in the resource the value represents. Required when ReferenceType is 'ReadCache'
              format: json-pointer
              type: string
            referenceType:
              description: Subtype of the reference
              enum:
                - ReadCache
                - Platform
              type: string
            resource:
              description: Kind of resource to which the Platform (User) or ReadCache (Document, Spreadsheet, Presentation, Section, Sheet, Slide) reference refers
              enum:
                - Document
                - Spreadsheet
                - Presentation
                - Section
                - Sheet
                - Slide
                - User
              type: string
          required:
            - field
            - referenceType
            - resource
          type: object
        rhp_position_hint:
          description: Configurable hint for how a field should be positioned relative to the other fields when rendered in a UI. Fields will be ordered descending with the smallest position first. If a rhp_position_hint is omitted, it will be placed unsorted at the end of the list.
          type: number
        state:
          $ref: '#/components/schemas/CustomFieldState'
        title:
          description: Human-readable name for the field
          type: string
        type:
          description: Data type of the custom field
          enum:
            - boolean
            - integer
            - number
            - string
          type: string
      required:
        - type
        - title
        - state
      title: Custom Field Schema
      type: object
    UserDefinedCustomFieldProperties:
      description: A custom field defined by a user
      example:
        id: gsr.legal_entity
        modified:
          dateTime: "2019-10-30T15:03:27Z"
          user:
            id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
        schema:
          state: Active
          title: Legal Entity
          type: string
      properties:
        id:
          $ref: '#/components/schemas/CustomFieldIdentifier'
        modified:
          $ref: '#/components/schemas/Action'
        schema:
          $ref: '#/components/schemas/CustomFieldSchema'
      required:
        - id
        - schema
        - modified
      type: object
    CustomField:
      description: |
        Data model for a custom field.
      properties:
        userDefined:
          $ref: '#/components/schemas/UserDefinedCustomFieldProperties'
      type: object
    CustomSchemaRevision:
      description: A schema revision that increases any time the custom fields, groups, or memberships are modified. Revisions should be treated as opaque, except for the purposes of comparing to other revisions to determine which one is more recent.
      example: 123456789
      format: int64
      minimum: 0
      readOnly: true
      type: integer
    CustomSchema:
      description: The complete workspace-wide schema of custom fields, custom field groups, and mapping of custom fields to each group represented as custom field group memberships.
      properties:
        customFieldGroupMemberships:
          additionalProperties:
            description: |
              A set of custom field group ids. The order of items in this set is not significant and should not be
              relied upon for PATCHing purposes. Callers wishing to remove an item from the list should use the "replace" patch
              operation to replace the entire list with a new list that omits the item to be removed.
          example:
            gsr.legal_entity:
              - gsr
            legal:
              - Document
              - Presentation
              - Spreadsheet
              - Section
              - Sheet
              - Slide
            items:
              $ref: ./CustomFieldIdentifier.yaml
            type: array
            uniqueItems: true
          description: Map from each custom field id to the set of custom field group ids for groups in which it is a member.
          type: object
        customFieldGroups:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CustomFieldGroup'
          description: Map from custom field group ids to their definitions
          example:
            Document:
              builtin:
                description: Custom fields that apply to every Document
                id: Document
                name: All Documents
                objectTypes:
                  - Document
                state: Active
            Presentation:
              builtin:
                description: Custom fields that apply to every Presentation
                id: Presentation
                name: All Presentations
                objectTypes:
                  - Presentation
                state: Active
            Section:
              builtin:
                description: Custom fields that apply to every Section
                id: Section
                name: All Sections
                objectTypes:
                  - Section
                state: Active
            Sheet:
              builtin:
                description: Custom fields that apply to every Sheet
                id: Sheet
                name: All Sheets
                objectTypes:
                  - Sheet
                state: Active
            Slide:
              builtin:
                description: Custom fields that apply to every Slide
                id: Slide
                name: All Slides
                objectTypes:
                  - Slide
                state: Active
            Spreadsheet:
              builtin:
                description: Custom fields that apply to every Spreadsheet
                id: Spreadsheet
                name: All Spreadsheets
                objectTypes:
                  - Spreadsheet
                state: Active
            gsr:
              userDefined:
                description: Custom fields relevant to GSR reporting
                id: gsr
                modified:
                  dateTime: "2019-10-30T15:03:27Z"
                  user:
                    id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                name: GSR Reporting
                objectTypes:
                  - Document
                  - Spreadsheet
                  - Presentation
                  - Section
                  - Sheet
                  - Slide
                state: Active
        customFields:
          additionalProperties:
            $ref: '#/components/schemas/CustomField'
          description: Map from custom field ids to their definitions
          example:
            gsr.legal_entity:
              userDefined:
                id: gsr.legal_entity
                modified:
                  dateTime: "2019-10-30T15:03:27Z"
                  user:
                    id: V0ZVc2VyHzQ4Mjk1OTA4NjYzNjIzNjg
                schema:
                  title: Legal Entity
                  type: string
                  state: Active
        revision:
          $ref: '#/components/schemas/CustomSchemaRevision'
      required:
        - customFields
        - customFieldGroups
        - customFieldGroupMemberships
        - revision
      type: object
    MilestoneResourceType:
      description: The type of content associated with a milestone.
      type: string
      example: document
      enum:
        - document
        - presentation
        - spreadsheet
    MilestoneCreation:
      description: |
        Parameters used to create a milestone in a document, presentation, or spreadsheet. The created milestone will be associated with the latest revision at the point of milestone creation.
      type: object
      required:
        - type
        - title
      properties:
        type:
          $ref: '#/components/schemas/MilestoneResourceType'
        document:
          description: The unique identifier of the document being referred to
          type: string
          example: 16b1f641613847469b7aa1ca29af40b1
        presentation:
          description: The unique identifier of the presentation being referred to
          type: string
          example: 16b1f641613847469b7aa1ca29af40b1
        spreadsheet:
          description: The unique identifier of the spreadsheet being referred to
          type: string
          example: 16b1f641613847469b7aa1ca29af40b1
        title:
          description: The title of the milestone
          type: string
          minLength: 1
          maxLength: 200
        remarks:
          description: The remarks associated with the milestone
          type: string
          default: ""
    MilestoneId:
      description: The unique identifier of the milestone
      type: string
      minLength: 1
      example: WW91IGZvdW5kIG1d5kIGSd2lIQ
    MilestoneResourceRef:
      description: |
        Represents a reference to the resource associated with a milestone. The `type` property will determine which of the other properties is set.
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/MilestoneResourceType'
        document:
          description: The reference to the document for `document` type milestone
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DocumentRef'
        presentation:
          description: The reference to the presentation for `presentation` type milestone
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PresentationRef'
        spreadsheet:
          description: The reference to the spreadsheet for `spreadsheet` type milestone
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SpreadsheetRef'
    Milestone:
      description: |
        A milestone representing a point in the life cycle of a document, presentation, or spreadsheet and can be used to mark progress or completion of a particular phase.
      type: object
      required:
        - id
        - resource
        - title
        - remarks
        - created
      properties:
        id:
          description: Identifier of a milestone.
          type: string
        resource:
          $ref: '#/components/schemas/MilestoneResourceRef'
        title:
          description: The title of the milestone
          type: string
        remarks:
          description: The remarks associated with the milestone
          type: string
        created:
          description: |
            The creation action of the milestone
          allOf:
            - $ref: '#/components/schemas/Action'
    Program:
      description: |
        A Sustainability Program
      example:
        name: Sustainability Program
      properties:
        id:
          description: The unique UUID identifier of the program
          example: ca72b647-8e43-44c3-a4e7-2aa3294c37ad
          format: uuid
          readOnly: true
          type: string
        name:
          description: The name of the program. Must be unique within the workspace.
          example: Sustainability Program
          maxLength: 150
          type: string
      type: object
    ProgramsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Program` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Program'
          type: array
      required:
        - data
      type: object
    DimensionValue:
      description: |
        Data model for a dimension value
      example:
        active: true
        id: Ames, IA
        name: Ames, Iowa
      properties:
        active:
          default: true
          description: Indicates whether the dimension value is available for use in new metrics.
          example: true
          type: boolean
        id:
          description: A user-entered, unique identifier for the dimension value, up to 20 characters.
          example: Ames, IA
          maxLength: 20
          type: string
        name:
          description: The name of the dimension value, up to 300 characters. If not provided, defaults to the value of 'id'.
          example: Ames, Iowa
          maxLength: 300
          type: string
          nullable: true
      type: object
    Dimension:
      description: |
        Data model for a dimension, which allows for the collection of multiple values per metric. Dimensions could represent various categories or groupings, such as:
          - Entity locations
          - Market regions
          - Business units
          - Demographics, such as gender or race
      example:
        active: true
        name: Facility
        values:
          - id: Ames, IA
            name: Ames, Iowa
          - id: Portland, OR
            name: Portland, Oregon
      properties:
        active:
          default: true
          description: Indicates whether the dimension is available for use in new metrics
          example: true
          type: boolean
        id:
          description: The unique UUID identifier of the dimension
          example: c38353ce-32bc-4ea7-852a-bf5e12b72d76
          format: uuid
          readOnly: true
          type: string
        name:
          description: The name of the dimension, representing a specific category or grouping.
          example: Facility
          type: string
          nullable: true
        values:
          description: |
            A list of values associated with this dimension, requiring at least one and limited to a maximum of 1500. This list is populated when retrieving an individual dimension and is null when listing dimensions.
          example:
            - id: Ames, IA
              name: Ames, Iowa
            - id: Portland, OR
              name: Portland, Oregon
          items:
            $ref: '#/components/schemas/DimensionValue'
          maxItems: 1500
          minItems: 1
          nullable: true
          type: array
      type: object
    DimensionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Dimension` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Dimension'
          type: array
      required:
        - data
      type: object
    FrameworkReference:
      description: |
        An association with a framework or standard.
      example:
        framework: GRI
        publishedVersion: "2016.2"
        referenceName: 2-6-b-iii
      properties:
        framework:
          description: The framework or standard to which the reference belongs (e.g., GRI, SASB, TCFD).
          example: GRI
          type: string
        publishedVersion:
          description: The published version of the framework or standard. If not specified during write operations, it will default to the latest published version.
          example: "2016.2"
          type: string
        referenceName:
          description: The identifier or label for the specific framework reference.
          example: 2-6-b-iii
          type: string
      required:
        - referenceName
        - framework
      type: object
    Tag:
      description: |
        Represents a tag associated with a metric in the program
      example:
        name: Industry
        value: Agriculture
      properties:
        name:
          description: The key or category of the tag, representing a specific attribute of the metric.
          example: Industry
          type: string
        value:
          description: The corresponding value for the tag key, specifying its classification or category.
          example: Agriculture
          type: string
      required:
        - name
        - value
      type: object
    Metric:
      description: |
        Represents a metric, which are used to track and collect material data to your company.
      example:
        code: 12
        dataType: text
        description: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
        id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
        index: 0
        name: Scope 1 Consolidated GHG Emissions
        requireNotes: false
        requireSupportingAttachments: false
        topic: cc507098-c403-4b8b-98b4-31a6c5a639f4
        unit: Metric Ton
      properties:
        allowedDimensions:
          description: A list of dimension ids that may be used when creating values for this metric.
          items:
            format: uuid
            type: string
          maxItems: 7
          type: array
        code:
          description: |
            An optional user-specified metric code as an integer greater than 0, unique to each metric.
            If not provided, the system assigns the next available integer.
          example: 12
          minimum: 1
          type: integer
        dataType:
          default: text
          description: Used to specify the type of data for a metric.
          enum:
            - text
            - number
            - date
            - currency
            - percent
          example: text
          type: string
        description:
          description: An optional description of the metric, explaining its purpose and main aspects, up to 32767 characters.
          example: Covers all direct greenhouse gas emissions from sources owned or controlled by the reporting entity.
          maxLength: 32767
          type: string
        frameworkReferences:
          description: A list of framework/standard references or other related content, up to 20 references.
          items:
            $ref: '#/components/schemas/FrameworkReference'
          maxItems: 20
          type: array
        id:
          description: The unique UUID identifier of the metric.
          example: c6d83e8c-775c-4cab-b59d-06cc641097d2
          format: uuid
          type: string
        index:
          description: The index in the outline. If unset, the metric will be ordered last.
          example: 0
          type: integer
        name:
          description: The name of the metric, up to 300 characters.
          example: Scope 1 Consolidated GHG Emissions
          maxLength: 300
          type: string
        requireNotes:
          default: false
          description: Indicates whether notes are required for this metric.
          example: false
          type: boolean
        requireSupportingAttachments:
          default: false
          description: Indicates whether supporting attachments are required for this metric.
          example: false
          type: boolean
        strCode:
          description: The system-generated string representation of the metric code, read-only.
          example: M12
          readOnly: true
          type: string
        tags:
          description: A collection of tags associated with the metric. A metric can have up to 20 tags by default, though limits can be adjusted on a per workspace basis.
          items:
            $ref: '#/components/schemas/Tag'
          type: array
        topic:
          description: The unique UUID identifier of the parent topic.
          example: cc507098-c403-4b8b-98b4-31a6c5a639f4
          format: uuid
          type: string
        unit:
          description: The unit of measurement for the metric, up to 300 characters.
          example: Metric ton
          maxLength: 300
          type: string
      type: object
    MetricsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Metric` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Metric'
          type: array
      required:
        - data
      type: object
    SpreadsheetCellConnection:
      description: Represents a connection to a value from a Workiva spreadsheet
      nullable: true
      properties:
        cell:
          description: The column-row identifier of a specific cell within a sheet (i.e. A1)
          example: A1
          type: string
        sheet:
          description: The unique identifier of a specific sheet within a spreadsheet.
          example: 576696e0f7a143b4a0bc7c20a34480ab
          type: string
        spreadsheet:
          description: The unique identifier of the connected spreadsheet.
          example: 7a5e271acf1d49d480a6fbabc394a0fa
          type: string
      required:
        - spreadsheet
        - sheet
        - cell
      type: object
    TableCellConnection:
      description: Represents a connection to a value from a Workiva table cell
      nullable: true
      properties:
        cell:
          description: The column-row identifier of a specific cell within a table (i.e. A1)
          example: A1
          type: string
        document:
          description: The unique identifier of the connected document.
          example: 944204de31eb4f078f531a25d7cdde2f
          type: string
        section:
          description: The unique identifier of a specific section within the document.
          example: 944204de31eb4f078f531a25d7cdde2f_34
          type: string
        table:
          description: The unique identifier of a specific table within the document.
          example: 576696e0f7a143b4a0bc7c20a34480ab
          type: string
      required:
        - document
        - section
        - table
        - cell
      type: object
    TextRegionConnection:
      description: Represents a connection to a value from a Workiva document text region
      nullable: true
      properties:
        document:
          description: The unique identifier of the connected document.
          example: 944204de31eb4f078f531a25d7cdde2f
          type: string
        section:
          description: The unique identifier of a specific section within the document.
          example: 944204de31eb4f078f531a25d7cdde2f_34
          type: string
      readOnly: true
      required:
        - document
        - section
      type: object
    MetricAttachment:
      description: Represents an attachment associated with a metric or metric value
      properties:
        name:
          description: Name of the attachment
          example: download.pdf
          type: string
        type:
          description: The type of attachment
          enum:
            - url
            - file
            - externalFile
          example: file
          type: string
      required:
        - name
        - type
      type: object
    MetricValue:
      description: Represents a metric value, which is a data record belonging to a specific metric.
      properties:
        coordinates:
          additionalProperties:
            type: string
          default: {}
          description: |
            A mapping of dimension ids to dimension value ids for the value.
            The maximum number of key-value dimension pairs is limited to 3.
          example:
            b38353ce-32bc-4ea7-852a-bf5e12b72d95: Ames, IA
          type: object
        dataSource:
          description: |
            Represents the source of the value, which can be a Workiva spreadsheet or table cell or a Workiva document text region.
            Only one of the connection types can be specified.
          example:
            connectionType: spreadsheetCell
            spreadsheetCellConnection:
              cell: A1
              sheet: 576696e0f7a143b4a0bc7c20a34480ab
              spreadsheet: 7a5e271acf1d49d480a6fbabc394a0fa
          properties:
            connectionType:
              default: spreadsheetCell
              description: The type of connection to the value.
              enum:
                - spreadsheetCell
                - tableCell
                - textRegion
              example: spreadsheetCell
              type: string
            spreadsheetCellConnection:
              $ref: '#/components/schemas/SpreadsheetCellConnection'
            tableCellConnection:
              $ref: '#/components/schemas/TableCellConnection'
            textRegionConnection:
              $ref: '#/components/schemas/TextRegionConnection'
        fieldsToClear:
          description: List of fields to clear.
          example:
            - notes
          items:
            type: string
          type: array
          writeOnly: true
        id:
          description: The unique UUID identifier of the metric value.
          example: bf9aa2c3-f278-4c77-8acb-97584e843dcd
          format: uuid
          type: string
        notes:
          description: Optional notes for the value, with a maximum length of 32,767 characters.
          example: metric value notes
          maxLength: 32767
          nullable: true
          type: string
        reportingPeriod:
          description: Defines the reporting period for a value.
          properties:
            end:
              description: |
                The end month of the collection period, represented as an integer (e.g., Q1 = 3, Q2 = 6, Q3 = 9, Q4 = 12).
                Must be greater than or equal to `start`.
              example: 12
              maximum: 12
              minimum: 1
              type: integer
            start:
              description: |
                The start month of the collection period, represented as an integer (e.g., Q1 = 1, Q2 = 4, Q3 = 7, Q4 = 10).
              example: 1
              maximum: 12
              minimum: 1
              type: integer
            year:
              description: The 4-digit year representing the report period for a value.
              example: 2024
              maximum: 9999
              minimum: 1000
              type: integer
          required:
            - year
            - start
            - end
          type: object
        status:
          default: notStarted
          description: |
            Represents the current status of a metric value.
            The status can only be set to `complete` if it's currently `notStarted`,
            and it can be reset to `notStarted` if it's `complete`.
          enum:
            - notStarted
            - notSent
            - inProgress
            - sentForApproval
            - returned
            - complete
            - error
          example: complete
          type: string
        supportingAttachments:
          description: |
            A list of attachments associated with the metric value.
          example:
            - name: Workiva Document
              type: file
          items:
            $ref: '#/components/schemas/MetricAttachment'
          maxItems: 50
          nullable: true
          readOnly: true
          type: array
        value:
          description: The string representation of the metric value. The value can be up to 32,767 characters.
          example: "512.8768743"
          maxLength: 32767
          type: string
        task:
          description: The id of the task that corresponds to the metric value, which can be used to fetch the task/modify details via the tasking api
          type: string
          example: VGFMDU1MmJiOGEwZDVjZWYzNDlVhZDWU5Y2jYzY3zax5iMg
      type: object
    MetricValuesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `MetricValue` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/MetricValue'
          type: array
      required:
        - data
      type: object
    MetricValueIdentifier:
      description: Represents a metric value identifier
      properties:
        data:
          items:
            properties:
              coordinates:
                additionalProperties:
                  type: string
                default: {}
                description: |
                  A mapping of dimension ids to dimension value ids for the value.
                  The maximum number of key-value dimension pairs is limited to 3.
                example:
                  b38353ce-32bc-4ea7-852a-bf5e12b72d95: Ames, IA
                type: object
              reportingPeriod:
                description: Defines the reporting period for a value.
                properties:
                  end:
                    description: |
                      The end month of the collection period, represented as an integer (e.g., Q1 = 3, Q2 = 6, Q3 = 9, Q4 = 12).
                      Must be greater than or equal to `start`.
                    example: 12
                    maximum: 12
                    minimum: 1
                    type: integer
                  start:
                    description: |
                      The start month of the collection period, represented as an integer (e.g., Q1 = 1, Q2 = 4, Q3 = 7, Q4 = 10).
                    example: 1
                    maximum: 12
                    minimum: 1
                    type: integer
                  year:
                    description: The 4-digit year representing the report period for a value.
                    example: 2024
                    maximum: 9999
                    minimum: 1000
                    type: integer
                required:
                  - year
                  - start
                  - end
                type: object
            type: object
          type: array
      type: object
    MetricValueUpsertion:
      properties:
        data:
          description: An array of metric values, each representing a metric value data record belonging to a specific metric.
          items:
            $ref: '#/components/schemas/MetricValue'
          type: array
      type: object
    ResourcePermission:
      description: |
        Mapping of the permission applied to a resource and the details of the principal to which the permission is assigned.
      properties:
        permission:
          description: The unique identifier of the permission
          example: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
          type: string
        principal:
          description: The unique identifier of the principal
          example: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
          type: string
        principalType:
          description: The type of the principal. Refer to the principalType field to see possible types.
          enum:
            - user
            - group
          readOnly: true
          type: string
        resource:
          description: The unique identifier of the resource
          example: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
          readOnly: true
          type: string
      required:
        - permission
        - principal
      type: object
    ResourcePermissionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`ResourcePermission`](ref:permissions#resource-permission) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
            principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
            principalType: user
            resource: 014b90fd-0631-422c-b94e-1240c53f1d6d
          - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
            principal: V0ZVc2VyHzUQ0NDQ5Mjg2NDg2NjU2Mj
            principalType: group
            resource: 014b90fd-b94e-0631-422c-1240c53f1d6d
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/ResourcePermission'
          type: array
      required:
        - data
      type: object
    ResourcePermissionsModification:
      description: |
        Details about the permissions modification
      example:
        toAssign:
          - permission: 598e8fa3-3e7c-4fb7-b662-f44522216e2b
            principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
        toRevoke:
          - permission: 85aa87ee-beb9-4417-8fa0-420e9de63534
            principal: V0ZVc2VyHzU2NDg2NjU2MjQ0NDQ5Mjg
      properties:
        toAssign:
          description: The list of permissions to be assigned to the resource
          items:
            $ref: '#/components/schemas/ResourcePermission'
          nullable: true
          type: array
        toRevoke:
          description: The list of permissions to be revoked from the resource
          items:
            $ref: '#/components/schemas/ResourcePermission'
          nullable: true
          type: array
      type: object
    Topic:
      description: |
        Represents a topic, an organizational and grouping mechanism for metrics. Each topic may have subtopics and metrics.
      example:
        index: 0
        name: Climate
        parent: 82bae647-8e43-44c3-a4e7-2aa3294c87ac
      properties:
        id:
          description: The unique UUID identifier of the topic.
          example: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
          format: uuid
          readOnly: true
          type: string
        index:
          description: The index in the outline. If unset, the topic will be ordered last.
          example: 0
          type: integer
        name:
          description: The name of the topic, up to 300 characters.
          example: Climate
          type: string
        parent:
          description: The unique UUID identifier of the parent topic, if this topic is a subtopic. This field can be null for top-level topics.
          example: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
          format: uuid
          nullable: true
          type: string
      required:
        - name
      type: object
    TopicsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Topic` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Topic'
          type: array
      required:
        - data
      type: object
    OrganizationsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Organization` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Organization'
          type: array
      required:
        - data
      type: object
    ActivitiesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Activity` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Activity'
          type: array
      required:
        - data
      type: object
    GetOrgReportUsersResponse:
      description: A report of Organization Users
      properties:
        data:
          items:
            properties:
              attributes:
                properties:
                  active:
                    nullable: true
                    type: boolean
                  displayName:
                    nullable: true
                    type: string
                  email:
                    nullable: true
                    type: string
                  firstName:
                    nullable: true
                    type: string
                  lastLogin:
                    nullable: true
                    type: string
                  lastName:
                    nullable: true
                    type: string
                  licenses:
                    items:
                      type: string
                    nullable: true
                    type: array
                    uniqueItems: false
                  organizationRoles:
                    items:
                      type: string
                    nullable: true
                    type: array
                    uniqueItems: false
                  samlId:
                    nullable: true
                    type: string
                  userName:
                    nullable: true
                    type: string
                  workspaceMemberships:
                    items:
                      properties:
                        id:
                          description: The Workspace ID
                          nullable: false
                          type: string
                        workspaceName:
                          nullable: true
                          type: string
                        workspaceRoles:
                          items:
                            type: string
                          nullable: true
                          type: array
                          uniqueItems: false
                      type: object
                    nullable: true
                    type: array
                    uniqueItems: false
                type: object
              id:
                description: The resource ID
                nullable: false
                type: string
              links:
                nullable: true
                additionalProperties: true
                description: A list of URLs.
                type: object
              relationships:
                type: object
                nullable: true
              type:
                description: The resource type (File)
                enum:
                  - orgReportUser
                  - File
                type: string
            type: object
          type: array
        included:
          description: Any additional included resources
          nullable: true
          items:
            properties:
              attributes:
                additionalProperties: true
                type: object
              id:
                description: The resource ID
                type: string
              type:
                description: The resource type
                type: string
            type: object
          type: array
          uniqueItems: true
        jsonapi:
          additionalProperties: false
          nullable: true
          properties:
            version:
              type: string
          type: object
        links:
          properties:
            next:
              description: The next page of data
              format: uri
              nullable: true
              type: string
          type: object
        meta:
          additionalProperties: true
          nullable: true
          description: Non-standard meta-information that cannot be represented as an attribute or relationship.
          type: object
      required:
        - data
      type: object
    Failure:
      additionalProperties: false
      description: An error response. All fields other than "errors" are optional
      properties:
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                description: An application-specific error code, expressed as a string value
                type: string
              detail:
                description: A human-readable explanation specific to this occurrence of the problem. Like 'title', this field's value can be localized.
                type: string
              id:
                description: A unique identifier for this particular occurrence of the problem
                type: string
              links:
                properties:
                  about:
                    description: A link that leads to further details about this particular occurrence of the problem
                    type: string
                type: object
              meta:
                additionalProperties: true
                description: Non-standard meta-information that cannot be represented as an attribute or relationship.
                type: object
              source:
                properties:
                  parameter:
                    description: A string indicating which URI query parameter caused the error
                    type: string
                  pointer:
                    description: A JSON Pointer [RFC6901] to the associated entity in the request document
                    type: string
                type: object
              status:
                description: The HTTP status code applicable to this problem, expressed as a string value
                type: string
              title:
                description: A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization
                type: string
            type: object
          type: array
        jsonapi:
          additionalProperties: false
          properties:
            version:
              type: string
          type: object
        links:
          additionalProperties: true
          description: A list of URLs.
          type: object
        meta:
          additionalProperties: true
          description: Non-standard meta-information that cannot be represented as an attribute or relationship.
          type: object
      required:
        - errors
      type: object
    OrganizationRole:
      description: |
        Details describing a role in an organization
      properties:
        id:
          description: The unique identifier of the organization role
          example: "3"
          readOnly: true
          type: string
          format: uuid
        name:
          description: The name of the organization role
          example: Org User Admin
          type: string
      type: object
    OrganizationRolesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `OrganizationRole` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          nullable: true
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/OrganizationRole'
          type: array
      required:
        - data
      type: object
    OrganizationSolutionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Solution` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Solution'
          type: array
      required:
        - data
      type: object
    OrganizationUser:
      description: |
        Details about the user.
      type: object
      properties:
        id:
          description: The unique identifier of the user
          type: string
          example: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
          nullable: true
        givenName:
          description: The user's given name
          type: string
          example: John
        familyName:
          description: The user's family name
          type: string
          example: Doe
        displayName:
          description: The displayed name of the user
          type: string
          example: John Doe
        email:
          description: The email address of the user
          type: string
          example: john.doe@example.com
        username:
          description: The user name of the user
          type: string
          example: john.doe@example.com
        status:
          description: Whether or not this user is active
          nullable: true
          type: string
          enum:
            - active
            - suspended
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
    OrganizationUsersListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `OrganizationUser` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationUser'
        '@nextLink':
          description: Pagination link for next set of results
          type: string
          example: <opaque_url>
          nullable: true
      required:
        - data
    OrganizationUserAssignment:
      description: |
        Details about a user assignment
      properties:
        user:
          description: The id of the user to assign to the organization
          example: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
          type: string
    OrganizationRolesModification:
      description: An array of organization role ids used to modify organization roles
      example:
        - "3"
        - "9"
      items:
        type: string
        format: uuid
      type: array
    WorkspacesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Workspace` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Workspace'
          type: array
      required:
        - data
      type: object
    WorkspaceGroupMember:
      description: |
        Details about the group member
      properties:
        id:
          description: The unique identifier of the group member
          example: V0ZVc2VyHzExODkzNzM2NDB
          readOnly: true
          type: string
      type: object
    WorkspaceGroup:
      description: |
        Details about the group
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        id:
          description: The unique identifier of the group
          example: V0ZHcm91cB5XRkdyb3VwOkFMTF9VU0VSUznxMjD1NTVyNDg3
          readOnly: true
          type: string
          nullable: true
        memberCount:
          description: Number of members in the group
          example: 153
          readOnly: true
          type: integer
          nullable: true
        members:
          description: |
            IDs of the group members. Included in the response only when the $expand query parameter is provided.
          items:
            $ref: '#/components/schemas/WorkspaceGroupMember'
          readOnly: true
          type: array
          nullable: true
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        name:
          description: The name of the group
          example: All Users
          type: string
      type: object
    WorkspaceGroupsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `WorkspaceGroup` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/WorkspaceGroup'
          type: array
      required:
        - data
      type: object
    WorkspaceGroupMembersListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `WorkspaceGroupMember` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/WorkspaceGroupMember'
          type: array
      required:
        - data
      type: object
    BulkWorkspaceGroupMembersModification:
      description: |
        Details about the group members modification
      properties:
        toAdd:
          description: The ids of the users to add as group members
          example:
            - V0ZVc2VyHzExODjzNzM3NDA
          items:
            type: string
          nullable: true
          type: array
        toRemove:
          description: The ids of the users to remove as group members
          example:
            - V0ZVc2VyHzExSDkzMzM1NDC
          items:
            type: string
          nullable: true
          type: array
      type: object
    WorkspaceMembership:
      description: |
        Details about a user's membership in a workspace.
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        id:
          description: The unique identifier of the workspace membership
          example: TWVtYmVyc2hpcB81NzY1OTM4MzY0Mjg0OTI4
          readOnly: true
          type: string
          nullable: true
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        user:
          allOf:
            - $ref: '#/components/schemas/OrganizationUser'
          description: The user that is a member of the workspace
        workspace:
          allOf:
            - $ref: '#/components/schemas/Workspace'
          description: The workspace that this membership belongs to
      type: object
    WorkspaceMembershipsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `WorkspaceMembership` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/WorkspaceMembership'
          type: array
      required:
        - data
      type: object
    WorkspaceMembershipCreationOptions:
      description: |
        Options for creating a new workspace membership
      example:
        notifyNewMember: false
        sendWelcomeEmail: true
      properties:
        notifyNewMember:
          default: false
          description: Whether or not a notification should be sent to the user when they are added to the workspace. False by default.
          example: true
          type: boolean
        sendWelcomeEmail:
          default: false
          description: Whether or not a welcome email should be sent to the user when they are added to the workspace. False by default.
          example: true
          type: boolean
      type: object
    WorkspaceMembershipCreation:
      description: |
        Details and Options for creating a new workspace membership.
      example:
        options:
          notifyNewMember: false
          sendWelcomeEmail: true
        user: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
      properties:
        options:
          allOf:
            - $ref: '#/components/schemas/WorkspaceMembershipCreationOptions'
          nullable: true
        user:
          description: The user id that will be made a member of the workspace.
          type: string
      type: object
    WorkspaceMembershipRole:
      description: |
        Details describing a role of a workspace member
      properties:
        id:
          description: The unique identifier of the workspace membership role
          example: "2"
          readOnly: true
          type: string
          format: uuid
        name:
          description: The name of the workspace membership role
          example: Workspace Owner
          type: string
      type: object
    WorkspaceMembershipRolesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `WorkspaceMembershipRole` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/WorkspaceMembershipRole'
          type: array
      required:
        - data
      type: object
    WorkspaceRolesModification:
      description: An array of workspace role ids used to modify workspace roles
      items:
        type: string
        format: uuid
      type: array
    WorkspaceRole:
      description: |
        Details describing a role in a workspace
      properties:
        id:
          description: The unique identifier of the workspace role
          example: "2"
          readOnly: true
          type: string
          format: uuid
        name:
          description: The name of the workspace role
          example: Workspace Owner
          type: string
      type: object
    WorkspaceRolesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `WorkspaceRole` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/WorkspaceRole'
          type: array
      required:
        - data
      type: object
    WorkspaceSolutionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Solution` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Solution'
          type: array
      required:
        - data
      type: object
    BearerToken:
      description: |
        [Bearer token](ref:helpers#bearertoken) to use in subsequent requests to the Workiva APIs.
      properties:
        access_token:
          description: The opaque string used to authorize and make requests on behalf of the user
          type: string
        expires_in:
          description: The number of seconds the access token is valid
          type: integer
        scope:
          description: The limits of the user's access with the token, such as Read or Create
          type: string
        token_type:
          description: The type of access token; typically bearer
          type: string
      required:
        - access_token
        - expires_in
        - token_type
        - scope
      type: object
    IamError:
      description: Error response object containing an error code.
      properties:
        error:
          description: |
            The possible `error` codes are:
            - `invalid_request` - The request is missing a required parameter, includes an invalid parameter
              value, includes a parameter more than once, or is otherwise malformed.
            - `unauthorized_client` - The client is not authorized to request an authorization
              code using this method.
            - `access_denied` - The resource owner or authorization server denied the request.
            - `unsupported_response_type` - The authorization server does not support obtaining an authorization
              code using this method.
            - `invalid_scope` - The requested scope is invalid, unknown, or malformed.
            - `server_error` - The authorization server encountered an unexpected condition that prevented it
              from fulfilling the request.
            - `temporarily_unavailable` - The authorization server is currently unable to handle the request
              due to a temporary overloading or maintenance of the server.
          type: string
        error_description:
          description: Human-readable ASCII text providing additional information.
          type: string
        error_uri:
          description: |
            A URI identifying a human-readable web page with information about the error.
          type: string
      type: object
    DocumentLockType:
      description: The type of the document lock.
      type: string
      enum:
        - locked
    LinkStatus:
      description: Indicates the status of a link
      enum:
        - published
        - unpublished
      example: published
      type: string
    LinksStatus:
      description: Indicates the status for links in a document, presentation, or spreadsheet.
      properties:
        allLinks:
          allOf:
            - $ref: '#/components/schemas/LinkStatus'
          description: Indicates the status of all links.
          type: string
        ownLinks:
          allOf:
            - $ref: '#/components/schemas/LinkStatus'
          description: Indicates the status of links one has last edited.
          type: string
      required:
        - allLinks
        - ownLinks
      type: object
    FootnoteStyle:
      description: The style of footnote numbering.
      type: string
      enum:
        - numeric
        - uppercaseAlphabetic
        - lowercaseAlphabetic
        - uppercaseRoman
        - lowercaseRoman
        - symbol
    FootnoteRestartsAt:
      description: The restart strategy for footnote numbering.
      type: string
      enum:
        - continuous
        - section
        - page
    FootnoteLineStyle:
      description: The style of the footnote line.
      type: string
      enum:
        - single
        - double
        - ditted
        - dashed
        - small-dash
        - long-dash
        - long-dash-dot
    RGBAColor:
      description: |
        A color with transparency. A null color will use the default based on where the color is used.
      example:
        alpha: 100
        blue: 128
        green: 128
        red: 128
      properties:
        alpha:
          description: The percent of opacity where 0 is fully transparent and 100 is fully opaque.
          example: 100
          maximum: 100
          minimum: 0
          type: integer
        blue:
          description: The blue component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
        green:
          description: The green component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
        red:
          description: The red component of the color.
          example: 128
          maximum: 255
          minimum: 0
          type: integer
      required:
        - red
        - green
        - blue
        - alpha
      type: object
    FootnoteLine:
      description: The properties of the footnote line.
      type: object
      required:
        - enabled
        - weight
        - length
        - style
        - color
      properties:
        enabled:
          description: Whether the footnote line is enabled.
          type: boolean
        weight:
          description: The thickness of the footnote line, in points.
          type: number
          minimum: 0.25
          maximum: 10
        length:
          description: The length of the footnote line, in points.
          type: number
          minimum: 144
        style:
          $ref: '#/components/schemas/FootnoteLineStyle'
        color:
          $ref: '#/components/schemas/RGBAColor'
    FootnoteProperties:
      description: The footnote properties for a document or section.
      type: object
      required:
        - style
        - sequenceStarts
        - restartsAt
        - prefix
        - suffix
        - line
      properties:
        style:
          $ref: '#/components/schemas/FootnoteStyle'
        sequenceStarts:
          description: The number that footnotes will start counting from.
          type: integer
          minimum: 1
          maximum: 100000
        restartsAt:
          $ref: '#/components/schemas/FootnoteRestartsAt'
        prefix:
          description: Prefix for each footnote.
          type: string
          maxLength: 10
        suffix:
          description: Suffix for each footnote.
          type: string
          maxLength: 10
        line:
          $ref: '#/components/schemas/FootnoteLine'
    LineNumbersType:
      description: The type of line numbers.
      enum:
        - none
        - continuous
        - restartEachPage
      type: string
    PageBorderProperties:
      description: The border properties for a page.
      example:
        color:
          blue: 0
          green: 0
          red: 0
        enabled: false
        margins:
          bottom: 24
          left: 24
          right: 24
          top: 24
        weight: 0.5
      properties:
        color:
          $ref: '#/components/schemas/Color'
        enabled:
          description: Whether the page border is enabled.
          type: boolean
        margins:
          description: The margins of the page border in points. If the page margins type is  `mirrored` the left will represent inside and the right will represent outside.
          properties:
            bottom:
              description: The bottom edge margin in points.
              minimum: 0
              type: number
            left:
              description: The left edge margin in points.
              minimum: 0
              type: number
            right:
              description: The right edge margin in points.
              minimum: 0
              type: number
            top:
              description: The top edge margin in points.
              minimum: 0
              type: number
          required:
            - top
            - bottom
            - left
            - right
          type: object
        weight:
          description: The thickness of the border, in points.
          maximum: 6
          minimum: 0
          type: number
      required:
        - enabled
        - margins
        - color
        - weight
      type: object
    PageLayoutProperties:
      description: Page layout properties for a document.
      example:
        pageDimensions:
          height: 792
          width: 612
      properties:
        pageDimensions:
          allOf:
            - $ref: '#/components/schemas/Dimensions'
          description: The dimension of the page. Note that the preset page sizes that appear in the UI will just be a specific dimension value here (such as 612x792 for US Letter).
      required:
        - pageDimensions
      type: object
    PageMarginsType:
      description: The type of the page margins.
      enum:
        - normal
        - mirrored
      type: string
    PageMargins:
      description: The margins of a page. If the type is `mirrored` the left will represent inside and right will represent outside.
      example:
        bottom: 72
        left: 72
        right: 72
        top: 72
        type: normal
      properties:
        type:
          $ref: '#/components/schemas/PageMarginsType'
        top:
          description: The top edge margin in points.
          example: 72
          minimum: 0
          type: number
        bottom:
          description: The bottom edge margin in points.
          example: 72
          minimum: 0
          type: number
        right:
          description: The right edge margin in points.
          example: 72
          minimum: 0
          type: number
        left:
          description: The left edge margin in points.
          example: 72
          minimum: 0
          type: number
      required:
        - type
      type: object
    DocumentTableFormats:
      description: The table formats for a document.
      example:
        resizeRowsToFit: true
      properties:
        resizeRowsToFit:
          description: Whether the rows of the table will resize automatically to fit the content of the cells.
          type: boolean
      required:
        - resizeRowsToFit
      type: object
    DocumentProperties:
      description: Document properties are the configurations and setup for the document.
      example:
        backgroundColor: null
        lineNumbersType: none
        pageBorder:
          color:
            blue: 0
            green: 0
            red: 0
          enabled: false
          margins:
            bottom: 24
            left: 24
            right: 24
            top: 24
          weight: 0.5
        pageLayout:
          pageDimensions:
            height: 792
            width: 612
        pageMargins:
          bottom: 72
          left: 72
          right: 72
          top: 72
          type: normal
        printBleed: 0
        tableFormats:
          resizeRowsToFit: true
        trackChanges: false
        type: 10-Q
        footnotes:
          style: numeric
          sequenceStarts: 1
          restartsAt: continuous
          prefix: ""
          suffix: ""
          line:
            enabled: true
            weight: 1
            length: 180
            style: single
            color:
              red: 0
              green: 0
              blue: 0
              alpha: 100
      properties:
        backgroundColor:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The background color for the document.
          nullable: true
        footnotes:
          $ref: '#/components/schemas/FootnoteProperties'
        lineNumbersType:
          $ref: '#/components/schemas/LineNumbersType'
        pageBorder:
          $ref: '#/components/schemas/PageBorderProperties'
        pageLayout:
          $ref: '#/components/schemas/PageLayoutProperties'
        pageMargins:
          $ref: '#/components/schemas/PageMargins'
        printBleed:
          description: The amount of print bleed.
          maximum: 72
          minimum: 0
          type: number
        tableFormats:
          $ref: '#/components/schemas/DocumentTableFormats'
        trackChanges:
          description: Whether track changes is enabled for the entire document. When true, this setting overrides per-section track changes; section values may still be read and written but do not apply while this document-level setting is on.
          type: boolean
        type:
          description: The type of text document.
          example: 10-Q
          minLength: 1
          nullable: true
          readOnly: true
          type: string
      required:
        - footnotes
        - type
        - pageLayout
        - pageMargins
        - backgroundColor
        - pageBorder
        - lineNumbersType
        - printBleed
        - tableFormats
        - trackChanges
      type: object
    Document:
      description: |
        Details about the document, including its ID and name
      example:
        created:
          dateTime: "2021-05-13T20:41:35Z"
        customFieldGroups: []
        customFields:
          com.workiva.gsr.legal_entity: Workiva
        id: 124efa2a142f472ba1ceab34ed18915f
        linksStatus:
          allLinks: unpublished
          ownLinks: published
        lock: null
        modified:
          dateTime: "2021-07-07T16:44:54Z"
        name: Example Company 10-K
        properties:
          backgroundColor: null
          lineNumbersType: none
          pageBorder:
            color:
              blue: 0
              green: 0
              red: 0
            enabled: false
            margins:
              bottom: 24
              left: 24
              right: 24
              top: 24
            weight: 0.5
          pageLayout:
            pageDimensions:
              height: 792
              width: 612
          pageMargins:
            bottom: 72
            left: 72
            right: 72
            top: 72
            type: normal
          printBleed: 0
          tableFormats:
            resizeRowsToFit: true
          trackChanges: false
          type: 10-Q
          footnotes:
            style: numeric
            sequenceStarts: 1
            restartsAt: continuous
            prefix: ""
            suffix: ""
            line:
              enabled: true
              weight: 1
              length: 180
              style: single
              color:
                red: 0
                green: 0
                blue: 0
                alpha: 100
        revision: 5B3C4D7B
        sectionCustomFieldGroups: []
        template: false
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        customFieldGroups:
          description: |
            An array of Custom Field Group IDs applied to the document.
          items:
            type: string
            uniqueItems: true
          type: array
        customFields:
          description: |
            A map of ids to values representing Custom Fields on the document.
        id:
          description: The unique identifier of the document
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
        lock:
          description: The type of lock applied to this document, if any. Note this property is not tied to revision and will always reflect the document's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DocumentLockType'
        linksStatus:
          allOf:
            - $ref: '#/components/schemas/LinksStatus'
          readOnly: true
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        name:
          description: Name of the document
          example: Example Company 10-K
          readOnly: true
          type: string
        properties:
          $ref: '#/components/schemas/DocumentProperties'
        revision:
          description: The current revision of the document
          example: 5B3C4D7B
          nullable: true
          readOnly: true
          type: string
        sectionCustomFieldGroups:
          description: |
            An array of Custom Field Group IDs applied to all sections within the document.
          items:
            type: string
            uniqueItems: true
          type: array
        template:
          description: Whether the document is a template
          example: false
          readOnly: true
          type: boolean
      type: object
    DocumentsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Document`](ref:documents#document) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Document'
          type: array
      required:
        - data
      type: object
    DocumentToDocxOptions:
      description: |
        Optional options to export the document as a Microsoft Word document (.DOCX). If no options are provided, all options default to False.
      properties:
        includeLeaderDots:
          default: false
          description: Whether to include leader dots when exporting to .DOCX. False by default.
          example: true
          type: boolean
        showTableCellShading:
          default: false
          description: Whether to show table cell shading when exporting to .DOCX. False by default.
          example: true
          type: boolean
      type: object
    DocumentToPdfOptions:
      description: |
        Optional options to export the document as a portable document file (.PDF). If no options are provided, all options default to False.
      properties:
        includeAlternateRowFill:
          default: false
          description: Whether to include alternate row fill when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeAttachmentLabels:
          default: false
          description: Whether to include attachment labels when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to include comments when exporting to .PDF. False by default. When True, all comments are included, even those already resolved.
          example: true
          type: boolean
        includeDraftWatermark:
          default: false
          description: Whether to include a "Draft" watermark when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeHyperlinks:
          default: false
          description: Whether to include hyperlinks when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeLeaderDots:
          default: false
          description: Whether to include leader dots when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeTrackChanges:
          default: false
          description: Whether to include track changes when exporting to .PDF. False by default.
          example: true
          type: boolean
        tagForWebAccessibility:
          default: false
          description: Whether to tag for web accessibility when exporting to .PDF. False by default.
          example: true
          type: boolean
        useCmykColorspace:
          default: false
          description: Whether to use CMYK colorspace when exporting to .PDF. False by default.
          example: true
          type: boolean
        removeSpaceFromPartialExport:
          default: false
          type: boolean
          description: Whether to remove space from partial exports when exporting to .PDF. False by default.
          example: true
      type: object
    DocumentToXhtmlOptions:
      description: |
        Optional options to export the document as .XHTML. If no options are provided, `editableXhtml` will be true and all other options will be false.
      properties:
        editableSimple:
          default: false
          description: |
            Whether to produce simplified editable XHTML. This option produces editable XHTML that is simpler than the  editableXHTML option. Use this option when you only need the textual and numeric content of a document, but not  any of the images or complex formatting. When this option is true, all other XHTML export options must be false.
          example: true
          type: boolean
        editableXhtml:
          default: false
          description: |
            Whether the resulting XHTML is editable when exporting to .XHTML. False by default. If set to true, other options must be false.
            When exporting XHTML that you plan to edit or modify, use this option. Otherwise, the export retains fidelity so it visually matches the document as it appears in the browser.
          example: true
          type: boolean
        includeExternalHyperlinks:
          default: false
          description: Whether to include external hyperlinks when exporting to .XHTML. False by default.
          example: true
          type: boolean
        includeHeadersAndFooters:
          default: false
          description: Whether to include the headers and footers when exporting to .XHTML. False by default.
          example: true
          type: boolean
      type: object
    DocumentExport:
      description: Details about the document export, including its format and options
      example:
        docxOptions:
          includeLeaderDots: true
          showTableCellShading: true
        format: docx
        sections:
          - a8b3adb687644b27fafcb3a9875f0f0d_18
          - a8b3adb687644b27fafcb3a9875f0f0d_19
      properties:
        docxOptions:
          allOf:
            - $ref: '#/components/schemas/DocumentToDocxOptions'
          nullable: true
        format:
          description: The file format to export the document as.
          enum:
            - pdf
            - docx
            - xhtml
          example: pdf
          type: string
        pdfOptions:
          allOf:
            - $ref: '#/components/schemas/DocumentToPdfOptions'
          nullable: true
        sections:
          description: The IDs of the sections of the document to export. Omit to export the entire document.
          example:
            - a8b3adb687644b27fafcb3a9875f0f0d_18
            - a8b3adb687644b27fafcb3a9875f0f0d_19
          items:
            type: string
          type: array
        xhtmlOptions:
          allOf:
            - $ref: '#/components/schemas/DocumentToXhtmlOptions'
          nullable: true
      required:
        - format
      type: object
    DocumentFiltersReapplication:
      description: A document filter reapply operation, which can reapply filters to a document and optionally ignore read-only filters and force hide footnotes.
      example:
        forceHideFootnotes: true
        ignoreNonEditableFilters: true
      properties:
        forceHideFootnotes:
          default: false
          description: Whether filters should be reapplied if doing so would cause footnotes to be hidden.
          example: true
          type: boolean
        ignoreNonEditableFilters:
          default: false
          description: Skip filters that cannot be reapplied (due to not having edit permissions or locked sections) instead of returning an error.
          example: true
          type: boolean
      type: object
    LinksPublicationOptions:
      description: Options for publishing links.
      properties:
        publishType:
          description: |
            Whether or not all links should be published. When "ownLinks" only links one has last edited are published. When "allLinks" all links in document or presentation are published.
          enum:
            - ownLinks
            - allLinks
          type: string
      required:
        - publishType
      type: object
    MilestoneListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Milestone` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      type: object
      required:
        - data
      properties:
        '@nextLink':
          type: string
          description: Pagination link for next set of results
          example: <opaque_url>
        data:
          type: array
          items:
            $ref: '#/components/schemas/Milestone'
    DrawingRef:
      description: |
        A reference to drawing content in a document, spreadsheet, or presentation
      properties:
        drawing:
          description: The unique identifier of the drawing being referred to
          example: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
          readOnly: true
          type: string
        revision:
          description: Identifies a unique revision of content.
          example: 2c6438ab4541de6d
          type: string
          readOnly: true
      type: object
    Section:
      description: |
        Details about the section, including its ID and name.
      properties:
        body:
          allOf:
            - $ref: '#/components/schemas/RichTextRef'
          description: Reference to the RichText content for this section
          nullable: true
          readOnly: true
        drawingBody:
          description: Reference to the Drawing content for this section
          readOnly: true
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DrawingRef'
        children:
          description: An array of partial information about any sections within the section
          items:
            allOf:
              - $ref: '#/components/schemas/Section'
          readOnly: true
          type: array
        customFields:
          description: |
            A map of ids to values representing Custom Fields on the section.
        footers:
          allOf:
            - $ref: '#/components/schemas/HeadersFooters'
          description: Footers for this section
          nullable: true
          readOnly: true
        headers:
          allOf:
            - $ref: '#/components/schemas/HeadersFooters'
          description: Headers for this section
          nullable: true
          readOnly: true
        id:
          description: The unique identifier of the section
          example: a8b3adb687644b27fafcb3a9875f0f0d_18
          type: string
          nullable: true
        index:
          description: The integer index of the section relative to its parent section (or to the document if no parent section). The special value -1 may be used to position a section at the end of its siblings list.
          example: 1
          type: integer
        lock:
          description: The type of lock applied to this section, if any. Note this property is not tied to revision and will always reflect the section's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SectionLockType'
        name:
          description: The name of the section
          example: Risk factors
          type: string
        nonPrinting:
          description: Whether or not the section is non-printing
          example: true
          type: boolean
        parent:
          allOf:
            - $ref: '#/components/schemas/Section'
          nullable: true
        properties:
          allOf:
            - $ref: '#/components/schemas/SectionProperties'
          description: Properties of this section
          nullable: true
          readOnly: true
        revision:
          description: Current revision of this section
          example: 5B3C4D7B
          nullable: true
          readOnly: true
          type: string
      type: object
    HeadersFooters:
      description: |
        Set of headers or footers for a section or as the defaults on a document. The odd header/footer will be used on even pages if the alternating property in the header/footer part of the section properties is set to false.
      properties:
        even:
          allOf:
            - $ref: '#/components/schemas/RichTextRef'
          description: Reference to the RichText for even pages
          nullable: true
          readOnly: true
        first:
          allOf:
            - $ref: '#/components/schemas/RichTextRef'
          description: Reference to the RichText for the first header
          nullable: true
          readOnly: true
        last:
          allOf:
            - $ref: '#/components/schemas/RichTextRef'
          description: Reference to the RichText for the last header
          nullable: true
          readOnly: true
        odd:
          allOf:
            - $ref: '#/components/schemas/RichTextRef'
          description: Reference to the RichText for odd pages
          nullable: true
          readOnly: true
      type: object
    SectionLockType:
      description: A lock applied to a section.
      type: string
      enum:
        - lock
    Background:
      description: |
        The formatting for a background color/image of a section (page), or slide/layout.
      example:
        color:
          blue: 255
          green: 255
          red: 255
        image: Yn91IGZvdW5kIG1lIQ
      nullable: true
      properties:
        color:
          allOf:
            - $ref: '#/components/schemas/Color'
          description: The background color in RGB
          nullable: true
        image:
          description: The id of the image resource
          example: Yn91IGZvdW5kIG1lIQ
          nullable: true
          type: string
      type: object
    HeaderFooterProperties:
      description: Properties for header and footer of a section
      example:
        alternatingPage: false
        differentFirstPage: false
        differentLastPage: false
        margin:
          left: 10
          right: 10
        matchSectionMargins: false
        sameAsPrevious: false
      nullable: true
      properties:
        alternatingPage:
          default: false
          description: |
            Do the headers/footers alternate between even and odd, otherwise the odd header/footer is shown for both even and odd pages.
          type: boolean
        differentFirstPage:
          default: false
          description: If the first page has different header/footer value
          type: boolean
        differentLastPage:
          default: false
          description: If the last page has different header/footer value
          type: boolean
        margin:
          description: Properties related to the margins of a header and footer
          nullable: true
          properties:
            left:
              description: The left edge margin in points
              example: 10
              minimum: 0
              nullable: true
              type: number
            right:
              description: The right edge margin in points
              example: 10
              minimum: 0
              nullable: true
              type: number
          type: object
        matchSectionMargins:
          default: false
          description: Whether the margins match the section margins
          type: boolean
        sameAsPrevious:
          default: false
          description: Whether the previous section's headers/footers shown on this section
          type: boolean
      type: object
    FooterProperties:
      allOf:
        - $ref: '#/components/schemas/HeaderFooterProperties'
        - properties:
            positionFromBottom:
              description: The position from the bottom for footer in points
              example: 10
              minimum: 0
              nullable: true
              type: number
          type: object
      description: Properties for footer of a section
      nullable: true
      type: object
    HeaderProperties:
      allOf:
        - $ref: '#/components/schemas/HeaderFooterProperties'
        - properties:
            positionFromTop:
              description: Is the position from the top for header in points
              example: 10
              minimum: 0
              nullable: true
              type: number
          type: object
      description: Properties for header of a section
      nullable: true
      type: object
    SectionFootnoteLine:
      description: |
        The properties of the footnote line for a section. Null indicates the property is inherited from the document.
      type: object
      required:
        - enabled
        - weight
        - length
        - style
        - color
      properties:
        enabled:
          description: Whether the footnote line is enabled.
          type: boolean
          nullable: true
        weight:
          description: The thickness of the footnote line, in points.
          type: number
          nullable: true
          minimum: 0.25
          maximum: 10
        length:
          description: The length of the footnote line, in points.
          type: number
          nullable: true
          minimum: 144
        style:
          allOf:
            - $ref: '#/components/schemas/FootnoteLineStyle'
          nullable: true
        color:
          allOf:
            - $ref: '#/components/schemas/RGBAColor'
          nullable: true
    SectionFootnoteProperties:
      description: |
        The footnote properties for a section. Null indicates the property is inherited from the document.
      type: object
      required:
        - style
        - sequenceStarts
        - restartsAt
        - prefix
        - suffix
        - line
      properties:
        style:
          allOf:
            - $ref: '#/components/schemas/FootnoteStyle'
          nullable: true
        sequenceStarts:
          description: The number that footnotes will start counting from.
          type: integer
          nullable: true
          minimum: 1
          maximum: 100000
        restartsAt:
          allOf:
            - $ref: '#/components/schemas/FootnoteRestartsAt'
          nullable: true
        prefix:
          description: Prefix for each footnote.
          type: string
          nullable: true
          maxLength: 10
        suffix:
          description: Suffix for each footnote.
          type: string
          nullable: true
          maxLength: 10
        line:
          allOf:
            - $ref: '#/components/schemas/SectionFootnoteLine'
          nullable: true
    SectionProperties:
      description: |
        Section properties are the configurations and setup for the section.
      example:
        background:
          color:
            blue: 43
            green: 85
            red: 111
          image: Yn91IGZvdW5kIG1lIQ
        edgarKeepTogether: false
        exhibit: false
        footerProperties:
          alternatingPage: false
          differentFirstPage: false
          differentLastPage: false
          margin:
            left: 10
            right: 10
          matchSectionMargins: false
          positionFromBottom: 10
          sameAsPrevious: false
        headerProperties:
          alternatingPage: false
          differentFirstPage: false
          differentLastPage: false
          margin:
            left: 10
            right: 10
          matchSectionMargins: false
          positionFromTop: 10
          sameAsPrevious: false
        margins:
          bottom: 10
          left: 10
          right: 10
          top: 10
        pageBreakBefore: false
        pageDimensions:
          height: 240
          width: 320
        pageNumber:
          reset: false
          startAt: 1
        footnotes:
          style: numeric
          sequenceStarts: 1
          restartsAt: continuous
          prefix: ""
          suffix: ""
          line:
            enabled: true
            weight: 1
            length: 180
            style: single
            color:
              red: 0
              green: 0
              blue: 0
              alpha: 100
        restartFootnoteNumbering: false
        trackChanges: false
      nullable: true
      properties:
        background:
          $ref: '#/components/schemas/Background'
        edgarKeepTogether:
          default: false
          description: |
            Determines if page breaks should be ignored for this section in Edgar export
          nullable: true
          type: boolean
        exhibit:
          default: false
          description: Whether or not the section is an exhibit
          nullable: true
          type: boolean
        footer:
          allOf:
            - $ref: '#/components/schemas/FooterProperties'
          description: Properties for the footer
        header:
          allOf:
            - $ref: '#/components/schemas/HeaderProperties'
          description: Properties for the header
        margins:
          allOf:
            - $ref: '#/components/schemas/Margins'
          description: Margins for each page
        pageBreakBefore:
          default: false
          description: Whether or not there should be a page break before the section
          type: boolean
        pageDimensions:
          allOf:
            - $ref: '#/components/schemas/Dimensions'
          description: Dimensions of each page
          nullable: true
        pageNumber:
          description: Page number properties
          properties:
            reset:
              default: false
              description: Whether the page numbers should restart at the section
              type: boolean
            startAt:
              default: 1
              description: The page number to start numbering at in this section
              minimum: 1
              type: integer
          type: object
        footnotes:
          $ref: '#/components/schemas/SectionFootnoteProperties'
        restartFootnoteNumbering:
          default: false
          description: Whether or not to restart footnote numbering in the section
          type: boolean
        trackChanges:
          default: false
          description: Whether or not track changes is enabled
          type: boolean
      title: SectionProperties
      type: object
    SectionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Section`](ref:documents#section) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Section'
          type: array
      required:
        - data
      type: object
    SectionCopy:
      description: Details about the destination document and, optionally, the destination section.
      properties:
        document:
          description: The unique identifier of the document to copy a section into
          example: 327afa1a152f372fa1aeadb35ed28925d
          type: string
        sectionIndex:
          description: The integer index of where within the siblings to place the new section; 0 by default. To place the section at the end of its siblings, use the special value -1.
          example: 2
          type: integer
        sectionName:
          description: The name of the new section, if different than the source section
          example: October 2020
          nullable: true
          type: string
        sectionParent:
          description: The ID of the parent section to copy the section into. To place the section at the top level of the document, use the default null.
          example: 327afa1a152f372fa1aeadb35ed28925d_1
          nullable: true
          type: string
      required:
        - document
      type: object
    SectionSelection:
      description: |
        A selection of one or more sections
      example:
        - e34730f79a144b1b8977aa8884c208ee_321
        - e34730f79a144b1b8977aa8884c208ee_123
      items:
        type: string
      maxItems: 1000
      minItems: 1
      type: array
      uniqueItems: true
    ClearSectionLockEdit:
      description: |
        Clears the selected section's lock value
      type: object
      nullable: true
      required:
        - selection
      properties:
        selection:
          $ref: '#/components/schemas/SectionSelection'
    SetSectionLockEdit:
      description: |
        Updates the selected section's lock to the set value
      type: object
      nullable: true
      required:
        - selection
        - lock
      properties:
        selection:
          $ref: '#/components/schemas/SectionSelection'
        lock:
          $ref: '#/components/schemas/SectionLockType'
    SetNonPrintingEdit:
      description: |
        Updates sections nonPrinting to the set value
      example:
        nonPrinting: true
        selection:
          - 9fdff0887cb5425292dfb1fdd759753a_35
          - 9fdff0887cb5425292dfb1fdd759753a_50
      nullable: true
      properties:
        nonPrinting:
          description: Whether or not to set the nonPrinting property on the specified selection of sections
          type: boolean
        selection:
          $ref: '#/components/schemas/SectionSelection'
      required:
        - selection
        - nonPrinting
      type: object
    SectionEditType:
      description: The type of the section edit
      enum:
        - clearLock
        - setLock
        - setNonPrinting
      type: string
    SectionEdit:
      description: |
        An edit to a section
      example:
        setNonPrinting:
          nonPrinting: true
          selection:
            - 9fdff0887cb5425292dfb1fdd759753a_35
            - 9fdff0887cb5425292dfb1fdd759753a_50
        type: setNonPrinting
      properties:
        clearLock:
          $ref: '#/components/schemas/ClearSectionLockEdit'
        setLock:
          $ref: '#/components/schemas/SetSectionLockEdit'
        setNonPrinting:
          $ref: '#/components/schemas/SetNonPrintingEdit'
        type:
          $ref: '#/components/schemas/SectionEditType'
      required:
        - type
      type: object
    SectionsEdits:
      description: |
        A collection of section edits to perform
      example:
        data:
          - setNonPrinting:
              nonPrinting: true
              selection:
                - 9fdff0887cb5425292dfb1fdd759753a_35
                - 9fdff0887cb5425292dfb1fdd759753a_50
            type: setNonPrinting
          - setNonPrinting:
              nonPrinting: false
              selection:
                - 9fdff0887cb5425292dfb1fdd759753a_45
                - 9fdff0887cb5425292dfb1fdd759753a_40
            type: setNonPrinting
      properties:
        data:
          description: The collection of edits
          items:
            $ref: '#/components/schemas/SectionEdit'
          maxItems: 240
          minItems: 1
          type: array
      required:
        - data
      type: object
    ContentTable:
      description: A table within a document or presentation.
      properties:
        id:
          $ref: '#/components/schemas/TableId'
        name:
          description: Name of the table
          example: Sheet 1
          type: string
        index:
          description: The zero-based index of the table within the document or presentation.
          example: 0
          minimum: 0
          type: integer
        parent:
          description: A reference to the content that contains this table.
          $ref: '#/components/schemas/ContentRef'
      required:
        - id
        - name
        - index
        - parent
      type: object
    DocumentTableCollectionResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `ContentTable` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: Tables contained by this document.
          items:
            $ref: '#/components/schemas/ContentTable'
          type: array
        revision:
          description: The revision of the document.
          example: 24601abc
          type: string
      required:
        - data
        - revision
      type: object
    File:
      description: |
        Details about the file, including its ID, name, kind, and milestone dates.
      properties:
        container:
          default: ""
          description: |
            The unique identifier of the container that houses the file, such as a folder. If empty, the root folder is the container.
          example: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
          type: string
          nullable: true
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        id:
          description: The unique identifier of the file
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
          nullable: true
        kind:
          description: Kind of the file
          enum:
            - Document
            - Spreadsheet
            - Presentation
            - Folder
            - Script
            - SupportingDocument
          example: Document
          type: string
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
          nullable: true
        name:
          description: Name of the file
          example: Year-end review
          type: string
        state:
          description: State of the file
          type: string
          enum:
            - Active
            - Trashed
          readOnly: true
          example: Active
          nullable: true
        template:
          example: false
          readOnly: true
          type: boolean
          nullable: true
        type:
          description: Type of the file
          example: 10-K
          readOnly: true
          type: string
          nullable: true
      type: object
    FilesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `File` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/File'
          type: array
      required:
        - data
      type: object
    SupportingDocumentImportOptions:
      description: |
        Additional import options used for Native files. Should only be provided when kind is "Supporting Document".
      properties:
        containerId:
          description: The ID of the folder in which to place the newly imported files. Set this to the empty string (`""`) to import to the root folder.
          example: V0ZEYXRhRW5zVkNmU2Zi1mZjcE4EzNzk0ZmUwZjk
          type: string
      type: object
    WorkivaFileImportOptions:
      description: |
        Additional import options used for Workiva (.tar.gz) files. Should only be provided when kind is "Workiva".
      properties:
        createNewResultContainer:
          default: false
          description: Whether to create new result container for imported content.
          example: true
          type: boolean
        destinationContainer:
          description: The ID of the folder in which to place the newly imported files. Set this to "" to import to the root folder.
          example: V0ZEYXRhRW5zVkNmU2Zi1mZjcE4EzNzk0ZmUwZjk
          type: string
        emailOnComplete:
          default: false
          description: Whether or not to email the authorized user when this upload is complete.
          example: true
          type: boolean
        includeAttachments:
          default: false
          description: Whether to preserve attachments for imported content.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to preserve comments for imported content.
          example: true
          type: boolean
        includeCustomFieldValues:
          default: false
          description: Whether to preserve custom field values for imported content.
          example: true
          type: boolean
        includeDocumentMarkup:
          default: false
          description: Whether to preserve document markup for imported content.
          example: true
          type: boolean
        includeInputCellValues:
          default: false
          description: Whether to preserve input cell values for imported content.
          example: true
          type: boolean
        includeOutlineLabels:
          default: false
          description: Whether to preserve outline labels for imported content.
          example: true
          type: boolean
        includeSmartLinkMetadata:
          default: false
          description: Whether to include smart link metadata for imported content.
          example: true
          type: boolean
        includeWdataIncomingConnections:
          default: false
          description: Whether to preserve incoming wdata connections for imported content.
          example: true
          type: boolean
        includeWdataOutgoingConnections:
          default: false
          description: Whether to preserve outgoing wdata connections for imported content.
          example: true
          type: boolean
        includeXBRL:
          default: false
          description: Whether to preserve XBRL for imported content.
          example: true
          type: boolean
        includeXBRLDisconnected:
          default: false
          description: Whether to preserve disconnected XBRL for imported content.
          example: true
          type: boolean
        keepInputModeEnabled:
          default: false
          description: Whether to preserve input mode for imported content.
          example: true
          type: boolean
        newResultContainerName:
          description: What name to provide to the new result container for imported content.
          example: Q4 Earnings 2024
          type: string
      type: object
    FileImport:
      type: object
      description: |
        Details about a file import including the file name and target kind.
      properties:
        fileName:
          description: The name of the file to import. Supported extensions include .XLSX, .CSV, .DOCX, .PPTX, .VSDX, .TAR.GZ unless importing a SupportingDocument which can have any extension.
          type: string
          example: signed_contract.pdf
        kind:
          description: The Workiva file type to upload to. (Document, Spreadsheet, Presentation, Workiva, SupportingDocument)
          type: string
          enum:
            - Document
            - Spreadsheet
            - Presentation
            - Workiva
            - SupportingDocument
          example: SupportingDocument
        supportingDocumentImportOptions:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SupportingDocumentImportOptions'
        workivaFileImportOptions:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/WorkivaFileImportOptions'
      example:
        fileName: signed_contract.pdf
        kind: SupportingDocument
        supportingDocumentImportOptions:
          containerId: V0ZEYXRhRW5zVkNmU2Zi1mZjcE4EzNzk0ZmUwZjk
    FileImportResponse:
      description: |
        Response to a file import including the URL to upload the file to.
      properties:
        operationLocation:
          description: The URL to poll for the operation result.
          type: string
          example: https://api.app.wdesk.com/operations/128f274395254cf17eda6b3eb3d021b9
        uploadUrl:
          description: The signed URL used to upload the file. Make a PUT request to this URL whose body is the contents of the file to upload.
          example: <opaque_url>
          type: string
      type: object
    FileCopyOptions:
      description: |
        Additional options for the file copy. If no options are provided, all options default to false.
      nullable: true
      properties:
        destinationName:
          description: The name for the copied file. If not specified, the original file name will be used.
          example: New Copied File Name
          nullable: true
          type: string
        emailOnComplete:
          default: false
          description: Whether or not to email the authorized user when this copy is complete.
          example: true
          type: boolean
        includeAttachments:
          default: false
          description: Whether to preserve attachments for copied content.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to preserve comments for copied content.
          example: true
          type: boolean
        includeDocumentMarkup:
          default: false
          description: Whether to preserve document markup for copied content.
          example: true
          type: boolean
        includeInputCellValues:
          default: false
          description: Whether to preserve input cell values for copied content.
          example: true
          type: boolean
        includeOutlineLabels:
          default: false
          description: Whether to preserve outline labels for copied content.
          example: true
          type: boolean
        includeSmartLinkMetadata:
          default: false
          description: Whether to include smart link metadata for copied content.
          example: true
          type: boolean
        includeWdataIncomingConnections:
          default: false
          description: Whether to preserve incoming wdata connections for copied content.
          example: true
          type: boolean
        includeWdataOutgoingConnections:
          default: false
          description: Whether to preserve outgoing wdata connections for copied content.
          example: true
          type: boolean
        includeXBRL:
          default: false
          description: Whether to preserve XBRL for copied content.
          example: true
          type: boolean
        includeXBRLDisconnected:
          default: false
          description: Whether to preserve disconnected XBRL for copied content.
          example: true
          type: boolean
        includeAutomations:
          default: false
          description: Whether to preserve automations for copied content.
          example: true
          type: boolean
        keepInputModeEnabled:
          default: false
          description: Whether to preserve input mode for copied content.
          example: true
          type: boolean
        removeGRCLinks:
          default: false
          description: Whether to remove any connections to original GRC database, preserving only the textual or value representation of these links. If `shallowCopy` is true, this option must be false.
          example: true
          type: boolean
        removeLinks:
          default: false
          description: Whether to remove any links from sources that are not part of the operation, preserving only the textual or value representation of these links. If `shallowCopy` is true, this option must be false.
          example: true
          type: boolean
        shallowCopy:
          default: false
          description: Whether to keep the same source files for your destination links.
          example: true
          type: boolean
      type: object
    FileCopy:
      description: |
        Details about a file copy including the destination container and options
      example:
        destinationContainer: V0ZEYXRhRW50aXR5HkZvbGRlcjox
        options:
          destinationName: New Copied File Name
          emailOnComplete: true
          includeAttachments: true
          includeComments: true
          includeCustomFieldValues: true
          includeDocumentMarkup: true
          includeInputCellValues: true
          includeOutlineLabels: true
          includeSmartLinkMetadata: true
          includeWdataIncomingConnections: true
          includeWdataOutgoingConnections: true
          includeXBRL: true
          includeXBRLDisconnected: true
          includeAutomations: true
          keepInputModeEnabled: true
          removeGRCLinks: true
          removeLinks: true
          shallowCopy: true
      properties:
        destinationContainer:
          description: The unique id of the destination container to copy to. Omit this field to specify the root container. Specifying an empty string is invalid.
          example: V0ZEYXRhRW50aXR5HkZvbGRlcjox
          nullable: true
          type: string
        options:
          $ref: '#/components/schemas/FileCopyOptions'
      type: object
    FolderExport:
      description: |
        Details about the folder export, including its options
      properties:
        emailOnComplete:
          default: false
          description: Whether or not to email the authorized user when this upload is complete.
          example: true
          type: boolean
        includeAttachments:
          default: false
          description: Whether to preserve attachments for exported content.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to preserve comments for exported content.
          example: true
          type: boolean
        includeCustomFieldValues:
          default: false
          description: Whether to preserve custom field values for exported content.
          example: true
          type: boolean
        includeDocumentMarkup:
          default: false
          description: Whether to preserve document markup for exported content.
          example: true
          type: boolean
        includeInputCellValues:
          default: false
          description: Whether to preserve input cell values for exported content.
          example: true
          type: boolean
        includeOutlineLabels:
          default: false
          description: Whether to preserve outline labels for exported content.
          example: true
          type: boolean
        includeSmartLinkMetadata:
          default: false
          description: Whether to include smart link metadata for exported content.
          example: true
          type: boolean
        includeWdataIncomingConnections:
          default: false
          description: Whether to preserve incoming wdata connections for exported content.
          example: true
          type: boolean
        includeWdataOutgoingConnections:
          default: false
          description: Whether to preserve outgoing wdata connections for exported content.
          example: true
          type: boolean
        includeXBRL:
          default: false
          description: Whether to preserve XBRL for exported content.
          example: true
          type: boolean
        includeXBRLDisconnected:
          default: false
          description: Whether to preserve disconnected XBRL for exported content.
          example: true
          type: boolean
        keepInputModeEnabled:
          default: false
          description: Whether to preserve input mode for exported content.
          example: true
          type: boolean
        removeGRCLinks:
          default: false
          description: Whether to remove any connections to original GRC database, preserving only the textual or value representation of these links.
          example: true
          type: boolean
        removeLinks:
          default: false
          description: Whether to remove any links from sources that are not part of the operation, preserving only the textual or value representation of these links.
          example: true
          type: boolean
      type: object
    PresentationToPdfOptions:
      description: |
        Optional options to export the presentation as a portable document file (.PDF). If no options are provided, all options default to False.
      properties:
        includeAlternateRowFill:
          default: false
          description: Whether to include alternate row fill in the presentation's tables when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to include comments when exporting to .PDF. False by default. When True, all comments are included, even those already resolved.
          example: true
          type: boolean
        includeDraftWatermark:
          default: false
          description: Whether to include a "Draft" watermark when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeHyperlinks:
          default: false
          description: Whether to include hyperlinks when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeLeaderDots:
          default: false
          description: Whether to include leader dots when exporting to .PDF. False by default.
          example: true
          type: boolean
        tagForWebAccessibility:
          default: false
          description: Whether to tag for web accessibility when exporting to .PDF. False by default.
          example: true
          type: boolean
        useCmykColorspace:
          default: false
          description: Whether to use CMYK colorspace when exporting to .PDF. False by default.
          example: true
          type: boolean
      type: object
    PresentationToPptxOptions:
      description: |
        Optional options to export the presentation as a Microsoft Powerpoint File (.pptx). If no options are provided, all options default to False.
      properties:
        includeUnusedLayoutSlides:
          default: false
          description: Whether to include unused layout slides. False by default.
          example: true
          type: boolean
      type: object
    PresentationExport:
      description: Details about the presentation export, including its format and options
      example:
        format: pptx
        pptxOptions:
          includeUnusedLayoutSlides: true
        slides:
          - a8b3adb687644b27fafcb3a9875f0f0d_18
          - a8b3adb687644b27fafcb3a9875f0f0d_19
      properties:
        format:
          description: The file format to export the presentation as - .PDF or .PPTX.
          enum:
            - pdf
            - pptx
          example: pdf
          type: string
        pdfOptions:
          allOf:
            - $ref: '#/components/schemas/PresentationToPdfOptions'
          nullable: true
        pptxOptions:
          allOf:
            - $ref: '#/components/schemas/PresentationToPptxOptions'
          nullable: true
        slides:
          description: The IDs of the slides of the presentation to export. Omit to export the entire presentation.
          example:
            - a8b3adb687644b27fafcb3a9875f0f0d_18
            - a8b3adb687644b27fafcb3a9875f0f0d_19
          items:
            type: string
          type: array
      required:
        - format
      type: object
    SpreadsheetToCsvOptions:
      description: Optional options to export the spreadsheet as a comma-separated values (.CSV) file. If no options are provided, `exportAsFormulas` defaults to False.
      properties:
        exportAsFormulas:
          default: false
          description: Whether to export cells containing formulas as the formula or the formula result. False by default.
          example: true
          type: boolean
      type: object
    SpreadsheetToPdfOptions:
      description: |-
        Optional options to export the spreadsheet as a portable document file (.PDF). If no options are provided, all options default to False except:
          - `pageHeight`, which defaults to 11
          - `pageWidth`, which defaults to 8.5
          - `pageOrientation`, which defaults to "portrait"
          - `pageScale`, which defaults to "actualSize"
      properties:
        includeComments:
          default: false
          description: Whether to include comments when exporting to .PDF False by default.
          example: true
          type: boolean
        includeDraftWatermark:
          default: false
          description: Whether to include draft watermark when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeHyperlinks:
          default: false
          description: Whether to include hyperlinks when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeLeaderDots:
          default: false
          description: Whether to include leader dots when exporting to .PDF. False by default.
          example: true
          type: boolean
        includeTrackChanges:
          default: false
          description: Whether to include track changes when exporting to .PDF. False by default.
          example: true
          type: boolean
        onlyExportPrintAreas:
          default: false
          description: Whether to only export print areas when exporting to .PDF. False by default.
          example: true
          type: boolean
        pageHeight:
          default: 11
          description: The height of the exported .PDF, in inches. 11 by default.
          example: 14
          format: double
          maximum: 100
          minimum: 3
          type: number
        pageOrientation:
          default: portrait
          description: |
            The orientation of the exported .PDF, such as "portrait" or "landscape". "portrait" by default.
          enum:
            - portrait
            - landscape
          example: landscape
          type: string
        pageScale:
          default: actualSize
          description: The scale of the exported .PDF. "actualSize" by default.
          enum:
            - actualSize
            - fitToWidth
          example: fitToWidth
          type: string
        pageWidth:
          default: 8.5
          description: The width of the exported .PDF, in inches. 8.5 by default.
          example: 11
          format: double
          maximum: 100
          minimum: 3
          type: number
        showCellFills:
          default: false
          description: Whether to show cell fills when exporting to .PDF. False by default.
          example: true
          type: boolean
        showGridlines:
          default: false
          description: Whether to show gridlines when exporting to .PDF. False by default.
          example: true
          type: boolean
        useCmykColorspace:
          default: false
          description: Whether to use CMYK colorspace when exporting to .PDF. False by default.
          example: true
          type: boolean
      type: object
    SpreadsheetToXlsxOptions:
      description: Optional options to export the spreadsheet as a Microsoft Excel (.XLSX) file. If no options are provided, `exportAsFormulas` defaults to False, and `exportPrecision` defaults to `fullPrecision`.
      properties:
        exportAsFormulas:
          default: false
          description: Whether to export cells that contain formulas as the formula or its result when exporting to .XLSX. False by default.
          example: true
          type: boolean
        exportPrecision:
          default: fullPrecision
          description: |
            How to export values in the sheet when exporting to .XLSX "fullPrecision" by default.
          enum:
            - fullPrecision
            - rounded
            - displayed
          example: displayed
          type: string
      type: object
    SpreadsheetExport:
      description: Details about a spreadsheet export.
      example:
        format: xlsx
        sheets:
          - 7c8d8c4a46784455bg68t36f9d8232d8
          - 54bgd83b471e5902f1a8e8c9a299c9fb
        xlsxOptions:
          exportAsFormulas: true
          exportPrecision: displayed
      properties:
        csvOptions:
          allOf:
            - $ref: '#/components/schemas/SpreadsheetToCsvOptions'
          nullable: true
        format:
          description: The file format to export the spreadsheet as.
          enum:
            - pdf
            - xlsx
            - csv
          example: pdf
          type: string
        pdfOptions:
          allOf:
            - $ref: '#/components/schemas/SpreadsheetToPdfOptions'
          nullable: true
        sheets:
          description: |-
            The IDs of the sheets within the spreadsheet to export. Omit to export the entire spreadsheet.

            Note: When exporting to .CSV, you can export only the entire spreadsheet or a single sheet. When exporting the entire spreadsheet, the resulting file is a .ZIP of .CSV files, with one .CSV file per sheet.
          example:
            - 7c8d8c4a46784455bg68t36f9d8232d8
            - 54bgd83b471e5902f1a8e8c9a299c9fb
          items:
            type: string
          type: array
        xlsxOptions:
          allOf:
            - $ref: '#/components/schemas/SpreadsheetToXlsxOptions'
          nullable: true
      required:
        - format
      type: object
    WorkivaFileExportByIdOptions:
      description: |
        Additional export options used for Workiva (.tar.gz) files. Should only be provided when type is "Workiva".
      properties:
        emailOnComplete:
          default: false
          description: Whether or not to email the authorized user when this upload is complete.
          example: true
          type: boolean
        includeAttachments:
          default: false
          description: Whether to preserve attachments for exported content.
          example: true
          type: boolean
        includeComments:
          default: false
          description: Whether to preserve comments for exported content.
          example: true
          type: boolean
        includeCustomFieldValues:
          default: false
          description: Whether to preserve custom field values for exported content.
          example: true
          type: boolean
        includeDocumentMarkup:
          default: false
          description: Whether to preserve document markup for exported content.
          example: true
          type: boolean
        includeInputCellValues:
          default: false
          description: Whether to preserve input cell values for exported content.
          example: true
          type: boolean
        includeOutlineLabels:
          default: false
          description: Whether to preserve outline labels for exported content.
          example: true
          type: boolean
        includeSmartLinkMetadata:
          default: false
          description: Whether to include smart link metadata for exported content.
          example: true
          type: boolean
        includeWdataIncomingConnections:
          default: false
          description: Whether to preserve incoming wdata connections for exported content.
          example: true
          type: boolean
        includeWdataOutgoingConnections:
          default: false
          description: Whether to preserve outgoing wdata connections for exported content.
          example: true
          type: boolean
        includeXBRL:
          default: false
          description: Whether to preserve XBRL for exported content.
          example: true
          type: boolean
        includeXBRLDisconnected:
          default: false
          description: Whether to preserve disconnected XBRL for exported content.
          example: true
          type: boolean
        keepInputModeEnabled:
          default: false
          description: Whether to preserve input mode for exported content.
          example: true
          type: boolean
        removeGRCLinks:
          default: false
          description: Whether to remove any connections to original GRC database, preserving only the textual or value representation of these links.
          example: true
          type: boolean
        removeLinks:
          default: false
          description: Whether to remove any links from sources that are not part of the operation, preserving only the textual or value representation of these links.
          example: true
          type: boolean
      type: object
    WorkivaFileExport:
      description: Details about a Workiva export.
      example:
        workivaFileExportOptions:
          emailOnComplete: true
          includeXBRL: true
      properties:
        workivaFileExportOptions:
          allOf:
            - $ref: '#/components/schemas/WorkivaFileExportByIdOptions'
          nullable: true
      type: object
    FileExportById:
      description: |
        Details about a file export including the target type.
      example:
        kind: SupportingDocument
      properties:
        documentExport:
          allOf:
            - $ref: '#/components/schemas/DocumentExport'
          nullable: true
        folderExport:
          allOf:
            - $ref: '#/components/schemas/FolderExport'
          nullable: true
        kind:
          description: Kind (Type) of the file which will be exported.
          enum:
            - Document
            - Spreadsheet
            - Presentation
            - SupportingDocument
            - Folder
            - Workiva
          example: SupportingDocument
          type: string
        presentationExport:
          allOf:
            - $ref: '#/components/schemas/PresentationExport'
          nullable: true
        spreadsheetExport:
          allOf:
            - $ref: '#/components/schemas/SpreadsheetExport'
          nullable: true
        workivaFileExport:
          allOf:
            - $ref: '#/components/schemas/WorkivaFileExport'
          nullable: true
      type: object
    FileRestoreOptions:
      description: Request body for File restore endpoint
      properties: {}
      type: object
    FileTrashOptions:
      description: Request body for File trash endpoint
      nullable: true
      properties: {}
      type: object
    Edit:
      example:
        operation: create_record
        properties:
          dateReported:
            datatype: date-time
            value: "2019-12-11T00:00:00Z"
          email:
            datatype: string
            value: jane.doe@example.com
          hyperlink:
            datatype: map
            value:
              text: Example Website
              url: www.example.com
        temporaryRecordId: custom-temporary-id
        type: Issue
      properties:
        label:
          description: |
            To create or delete a relationship, the label describing how the records are related
          example: reported_by
          type: string
        operation:
          description: The operation to carry out (see enumerated values)
          enum:
            - create_record
            - delete_record
            - create_relationship
            - delete_relationship
            - set_properties
          type: string
        properties:
          description: To create a record or set its properties, the properties related to the record type. Keyed by the property name, this always includes the `datatype` and `value`. When setting properties, send a partial object representing only the values to update. Valid datatypes are `integer`, `number`, `boolean`, `string`, `date-time`, `map`, `list`, `array`, and `set`.
          example:
            dateReported:
              datatype: date-time
              value: "2019-12-11T00:00:00Z"
            email:
              datatype: string
              value: jane.doe@example.com
            hyperlink:
              datatype: map
              value:
                text: Example Website
                url: www.example.com
          type: object
          additionalProperties: true
        recordId:
          description: To create or delete a relationship, the actual ID or temporaryRecordId of the source record.
          example: 931c768b-c3dd-4392-b56e-06d7d6ff88af
          type: string
        targetId:
          description: |
            To create or delete a relationship, the ID of its target record. If creating, the actual ID or temporaryRecordId. If deleting, the actual ID.
          example: 9b336e2f-3e3d-49a6-bd14-8af1ae742200
          type: string
        temporaryRecordId:
          description: To create a record, a temporary ID that is replaced at time of processing. You can subsequently use this ID within the same request to create relationships between created records.
          example: myTempId123
          type: string
        type:
          description: |
            To create a record, the type of record to create
          example: Issue
          type: string
      required:
        - operation
      type: object
    Edits:
      description: An array of Edits to submit at once
      example:
        - operation: create_record
          properties:
            id:
              datatype: string
              value: User ID for the issue
            secondProperty:
              datatype: string
              value: This is a second property
          temporaryRecordId: <user-generated-temporary-id-for-this-issue-record>
          type: Issue
        - label: indicates_issue_on_control
          operation: create_relationship
          recordId: <user-generated-temporary-id-for-this-issue-record>
          targetId: 085ce4f5-8687-4cb0-aad6-d5c4e1a89a3d
        - operation: set_properties
          properties:
            customProperty:
              datatype: string
              value: This is a custom property
          recordId: 085ce4f5-8687-4cb0-aad6-d5c4e1a89a3d
        - label: severity_of_issue
          operation: delete_relationship
          recordId: 033a531f-c741-4a97-bc09-bb72358e75ad
          targetId: 008c4041-e941-4478-88ea-8ae74b21f6bf
        - operation: delete_record
          recordId: 033a531f-c741-4a97-bc09-bb72358e75ad
      items:
        $ref: '#/components/schemas/Edit'
      type: array
    EditsResult:
      description: A response from the POST edits endpoint
      properties:
        recordIdMap:
          description: A mapping between temporary and actual record IDs
          example:
            recordIdMap:
              myTempId123: 3f9d4e19-6281-4efb-8821-709d299809e7
          readOnly: true
          type: object
      type: object
    Relationship:
      properties:
        displayLabel:
          description: A human-readable description of the relationship between the two items
          example: Created By
          readOnly: true
          type: string
          nullable: true
        fromRecord:
          description: The unique identifier of the source record
          example: 3a1b3603-98b0-4ba8-86e1-805e3cbdde87
          readOnly: true
          type: string
          nullable: true
        fromType:
          description: The unique identifier of the source type. For a type, its name.
          example: Issue
          readOnly: true
          type: string
        label:
          description: A description of the relationship between the two items
          example: created_by
          readOnly: true
          type: string
        toRecord:
          description: The unique identifier of the target record
          example: 8e0c1db5-a208-48b0-99d0-d8976ac22c49
          readOnly: true
          type: string
          nullable: true
        toType:
          description: The unique identifier of the target Type. For a type, its name.
          example: User
          readOnly: true
          type: string
      type: object
    Record:
      properties:
        id:
          description: The unique identifier of the record
          example: 931c768b-c3dd-4392-b56e-06d7d6ff88a6
          readOnly: true
          type: string
        properties:
          description: |-
            The properties related to this type of record. Keyed by the property name, this always includes the `datatype` and `value`.

            * See [edits](ref:createedits) endpoint for modification of record properties
          example:
            dateReported:
              datatype: date-time
              value: "2019-12-11T00:00:00Z"
            email:
              datatype: string
              value: jane.doe@example.com
            hyperlink:
              datatype: map
              value:
                text: Example Website
                url: www.example.com
        relationships:
          description: |-
            An array of relationships that exist with this record

            * See [edits](ref:createedits) endpoint for modification of record relationships
          example:
            - fromRecord: 8e0c1db5-a208-48b0-99d0-d8976ac22c49
              fromType: Issue
              label: created_by
              toRecord: 931c768b-c3dd-4392-b56e-06d7d6ff88a6
              toType: User
          items:
            $ref: '#/components/schemas/Relationship'
          readOnly: true
          nullable: true
          type: array
        type:
          description: The type of the record
          example: User
          readOnly: true
          type: string
      type: object
    RecordsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Record`](ref:graph#record) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Record'
          type: array
      type: object
    GraphReportExport:
      description: Details about a graph report export.
      example:
        format: csv
      properties:
        format:
          description: The format to export the graph report to - curently, only .CSV
          enum:
            - csv
          type: string
      required:
        - format
      type: object
    Type:
      properties:
        id:
          description: The unique name of the record type
          example: User
          readOnly: true
          type: string
        properties:
          description: The list of properties related to this record type
          example:
            - firstName
            - lastName
          items:
            type: string
          readOnly: true
          type: array
        relationships:
          description: An array of relationships that exist with this type
          example:
            - displayLabel: Created By
              fromType: Issue
              label: created_by
              toType: User
          items:
            $ref: '#/components/schemas/Relationship'
          readOnly: true
          nullable: true
          type: array
      required:
        - id
        - properties
      type: object
    TypesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Type`](ref:graph#type) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Type'
          type: array
      type: object
    OperationDetail:
      description: An OperationDetail contains extra information about an Operation
      properties:
        code:
          description: The error code for specified error details
          nullable: true
          readOnly: true
          type: string
        message:
          description: A message describing the detail
          example: Attempted to modify locked cells
          nullable: true
          readOnly: true
          type: string
        target:
          description: For failures, this will be the target of the error
          nullable: true
          readOnly: true
          type: string
      type: object
    Operation:
      type: object
      description: |
        Details about the operation, including its ID, status, milestone dates, and the url of the resource upon successful completion of the operation.
      properties:
        created:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Action'
        details:
          description: A list of additional details about the operation
          example:
            - message: Attempted to modify locked cells
              target: name
              code: InvalidOrder
          nullable: true
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/OperationDetail'
        id:
          description: The unique identifier of the operation
          type: string
          readOnly: true
          example: 128f274395254cf17eda6b3eb3d021b9
        originalRequest:
          description: This is the Request ID that initiated this async operation. Giving this ID to support can help track issues with your operations.
          readOnly: true
          type: string
          format: uuid
          example: 7bee78f7-417b-42bc-ace9-e588c65d19bf
        resourceUrl:
          description: The link to the resulting resource(s)
          type: string
          nullable: true
          readOnly: true
        status:
          description: The current status of the operation
          type: string
          readOnly: true
          enum:
            - acknowledged
            - queued
            - started
            - completed
            - cancelled
            - failed
          example: completed
        updated:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Action'
    CopyFileResult:
      description: |
        Details about the result of copying a file
      example:
        container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
        id: 124efa2a142f472ba1ceab34ed18915f
        kind: Document
      properties:
        container:
          default: ""
          description: |
            The unique identifier of the container that houses the file, such as a folder. If the container is the root folder, this will be an empty string.
          example: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
          type: string
        id:
          description: The unique identifier of the file
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
        kind:
          description: Kind of the file
          enum:
            - Document
            - Spreadsheet
            - Presentation
            - Folder
          example: Document
          type: string
      type: object
    CopyFileListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`CopyFileResult`](ref:operations#copyfileresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
            id: 124efa2a142f472ba1ceab34ed18915f
            kind: Document
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/CopyFileResult'
          readOnly: true
          type: array
      type: object
    DestinationLinkSourceConversionResultType:
      description: The type of the destination link source conversion result.
      enum:
        - anchor
        - destinationLink
      example: anchor
      type: string
    DestinationLinkSourceConversionResult:
      description: A result of a destination link source conversion operation.
      example:
        anchor: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
        type: anchor
      properties:
        anchor:
          description: The unique identifier for the anchor.
          example: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
          nullable: true
          type: string
        destinationLink:
          description: The unique identifier for the destination link.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          $ref: '#/components/schemas/DestinationLinkSourceConversionResultType'
      required:
        - type
      type: object
    DestinationLinkSourceConversionResultListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `DestinationLinkSourceConversionResult` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - anchor: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
            type: anchor
          - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: destinationLink
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of destination link source conversion results
          items:
            $ref: '#/components/schemas/DestinationLinkSourceConversionResult'
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    ImageUploadResult:
      description: A reference to a resource that was created by an image upload.
      properties:
        image:
          description: The ID of the image that was created.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from an image upload.
          enum:
            - image
          example: image
          type: string
      required:
        - type
      title: ImageUploadResult
    ImageUploadResultCollection:
      description: A collection of created results from an image upload. When there are no additional results before the current collection, the previous property will be null. When there are no additional results after the current collection, the next property will be null.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of data.
          items:
            $ref: '#/components/schemas/ImageUploadResult'
          type: array
      title: ImageUploadResultCollection
      type: object
    ImportFileResult:
      description: |
        Details about the result of importing a file
      example:
        container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
        id: 124efa2a142f472ba1ceab34ed18915f
        kind: Document
      properties:
        container:
          default: ""
          description: |
            The unique identifier of the container that houses the file, such as a folder. If the container is the root folder, this will be an empty string.
          example: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
          type: string
        id:
          description: The unique identifier of the file
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
        kind:
          description: Kind of the file
          enum:
            - Document
            - Spreadsheet
            - Presentation
            - Folder
            - SupportingDocument
          example: Document
          type: string
      type: object
    ImportFileListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`ImportFileResult`](ref:operations#importfileresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - container: V0ZEYXRhRW50aXR5HkZvbGRlcjpyMTY0NEU1ZkY2OTA1QkM5QTSCMyZCRkRzQzNDO1FGNC
            id: 124efa2a142f472ba1ceab34ed18915f
            kind: Document
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/ImportFileResult'
          readOnly: true
          type: array
      type: object
    MilestoneCreationResultType:
      description: The type of resource created from a milestone creation
      type: string
      enum:
        - milestone
    MilestoneCreationResult:
      description: A reference to a resource that was created by an operation.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/MilestoneCreationResultType'
        milestone:
          description: The ID of the milestone that was created.
          nullable: true
          type: string
    MilestoneCreationListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`MilestoneCreationResult`](ref:content#milestonecreationresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      type: object
      required:
        - data
      properties:
        '@nextLink':
          type: string
          description: Pagination link for next set of results
          example: <opaque_url>
        data:
          description: The current page of data.
          type: array
          items:
            $ref: '#/components/schemas/MilestoneCreationResult'
    PatchDocumentListResult:
      description: |
        Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future.
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchPresentationListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchSectionListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchSheetListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchSlideLayoutListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchSlideListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchSpreadsheetListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    PatchTablePropertiesListResult:
      description: "RReturns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    RangeLinkEditResult:
      description: A reference to a resource that was created by an operation.
      properties:
        rangeLink:
          description: The ID of the rangeLink that was created.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from a range link edit.
          enum:
            - rangeLink
          example: rangeLink
          type: string
      required:
        - type
    RangeLinkEditResultCollection:
      description: |
        A collection of created results from a range link edit. When there are no additional results before the current collection, the previous property will be null. When there are no additional results after the current collection, the next property will be null.
      example:
        '@nextLink': <opaque_url>
        data:
          - rangeLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: rangeLink
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of data.
          items:
            $ref: '#/components/schemas/RangeLinkEditResult'
          type: array
        revision:
          $ref: '#/components/schemas/Revision'
      type: object
    RichTextEditResult:
      description: A reference to a resource that was created by a rich text edit.
      example:
        table: 8610c7b132e944cb9e5c11daf08b1b1c
        type: table
      properties:
        table:
          description: The unique identifier of the table created by the rich text edit.
          example: 8610c7b132e944cb9e5c11daf08b1b1c
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TableId'
        richText:
          description: The unique identifier of the rich text created by the rich text edit.
          example: WA2NiYGJgm7cWr4W6Ka9BHScz56m2AT2FqTmBgekyk399M99I9Bb69BoEt3WHCag
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RichTextId'
        type:
          description: The type of resource created from a rich text edit.
          enum:
            - table
            - richText
          type: string
      type: object
    RichTextEditListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`RichTextEditResult`](ref:content#richtexteditresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - table: 8610c7b132e944cb9e5c11daf08b1b1c
            type: table
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/RichTextEditResult'
          readOnly: true
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    RichTextAnchorCreationResult:
      description: A reference to a resource that was created by an operation.
      properties:
        anchor:
          description: The ID of the anchor that was created.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from a rich text anchor creation.
          enum:
            - anchor
          example: anchor
          type: string
      required:
        - type
    RichTextAnchorCreationResultCollection:
      description: A collection of created results from a rich text anchor creation. When there are no additional results before the current collection, the previous property will be null. When there are no additional results after the current collection, the next property will be null.
      example:
        '@nextLink': <opaque_url>
        data:
          - anchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: anchor
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of data.
          items:
            $ref: '#/components/schemas/RichTextAnchorCreationResult'
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    RichTextDuplicationEditResult:
      description: A reference to a resource that was created by a rich text duplication edit.
      example:
        table: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
        type: table
      properties:
        table:
          description: The unique identifier of the table created by the rich text duplication edit.
          example: 8610c7b132e944cb9e5c11daf08b1b1c
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TableId'
        type:
          description: The type of resource created from a rich text duplication edit.
          enum:
            - table
          type: string
      type: object
    RichTextDuplicationEditListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`RichTextDuplicationEditResult`](ref:content#richtextduplicationeditresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - table: WA5SVkJWXOy5MbSHX25Qf9BVz5xTvLfJadt5eXzqTxLT4o2Lo1ceQHmLbSppCdBhQUFBSE
            type: table
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/RichTextDuplicationEditResult'
          readOnly: true
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    RichTextLinksEditResult:
      description: A reference to a resource that was created by rich text links edit.
      example:
        destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
        type: destinationLink
      properties:
        destinationLink:
          description: The unique identifier of a destination link created by the rich text links edit.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from a rich text link edit
          enum:
            - destinationLink
          type: string
    RichTextLinksEditListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`RichTextLinksEditResult`](ref:content#richtextlinkseditresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: destinationLink
          - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJASdasdlkfasl
            type: destinationLink
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/RichTextLinksEditResult'
          readOnly: true
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    TableAnchorCreationResult:
      description: A reference to a resource that was created by an operation.
      properties:
        anchor:
          description: The ID of the anchor that was created.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from an image upload.
          enum:
            - anchor
          example: anchor
          type: string
      required:
        - type
    TableAnchorCreationResultCollection:
      description: A collection of created results from a table anchor creation. When there are no additional results before the current collection, the previous property will be null. When there are no additional results after the current collection, the next property will be null.
      example:
        '@nextLink': <opaque_url>
        data:
          - anchor: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: anchor
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          nullable: true
          type: string
        data:
          description: The current page of data.
          items:
            $ref: '#/components/schemas/TableAnchorCreationResult'
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    TableCellEditListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    TableEditListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    TableLinksEditResult:
      description: A reference to a resource that was created by an operation.
      example:
        destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
        type: destinationLink
      properties:
        destinationLink:
          description: The unique identifier of a destination link created by the table links edit.
          example: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
          nullable: true
          type: string
        type:
          description: The type of resource created from a table link edit.
          enum:
            - destinationLink
          type: string
      required:
        - type
    TableLinksEditListResult:
      description: |
        Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`TextLinksEditResult`](ref:content#textlinkseditresult) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        '@nextLink': <opaque_url>
        data:
          - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJjMrqxmru
            type: destinationLink
          - destinationLink: WA7i5vbm7lNaEn6XT9AtcW5vb22BJASdasdlkfasl
            type: destinationLink
        revision: 24601abc
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          nullable: true
          type: string
        data:
          items:
            $ref: '#/components/schemas/TableLinksEditResult'
          readOnly: true
          type: array
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
    TableReapplyFilterListResult:
      description: "Returns a result with the new `revision`. Currently the result will only return a revision, but can return a `data` property that includes created resources in the future. \n"
      example:
        revision: 24601abc
      properties:
        revision:
          description: Identifies a unique revision of content.
          example: 24601abc
          type: string
      type: object
    Permission:
      description: |
        Details about the permission, including its ID, and name.
      example:
        id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
        name: Editor
      properties:
        id:
          description: The unique identifier of the permission
          example: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
          readOnly: true
          type: string
        name:
          description: Name of the permission
          example: Editor
          type: string
      required:
        - id
        - name
      type: object
    PermissionsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Permission`](ref:permissions#permission) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      example:
        data:
          - id: ae82b647-8e43-44c3-a4e7-2aa3294c87ac
            name: Editor
          - id: aca32ae8-8e43-44c3-a4e7-2b64794c87ac
            name: Viewer
          - id: ds90647-8e43-44c3-a4e7-2aa3294c87ac
            name: Owner
          - id: sd32b647-8e43-44c3-a4e7-2aa3294c87ac
            name: None
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Permission'
          type: array
      required:
        - data
      type: object
    PresentationLockType:
      description: The type of the presentation lock.
      type: string
      enum:
        - locked
    Slide:
      description: |
        Details about the slide, including its ID and name.
      properties:
        children:
          description: An array of partial information about any slides within the slide.
          items:
            allOf:
              - $ref: '#/components/schemas/Slide'
          readOnly: true
          type: array
        customFields:
          description: |
            A map of ids to values representing Custom Fields on the slide.
        id:
          description: The unique identifier of the slide
          example: a8b3adb687644b27fafcb3a9875f0f0d_18
          readOnly: true
          type: string
          nullable: true
        index:
          description: The integer index of the slide relative to its parent slide (or to the presentation if no parent slide). The special value -1 may be used to position a slide at the end of its siblings list.
          example: 1
          type: integer
        layoutSource:
          description: The ID of the slide layout from which this slide's layout is derived.
          example: a8b3adb687644b27fafcb3a9875f0f0d_1
          nullable: true
          type: string
        name:
          description: The name of the slide
          example: Risk factors
          type: string
        parent:
          allOf:
            - $ref: '#/components/schemas/Slide'
          nullable: true
        revision:
          description: The revision of the slide
          example: 24601abc
          readOnly: true
          type: string
        slideBody:
          description: Reference to the Drawing content for this slide
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/DrawingRef'
        lock:
          description: The type of lock applied to this slide, if any. Note this property is not tied to revision and will always reflect the slide's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SlideLockType'
      type: object
    SlideLockType:
      description: A lock applied to a slide.
      type: string
      enum:
        - lock
    Presentation:
      description: |
        Details about the presentation, including its ID, name, and milestone dates.
      example:
        created:
          dateTime: "2020-10-28T15:03:27Z"
        customFieldGroups: []
        customFields:
          com.workiva.gsr.legal_entity: Workiva
        id: 124efa2a142f472ba1ceab34ed18915f
        lock: null
        modified:
          dateTime: "2020-10-28T15:03:27Z"
        name: 2019 Year-End Summary
        slideCustomFieldGroups: []
        slideLayouts:
          - id: 27f1b61a04ee4b0991bc73c631914e1d_103
            name: Main Layout
          - id: c51b67d8cb1145c3baaa0637bb329c26_24
            name: Title Slide
        slides:
          - id: 27f1b61a04ee4b0991bc73c631914e1d_103
            name: Slide
          - id: c51b67d8cb1145c3baaa0637bb329c26_24
            name: Subslide
        template: false
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        customFieldGroups:
          description: An array of Custom Field Group IDs applied to the presentation.
          items:
            type: string
            uniqueItems: true
          type: array
        customFields:
          description: A map of ids to values representing Custom Fields on the  presentation.
        id:
          description: The unique identifier of the presentation
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        lock:
          description: The type of lock applied to this presentation, if any. Note this property is not tied to revision and will always reflect the presentation's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PresentationLockType'
        name:
          description: Name of the presentation
          example: Example Quarterly Presentation
          readOnly: true
          type: string
        revision:
          description: The current revision of the presentation
          example: 5B3C4D7B
          nullable: true
          readOnly: true
          type: string
        slideCustomFieldGroups:
          description: An array of Custom Field Group IDs applied to all slides within the  presentation.
          items:
            type: string
            uniqueItems: true
          type: array
        slides:
          description: |
            An array of information about the slides in the presentation. Included in the response only when the $expand query parameter
                  is provided.
          items:
            allOf:
              - $ref: '#/components/schemas/Slide'
          readOnly: true
          type: array
        template:
          description: Whether the presentation is a template
          example: false
          readOnly: true
          type: boolean
      type: object
    PresentationFiltersReapplication:
      description: A presentation filter reapply operation, which can reapply filters to a presentation and optionally ignore read-only filters.
      example:
        ignoreNonEditableFilters: true
      properties:
        ignoreNonEditableFilters:
          default: false
          description: Skip filters that cannot be reapplied (due to not having edit permissions or locked sections) instead of returning an error.
          example: true
          type: boolean
      type: object
    SlideLayoutLockType:
      description: A lock applied to a slide layout.
      type: string
      enum:
        - lock
    SlideLayout:
      description: |
        Details about the slide layout, including its ID and name.
      properties:
        id:
          description: The unique identifier of the slide layout
          example: a8b3adb687644b27fafcb3a9875f0f0d_18
          readOnly: true
          type: string
          nullable: true
        index:
          description: The integer index of the slide relative to its parent slide layout (or to the presentation if no parent slide layout). The special value -1 may be used to position a slide at the end of its siblings list.
          example: 1
          type: integer
        name:
          description: The name of the slide layout
          example: Title Page
          type: string
        revision:
          description: The revision of the slide layout
          example: 24601abc
          readOnly: true
          type: string
        slideLayoutBody:
          description: Reference to the Drawing content for this slide layout
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/DrawingRef'
        lock:
          description: The type of lock applied to this slide layout, if any. Note this property is not tied to revision and will always reflect the slide layout's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SlideLayoutLockType'
      type: object
    SlideLayoutsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `SlideLayout` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/SlideLayout'
          type: array
      required:
        - data
      type: object
    SlidesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Slide` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Slide'
          type: array
      required:
        - data
      type: object
    PresentationTableCollectionResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `ContentTable` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: Tables contained by this presentation.
          items:
            $ref: '#/components/schemas/ContentTable'
          type: array
        revision:
          description: The revision of the presentation.
          example: 24601abc
          type: string
      required:
        - data
        - revision
      type: object
    SpreadsheetLockType:
      description: The type of the spreadsheet lock.
      type: string
      enum:
        - locked
    SpreadsheetTableFormats:
      description: The table formats for a spreadsheet.
      example:
        resizeRowsToFit: true
      properties:
        resizeRowsToFit:
          description: Whether the rows of tables will resize automatically to fit the content of the cells.
          type: boolean
      required:
        - resizeRowsToFit
      type: object
    SpreadsheetProperties:
      description: Spreadsheet properties are the configurations and setup for the spreadsheet.
      example:
        tableFormats:
          resizeRowsToFit: true
        trackChanges: false
      properties:
        tableFormats:
          $ref: '#/components/schemas/SpreadsheetTableFormats'
        trackChanges:
          description: Whether track changes is enabled for the entire spreadsheet. When true, this setting overrides per-sheet track changes; sheet values may still be read and written but do not apply while this spreadsheet-level setting is on.
          type: boolean
      required:
        - tableFormats
        - trackChanges
      type: object
    Spreadsheet:
      description: |
        Details about the spreadsheet, including its ID, name, and milestone dates.
      properties:
        created:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        customFieldGroups:
          description: An array of Custom Field Group IDs applied to the spreadsheet.
          items:
            type: string
            uniqueItems: true
          type: array
        customFields:
          description: A map of ids to values representing Custom Fields on the spreadsheet.
        id:
          description: The unique identifier of the spreadsheet
          example: 124efa2a142f472ba1ceab34ed18915f
          readOnly: true
          type: string
        linksStatus:
          allOf:
            - $ref: '#/components/schemas/LinksStatus'
          readOnly: true
        lock:
          description: The type of lock applied to this spreadsheet, if any. Note this property is not tied to revision and will always reflect the spreadsheet's current lock state.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SpreadsheetLockType'
        modified:
          allOf:
            - $ref: '#/components/schemas/Action'
          readOnly: true
        name:
          description: The name of the spreadsheet
          example: Year-end review
          readOnly: true
          type: string
        properties:
          $ref: '#/components/schemas/SpreadsheetProperties'
        revision:
          description: The revision of the spreadsheet
          example: 24601abc
          readOnly: true
          type: string
        sheetCustomFieldGroups:
          description: An array of Custom Field Group IDs applied to all sheets within the spreadsheet.
          items:
            type: string
            uniqueItems: true
          type: array
        template:
          description: Whether the spreadsheet is a template
          example: false
          readOnly: true
          type: boolean
      type: object
    SpreadsheetsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Spreadsheet`](ref:spreadsheets#spreadsheet) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Spreadsheet'
          type: array
      required:
        - data
      type: object
    Dataset:
      description: Details about the dataset.
      properties:
        range:
          description: A1 style notation describing the range. Datasets are always located in the top left-hand corner of the sheet, so there is no need to specify range when creating a dataset.
          example: A1:B2
          readOnly: true
          type: string
          nullable: true
        sheet:
          description: The unique identifier of the sheet to which this dataset belongs.
          example: 27f1b61c04ae4b0991bc73c631914e1d
          type: string
        values:
          description: A row-major ordered multidimensional array of cell values.
          example:
            - - 1
              - 4
            - - 2
              - ""
          items:
            description: A row of cell values.  Values may be of type boolean, number, integer, or string (a string may be the empty string).
            example:
              - 1
              - 4
            items: {}
            type: array
          type: array
          nullable: true
      type: object
    DatasetsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of partial [`Dataset`](ref:spreadsheets#dataset) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            allOf:
              - $ref: '#/components/schemas/Dataset'
          type: array
      required:
        - data
      type: object
    Datasets:
      description: An array of Datasets to submit at once
      items:
        $ref: '#/components/schemas/Dataset'
      type: array
    SpreadsheetFiltersReapplication:
      description: A spreadsheet filter reapply operation, which can reapply filters to a spreadsheet and optionally ignore read-only filters.
      example:
        ignoreNonEditableFilters: true
      properties:
        ignoreNonEditableFilters:
          default: false
          description: Skip filters that cannot be reapplied (due to not having edit permissions, locked sheets, or sheets in input mode) instead of returning an error.
          example: true
          type: boolean
      type: object
    Sheet:
      description: |
        Details about the sheet, including its ID and name.
      properties:
        children:
          description: An array of partial information about any child sheets
          items:
            allOf:
              - $ref: '#/components/schemas/Sheet'
          readOnly: true
          type: array
        customFields:
          description: |
            A map of ids to values representing Custom Fields on the sheet.
        dataset:
          allOf:
            - $ref: '#/components/schemas/Dataset'
          description: |-
            The range of the dataset on this sheet, if one exists.
            * To modify a dataset, either [update](ref:upsertdatasets) or [delete](ref:deletedatasetbysheetid) it.
          nullable: true
          readOnly: true
        id:
          description: The unique identifier of the sheet
          example: 27f1b61c04ae4b0991bc73c631914e1d
          type: string
          nullable: true
        index:
          description: The integer index of the sheet relative to its parent sheet or to the spreadsheet, if no parent sheet. To position a sheet at the end of its siblings, use the special value -1.
          example: 1
          type: integer
        lock:
          description: The type of lock applied to this sheet, if any. Note this property is not tied to revision and will always reflect the sheet's current lock state. When this field is not present on the sheet object, the sheet is not locked.
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SheetLockType'
        name:
          description: The name of the sheet
          example: Q1
          type: string
        parent:
          allOf:
            - $ref: '#/components/schemas/Sheet'
          nullable: true
        properties:
          $ref: '#/components/schemas/SheetProperties'
        revision:
          description: The revision of the sheet
          example: 24601abc
          readOnly: true
          type: string
        table:
          $ref: '#/components/schemas/TableRef'
      type: object
    SheetLockType:
      description: A lock applied to a sheet.
      type: string
      enum:
        - lock
        - inputMode
    SheetProperties:
      description: Sheet properties are the configurations and setup for the sheet.
      properties:
        trackChanges:
          description: Whether track changes is enabled for this sheet.
          type: boolean
      required:
        - trackChanges
      type: object
    SheetsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of `Sheet` objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/Sheet'
          type: array
      required:
        - data
      type: object
    SheetCopy:
      description: Details about the destination spreadsheet and, optionally, the destination sheet.
      properties:
        sheetIndex:
          default: 0
          description: The integer index of where within the siblings to place the new sheet; 0 by default. To place the sheet at the end of its siblings, use the special value -1.
          example: 2
          type: integer
          nullable: true
        sheetName:
          description: The name of the new sheet, if different than the source sheet.
          example: Q1
          nullable: true
          type: string
        sheetParent:
          description: The ID of the parent sheet to copy the sheet into. To place the sheet at the top level of the spreadsheet, use the default null.
          example: 5bbf8aa3cea54465762af96e3ca411c7
          nullable: true
          type: string
        spreadsheet:
          description: The unique identifier of the spreadsheet to copy a sheet into
          example: c65d9572a7464037a383d6235633cf74
          type: string
      required:
        - spreadsheet
      type: object
    HexColor:
      default: '#000000'
      description: A hex color code
      example: '#4bdf58'
      pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
      type: string
      nullable: true
    Border:
      description: The type of border that should be applied
      example:
        color: '#000000'
        style: SINGLE
        weight: 2
      properties:
        color:
          $ref: '#/components/schemas/HexColor'
        style:
          description: The type of border to apply
          enum:
            - SINGLE
            - DOUBLE
            - DASHED1
            - DASHED2
            - DASHED3
            - DASHED4
            - DASHED5
          type: string
        weight:
          default: 1
          description: The thickness of the border, in points. Rounded to the nearest hundredth.
          maximum: 10
          minimum: 0.25
          type: number
          nullable: true
          format: float
      required:
        - style
      type: object
      nullable: true
    CellFormat:
      description: Cell Formats. Fields that are omitted will be ignored.
      properties:
        backgroundColor:
          $ref: '#/components/schemas/HexColor'
        borders:
          description: The borders applied to a cell. Borders may be set by setting `applyBorders`
          properties:
            bottom:
              $ref: '#/components/schemas/Border'
            diagonalDown:
              $ref: '#/components/schemas/Border'
            diagonalUp:
              $ref: '#/components/schemas/Border'
            left:
              $ref: '#/components/schemas/Border'
            right:
              $ref: '#/components/schemas/Border'
            top:
              $ref: '#/components/schemas/Border'
          readOnly: true
          nullable: true
          type: object
        horizontalAlign:
          description: The horizontal alignment of the content in the cell
          enum:
            - LEFT
            - RIGHT
            - CENTER
            - JUSTIFIED
          type: string
          nullable: true
        indent:
          description: Indentation of content in the cell
          properties:
            unit:
              description: The unit of the size
              enum:
                - INCHES
                - CENTIMETERS
              type: string
            value:
              description: The size of the indent
              minimum: 0
              type: number
          required:
            - value
            - unit
          type: object
          nullable: true
        leaderDots:
          description: The leader dot pattern to show on the cell
          enum:
            - NARROW
            - WIDE
          type: string
          nullable: true
        textRotation:
          description: The text orientation
          enum:
            - HORIZONTAL
            - ASCENDING
            - DESCENDING
          type: string
          nullable: true
        verticalAlign:
          description: The vertical alignment of the content in the cell
          enum:
            - TOP
            - MIDDLE
            - BOTTOM
          type: string
          nullable: true
      type: object
      nullable: true
    TextFormat:
      description: Text formats. Fields that are omitted will be ignored.
      properties:
        bold:
          description: Text bold format
          type: boolean
          nullable: true
        fontColor:
          $ref: '#/components/schemas/HexColor'
        fontFamily:
          description: Text font format
          example: Times New Roman
          type: string
          nullable: true
        fontSize:
          description: Text font size, in points
          example: 12
          maximum: 720
          minimum: 1
          type: number
          nullable: true
        italic:
          description: Text italic format
          type: boolean
          nullable: true
        strikethrough:
          description: Text strikethrough format
          type: boolean
          nullable: true
        underline:
          description: Text underline format
          type: boolean
          nullable: true
      type: object
    ValueFormat:
      description: Value Formats. Fields that are omitted will be ignored.
      properties:
        currencySymbol:
          description: The currency symbol to display. Valid for ACCOUNTING and CURRENCY. Either generic or currency should be set, but not both.
          properties:
            currency:
              description: An ISO currency format
              properties:
                code:
                  description: The ISO currency identifier
                  enum:
                    - AUD
                    - BGN
                    - BRL
                    - CAD
                    - CHF
                    - CNH
                    - CNY
                    - CZK
                    - DKK
                    - EUR
                    - GBP
                    - HKD
                    - HRK
                    - HUF
                    - INR
                    - ISK
                    - IDR
                    - JPY
                    - KRW
                    - MXN
                    - MYR
                    - NOK
                    - PHP
                    - PLN
                    - RON
                    - RSD
                    - RUB
                    - SEK
                    - SGD
                    - THB
                    - TRY
                    - TWD
                    - UAH
                    - USD
                    - ZAR
                    - VND
                  type: string
                  nullable: true
                display:
                  description: |
                    How to display the currency. CODE simply displays the ISO currency code while SYMBOL displays the corresponding currency symbol.
                    For codes where we support two different symbols, SYMBOL and SYMBOL2 display as follows:
                      | code | SYMBOL | SYMBOL2 |
                      | ---- | ------ | ------- |
                      | INR  | ₹      | Rs      |
                      | RSD  | дин    | din     |
                      | UAH  | ₴      | грн     |
                  enum:
                    - SYMBOL
                    - SYMBOL2
                    - CODE
                  type: string
                  nullable: true
              required:
                - code
                - display
              type: object
              nullable: true
            generic:
              description: Generic currency options
              enum:
                - DOLLAR
                - CENT
              type: string
              nullable: true
          type: object
          nullable: true
        dateAbbreviateMonth:
          description: Use month abbreviations instead of full month names. Valid for DATE.
          type: boolean
          nullable: true
        dateFormatString:
          description: Format to use when rendering the date. Valid for DATE.
          example: d/m/yyyy
          maxLength: 100
          type: string
          nullable: true
        dateUppercaseAll:
          description: Uppercase all characters in the date string. Valid for DATE.
          type: boolean
          nullable: true
        displayZeroAs:
          description: |
            The symbol to use for zero. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT. This field controls the symbol to use for zero when
            not using showNumbersAsWords.
          enum:
            - ZERO
            - EM DASH
            - EN DASH
            - HYPHEN
            - BLANK
          type: string
          nullable: true
        enteredIn:
          description: The scale cell values are entered in. Valid for AUTOMATIC, ACCOUNTING, CURRENCY, and NUMBER.
          enum:
            - MILLIONTHS
            - BASIS POINTS
            - THOUSANDTHS
            - HUNDREDTHS
            - ONES
            - THOUSANDS
            - TEN THOUSANDS
            - MILLIONS
            - HUNDRED MILLIONS
            - BILLIONS
            - TRILLIONS
          type: string
          nullable: true
        numbersAsWordsOptions:
          description: |
            Options relevant when showing numbers as words. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT. In order for these options to
            take effect showNumbersAsWords must be set to true.
          properties:
            capitalizeFirstWord:
              default: false
              description: Capitalize the first word. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
              type: boolean
              nullable: true
            displayZeroAs:
              default: ZERO
              description: The word to use for zero. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
              enum:
                - ZERO
                - 'NO'
                - NONE
                - NOTHING
                - NIL
                - NOT
                - NOMINAL
                - IMMATERIAL
              type: string
              nullable: true
          type: object
          nullable: true
        percentSymbol:
          description: Render numbers with a percent symbol. Valid for PERCENT.
          enum:
            - NONE
            - SYMBOL
            - WORD
          type: string
          nullable: true
        periodFormat:
          description: Options for formatting a duration string. Valid for PERIOD
          properties:
            capitalizeFirstWord:
              default: false
              description: Capitalize the first word
              type: boolean
              nullable: true
            display:
              description: Method of displaying the period value
              enum:
                - RAW
                - LARGEST
                - YEARS
                - ALL
              type: string
              nullable: true
            precision:
              default: null
              description: Precision to use when rounding decimal numbers for display. Renders with automatic precision if null.
              maximum: 15
              minimum: 0
              nullable: true
              type: integer
            separator:
              default: COMMA
              description: The separator to use between denominations if multiple are displayed
              enum:
                - NONE
                - COMMA
              type: string
              nullable: true
            showLabels:
              default: true
              description: Render a label after each denomination
              type: boolean
              nullable: true
            showNumbersAsWords:
              default: false
              description: Render the numbers as words instead of digits
              type: boolean
              nullable: true
          required:
            - display
          type: object
          nullable: true
        precision:
          description: Precision to use when rounding numbers for display. Valid for AUTOMATIC, ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          properties:
            auto:
              default: false
              description: Render with automatic precision based on the value in the cell
              type: boolean
              nullable: true
            value:
              description: Explicit precision value to use. Required unless auto is true.
              maximum: 15
              minimum: -15
              type: integer
              nullable: true
          type: object
          nullable: true
        prefix:
          description: Custom prefix value to render in the cell. Valid for ACCOUNTING, CURRENCY, NUMBER, PERCENT, and DATE.
          maxLength: 100
          type: string
          nullable: true
        showCurrencySymbol:
          description: Render numbers with a currency symbol. Valid for ACCOUNTING and CURRENCY.
          type: boolean
          nullable: true
        showLeadingZero:
          description: Include a leading zero for decimal numbers with no whole number part. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        showNumbersAsWords:
          description: Render the number as words instead of digits. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        showPositiveSign:
          description: Render the positive sign on numbers greater than zero. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        showSignRoundedZero:
          description: Render the sign on values rounded to zero. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        showThousandsSeparator:
          description: Render the thousands separator. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        shownIn:
          description: The scale cell values are displayed in. Valid for AUTOMATIC, ACCOUNTING, CURRENCY, and NUMBER.
          enum:
            - MILLIONTHS
            - BASIS POINTS
            - THOUSANDTHS
            - HUNDREDTHS
            - ONES
            - THOUSANDS
            - TEN THOUSANDS
            - MILLIONS
            - HUNDRED MILLIONS
            - BILLIONS
            - TRILLIONS
          type: string
          nullable: true
        suffix:
          description: Custom suffix value to render in the cell. Valid for ACCOUNTING, CURRENCY, NUMBER, PERCENT, and DATE.
          maxLength: 100
          type: string
          nullable: true
        symbolAlign:
          description: Where to render the symbol relative to the value. All values valid for ACCOUNTING and CURRENCY. Left values valid for NUMBER. Right values valid for PERCENT.
          enum:
            - SYMBOL DEFAULT
            - LEFT
            - LEFT INSIDE
            - RIGHT
            - RIGHT INSIDE
            - RIGHT SPACED INSIDE
            - RIGHT SPACED
          type: string
          nullable: true
        useDashesForZeros:
          description: Render zero as a dash instead of a digit. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        useParensForNegatives:
          description: Render parentheses around the number instead of a negative symbol. Valid for ACCOUNTING, CURRENCY, NUMBER, and PERCENT.
          type: boolean
          nullable: true
        valueFormatType:
          description: The value format type of the content. Setting this property will clear any other ValueFormat properties that are not valid for the new value format type.
          enum:
            - AUTOMATIC
            - AUTOMATIC ACCOUNTING
            - AUTOMATIC CURRENCY
            - AUTOMATIC NUMBER
            - AUTOMATIC PERCENT
            - AUTOMATIC DATE
            - AUTOMATIC PERIOD
            - AUTOMATIC TEXT
            - ACCOUNTING
            - CURRENCY
            - NUMBER
            - PERCENT
            - DATE
            - PERIOD
            - TEXT
          type: string
          nullable: true
      type: object
      nullable: true
    EffectiveFormats:
      description: Formats that could be directly applied or applied through inheritance.
      properties:
        cellFormat:
          $ref: '#/components/schemas/CellFormat'
        textFormat:
          $ref: '#/components/schemas/TextFormat'
        valueFormat:
          $ref: '#/components/schemas/ValueFormat'
      type: object
      nullable: true
    Formats:
      description: Formats on a cell
      properties:
        cellFormat:
          $ref: '#/components/schemas/CellFormat'
        textFormat:
          $ref: '#/components/schemas/TextFormat'
        valueFormat:
          $ref: '#/components/schemas/ValueFormat'
      type: object
      nullable: true
    CellData:
      description: Data in a cell
      example:
        calculatedValue: 2
        effectiveFormats:
          cellFormat:
            backgroundColor: '#d0e8ff'
            borders:
              bottom:
                color: '#000'
                style: SINGLE
                weight: 1
              left:
                color: '#000'
                style: SINGLE
                weight: 1
              right: null
              top:
                color: '#000'
                style: SINGLE
                weight: 1
            horizontalAlign: RIGHT
            indent:
              unit: INCHES
              value: 0
            leaderDots: null
            textRotation: null
            verticalAlign: BOTTOM
          textFormat:
            bold: true
            fontColor: '#000000'
            fontFamily: Arial
            fontSize: 10
            italic: false
            strikethrough: false
            underline: false
          valueFormat:
            currencySymbol:
              currency:
                code: EUR
                display: SYMBOL
              generic: null
            dateAbbreviateMonth: null
            dateFormatString: null
            dateUppercaseAll: null
            displayZeroAs: ZERO
            enteredIn: ONES
            numbersAsWordsOptions:
              capitalizeFirstWord: false
              displayZeroAs: null
            percentSymbol: null
            periodFormat: null
            precision:
              auto: false
              value: 2
            prefix: ""
            showCurrencySymbol: true
            showLeadingZero: true
            showNumbersAsWords: false
            showPositiveSign: false
            showSignRoundedZero: false
            showThousandsSeparator: true
            shownIn: ONES
            suffix: ""
            symbolAlign: SYMBOL DEFAULT
            useParensForNegatives: false
            valueFormatType: CURRENCY
        formats:
          cellFormat:
            backgroundColor: '#d0e8ff'
            borders:
              bottom:
                color: '#000'
                style: SINGLE
                weight: 1
              left:
                color: '#000'
                style: SINGLE
                weight: 1
              right: null
              top:
                color: '#000'
                style: SINGLE
                weight: 1
            horizontalAlign: null
            indent: null
            leaderDots: null
            textRotation: null
            verticalAlign: null
          textFormat:
            bold: true
            fontColor: null
            fontFamily: null
            fontSize: null
            italic: null
            strikethrough: null
            underline: null
          valueFormat:
            currencySymbol:
              currency:
                code: EUR
                display: SYMBOL
              generic: null
            dateAbbreviateMonth: null
            dateFormatString: null
            dateUppercaseAll: null
            displayZeroAs: ZERO
            enteredIn: ONES
            numbersAsWordsOptions:
              capitalizeFirstWord: false
              displayZeroAs: null
            percentSymbol: null
            periodFormat: null
            precision:
              auto: false
              value: 2
            prefix: ""
            showCurrencySymbol: true
            showLeadingZero: true
            showNumbersAsWords: false
            showPositiveSign: null
            showSignRoundedZero: false
            showThousandsSeparator: true
            shownIn: ONES
            suffix: ""
            symbolAlign: null
            useParensForNegatives: false
            valueFormatType: CURRENCY
        value: =1+1
      properties:
        calculatedValue:
          description: String, numeric, or boolean value result value of the cell. If the cell is a formula, this value will be the calculated result.
        effectiveFormats:
          $ref: '#/components/schemas/EffectiveFormats'
        formats:
          $ref: '#/components/schemas/Formats'
        value:
          description: String, numeric, or boolean value of the cell. If the cell is a formula, this value will be the formula string.
      type: object
    ColumnMetadata:
      description: Metadata about a column
      example:
        hidden: false
        size: 75
      properties:
        hidden:
          description: Whether the column is hidden
          type: boolean
          nullable: true
        size:
          description: The width of the column, in points
          type: integer
          nullable: true
      type: object
    Range:
      description: A range in a sheet. If any field is omitted or null, the range is unbounded in that direction.
      properties:
        startColumn:
          description: The index of the first column of the range, inclusive
          minimum: 0
          nullable: true
          type: integer
        startRow:
          description: The index of the first row of the range, inclusive
          minimum: 0
          nullable: true
          type: integer
        stopColumn:
          description: The index of the last column of the range, inclusive
          minimum: 0
          nullable: true
          type: integer
        stopRow:
          description: The index of the last row of the range, inclusive
          minimum: 0
          nullable: true
          type: integer
      type: object
      nullable: true
    RowMetadata:
      description: Metadata about a row
      example:
        filtered: false
        hidden: false
        size: 16
      properties:
        filtered:
          description: Whether the row is filtered
          type: boolean
          nullable: true
        hidden:
          description: Whether the row is hidden
          type: boolean
          nullable: true
        size:
          description: The height of the row, in points
          type: integer
          nullable: true
      type: object
      nullable: true
    SheetData:
      description: |
        Details about the section, including its ID and name.
      example:
        cells:
          - - calculatedValue: 2
              effectiveFormats:
                cellFormat:
                  backgroundColor: '#d0e8ff'
                  borders:
                    bottom:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                    left:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                    right: null
                    top:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                  horizontalAlign: RIGHT
                  indent:
                    unit: INCHES
                    value: 0
                  leaderDots: null
                  textRotation: null
                  verticalAlign: BOTTOM
                textFormat:
                  bold: true
                  fontColor: '#000000'
                  fontFamily: Arial
                  fontSize: 10
                  italic: false
                  strikethrough: false
                  underline: false
                valueFormat:
                  currencySymbol:
                    currency:
                      code: EUR
                      display: SYMBOL
                    generic: null
                  dateAbbreviateMonth: null
                  dateFormatString: null
                  dateUppercaseAll: null
                  displayZeroAs: ZERO
                  enteredIn: ONES
                  numbersAsWordsOptions:
                    capitalizeFirstWord: false
                    displayZeroAs: null
                  percentSymbol: null
                  periodFormat: null
                  precision:
                    auto: false
                    value: 2
                  prefix: ""
                  showCurrencySymbol: true
                  showLeadingZero: true
                  showNumbersAsWords: false
                  showPositiveSign: false
                  showSignRoundedZero: false
                  showThousandsSeparator: true
                  shownIn: ONES
                  suffix: ""
                  symbolAlign: SYMBOL DEFAULT
                  useParensForNegatives: false
                  valueFormatType: CURRENCY
              formats:
                cellFormat:
                  backgroundColor: '#d0e8ff'
                  borders:
                    bottom:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                    left:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                    right: null
                    top:
                      color: '#000'
                      style: SINGLE
                      weight: 1
                  horizontalAlign: null
                  indent: null
                  leaderDots: null
                  textRotation: null
                  verticalAlign: null
                textFormat:
                  bold: true
                  fontColor: null
                  fontFamily: null
                  fontSize: null
                  italic: null
                  strikethrough: null
                  underline: null
                valueFormat:
                  currencySymbol:
                    currency:
                      code: EUR
                      display: SYMBOL
                    generic: null
                  dateAbbreviateMonth: null
                  dateFormatString: null
                  dateUppercaseAll: null
                  displayZeroAs: ZERO
                  enteredIn: ONES
                  numbersAsWordsOptions:
                    capitalizeFirstWord: false
                    displayZeroAs: null
                  percentSymbol: null
                  periodFormat: null
                  precision:
                    auto: false
                    value: 2
                  prefix: ""
                  showCurrencySymbol: true
                  showLeadingZero: true
                  showNumbersAsWords: false
                  showPositiveSign: null
                  showSignRoundedZero: false
                  showThousandsSeparator: true
                  shownIn: ONES
                  suffix: ""
                  symbolAlign: null
                  useParensForNegatives: false
                  valueFormatType: CURRENCY
              value: =1+1
        columnMetadata:
          - hidden: false
            size: 75
        merges:
          - startColumn: 0
            startRow: 0
            stopColumn: 1
            stopRow: 0
        range:
          startColumn: 0
          startRow: 0
          stopColumn: 0
          stopRow: 0
        rowMetadata:
          - filtered: false
            hidden: false
            size: 16
      properties:
        cells:
          description: Cell data in row-major order
          items:
            items:
              $ref: '#/components/schemas/CellData'
            type: array
          type: array
          nullable: true
        columnMetadata:
          description: Metadata about the columns in the request range
          items:
            $ref: '#/components/schemas/ColumnMetadata'
          type: array
        merges:
          description: Merged ranges that intersect with the request range
          items:
            $ref: '#/components/schemas/Range'
          type: array
          nullable: true
        range:
          $ref: '#/components/schemas/Range'
        rowMetadata:
          description: Metadata about the rows in the request range
          items:
            $ref: '#/components/schemas/RowMetadata'
          type: array
      type: object
    SheetDataResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a  [`SheetData`](ref:spreadsheets#sheetdata) object, and `@nextLink`  provides the URL to the next set of results. If there are no additional results,  `@nextLink` doesn't appear.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          allOf:
            - $ref: '#/components/schemas/SheetData'
      required:
        - data
      type: object
    ApplyBorders:
      description: Apply borders to ranges
      example:
        bottom:
          color: '#000000'
          style: SINGLE
          weight: 2
        diagonalDown:
          color: '#000000'
          style: SINGLE
          weight: 2
        diagonalUp:
          color: '#000000'
          style: SINGLE
          weight: 2
        innerHorizontal:
          color: '#808080'
          style: DASHED1
          weight: 1
        innerVertical:
          color: '#808080'
          style: DASHED1
          weight: 1
        left:
          color: '#000000'
          style: SINGLE
          weight: 2
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 3
            stopRow: 3
        right:
          color: '#000000'
          style: SINGLE
          weight: 2
        top:
          color: '#000000'
          style: SINGLE
          weight: 2
      properties:
        bottom:
          $ref: '#/components/schemas/Border'
        diagonalDown:
          $ref: '#/components/schemas/Border'
        diagonalUp:
          $ref: '#/components/schemas/Border'
        innerHorizontal:
          $ref: '#/components/schemas/Border'
        innerVertical:
          $ref: '#/components/schemas/Border'
        left:
          $ref: '#/components/schemas/Border'
        ranges:
          description: The ranges to apply borders
          items:
            $ref: '#/components/schemas/Range'
          type: array
        right:
          $ref: '#/components/schemas/Border'
        top:
          $ref: '#/components/schemas/Border'
      required:
        - ranges
      type: object
    SheetUpdateApplyBorders:
      description: Apply list of border format requests to the sheet
      example:
        borders:
          - bottom:
              color: '#000000'
              style: SINGLE
              weight: 2
            diagonalDown:
              color: '#000000'
              style: SINGLE
              weight: 2
            diagonalUp:
              color: '#000000'
              style: SINGLE
              weight: 2
            innerHorizontal:
              color: '#808080'
              style: DASHED1
              weight: 1
            innerVertical:
              color: '#808080'
              style: DASHED1
              weight: 1
            left:
              color: '#000000'
              style: SINGLE
              weight: 2
            ranges:
              - startColumn: 0
                startRow: 0
                stopColumn: 3
                stopRow: 3
            right:
              color: '#000000'
              style: SINGLE
              weight: 2
            top:
              color: '#000000'
              style: SINGLE
              weight: 2
      properties:
        borders:
          description: The list of border formats to apply to the sheet
          items:
            $ref: '#/components/schemas/ApplyBorders'
          type: array
      required:
        - borders
      type: object
    ApplyFormats:
      description: Apply formats to a list of ranges
      example:
        cellFormat:
          backgroundColor: '#d0e0f0'
        clearValueFormatStyles: true
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: null
            stopRow: 0
        textFormat:
          bold: true
        valueFormat:
          valueFormatType: TEXT
      properties:
        cellFormat:
          $ref: '#/components/schemas/CellFormat'
        clearValueFormatStyles:
          default: false
          description: |
            Whether the value format styles will be cleared from the cells when valueFormatType is included  in the list of applied value formats. When cleared, a specific value format type can be set on cells that previously used value format styles.
          type: boolean
        ranges:
          description: The ranges to format
          items:
            $ref: '#/components/schemas/Range'
          type: array
        textFormat:
          $ref: '#/components/schemas/TextFormat'
        valueFormat:
          $ref: '#/components/schemas/ValueFormat'
      required:
        - ranges
      type: object
    SheetUpdateApplyFormats:
      description: Apply list of format requests to the sheet
      example:
        formats:
          - cellFormat:
              backgroundColor: '#d0e0f0'
            ranges:
              - startColumn: 0
                startRow: 0
                stopColumn: null
                stopRow: 0
            textFormat:
              bold: true
            valueFormat:
              valueFormatType: TEXT
      properties:
        formats:
          description: The list of formats to apply to the sheet
          items:
            $ref: '#/components/schemas/ApplyFormats'
          type: array
      required:
        - formats
      type: object
    SheetUpdateClearBorders:
      description: Clears borders in ranges
      example:
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: 3
            stopRow: 3
      properties:
        ranges:
          description: The ranges to clear borders
          items:
            $ref: '#/components/schemas/Range'
          type: array
      required:
        - ranges
      type: object
    SheetUpdateClearFormats:
      description: Clear formats from ranges
      example:
        cellFormatFields:
          - '*'
        ranges:
          - startColumn: 0
            startRow: 0
            stopColumn: null
            stopRow: 0
        textFormatFields:
          - '*'
        valueFormatFields:
          - '*'
      properties:
        cellFormatFields:
          description: List of CellFormat fields to clear. Use "*" to clear all fields.
          example:
            - indent
            - backgroundColor
            - leaderDots
          items:
            type: string
          type: array
        clearValueFormatStyles:
          default: false
          description: |
            Whether the value format styles will be cleared from the cells when valueFormatType is included  in the list of value format fields to be cleared. The cells will have the Automatic value format  and no value format styles when cleared.
          type: boolean
        ranges:
          description: The ranges to clear formats
          items:
            $ref: '#/components/schemas/Range'
          type: array
        textFormatFields:
          description: List of TextFormat fields to clear. Use "*" to clear all fields.
          example:
            - bold
            - italic
            - underline
          items:
            type: string
          type: array
        valueFormatFields:
          description: List of ValueFormat fields to clear. Use "*" to clear all fields.
          example:
            - shownIn
            - precision
            - currencySymbol
          items:
            type: string
          type: array
      required:
        - ranges
      type: object
    Interval:
      description: An interval of rows or columns. If either the start or end is null or omitted, the interval is unbounded in that direction.
      properties:
        end:
          description: The last index of the interval, inclusive
          minimum: 0
          nullable: true
          type: integer
        start:
          description: The first index of the interval, inclusive
          minimum: 0
          nullable: true
          type: integer
      type: object
    SheetUpdateDeleteColumns:
      description: Delete columns from the sheet
      example:
        force: true
        intervals:
          - end: 3
            start: 2
      properties:
        force:
          description: Force the deletion of source links, xbrl facts, connections, etc
          type: boolean
        intervals:
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    SheetUpdateDeleteRows:
      description: Delete rows from the sheet
      example:
        force: true
        intervals:
          - end: 7
            start: 5
      properties:
        force:
          description: Force the deletion of source links, xbrl facts, connections, etc
          type: boolean
        intervals:
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    CellEdit:
      description: A single cell edit
      example:
        column: 0
        row: 0
        value: Alpha One
      properties:
        column:
          description: The column of the cell to edit
          minimum: 0
          type: integer
        row:
          description: The row of the cell to edit
          minimum: 0
          type: integer
        value:
          description: String, numeric, or boolean value
          nullable: true
      required:
        - row
        - column
        - value
      type: object
    SheetUpdateEditCells:
      description: Edit a list of cells
      properties:
        cells:
          description: The cells to edit
          items:
            $ref: '#/components/schemas/CellEdit'
          type: array
        options:
          description: Edit cells options
          nullable: true
          properties:
            applyEnteredInScaling:
              default: false
              description: |
                Whether or not to apply `enteredIn` scaling
              type: boolean
            skipEditMergeChildren:
              default: false
              description: |
                Whether or not to skip edits to merge child cells
              type: boolean
          type: object
      required:
        - cells
      type: object
      example:
        cells:
          - column: 0
            row: 0
            value: Alpha One
          - column: 1
            row: 0
            value: Bravo One
          - column: 0
            row: 1
            value: Alpha Two
          - column: 1
            row: 1
            value: Bravo Two
    RangeEditValues:
      description: Row-major ordered two-dimensional array of cell values
      example:
        - - Alpha One
          - Bravo One
        - - Alpha Two
          - Bravo Two
      items:
        description: List of cell values in a row
        items:
          description: String, numeric, or boolean value
          nullable: true
        type: array
      type: array
    SheetUpdateEditRange:
      description: Edit all of the cells in a contiguous range
      properties:
        options:
          description: Edit range options
          nullable: true
          properties:
            applyEnteredInScaling:
              default: false
              description: |
                Whether or not to apply `enteredIn` scaling
              type: boolean
            skipEditMergeChildren:
              default: false
              description: |
                Whether or not to skip edits to merge child cells
              type: boolean
          type: object
        range:
          $ref: '#/components/schemas/Range'
        values:
          $ref: '#/components/schemas/RangeEditValues'
      required:
        - range
        - values
      type: object
      example:
        range:
          startColumn: 0
          startRow: 0
          stopColumn: 1
          stopRow: 1
        values:
          - - Alpha One
            - Bravo One
          - - Alpha Two
            - Bravo Two
    SheetUpdateHideColumns:
      description: Hide columns in the sheet
      example:
        force: true
        intervals:
          - end: 5
            start: 4
      properties:
        force:
          description: Force the hiding of footnotes
          type: boolean
        intervals:
          description: The intervals of columns to hide
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    SheetUpdateHideRows:
      description: Hide rows in the sheet
      example:
        force: true
        intervals:
          - end: 9
            start: 7
      properties:
        force:
          description: Force the hiding of footnotes
          type: boolean
        intervals:
          description: The intervals of rows to hide
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    InheritFrom:
      description: Where to inherit formats from when performing an insertion
      enum:
        - NONE
        - BEFORE
        - AFTER
      type: string
    Insertion:
      description: Insertion instruction. Describes how to insert a block of rows or columns.
      properties:
        count:
          description: The number of rows or columns to insert
          minimum: 1
          type: integer
        index:
          description: The index to insert at
          minimum: 0
          type: integer
      required:
        - index
        - count
      type: object
    SheetUpdateInsertColumns:
      description: Insert columns into the sheet
      example:
        inheritFrom: BEFORE
        insertions:
          - count: 1
            index: 3
      properties:
        inheritFrom:
          $ref: '#/components/schemas/InheritFrom'
        insertions:
          description: List of column insertions
          items:
            $ref: '#/components/schemas/Insertion'
          type: array
      required:
        - insertions
        - inheritFrom
      type: object
    SheetUpdateInsertRows:
      description: Insert rows into the sheet
      example:
        inheritFrom: BEFORE
        insertions:
          - count: 2
            index: 6
      properties:
        inheritFrom:
          $ref: '#/components/schemas/InheritFrom'
        insertions:
          description: List of row insertions
          items:
            $ref: '#/components/schemas/Insertion'
          type: array
      required:
        - insertions
        - inheritFrom
      type: object
    SheetUpdateMergeRanges:
      description: Merge ranges
      example:
        force: true
        mergeType: HORIZONTAL
        ranges:
          - startColumn: 0
            startRow: 4
            stopColumn: 1
            stopRow: 7
      properties:
        force:
          description: Force the merge through source links, xbrl facts, connections, etc
          type: boolean
        mergeType:
          default: ALL
          description: How cells should be merged
          enum:
            - ALL
            - HORIZONTAL
            - VERTICAL
          type: string
        ranges:
          description: The ranges to merge
          items:
            $ref: '#/components/schemas/Range'
          type: array
      required:
        - ranges
      type: object
    ResizeColumnIntervals:
      description: Resize a list of column intervals to a specified size
      example:
        intervals:
          - end: 3
            start: 0
        size: 96
      properties:
        intervals:
          description: The intervals of columns to resize
          items:
            $ref: '#/components/schemas/Interval'
          type: array
        size:
          description: The new size for the columns, in points
          maximum: 10000
          minimum: 3
          type: integer
      required:
        - size
        - intervals
      type: object
    SheetUpdateResizeColumns:
      description: Resize columns to the specified size
      example:
        resizeIntervals:
          - intervals:
              - end: 3
                start: 0
            size: 96
      properties:
        resizeIntervals:
          items:
            $ref: '#/components/schemas/ResizeColumnIntervals'
      required:
        - resizeIntervals
      type: object
    SheetUpdateResizeColumnsToFit:
      description: Auto-size columns to fit content
      example:
        intervals:
          - end: 3
            start: 0
      properties:
        intervals:
          description: The intervals of columns to resize
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    ResizeRowIntervals:
      description: Resize a list of row intervals to a specified size
      example:
        intervals:
          - end: 3
            start: 0
        size: 24
      properties:
        intervals:
          description: The intervals of rows to resize
          items:
            $ref: '#/components/schemas/Interval'
          type: array
        size:
          description: The new size for the rows, in points
          maximum: 10000
          minimum: 3
          type: integer
      required:
        - size
        - intervals
      type: object
    SheetUpdateResizeRows:
      description: Resize rows to the specified size
      example:
        resizeIntervals:
          - intervals:
              - end: 3
                start: 0
            size: 24
      properties:
        resizeIntervals:
          items:
            $ref: '#/components/schemas/ResizeRowIntervals'
      required:
        - resizeIntervals
      type: object
    SheetUpdateResizeRowsToFit:
      description: Auto-size rows to fit content
      example:
        intervals:
          - end: 3
            start: 0
      properties:
        intervals:
          description: The intervals of rows to resize
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    SheetUpdateUnhideColumns:
      description: Unhide columns in the sheet
      example:
        intervals:
          - end: 5
            start: 4
      properties:
        intervals:
          description: The intervals of columns to unhide
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    SheetUpdateUnhideRows:
      description: Unhide rows in the sheet
      example:
        intervals:
          - end: 9
            start: 7
      properties:
        intervals:
          description: The intervals of rows to unhide
          items:
            $ref: '#/components/schemas/Interval'
          type: array
      required:
        - intervals
      type: object
    SheetUpdateUnmergeRanges:
      description: Unmerge merges that intersect the provided ranges
      example:
        ranges:
          - startColumn: 0
            startRow: 4
            stopColumn: 1
            stopRow: 7
      properties:
        ranges:
          description: The ranges to unmerge
          items:
            $ref: '#/components/schemas/Range'
          type: array
      required:
        - ranges
      type: object
    SheetUpdate:
      description: An update to a sheet. Only a single field on the SheetUpdate may be set per request. Refer to the [Spreadsheet Data Guide](ref:spreadsheet-data-guide) for comprehensive guidance on this functionality.
      properties:
        applyBorders:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateApplyBorders'
        applyFormats:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateApplyFormats'
        clearBorders:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateClearBorders'
        clearFormats:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateClearFormats'
        deleteColumns:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateDeleteColumns'
        deleteRows:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateDeleteRows'
        editCells:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateEditCells'
        editRange:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateEditRange'
        hideColumns:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateHideColumns'
        hideRows:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateHideRows'
        insertColumns:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateInsertColumns'
        insertRows:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateInsertRows'
        mergeRanges:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateMergeRanges'
        resizeColumns:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateResizeColumns'
        resizeColumnsToFit:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateResizeColumnsToFit'
        resizeRows:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateResizeRows'
        resizeRowsToFit:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateResizeRowsToFit'
        unhideColumns:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateUnhideColumns'
        unhideRows:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateUnhideRows'
        unmergeRanges:
          allOf:
            - $ref: '#/components/schemas/SheetUpdateUnmergeRanges'
      type: object
    RangeValues:
      properties:
        range:
          description: The range of values, in A1-style notation.
          example: A1:B2
          type: string
        values:
          description: A row-major ordered multidimensional array of cell values.
          example:
            - - 1
              - 4
            - - 2
              - ""
          items:
            description: A row of cell values. Values may be of type boolean, number, integer, or string (a string may be the empty string).
            example:
              - 1
              - 4
            items:
              nullable: true
            type: array
          type: array
      type: object
    RangeValuesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a single [`RangeValues`](ref:spreadsheets#rangevalues) object, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          items:
            $ref: '#/components/schemas/RangeValues'
          type: array
      required:
        - data
      type: object
    TaskUser:
      description: |
        Details about the user, including ID, and type
      properties:
        id:
          description: The unique identifier of the user
          example: V1ZVd2VyFzU3NiQ1NDA4NjIzNzk2MjD
          type: string
        type:
          description: Type of the user
          enum:
            - USER
          type: string
      type: object
    TaskApprovalResponse:
      type: object
      description: A response to an approval step, including the user, action taken, timestamp, and optional comment.
      properties:
        created:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Action'
        action:
          type: string
          enum:
            - SKIP
            - APPROVE
            - REJECT
          example: REJECT
        comment:
          type: string
          description: An optional comment left by the user.
          nullable: true
          example: please refine
      required:
        - created
        - action
    TaskApprovalStep:
      type: object
      description: An approval step in the approval process for a task. Each step defines how completion is determined and who participates.
      properties:
        completionMode:
          type: string
          enum:
            - ONE
            - ALL
          example: ONE
        participants:
          type: array
          description: The participants in this approval step.
          items:
            $ref: '#/components/schemas/TaskUser'
        dueDate:
          type: string
          format: date-time
          nullable: true
          description: An ISO 8601 datetime indicating a deadline for this approval step, or null if not set.
          example: "2023-06-11T13:00:00+00:00"
        responses:
          type: array
          description: |
            All APPROVE, REJECT, and SKIP actions for the current approval process are tracked in the `response` for each step. This surfaces any comments left, and allows for tracking the progress of the approval process. When a REJECT action is left, responses will remain on the task until the task is re-submitted for approval.
          items:
            $ref: '#/components/schemas/TaskApprovalResponse'
          readOnly: true
      required:
        - completionMode
        - participants
    TaskLocation:
      type: object
      description: |
        Details about what the task is attached to, such as a file ID. If null, the task isn't attached to anything. Once a location is attached to a task, that location cannot be changed.
      properties:
        resource:
          type: string
          description: The unique identifier of the resource. This is the ID of the Document, Spreadsheet, Presentation or Sustainability resource.
          example: 124efa2a142f472ba1ceab34ed18915f
        segment:
          type: string
          nullable: true
          description: The unique identifier of the segment. A segment is a Section in a Document, a Sheet in a Spreadsheet, or a Slide in a Presentation.
          example: 465ttdh2a142y75ehsft5ab34edf5675
    Task:
      type: object
      description: |
        Details about the task, including its title, description, type, deadlines, participants, and additional metadata. Please note that the Task object has been updated to accommodate the new task approval process which results in breaking changes to the Tasking endpoints. Some fields like assignee and approvers have been removed, and new fields like approvalSteps have been added. The status field can now only be updated for tasks with a single approval step. For a task with multiple approval steps, the status field will be updated automatically when actions are taken on the task. See the endpoint [Submit Task Action](ref:submittaskaction) for more details.
      required:
        - title
      properties:
        id:
          type: string
          description: The unique identifier of the task.
          example: VGFzax41MWNmOGZjMDQxMzc1MmRlYWZjMTA2ZjgyMzJiNDllZg
          readOnly: true
        approvalSteps:
          type: array
          description: The approval process for the task where applicable.
          items:
            $ref: '#/components/schemas/TaskApprovalStep'
        assignees:
          type: array
          description: A list of assignees for the task.
          items:
            $ref: '#/components/schemas/TaskUser'
        created:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Action'
        description:
          type: string
          description: The task description.
          example: Be sure to double-check the balance sheet
        dueDate:
          type: string
          format: date-time
          nullable: true
          description: An ISO 8601 datetime indicating a deadline for the task to be completed. Will be converted to UTC if another time zone is included.
          example: null
        location:
          allOf:
            - $ref: '#/components/schemas/TaskLocation'
          nullable: true
        modified:
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/Action'
        notificationsDisabled:
          type: boolean
          description: Suspend notifications during create/updates. Automated and manual reminders will still be sent. The default value is false.
          example: true
        owner:
          type: string
          description: The unique identifier of the user who owns the task.
          example: V0ZVc2VyHzU3MjI2NDY2Mzc0NDUxMjA
          readOnly: true
        sourceUrl:
          type: string
          description: The URL of a WDesk resource that is associated with a task.
          readOnly: true
        status:
          type: string
          default: Created
          example: Completed
          description: |
            > The status for the task. The default value is Created. The status of the task will be updated automatically as it
            > progresses through the multiple steps of the approval process.
        title:
          type: string
          description: The title of the task.
          example: Please complete the quarterly report
    TasksListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Task`](ref:tasks#task) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: Pagination link for next set of results
          example: <opaque_url>
          type: string
        data:
          items:
            $ref: '#/components/schemas/Task'
          type: array
      type: object
    TaskAction:
      type: object
      description: An action to be taken on a task approval step.
      properties:
        action:
          type: string
          enum:
            - SUBMIT
            - APPROVE
            - REJECT
            - CANCEL
            - RESTART
            - SKIP
          example: APPROVE
        comment:
          type: string
          description: An optional comment to accompany the action.
          nullable: true
          example: please refine
      required:
        - action
    GraphAttachment:
      description: |
        Details about a graph attachment.
      example:
        fileName: signature.jpg
      properties:
        fileName:
          description: The filename of the graph attachment
          example: signature.jpg
          type: string
        id:
          description: The unique identifier of the graph attachment
          example: 0a0da34f-bf3e-47fc-bc47-946ab14900b7
          readOnly: true
          type: string
      type: object
    MatrixColumn:
      description: Details about a matrix column including its ID and name.
      example:
        externalId: TA05
        id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
        name: 'PO #'
      properties:
        externalId:
          description: A user defined external ID for the column
          example: TA05
          type: string
        id:
          description: The unique ID of the matrix column
          example: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
          type: string
          nullable: true
        name:
          description: The name of the matrix column
          example: 'PO #'
          type: string
        testable:
          description: Whether the column is testable
          example: true
          readOnly: true
          type: boolean
          nullable: true
      type: object
    SampleCell:
      description: Represents a single cell in a matrix
      example:
        column: 235cdb36-f93d-4f15-bac9-1c3a52c2aefa
        value: "304.45"
      properties:
        column:
          description: The ID of the column associated with the cell's value
          example: 235cdb36-f93d-4f15-bac9-1c3a52c2aefa
          type: string
        value:
          description: The string value of the cell
          example: "304.45"
          type: string
      type: object
    MatrixSample:
      description: This object represents a single row of a matrix.
      example:
        dataValues:
          - column: 6d870cd1-7bbe-4b14-b85d-f152913b068c
            value: "23897"
          - column: 6301bea4-30be-4c24-9f15-287396f41d2c
            value: "385.3"
        id: 3dd42da0-3543-4e03-ac4a-2ddefebe27d6
        resultValues:
          - column: 674a9283-fd03-425d-bd62-0552263699e2
            value: PASS
          - column: c7b812b4-70bb-47ed-a9bb-f56ca496c92f
            value: FAIL
      properties:
        attachments:
          description: An optional array of partial information about the attachments on the matrix sample. To include in the response, provide the query parameter `$expand=attachments`.
          example:
            - fileName: signature.jpg
          items:
            allOf:
              - $ref: '#/components/schemas/GraphAttachment'
          readOnly: true
          nullable: true
          type: array
        dataValues:
          description: An array of SampleCell values representing the values for each data column of the sample matrix's cells
          example:
            - column: 6d870cd1-7bbe-4b14-b85d-f152913b068c
              value: "23897"
            - column: 6301bea4-30be-4c24-9f15-287396f41d2c
              value: "385.3"
          items:
            $ref: '#/components/schemas/SampleCell'
          nullable: true
          type: array
        id:
          description: The unique ID of the matrix sample
          example: 3dd42da0-3543-4e03-ac4a-2ddefebe27d6
          type: string
        resultValues:
          description: An array of SampleCell values representing the values for each result cell in the sample matrix's cells.
          example:
            - column: 674a9283-fd03-425d-bd62-0552263699e2
              value: PASS
            - column: c7b812b4-70bb-47ed-a9bb-f56ca496c92f
              value: FAIL
          items:
            $ref: '#/components/schemas/SampleCell'
          nullable: true
          type: array
      type: object
    Matrix:
      description: Details about a matrix, including its name and ID.
      example:
        dataColumns:
          - externalId: TA05
            id: d795d7a3-e7f7-4b3f-be6a-109653b2929b
            name: PO Number
          - externalId: TA06
            id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
            name: Amount
        name: Purchase Orders
        resultColumns:
          - externalId: TA07
            id: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
            name: A
      properties:
        attachments:
          description: An optional array of partial information about the attachments on the matrix. To include in the response, provide the query string `$expand=attachments`.
          example:
            - fileName: process.pdf
          items:
            allOf:
              - $ref: '#/components/schemas/GraphAttachment'
          readOnly: true
          nullable: true
          type: array
        dataColumns:
          description: An array of the data columns in the matrix
          example:
            - externalId: TA05
              id: d795d7a3-e7f7-4b3f-be6a-109653b2929b
              name: PO Number
            - externalId: TA06
              id: fbd818ec-4fd1-42ad-9112-3c80e71dc2dc
              name: Amount
          items:
            $ref: '#/components/schemas/MatrixColumn'
          nullable: true
          type: array
        id:
          description: The unique identifier of the matrix
          example: 30053df2-75fa-4a1e-9e8c-0e18cdd66cd1
          readOnly: true
          type: string
          nullable: true
        name:
          description: The name of the matrix
          example: Purchase Orders
          type: string
        resultColumns:
          description: An array of the result columns in the matrix
          example:
            - externalId: TA07
              id: d795d7a3-e7f7-4b3f-be6a-109653b2c34d
              name: A
          items:
            $ref: '#/components/schemas/MatrixColumn'
          type: array
        samples:
          description: An optional array of partial information about the samples on the matrix. To include in the response, provide the query parameter `$expand=samples`. To include the samples' attachments, provide the parameter `$expand=samples,samples.attachments`.
          example:
            - dataValues:
                - column: 425c
                  value: "123"
                - column: 425d
                  value: "101.1"
              id: ce4a6c7f-15ad-445c-a76a-f457d53f667a
              resultValues:
                - column: c05f
                  value: PASS
          items:
            allOf:
              - $ref: '#/components/schemas/MatrixSample'
          readOnly: true
          nullable: true
          type: array
      type: object
    TestPhase:
      description: Describes details of a test phase, including its ID and name
      example:
        id: bac770b8-1673-11ec-9621-0242ac130002
        name: Walkthrough
      properties:
        attachments:
          description: An optional array of partial information about the attachments on the test phase. To include in the response, provide the query string `$expand=attachments`.
          example:
            - fileName: status.pdf
              id: 7366eb18-f4a4-459c-a2e4-d619df97499e
          items:
            allOf:
              - $ref: '#/components/schemas/GraphAttachment'
          readOnly: true
          type: array
          nullable: true
        id:
          description: The unique ID of the test phase
          example: bac770b8-1673-11ec-9621-0242ac130002
          type: string
        matrices:
          description: An optional array of partial information about the matrices on the test phase. To include in the response, provide the query string, `$expand=matrices`.
          example:
            - id: f9b7f2ec-aada-4412-a549-494f9639a3ab
              name: Purchase Orders
            - id: 4f241ab3-cb2c-47e0-9a11-63156768494f
              name: Back Orders
          items:
            allOf:
              - $ref: '#/components/schemas/Matrix'
          readOnly: true
          type: array
          nullable: true
        name:
          description: The name of the test phase
          example: Walkthrough
          type: string
      type: object
    TestForm:
      description: Describes details of a test form including its ID, name, and test phases.
      example:
        id: 124efa2a142f472ba1ceab34ed18915f
        name: Process Improvement
      properties:
        attachments:
          description: An optional array of partial information about the attachments on the test form. To include in the response, provide the query parameter `$expand=attachments`.
          example:
            - fileName: signature.jpg
              id: 5485d516-eed5-4ff0-871b-a91f401e578c
          items:
            allOf:
              - $ref: '#/components/schemas/GraphAttachment'
          readOnly: true
          type: array
          nullable: true
        id:
          description: The unique ID of the test form
          example: 124efa2a142f472ba1ceab34ed18915f
          type: string
        name:
          description: The name of the test form
          example: Process Improvement
          type: string
        testPhases:
          description: An optional array of partial information about the phases on the test form. To include in the response, provide the query parameter `$expand=testPhases`. To include the phases' matrix digests, provide the parameter `$expand=testPhases,testPhases.matrices`.
          example:
            - id: bac770b8-1673-11ec-9621-0242ac130002
              name: Walkthrough
          items:
            allOf:
              - $ref: '#/components/schemas/TestPhase'
          readOnly: true
          nullable: true
          type: array
      type: object
    TestFormsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`TestForm`](ref:testforms#testform) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: The pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: A list of `Matrix` objects
          items:
            $ref: '#/components/schemas/TestForm'
          type: array
      required:
        - data
      type: object
    TestFormExport:
      description: Describes parameters for exporting a test form.
      example:
        format: xlsx
      properties:
        format:
          description: The format to export the test form to—currently, only .XLSX
          enum:
            - xlsx
          type: string
      type: object
    TestPhasesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`TestPhase`](ref:testforms#testphase) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: The pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: A list of `TestPhase` objects
          items:
            $ref: '#/components/schemas/TestPhase'
          type: array
      required:
        - data
      type: object
    GraphAttachmentUpload:
      description: Details about a graph attachment upload
      example:
        fileName: signature.jpg
      properties:
        fileName:
          description: The file name of the graph attachment
          example: signature.jpg
          type: string
      type: object
    GraphAttachmentUploadResponse:
      description: |
        Contains a pre-signed url that can be used to upload an attachment. The Location header also contains a url for an [`Operation`](ref:operations#operation) that can be polled to find out if the upload was successful.
      properties:
        operationLocation:
          description: The URL to poll for the operation result.
          type: string
          example: https://api.app.wdesk.com/operations/128f274395254cf17eda6b3eb3d021b9
        uploadUrl:
          description: |
            The URL to make a PUT request to, to upload the attachment. Include the file content of the attachment as the body of the request. This is a temporary URL; it should be used immediately when the response is received.
          type: string
      type: object
    GraphAttachmentsListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`GraphAttachment`](ref:testforms#graphattachment) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: The pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: A list of `GraphAttachment` objects
          items:
            $ref: '#/components/schemas/GraphAttachment'
          type: array
      required:
        - data
      type: object
    GraphAttachmentExport:
      description: Details about the attachment export including its format
      example:
        format: pdf
      properties:
        format:
          description: The format to export the attachment to — currently, .PDF only
          enum:
            - pdf
          example: pdf
          type: string
      type: object
    MatricesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`Matrix`](ref:testforms#matrix) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: The pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: A list of `Matrix` objects
          items:
            $ref: '#/components/schemas/Matrix'
          type: array
      required:
        - data
      type: object
    MatrixSamplesListResult:
      description: Returns a JSON object with `data` and `@nextLink` properties. `data` contains a list of [`MatrixSample`](ref:testforms#matrixsample) objects, and `@nextLink` provides the URL to the next set of results. If there are no additional results, `@nextLink` doesn't appear. If the request returns no results at all, `data` contains an empty array.
      properties:
        '@nextLink':
          description: The pagination link for next set of results
          example: <opaque_url>
          type: string
          nullable: true
        data:
          description: A list of `MatrixSample` objects
          items:
            $ref: '#/components/schemas/MatrixSample'
          type: array
      required:
        - data
      type: object
    MatrixSamples:
      description: An array of matrix samples to submit at once
      items:
        $ref: '#/components/schemas/MatrixSample'
      type: array
  responses:
    BadRequest:
      description: Bad Request
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            BadRequest:
              value:
                code: 400BadRequest
                message: The request was unacceptable, often due to a missing or invalid parameter
    Unauthorized:
      description: Unauthorized
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Unauthorized:
              value:
                code: 401Unauthorized
                message: No valid API token provided
    Forbidden:
      description: Forbidden
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Forbidden:
              value:
                code: 403Forbidden
                message: The API token does not have permissions to perform the request
    NotFound:
      description: Not Found
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            NotFound:
              value:
                code: 404NotFound
                message: The requested resource could not be found
    Conflict:
      description: Conflict
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Conflict:
              value:
                code: 409Conflict
                message: The request conflicts with another request
    TooManyRequests:
      description: Too Many Requests
      headers:
        Retry-After:
          description: The number of seconds to wait before retrying the request.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            TooManyRequests:
              value:
                code: 429TooManyRequests
                message: Too many requests have been made against the API in too short a time
    InternalServerError:
      description: Internal Server Error
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            InternalServerError:
              value:
                code: 500InternalServerError
                message: The server encountered an unexpected condition that prevented it from fulfilling the request
    ServiceUnavailable:
      description: Service Unavailable
      headers: {}
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            ServiceUnavailable:
              value:
                code: 503ServiceUnavailable
                message: The server cannot handle the request due to a temporary overload or scheduled maintenance
    LongRunningSuccess:
      description: Accepted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AsyncAcceptedResponse'
      headers:
        Location:
          description: The location to poll for the operation result.
          schema:
            type: string
        Retry-After:
          description: The number of seconds to wait before polling for a result and between polling attempts.
          schema:
            type: integer
