---
openapi: 3.0.0
info:
  title: Outline API
  description: |
    # Introduction

    The Outline API is structured in an RPC style. It enables you to
    programatically interact with all aspects of Outline’s data – in fact, the
    main application is built on exactly the same API.

    The API structure is available as an
    [openapi specification](https://github.com/outline/openapi) if that’s your
    jam – it can be used to generate clients for most programming languages.

    # Making requests

    Outline’s API follows simple RPC style conventions where each API endpoint is
    a method on `https://app.getoutline.com/api/method`. Both `GET` and `POST`
    methods are supported but it’s recommended that you make all call using POST.
    Only HTTPS is supported and all response payloads are JSON.

    When making `POST` requests, request parameters are parsed depending on
    Content-Type header. To make a call using JSON payload, you must pass
    Content-Type: application/json header, here’s an example using CURL:

    ```
    curl https://app.getoutline.com/api/documents.info \
    -X 'POST' \
    -H 'authorization: Bearer MY_API_KEY' \
    -H 'content-type: application/json' \
    -H 'accept: application/json' \
    -d '{"id": "outline-api-NTpezNwhUP"}'
    ```

    Or, with JavaScript:

    ```javascript
    const response = await fetch("https://app.getoutline.com/api/documents.info", {
      method: "POST",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
        Authorization: "Bearer MY_API_KEY"
      }
    })

    const body = await response.json();
    const document = body.data;
    ```

    # Authentication

    To access API endpoints, you must provide a valid API key. You can create new
    API keys in your [account settings](https://app.getoutline.com/settings). Be
    careful when handling your keys as they give access to all of your documents,
    you should treat them like passwords and they should never be committed to
    source control.

    To authenticate with API, you can supply the API key as a header
    (`Authorization: Bearer YOUR_API_KEY`) or as part of the payload using `token`
    parameter. Header based authentication is highly recommended so that your keys
    don’t accidentally leak into logs.

    Some API endpoints allow unauthenticated requests for public resources and
    they can be called without an API key.

    # Errors

    All successful API requests will be returned with a 200 or 201 status code
    and `ok: true` in the response payload. If there’s an error while making the
    request, the appropriate status code is returned with the error message:

    ```
    {
      "ok": false,
      "error": "Not Found"
    }
    ```

    # Pagination

    Most top-level API resources have support for "list" API methods. For instance,
    you can list users, documents, and collections. These list methods share
    common parameters, taking both `limit` and `offset`.

    Responses will echo these parameters in the root `pagination` key, and also
    include a `nextPath` key which can be used as a handy shortcut to fetch the
    next page of results. For example:

    ```
    {
      ok: true,
      status: 200,
      data: […],
      pagination: {
        limit: 25,
        offset: 0,
        nextPath: "/api/documents.list?limit=25&offset=25"
      }
    }
    ```

    # Rate limits

    Like most APIs, Outline has rate limits in place to prevent abuse. Endpoints
    that mutate data are more restrictive than read-only endpoints. If you exceed
    the rate limit for a given endpoint, you will receive a `429 Too Many Requests`
    status code.

    The response will include a `Retry-After` header that indicates how many seconds
    you should wait before making another request.

    # Policies

    Most API resources have associated "policies", these objects describe the
    current API keys authorized actions related to an individual resource. It
    should be noted that the policy "id" is identical to the resource it is
    related to, policies themselves do not have unique identifiers.

    For most usecases of the API, policies can be safely ignored. Calling
    unauthorized methods will result in the appropriate response code – these can
    be used in an interface to adjust which elements are visible.
  version: 0.1.0
  contact:
    email: hello@getoutline.com
servers:
- url: https://app.getoutline.com/api
  description: Production
security:
- http: []
tags:
- name: Attachments
  description: |
    `Attachments` represent a file uploaded to cloud storage. They are created
    before the upload happens from the client and store all the meta information
    such as file type, size, and location.
- name: Auth
  description: |
    `Auth` represents the current API Keys authentication details. It can be
    used to check that a token is still valid and load the IDs for the current
    user and team.
- name: Collections
  description: |
    `Collections` represent grouping of documents in the knowledge base, they
    offer a way to structure information in a nested hierarchy and a level
    at which read and write permissions can be granted to individual users or
    groups of users.
- name: Comments
  description: |
    `Comments` represent a comment either on a selection of text in a document
    or on the document itself.
- name: Documents
  description: |
    `Documents` are what everything else revolves around. A document represents
    a single page of information and always returns the latest version of the
    content. Documents are stored in [Markdown](https://spec.commonmark.org/)
    formatting.
- name: Events
  description: |
    `Events` represent an artifact of an action. Whether it is creating a user,
    editing a document, changing permissions, or any other action – an event
    is created that can be used as an audit trail or activity stream.
- name: FileOperations
  description: |
    `FileOperations` represent background jobs for importing or exporting files.
    You can query the file operation to find the state of progress and any
    resulting output.
- name: Groups
  description: |
    `Groups` represent a list of users that logically belong together, for
    example there might be groups for each department in your organization.
    Groups can be granted access to collections with read or write permissions.
- name: Revisions
  description: |
    `Revisions` represent a snapshop of a document at a point in time. They
    are used to keep tracking of editing and collaboration history – a document
    can also be restored to a previous revision if neccessary.
- name: Shares
  description: |
    `Shares` represent authorization to view a document without being a member
    of the team. Shares are created in order to give access to documents publicly.
    Each user that shares a document will have a unique share object.
- name: Stars
  description: |
    `Stars` represent a favorited document or collection in the application sidebar.
    Each user has their own collection of starred items.
- name: Users
  description: |
    `Users` represent an individual with access to the knowledge base. Users
    can be created automatically when signing in with SSO or when a user is
    invited via email.
- name: Views
  description: |
    `Views` represent a compressed record of an individual users views of a
    document. Individual views are not recorded but a first, last and total
    is kept per user.
paths:
  "/attachments.create":
    post:
      tags:
      - Attachments
      summary: Create an attachment
      description: Creating an attachment object creates a database record and returns
        the inputs needed to generate a signed url and upload the file from the client
        to cloud storage.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: image.png
                documentId:
                  type: string
                  description: Identifier for the associated document, if any.
                  format: uuid
                contentType:
                  type: string
                  example: image/png
                size:
                  type: number
                  description: Size of the file attachment in bytes.
              required:
              - name
              - contentType
              - size
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      maxUploadSize:
                        type: number
                      uploadUrl:
                        type: string
                        format: uri
                      form:
                        type: object
                      attachment:
                        "$ref": "#/components/schemas/Attachment"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: attachmentsCreate
  "/attachments.redirect":
    post:
      tags:
      - Attachments
      summary: Retrieve an attachment
      description: Load an attachment from where it is stored based on the id. If
        the attachment is private then a temporary, signed url with embedded credentials
        is generated on demand.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the attachment.
                  format: uuid
              required:
              - id
      responses:
        '302':
          description: The url for the attachment
      operationId: attachmentsRedirect
  "/attachments.delete":
    post:
      tags:
      - Attachments
      summary: Delete an attachment
      description: Deleting an attachment is permanant. It will not delete references
        or links to the attachment that may exist in your documents.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  description: Unique identifier for the attachment.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: attachmentsDelete
  "/auth.info":
    post:
      tags:
      - Auth
      summary: Retrieve auth
      description: Retrieve authentication details for the current API key
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Auth"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: authInfo
  "/auth.config":
    post:
      tags:
      - Auth
      summary: Retrieve auth config
      description: Retrieve authentication options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      name:
                        type: string
                        example: Acme Inc
                      hostname:
                        type: string
                        example: acme-inc.getoutline.com
                      services:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: slack
                            name:
                              type: string
                              example: Slack
                            authUrl:
                              type: string
                              example: https://acme-inc.getoutline.com/auth/slack
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: authConfig
  "/collections.info":
    post:
      tags:
      - Collections
      summary: Retrieve a collection
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the collection.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Collection"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsInfo
  "/collections.documents":
    post:
      tags:
      - Collections
      summary: Retrieve a collections document structure
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the collection.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/NavigationNode"
                    example: []
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsDocuments
  "/collections.list":
    post:
      tags:
      - Collections
      summary: List all collections
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  query:
                    type: string
                    description: If set, will filter the results by collection name.
                  statusFilter:
                    type: array
                    items:
                      "$ref": "#/components/schemas/CollectionStatus"
                    description: An optional array of statuses to filter by.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Collection"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsList
  "/collections.create":
    post:
      tags:
      - Collections
      summary: Create a collection
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Human Resources
                description:
                  type: string
                  example: ''
                permission:
                  "$ref": "#/components/schemas/Permission"
                color:
                  type: string
                  example: "#123123"
                private:
                  type: boolean
                  example: false
              required:
              - name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Collection"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsCreate
  "/collections.update":
    post:
      tags:
      - Collections
      summary: Update a collection
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                name:
                  type: string
                  example: Human Resources
                permission:
                  "$ref": "#/components/schemas/Permission"
                description:
                  type: string
                  example: ''
                color:
                  type: string
                  example: "#123123"
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Collection"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsUpdate
  "/collections.add_user":
    post:
      tags:
      - Collections
      summary: Add a collection user
      description: This method allows you to add a user membership to the specified
        collection.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                userId:
                  type: string
                  format: uuid
                permission:
                  "$ref": "#/components/schemas/Permission"
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      memberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Membership"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsAddUser
  "/collections.remove_user":
    post:
      tags:
      - Collections
      summary: Remove a collection user
      description: This method allows you to remove a user from the specified collection.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Identifier for the collection
                  format: uuid
                userId:
                  type: string
                  format: uuid
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsRemoveUser
  "/collections.memberships":
    post:
      tags:
      - Collections
      summary: List all collection memberships
      description: This method allows you to list a collections individual memberships.
        It's important to note that memberships returned from this endpoint do not
        include group memberships.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - type: object
                properties:
                  id:
                    type: string
                    description: Identifier for the collection
                    format: uuid
                  query:
                    type: string
                    description: Filter memberships by user names
                    example: jenny
                  permission:
                    "$ref": "#/components/schemas/Permission"
                required:
                - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      memberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Membership"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsMemberships
  "/collections.add_group":
    post:
      tags:
      - Collections
      summary: Add a group to a collection
      description: This method allows you to give all members in a group access to
        a collection.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                groupId:
                  type: string
                  format: uuid
                permission:
                  "$ref": "#/components/schemas/Permission"
              required:
              - id
              - groupId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      collectionGroupMemberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/CollectionGroupMembership"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsAddGroup
  "/collections.remove_group":
    post:
      tags:
      - Collections
      summary: Remove a collection group
      description: This method allows you to revoke all members in a group access
        to a collection. Note that members of the group may still retain access through
        other groups or individual memberships.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Identifier for the collection
                  format: uuid
                groupId:
                  type: string
                  format: uuid
              required:
              - id
              - groupId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsRemoveGroup
  "/collections.group_memberships":
    post:
      tags:
      - Collections
      summary: List all collection group members
      description: This method allows you to list a collections group memberships.
        This is the list of groups that have been given access to the collection.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - type: object
                properties:
                  id:
                    type: string
                    description: Identifier for the collection
                    format: uuid
                  query:
                    type: string
                    description: Filter memberships by group names
                    example: developers
                  permission:
                    "$ref": "#/components/schemas/Permission"
                required:
                - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      groups:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Group"
                      collectionGroupMemberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/CollectionGroupMembership"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsGroupMemberships
  "/collections.delete":
    post:
      tags:
      - Collections
      summary: Delete a collection
      description: Delete a collection and all of its documents. This action can’t
        be undone so please be careful.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsDelete
  "/collections.export":
    post:
      tags:
      - Collections
      summary: Export a collection
      description: Triggers a bulk export of the collection in markdown format and
        their attachments. If documents are nested then they will be nested in folders
        inside the zip file. The endpoint returns a `FileOperation` that can be queried
        to track the progress of the export and get the url for the final file.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                format:
                  type: string
                  enum:
                  - outline-markdown
                  - json
                  - html
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      fileOperation:
                        "$ref": "#/components/schemas/FileOperation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsExport
  "/collections.export_all":
    post:
      tags:
      - Collections
      summary: Export all collections
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                format:
                  type: string
                  enum:
                  - outline-markdown
                  - json
                  - html
      description: Triggers a bulk export of all documents in and their attachments.
        The endpoint returns a `FileOperation` that can be queried through the fileOperations
        endpoint to track the progress of the export and get the url for the final
        file.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      fileOperation:
                        "$ref": "#/components/schemas/FileOperation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: collectionsExportAll
  "/comments.create":
    post:
      tags:
      - Comments
      summary: Create a comment
      description: Create a comment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                documentId:
                  type: string
                  format: uuid
                parentCommentId:
                  type: string
                  format: uuid
                data:
                  type: object
                  description: The body of the comment.
                text:
                  type: string
                  description: The body of the comment in markdown.
                  example: Sounds great
              required:
              - documentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Comment"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: commentsCreate
  "/comments.info":
    post:
      tags:
      - Comments
      summary: Retrieve a comment
      description: Retrieve a comment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                includeAnchorText:
                  type: boolean
                  description: Include the document text that the comment is anchored
                    to, if any
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Comment"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: commentsInfo
  "/comments.update":
    post:
      tags:
      - Comments
      summary: Update a comment
      description: Update a comment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                data:
                  type: object
              required:
              - id
              - data
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Comment"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: commentsUpdate
  "/comments.delete":
    post:
      tags:
      - Comments
      summary: Delete a comment
      description: Delete a comment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: commentsDelete
  "/comments.list":
    post:
      tags:
      - Comments
      summary: List all comments
      description: This method will list all comments matching the given properties.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  documentId:
                    type: string
                    format: uuid
                    description: Filter to a specific document
                  collectionId:
                    type: string
                    format: uuid
                    description: Filter to a specific collection
                  includeAnchorText:
                    type: boolean
                    description: Include the document text that the comment is anchored
                      to, if any
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Comment"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: commentsList
  "/documents.info":
    post:
      tags:
      - Documents
      summary: Retrieve a document
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                shareId:
                  type: string
                  format: uuid
                  description: Unique identifier for a document share, a shareId may
                    be used in place of a document UUID
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsInfo
  "/documents.import":
    post:
      tags:
      - Documents
      summary: Import a file as a document
      description: This method allows you to create a new document by importing an
        existing file. By default a document is set to the collection root. If you
        want to create a nested/child document, you should pass parentDocumentId to
        set the parent document.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: object
                  description: Plain text, markdown, docx, csv, tsv, and html format
                    are supported.
                collectionId:
                  type: string
                  format: uuid
                parentDocumentId:
                  type: string
                  format: uuid
                template:
                  type: boolean
                publish:
                  type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsImport
  "/documents.export":
    post:
      tags:
      - Documents
      summary: Export a document as markdown
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    description: The document content in Markdown formatting
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsExport
  "/documents.list":
    post:
      tags:
      - Documents
      summary: List all documents
      description: This method will list all published documents and draft documents
        belonging to the current user.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  collectionId:
                    type: string
                    format: uuid
                    description: Optionally filter to a specific collection
                  userId:
                    type: string
                    format: uuid
                  backlinkDocumentId:
                    type: string
                    format: uuid
                  parentDocumentId:
                    type: string
                    format: uuid
                  template:
                    type: boolean
                    description: Optionally filter to only templates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsList
  "/documents.drafts":
    post:
      tags:
      - Documents
      summary: List all draft documents
      description: This method will list all draft documents belonging to the current
        user.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  collectionId:
                    type: string
                    description: A collection to search within
                    format: uuid
                  dateFilter:
                    type: string
                    description: Any documents that have not been updated within the
                      specified period will be filtered out
                    example: month
                    enum:
                    - day
                    - week
                    - month
                    - year
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsDrafts
  "/documents.viewed":
    post:
      tags:
      - Documents
      summary: List all recently viewed documents
      description: This method will list all documents recently viewed by the current
        user.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsViewed
  "/documents.answerQuestion":
    post:
      tags:
      - Documents
      summary: Query documents with natural language
      description: This method allows asking direct questions of your documents –
        where possible an answer will be provided. Search results will be restricted
        to those accessible by the current access token. Note that "AI answers" must
        be enabled for the workspace.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - type: object
                properties:
                  query:
                    type: string
                    example: What is our holiday policy?
                  userId:
                    type: string
                    description: Any documents that have not been edited by the user
                      identifier will be filtered out
                    format: uuid
                  collectionId:
                    type: string
                    description: A collection to search within
                    format: uuid
                  documentId:
                    type: string
                    description: A document to search within
                    format: uuid
                  statusFilter:
                    type: string
                    description: Any documents that are not in the specified status
                      will be filtered out
                    enum:
                    - draft
                    - archived
                    - published
                  dateFilter:
                    type: string
                    description: Any documents that have not been updated within the
                      specified period will be filtered out
                    enum:
                    - day
                    - week
                    - month
                    - year
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  documents:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  search:
                    "$ref": "#/components/schemas/SearchResult"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsAnswerquestion
  "/documents.search":
    post:
      tags:
      - Documents
      summary: Search all documents
      description: This methods allows you to search your teams documents with keywords.
        Note that search results will be restricted to those accessible by the current
        access token.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - type: object
                properties:
                  query:
                    type: string
                    example: hiring
                  userId:
                    type: string
                    description: Any documents that have not been edited by the user
                      identifier will be filtered out
                    format: uuid
                  collectionId:
                    type: string
                    description: A collection to search within
                    format: uuid
                  documentId:
                    type: string
                    description: A document to search within
                    format: uuid
                  statusFilter:
                    type: string
                    description: Any documents that are not in the specified status
                      will be filtered out
                    example: published
                    enum:
                    - draft
                    - archived
                    - published
                  dateFilter:
                    type: string
                    description: Any documents that have not been updated within the
                      specified period will be filtered out
                    example: month
                    enum:
                    - day
                    - week
                    - month
                    - year
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        context:
                          type: string
                          description: A short snippet of context from the document
                            that includes the search query.
                          example: At Acme Inc our hiring practices are inclusive
                        ranking:
                          type: number
                          description: The ranking used to order search results based
                            on relevance.
                          format: float
                          example: 1.1844109
                        document:
                          "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsSearch
  "/documents.create":
    post:
      tags:
      - Documents
      summary: Create a document
      description: This method allows you to create or publish a new document. By
        default a document is set to the collection root. If you want to create a
        nested/child document, you should pass parentDocumentId to set the parent
        document.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  example: Welcome to Acme Inc
                text:
                  type: string
                  description: The body of the document in markdown
                collectionId:
                  type: string
                  format: uuid
                parentDocumentId:
                  type: string
                  format: uuid
                templateId:
                  type: string
                  format: uuid
                template:
                  type: boolean
                  description: Whether this document should be considered to be a
                    template.
                publish:
                  type: boolean
                  description: Whether this document should be immediately published
                    and made visible to other team members.
              required:
              - title
              - collectionId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsCreate
  "/documents.update":
    post:
      tags:
      - Documents
      summary: Update a document
      description: This method allows you to modify an already created document
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                title:
                  type: string
                  description: The title of the document.
                text:
                  type: string
                  description: The body of the document in markdown.
                append:
                  type: boolean
                  description: If true the text field will be appended to the end
                    of the existing document, rather than the default behavior of
                    replacing it. This is potentially useful for things like logging
                    into a document.
                publish:
                  type: boolean
                  description: Whether this document should be published and made
                    visible to other team members, if a draft
                done:
                  type: boolean
                  description: Whether the editing session has finished, this will
                    trigger any notifications. This property will soon be deprecated.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsUpdate
  "/documents.templatize":
    post:
      tags:
      - Documents
      summary: Create a template from a document
      description: This method allows you to createa new template using an existing
        document as the basis
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsTemplatize
  "/documents.unpublish":
    post:
      tags:
      - Documents
      summary: Unpublish a document
      description: Unpublishing a document moves it back to a draft status and out
        of the collection.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsUnpublish
  "/documents.move":
    post:
      tags:
      - Documents
      summary: Move a document
      description: Move a document to a new location or collection. If no parent document
        is provided, the document will be moved to the collection root.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                collectionId:
                  type: string
                  format: uuid
                parentDocumentId:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      documents:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Document"
                      collections:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Collection"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsMove
  "/documents.archive":
    post:
      tags:
      - Documents
      summary: Archive a document
      description: Archiving a document allows outdated information to be moved out
        of sight whilst retaining the ability to optionally search and restore it
        later.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsArchive
  "/documents.restore":
    post:
      tags:
      - Documents
      summary: Restore a document
      description: If a document has been archived or deleted, it can be restored.
        Optionally a revision can be passed to restore the document to a previous
        point in time.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                revisionId:
                  type: string
                  format: uuid
                  description: Identifier for the revision to restore to.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Document"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsRestore
  "/documents.delete":
    post:
      tags:
      - Documents
      summary: Delete a document
      description: Deleting a document moves it to the trash. If not restored within
        30 days it is permenantly deleted.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                permanent:
                  type: boolean
                  example: false
                  description: If set to true the document will be destroyed with
                    no way to recover rather than moved to the trash.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsDelete
  "/documents.users":
    post:
      tags:
      - Documents
      summary: List document users
      description: All users with access to a document. To list only users with direct
        membership to the document use `documents.memberships`
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                query:
                  type: string
                  description: If set, will filter the results by user name.
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/User"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsUsers
  "/documents.memberships":
    post:
      tags:
      - Documents
      summary: List document memberships
      description: Users with direct membership to a document. To list all users with
        access to a document use `documents.users`.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  example: hDYep1TPAM
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                query:
                  type: string
                  description: If set, will filter the results by user name
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      memberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Membership"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsMemberships
  "/documents.add_user":
    post:
      tags:
      - Documents
      summary: Add a document user
      description: This method allows you to add a user membership to the specified
        document.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                userId:
                  type: string
                  format: uuid
                permission:
                  "$ref": "#/components/schemas/Permission"
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      memberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Membership"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsAddUser
  "/documents.remove_user":
    post:
      tags:
      - Documents
      summary: Remove a document user
      description: This method allows you to remove a user membership from the specified
        document.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the document. Either the UUID
                    or the urlId is acceptable.
                userId:
                  type: string
                  format: uuid
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: documentsRemoveUser
  "/events.list":
    post:
      tags:
      - Events
      summary: List all events
      description: Events are an audit trail of important events that happen in the
        knowledge base.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  name:
                    type: string
                    description: Filter to a specific event, e.g. "collections.create".
                      Event names are in the format "objects.verb"
                  actorId:
                    type: string
                    format: uuid
                    description: Filter to events performed by the selected user
                  documentId:
                    type: string
                    format: uuid
                    description: Filter to events performed in the selected document
                  collectionId:
                    type: string
                    format: uuid
                    description: Filter to events performed in the selected collection
                  auditLog:
                    type: boolean
                    description: Whether to return detailed events suitable for an
                      audit log. Without this flag less detailed event types will
                      be returned.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Event"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: eventsList
  "/fileOperations.info":
    post:
      tags:
      - FileOperations
      summary: Retrieve a file operation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the file operation.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/FileOperation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: fileoperationsInfo
  "/fileOperations.delete":
    post:
      tags:
      - FileOperations
      summary: Delete a file operation
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the file operation.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: fileoperationsDelete
  "/fileOperations.redirect":
    post:
      tags:
      - FileOperations
      summary: Retrieve the file
      description: Load the resulting file from where it is stored based on the id.
        A temporary, signed url with embedded credentials is generated on demand.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the file operation.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: fileoperationsRedirect
  "/fileOperations.list":
    post:
      tags:
      - FileOperations
      summary: List all file operations
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  type:
                    type: string
                    description: The type of fileOperation
                    example: export
                    enum:
                    - export
                    - import
                required:
                - type
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/FileOperation"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: fileoperationsList
  "/groups.info":
    post:
      tags:
      - Groups
      summary: Retrieve a group
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the group.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Group"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsInfo
  "/groups.list":
    post:
      tags:
      - Groups
      summary: List all groups
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      groups:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Group"
                      groupMemberships:
                        type: array
                        description: A preview of memberships in the group, note that
                          this is not all memberships which can be queried from `groups.memberships`.
                        items:
                          "$ref": "#/components/schemas/GroupMembership"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsList
  "/groups.create":
    post:
      tags:
      - Groups
      summary: Create a group
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Designers
              required:
              - name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Group"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsCreate
  "/groups.update":
    post:
      tags:
      - Groups
      summary: Update a group
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                name:
                  type: string
                  example: Designers
              required:
              - id
              - name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Group"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsUpdate
  "/groups.delete":
    post:
      tags:
      - Groups
      summary: Delete a group
      description: Deleting a group will cause all of its members to lose access to
        any collections the group has previously been added to. This action can’t
        be undone so please be careful.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsDelete
  "/groups.memberships":
    post:
      tags:
      - Groups
      summary: List all group members
      description: List and filter all the members in a group.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - type: object
                properties:
                  id:
                    type: string
                    description: Group id
                    example: a32c2ee6-fbde-4654-841b-0eabdc71b812
                  query:
                    type: string
                    description: Filter memberships by user names
                    example: jenny
                required:
                - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      groupMemberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/GroupMembership"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsMemberships
  "/groups.add_user":
    post:
      tags:
      - Groups
      summary: Add a group member
      description: This method allows you to add a user to the specified group.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                userId:
                  type: string
                  format: uuid
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
                      groups:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Group"
                      groupMemberships:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Membership"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsAddUser
  "/groups.remove_user":
    post:
      tags:
      - Groups
      summary: Remove a group member
      description: This method allows you to remove a user from the group.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Identifier for the collection
                  format: uuid
                userId:
                  type: string
                  format: uuid
              required:
              - id
              - userId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      groups:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Group"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: groupsRemoveUser
  "/revisions.info":
    post:
      tags:
      - Revisions
      summary: Retrieve a revision
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the revision.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Revision"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: revisionsInfo
  "/revisions.list":
    post:
      tags:
      - Revisions
      summary: List all revisions
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Revision"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: revisionsList
  "/shares.info":
    post:
      tags:
      - Shares
      summary: Retrieve a share object
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the share.
                  format: uuid
                documentId:
                  type: string
                  description: Unique identifier for a document. One of id or documentId
                    must be provided.
                  format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Share"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: sharesInfo
  "/shares.list":
    post:
      tags:
      - Shares
      summary: List all shares
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Share"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: sharesList
  "/shares.create":
    post:
      tags:
      - Shares
      summary: Create a share
      description: Creates a new share link that can be used by to access a document.
        If you request multiple shares for the same document with the same API key,
        the same share object will be returned. By default all shares are unpublished.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documentId:
                  type: string
                  format: uuid
              required:
              - documentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Share"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: sharesCreate
  "/shares.update":
    post:
      tags:
      - Shares
      summary: Update a share
      description: Allows changing an existing shares published status, which removes
        authentication and makes it available to anyone with the link.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                published:
                  type: boolean
              required:
              - id
              - published
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Share"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: sharesUpdate
  "/shares.revoke":
    post:
      tags:
      - Shares
      summary: Revoke a share
      description: Makes the share link inactive so that it can no longer be used
        to access the document.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: sharesRevoke
  "/stars.create":
    post:
      tags:
      - Stars
      summary: Create a star
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documentId:
                  type: string
                  format: uuid
                collectionId:
                  type: string
                  format: uuid
                index:
                  type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Star"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: starsCreate
  "/stars.list":
    post:
      tags:
      - Stars
      summary: List all stars
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/Pagination"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      stars:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Star"
                      documents:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Document"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: starsList
  "/stars.update":
    post:
      tags:
      - Stars
      summary: Update a stars index
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                index:
                  type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/Star"
                  policies:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Policy"
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: starsUpdate
  "/stars.delete":
    post:
      tags:
      - Stars
      summary: Delete a star
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          "$ref": "#/components/responses/Validation"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: starsDelete
  "/users.invite":
    post:
      tags:
      - Users
      summary: Invite users
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                invites:
                  type: array
                  items:
                    "$ref": "#/components/schemas/Invite"
              required:
              - invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      sent:
                        type: array
                        items:
                          "$ref": "#/components/schemas/Invite"
                      users:
                        type: array
                        items:
                          "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersInvite
  "/users.info":
    post:
      tags:
      - Users
      summary: Retrieve a user
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the user.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersInfo
  "/users.list":
    post:
      tags:
      - Users
      summary: List all users
      description: List and filter all the users in the team
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - "$ref": "#/components/schemas/Pagination"
              - "$ref": "#/components/schemas/Sorting"
              - type: object
                properties:
                  query:
                    type: string
                    example: jane
                  emails:
                    type: array
                    description: Array of emails
                    items:
                      type: string
                    example:
                    - jane.crandall@mail.com
                    - prudence.crandall@mail.com
                  filter:
                    type: string
                    description: The status to filter by
                    enum:
                    - all
                    - invited
                    - active
                    - suspended
                  role:
                    "$ref": "#/components/schemas/UserRole"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/User"
                  pagination:
                    "$ref": "#/components/schemas/Pagination"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersList
  "/users.update":
    post:
      tags:
      - Users
      summary: Update a user
      description: Update a users name or avatar. If no `id` is passed then the user
        associated with the authentication will be updated by default.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                language:
                  type: string
                  format: BCP47
                avatarUrl:
                  type: string
                  format: uri
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersUpdate
  "/users.update_role":
    post:
      tags:
      - Users
      summary: Change a users role
      description: Change the role of a user, only available to admin authorization.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the user.
                  format: uuid
                role:
                  "$ref": "#/components/schemas/UserRole"
              required:
              - id
              - role
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersUpdateRole
  "/users.suspend":
    post:
      tags:
      - Users
      summary: Suspend a user
      description: Suspending a user prevents the user from signing in. Users that
        are suspended are also not counted against billing totals in the hosted version.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the user.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersSuspend
  "/users.activate":
    post:
      tags:
      - Users
      summary: Activate a user
      description: Activating a previously suspended user allows them to signin again.
        Users that are activated will cause billing totals to be re-calculated in
        the hosted version.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the user.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/User"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersActivate
  "/users.delete":
    post:
      tags:
      - Users
      summary: Delete a user
      description: Deleting a user removes the object entirely. In almost every circumstance
        it is preferable to suspend a user, as a deleted user can be recreated by
        signing in with SSO again.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the user.
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '404':
          "$ref": "#/components/responses/NotFound"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: usersDelete
  "/views.list":
    post:
      tags:
      - Views
      summary: List all views
      description: List all users that have viewed a document and the overall view
        count.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documentId:
                  type: string
                  format: uuid
              required:
              - documentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/View"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
        '429':
          "$ref": "#/components/responses/RateLimited"
      operationId: viewsList
  "/views.create":
    post:
      tags:
      - Views
      summary: Create a view
      description: Creates a new view for a document. This is documented in the interests
        of thoroughness however it is recommended that views are not created from
        outside of the Outline UI.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documentId:
                  type: string
                  format: uuid
              required:
              - documentId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    "$ref": "#/components/schemas/View"
        '401':
          "$ref": "#/components/responses/Unauthenticated"
        '403':
          "$ref": "#/components/responses/Unauthorized"
      operationId: viewsCreate
components:
  schemas:
    Permission:
      type: string
      enum:
      - read
      - read_write
    Attachment:
      type: object
      properties:
        contentType:
          type: string
          example: image/png
        size:
          type: number
        name:
          type: string
        url:
          type: string
          format: uri
        documentId:
          type: string
          description: Identifier for the associated document, if any.
          format: uuid
    Pagination:
      type: object
      properties:
        offset:
          type: number
        limit:
          type: number
          example: 25
    Sorting:
      type: object
      properties:
        sort:
          type: string
          example: updatedAt
        direction:
          type: string
          example: DESC
          enum:
          - ASC
          - DESC
    NavigationNode:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the document.
          format: uuid
        title:
          type: string
        url:
          type: string
        children:
          type: array
          items:
            "$ref": "#/components/schemas/NavigationNode"
    Auth:
      type: object
      properties:
        user:
          "$ref": "#/components/schemas/User"
        team:
          "$ref": "#/components/schemas/Team"
    Collection:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        urlId:
          type: string
          description: A short unique identifier that can be used to identify the
            collection instead of the UUID.
          readOnly: true
          example: hDYep1TPAM
        name:
          type: string
          description: The name of the collection.
          example: Human Resources
        description:
          type: string
          description: A description of the collection, may contain markdown formatting
          example: ''
        sort:
          type: object
          description: The sort of documents in the collection. Note that not all
            API responses respect this and it is left as a frontend concern to implement.
          properties:
            field:
              type: string
            direction:
              type: string
              enum:
              - asc
              - desc
        index:
          type: string
          description: The position of the collection in the sidebar
          example: P
        color:
          type: string
          description: 'A color representing the collection, this is used to help
            make collections more identifiable in the UI. It should be in HEX format
            including the #'
          example: "#123123"
        icon:
          type: string
          description: A string that represents an icon in the outline-icons package
        permission:
          "$ref": "#/components/schemas/Permission"
        sharing:
          type: boolean
          description: Whether public document sharing is enabled in this collection
          default: false
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
        updatedAt:
          type: string
          description: The date and time that this object was last changed
          readOnly: true
          format: date-time
        deletedAt:
          type: string
          nullable: true
          description: The date and time that this object was deleted
          readOnly: true
          format: date-time
        archivedAt:
          type: string
          nullable: true
          description: The date and time that this object was archived
          readOnly: true
          format: date-time
        archivedBy:
          "$ref": "#/components/schemas/User"
    Comment:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        data:
          type: object
          description: The editor data representing this comment.
        documentId:
          type: string
          description: Identifier for the document this is related to.
          format: uuid
        parentCommentId:
          type: string
          description: Identifier for the comment this is a child of, if any.
          format: uuid
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
        createdBy:
          "$ref": "#/components/schemas/User"
        updatedAt:
          type: string
          description: The date and time that this object was last changed
          readOnly: true
          format: date-time
        updatedBy:
          "$ref": "#/components/schemas/User"
        anchorText:
          type: string
          description: The document text that the comment is anchored to, only included
            if includeAnchorText=true.
          readOnly: true
    Document:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        collectionId:
          type: string
          description: Identifier for the associated collection.
          format: uuid
        parentDocumentId:
          type: string
          description: Identifier for the document this is a child of, if any.
          format: uuid
        title:
          type: string
          description: The title of the document.
          example: "\U0001F389 Welcome to Acme Inc"
        fullWidth:
          type: boolean
          description: Whether this document should be displayed in a full-width view.
        emoji:
          type: string
          description: An emoji associated with the document.
          example: "\U0001F389"
        text:
          type: string
          description: The text content of the document, contains markdown formatting
          example: "…"
        urlId:
          type: string
          description: A short unique ID that can be used to identify the document
            as an alternative to the UUID
          example: hDYep1TPAM
        collaborators:
          type: array
          items:
            "$ref": "#/components/schemas/User"
        pinned:
          type: boolean
          description: Whether this document is pinned in the collection
        template:
          type: boolean
          description: Whether this document is a template
        templateId:
          type: string
          description: Unique identifier for the template this document was created
            from, if any
          format: uuid
        revision:
          type: number
          description: A number that is auto incrementing with every revision of the
            document that is saved
          readOnly: true
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
        createdBy:
          "$ref": "#/components/schemas/User"
        updatedAt:
          type: string
          description: The date and time that this object was last changed
          readOnly: true
          format: date-time
        updatedBy:
          "$ref": "#/components/schemas/User"
        publishedAt:
          type: string
          nullable: true
          description: The date and time that this object was published
          readOnly: true
          format: date-time
        archivedAt:
          type: string
          description: The date and time that this object was archived
          readOnly: true
          format: date-time
        deletedAt:
          type: string
          nullable: true
          description: The date and time that this object was deleted
          readOnly: true
          format: date-time
    Event:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        name:
          type: string
          example: documents.create
          readOnly: true
        modelId:
          type: string
          description: Identifier for the object this event is associated with when
            it is not one of document, collection, or user.
          format: uuid
          readOnly: true
        actorId:
          type: string
          description: The user that performed the action.
          format: uuid
          readOnly: true
        actorIpAddress:
          type: string
          description: The ip address the action was performed from. This field is
            only returned when the `auditLog` boolean is true.
          example: 60.169.88.100
          readOnly: true
        collectionId:
          type: string
          format: uuid
          description: Identifier for the associated collection, if any
          readOnly: true
        documentId:
          type: string
          format: uuid
          description: Identifier for the associated document, if any
          readOnly: true
        createdAt:
          type: string
          description: The date and time that this event was created
          readOnly: true
          format: date-time
        data:
          type: object
          example:
            name: Equipment list
          description: Additional unstructured data associated with the event
          readOnly: true
        actor:
          "$ref": "#/components/schemas/User"
    Error:
      type: object
      properties:
        ok:
          type: boolean
          example: false
        error:
          type: string
        message:
          type: string
        status:
          type: number
        data:
          type: object
    FileOperation:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        type:
          type: string
          example: export
          description: The type of file operation.
          readOnly: true
          enum:
          - import
          - export
        state:
          type: string
          description: The state of the file operation.
          example: complete
          readOnly: true
          enum:
          - creating
          - uploading
          - complete
          - error
          - expired
        collection:
          allOf:
          - nullable: true
          - "$ref": "#/components/schemas/Collection"
        user:
          "$ref": "#/components/schemas/User"
        size:
          type: number
          description: The size of the resulting file in bytes
          readOnly: true
          example: 2048
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
    Group:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        name:
          type: string
          description: The name of this group.
          example: Engineering
        memberCount:
          type: number
          description: The number of users that are members of the group
          example: 11
          readOnly: true
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
        updatedAt:
          type: string
          description: The date and time that this object was last changed
          readOnly: true
          format: date-time
    Share:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        documentTitle:
          type: string
          description: Title of the shared document.
          example: React best practices
          readOnly: true
        documentUrl:
          type: string
          format: uri
          description: URL of the original document.
          readOnly: true
        url:
          type: string
          format: uri
          description: URL of the publicly shared document.
          readOnly: true
        published:
          type: boolean
          example: false
          description: If true the share can be loaded without a user account.
        includeChildDocuments:
          type: boolean
          example: true
          description: If to also give permission to view documents nested beneath
            this one.
        createdAt:
          type: string
          format: date-time
          description: Date and time when this share was created
          readOnly: true
        createdBy:
          "$ref": "#/components/schemas/User"
        updatedAt:
          type: string
          format: date-time
          description: Date and time when this share was edited
          readOnly: true
        lastAccessedAt:
          type: string
          format: date-time
          description: Date and time when this share was last viewed
          readOnly: true
    Star:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        index:
          type: string
          description: Index of the star in the list of stars.
        documentId:
          type: string
          description: Unique identifier for the starred document.
          readOnly: true
          format: uuid
        collectionId:
          type: string
          description: Unique identifier for the starred collection.
          readOnly: true
          format: uuid
        documentUrl:
          type: string
          format: uri
          description: URL of the original document.
          readOnly: true
        createdAt:
          type: string
          format: date-time
          description: Date and time when this star was created
          readOnly: true
    Revision:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        documentId:
          type: string
          description: Identifier for the associated document.
          readOnly: true
          format: uuid
        title:
          type: string
          description: Title of the document.
          readOnly: true
        text:
          type: string
          description: Body of the document, may contain markdown formatting
          readOnly: true
        createdAt:
          type: string
          format: date-time
          description: Date and time when this revision was created
          readOnly: true
        createdBy:
          "$ref": "#/components/schemas/User"
    Team:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        name:
          type: string
          description: The name of this team, it is usually auto-generated when the
            first SSO connection is made but can be changed if neccessary.
        avatarUrl:
          type: string
          format: uri
          description: The URL for the image associated with this team, it will be
            displayed in the team switcher and in the top left of the knowledge base
            along with the name.
        sharing:
          type: boolean
          description: Whether this team has share links globally enabled. If this
            value is false then all sharing UI and APIs are disabled.
        defaultCollectionId:
          type: string
          description: If set then the referenced collection is where users will be
            redirected to after signing in instead of the Home screen
          format: uuid
        defaultUserRole:
          "$ref": "#/components/schemas/UserRole"
        memberCollectionCreate:
          type: boolean
          description: Whether members are allowed to create new collections. If false
            then only admins can create collections.
        documentEmbeds:
          type: boolean
          description: Whether this team has embeds in documents globally enabled.
            It can be disabled to reduce potential data leakage to third parties.
        collaborativeEditing:
          type: boolean
          description: Whether this team has collaborative editing in documents globally
            enabled.
        inviteRequired:
          type: boolean
          description: Whether an invite is required to join this team, if false users
            may join with a linked SSO provider.
        allowedDomains:
          type: array
          items:
            type: string
            description: A hostname that user emails are restricted to
        guestSignin:
          type: boolean
          description: Whether this team has guest signin enabled. Guests can signin
            with an email address and are not required to have a Google Workspace/Slack
            SSO account once invited.
        subdomain:
          type: string
          description: Represents the subdomain at which this team's knowledge base
            can be accessed.
        url:
          type: string
          description: The fully qualified URL at which this team's knowledge base
            can be accessed.
          readOnly: true
          format: uri
    User:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        name:
          type: string
          description: The name of this user, it is migrated from Slack or Google
            Workspace when the SSO connection is made but can be changed if neccessary.
          example: Jane Doe
        avatarUrl:
          type: string
          format: uri
          description: The URL for the image associated with this user, it will be
            displayed in the application UI and email notifications.
        email:
          type: string
          description: The email associated with this user, it is migrated from Slack
            or Google Workspace when the SSO connection is made but can be changed
            if neccessary.
          format: email
          readOnly: true
        role:
          "$ref": "#/components/schemas/UserRole"
        isSuspended:
          type: boolean
          description: Whether this user has been suspended.
          readOnly: true
        lastActiveAt:
          type: string
          description: The last time this user made an API request, this value is
            updated at most every 5 minutes.
          readOnly: true
          format: date-time
        createdAt:
          type: string
          description: The date and time that this user first signed in or was invited
            as a guest.
          readOnly: true
          format: date-time
    Invite:
      type: object
      properties:
        name:
          type: string
          description: The full name of the user being invited
        email:
          type: string
          description: The email address to invite
        role:
          "$ref": "#/components/schemas/UserRole"
    UserRole:
      type: string
      enum:
      - admin
      - member
      - viewer
      - guest
    CollectionStatus:
      type: string
      enum:
      - archived
    Membership:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
        userId:
          type: string
          description: Identifier for the associated user.
          readOnly: true
          format: uuid
        collectionId:
          type: string
          description: Identifier for the associated collection.
          readOnly: true
          format: uuid
        permission:
          "$ref": "#/components/schemas/Permission"
    SearchResult:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          format: uuid
        query:
          type: string
          description: The user-provided search query
          example: What is our hiring policy?
          readOnly: true
        answer:
          type: string
          description: An answer to the query, if possible
          example: Our hiring policy can be summarized as…
          readOnly: true
        source:
          type: string
          example: app
          description: The source of the query
          readOnly: true
          enum:
          - api
          - app
        createdAt:
          type: string
          description: The date and time that this object was created
          readOnly: true
          format: date-time
    Policy:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object this policy references.
          format: uuid
          readOnly: true
        abilities:
          type: object
          properties:
            create:
              type: boolean
            read:
              type: boolean
            update:
              type: boolean
            delete:
              type: boolean
            restore:
              type: boolean
            star:
              type: boolean
            unstar:
              type: boolean
            share:
              type: boolean
            download:
              type: boolean
            pin:
              type: boolean
            unpin:
              type: boolean
            move:
              type: boolean
            archive:
              type: boolean
            unarchive:
              type: boolean
            createChildDocument:
              type: boolean
    GroupMembership:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
        groupId:
          type: string
          description: Identifier for the associated group.
          readOnly: true
          format: uuid
        userId:
          type: string
          description: Identifier for the associated user.
          readOnly: true
          format: uuid
        user:
          "$ref": "#/components/schemas/User"
    CollectionGroupMembership:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
        groupId:
          type: string
          description: Identifier for the associated group.
          readOnly: true
          format: uuid
        collectionId:
          type: string
          description: Identifier for the associated collection.
          readOnly: true
          format: uuid
        permission:
          "$ref": "#/components/schemas/Permission"
    View:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
        documentId:
          type: string
          description: Identifier for the associated document.
          readOnly: true
          format: uuid
        firstViewedAt:
          type: string
          description: When the document was first viewed by the user
          readOnly: true
          format: date-time
        lastViewedAt:
          type: string
          description: When the document was last viewed by the user
          readOnly: true
          format: date-time
        count:
          type: number
          description: The number of times the user has viewed the document.
          example: 22
          readOnly: true
        user:
          "$ref": "#/components/schemas/User"
  responses:
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Validation:
      description: The request failed one or more validations.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Unauthorized:
      description: The current API key is not authorized to perform this action.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Unauthenticated:
      description: The API key is missing or otherwise invalid.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    RateLimited:
      description: The request was rate limited.
      headers:
        Retry-After:
          "$ref": "#/components/headers/Retry-After"
        RateLimit-Limit:
          "$ref": "#/components/headers/RateLimit-Limit"
        RateLimit-Remaining:
          "$ref": "#/components/headers/RateLimit-Remaining"
        RateLimit-Reset:
          "$ref": "#/components/headers/RateLimit-Reset"
      content:
        application/json:
          schema:
            type: object
            properties:
              ok:
                type: boolean
                example: false
              error:
                type: string
                example: rate_limit_exceeded
              status:
                type: number
                example: 429
  headers:
    Retry-After:
      schema:
        type: integer
      description: Seconds in the future to retry the request, if rate limited.
    RateLimit-Limit:
      schema:
        type: integer
      description: The maximum requests available in the current duration.
    RateLimit-Remaining:
      schema:
        type: integer
      description: How many requests are left in the current duration.
    RateLimit-Reset:
      schema:
        type: string
      description: Timestamp in the future the duration will reset.
  securitySchemes:
    http:
      type: http
      scheme: bearer
      bearerFormat: JWT