--- 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 `POST` method on `https://app.getoutline.com/api/:method`. 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 ## API key You can create new API keys under **Settings => API & Apps**. 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 should supply the API key as the `Authorization` header (`Authorization: Bearer YOUR_API_KEY`). ## OAuth 2.0 OAuth 2.0 is a widely used protocol for authorization and authentication. It allows users to grant third-party _or_ internal applications access to their resources without sharing their credentials. To use OAuth 2.0 you need to follow these steps: 1. Register your application under **Settings => Applications** 2. Obtain an access token by exchanging the client credentials for an access token 3. Use the access token to authenticate requests to the API Some API endpoints allow unauthenticated requests for public resources and they can be called without authentication # Scopes Scopes are used to limit the access of an API key or application to specific resources. For example, an application may only need access to read documents, but not write them. Scopes can be global in the case of `read` and `write` scopes, scoped to a namespace, scoped to an API endpoint, or use wildcard scopes like `documents.*`. Some examples of scopes that can be used are: ## Global - `read`: Allows all read actions - `write`: Allows all read and write actions ## Namespaced - `documents:read`: Allows all document read actions - `collections:write`: Allows all collection write actions ## Endpoints - `documents.info`: Allows only one specific API method - `documents.*`: Allows all document API methods - `users.*`: Allows all user API methods # 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 authentications 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 license: name: BSD-3-Clause url: https://github.com/outline/openapi/blob/main/LICENSE servers: - url: https://app.getoutline.com/api description: Cloud hosted - url: https://{domain}/api description: Self-hosted on your own server variables: domain: default: example.com security: - BearerAuth: [] - OAuth2: - read - write 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 workspace. - 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: DataAttributes description: | `DataAttributes` represent custom metadata fields that can be attached to documents. They allow workspaces to add structured data like status, priority, or any other custom properties to their documents. - 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: OAuthClients description: | `OAuthClients` represent OAuth clients that can be used to authenticate users with third-party services. - name: OAuthAuthentications description: | `OAuthAuthentications` represent individual scoped authentications between Outline and an `OAuthClient`. - 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 workspace. 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 security: [] 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 description: Retrieve the details of a collection by its unique identifier. 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 description: Returns the document structure of a collection as a tree of navigation nodes, representing the hierarchy of documents within the 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: 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 description: List all collections that the authenticated user has access to. 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 description: Create a new collection with the specified name, description, icon, color, and permission settings. Collections are used to organize documents. requestBody: content: application/json: schema: type: object properties: name: type: string example: Human Resources description: type: string description: A brief description of the collection, markdown supported. example: HR documentation is confidential and should be handled with care. permission: "$ref": "#/components/schemas/Permission" icon: type: string description: A string that represents an icon in the outline-icons package or an emoji color: type: string description: A hex color code for the collection icon example: "#123123" sharing: type: boolean description: Whether public sharing of documents is allowed 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 description: Update an existing collection's properties such as name, description, icon, color, sharing settings, or permission level. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid name: type: string example: Human Resources description: type: string description: A brief description of the collection, markdown supported. example: HR documentation is confidential and should be handled with care. permission: "$ref": "#/components/schemas/Permission" icon: type: string description: A string that represents an icon in the outline-icons package or an emoji color: type: string description: A hex color code for the collection icon example: "#123123" sharing: type: boolean description: Whether public sharing of documents is allowed example: false 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 includeAttachments: type: boolean description: Whether to include attachments in the export. default: true includePrivate: type: boolean description: Whether to include private collections in the export. default: true description: Triggers a bulk export of multiple collections and their documents. 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: Add a comment or reply to a document, either `data` or `text` is required. 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, in the response. required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/Comment" policies: type: array items: "$ref": "#/components/schemas/Policy" "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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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: Deletes a comment. If the comment is a top-level comment, all its children will be deleted as well. 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, in the response. 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 "/dataAttributes.info": post: x-badges: - name: Business - name: Enterprise tags: - DataAttributes summary: Retrieve a data attribute description: Retrieve a data attribute by its unique identifier. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the data attribute. format: uuid required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/DataAttribute" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: dataAttributesInfo "/dataAttributes.list": post: x-badges: - name: Business - name: Enterprise tags: - DataAttributes summary: List all data attributes description: List all data attributes. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - type: object properties: sort: type: string description: Specifies the attributes by which data attributes will be sorted in the list. enum: - createdAt - updatedAt default: createdAt direction: type: string description: Specifies the sort order with respect to sort field. enum: - ASC - DESC default: DESC responses: "200": description: OK content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/DataAttribute" pagination: "$ref": "#/components/schemas/Pagination" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "429": "$ref": "#/components/responses/RateLimited" operationId: dataAttributesList "/dataAttributes.create": post: x-badges: - name: Business - name: Enterprise tags: - DataAttributes summary: Create a data attribute description: Create a new data attribute. Only admins can create data attributes. requestBody: content: application/json: schema: type: object properties: name: type: string description: Name of the data attribute. example: Status description: type: string description: Description of the data attribute. example: The current status of the document. dataType: "$ref": "#/components/schemas/DataAttributeDataType" options: "$ref": "#/components/schemas/DataAttributeOptions" pinned: type: boolean description: Whether the data attribute is pinned to the top of document. default: false required: - name - dataType responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/DataAttribute" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "429": "$ref": "#/components/responses/RateLimited" operationId: dataAttributesCreate "/dataAttributes.update": post: x-badges: - name: Business - name: Enterprise tags: - DataAttributes summary: Update a data attribute description: Update an existing data attribute. Only admins can update data attributes. Note that the dataType cannot be changed after creation. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the data attribute. format: uuid name: type: string description: Name of the data attribute. example: Status description: type: string description: Description of the data attribute. options: "$ref": "#/components/schemas/DataAttributeOptions" pinned: type: boolean description: Whether the data attribute is pinned to the top of document. required: - id - name responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/DataAttribute" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: dataAttributesUpdate "/dataAttributes.delete": post: x-badges: - name: Business - name: Enterprise tags: - DataAttributes summary: Delete a data attribute description: Delete a data attribute. Only admins can delete data attributes. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the data attribute. 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: dataAttributesDelete "/documents.info": post: tags: - Documents summary: Retrieve a document description: Retrieve a document by its `UUID`, `urlId`, or `shareId`. At least one of these parameters must be provided. 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 nullable: true description: Identifier for the collection to import into. One of collectionId or parentDocumentId is required. parentDocumentId: type: string format: uuid nullable: true description: Identifier for the parent document to import under. One of collectionId or parentDocumentId is required. publish: type: boolean description: Whether to publish the imported document required: - file responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/Document" policies: type: array items: "$ref": "#/components/schemas/Policy" "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. description: Export a document in Markdown, HTML, or PDF format. The response format is determined by the Accept header. Optionally include child documents in the export as a zip file. 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. paperSize: type: string description: Paper size for PDF export (e.g., "A4", "Letter") signedUrls: type: number description: How long signed URLs should remain valid for attachment links (in seconds) includeChildDocuments: type: boolean description: Whether to include child documents in the export. Using this option will always return a zip file. default: false required: - id 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 statusFilter: type: array items: type: string enum: - draft - archived - published description: Document statuses to include in results 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.documents": post: tags: - Documents summary: Retrieve a document's child structure description: This method returns the nested document structure (tree) for the children of 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. required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/NavigationNode" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: documentsDocuments "/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: x-badges: - name: Business - name: Enterprise - name: Cloud 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_titles": post: tags: - Documents summary: Search document titles description: This method allows you to search document titles with keywords. Unlike documents.search, this only searches titles and returns faster results. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - type: object properties: query: type: string description: Search query to match against document titles collectionId: type: string format: uuid description: Filter to a specific collection userId: type: string format: uuid description: Filter results based on user documentId: type: string format: uuid description: Filter results based on content within a document and its children statusFilter: type: array items: type: string enum: - draft - archived - published description: Document statuses to include in results dateFilter: type: string description: Any documents that have not been updated within the specified period will be filtered out enum: - day - week - month - year shareId: type: string description: Filter results for the collection or document referenced by the shareId sort: type: string enum: - relevance - createdAt - updatedAt - title description: Specifies the attributes by which search results will be sorted direction: type: string enum: - ASC - DESC description: Specifies the sort order with respect to sort field required: - query 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: documentsSearchTitles "/documents.search": post: tags: - Documents summary: Search all documents description: This methods allows you to search your workspace's 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: array description: Document statuses to include in results items: type: string 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 shareId: type: string description: Filter results to the collection or document referenced by the shareId snippetMinWords: type: number description: Minimum number of words to show in search result snippets default: 20 snippetMaxWords: type: number description: Maximum number of words to show in search result snippets default: 30 sort: type: string enum: - relevance - createdAt - updatedAt - title description: Specifies the attributes by which search results will be sorted direction: type: string enum: - ASC - DESC description: Specifies the sort order with respect to sort field 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: id: type: string format: uuid description: Optional identifier for the document title: type: string example: Welcome to Acme Inc text: type: string description: The body of the document in markdown icon: type: string description: Icon displayed alongside the document title color: type: string nullable: true description: Color for the document icon (hex format) collectionId: type: string format: uuid nullable: true description: Identifier for the collection. Required to publish unless parentDocumentId is provided parentDocumentId: type: string format: uuid nullable: true description: Identifier for the parent document. Required to publish unless collectionId is provided 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 workspace members. fullWidth: type: boolean description: Whether the document should be displayed in full width createdAt: type: string format: date-time description: Optionally set the created date in the past dataAttributes: type: array description: Data attributes to be included on the document. items: type: object properties: dataAttributeId: type: string description: Unique identifier for the data attribute. format: uuid value: description: The value of the data attribute. Can be a string, boolean, or number depending on the data attribute type. example: In Progress oneOf: - type: string - type: boolean - type: number required: - dataAttributeId - value 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. icon: type: string nullable: true description: Icon displayed alongside the document title color: type: string nullable: true description: Color for the document icon (hex format) fullWidth: type: boolean description: Whether the document should be displayed in full width templateId: type: string format: uuid nullable: true description: Identifier for the template this document is based on collectionId: type: string format: uuid nullable: true description: Identifier for the collection to move the document to insightsEnabled: type: boolean description: Whether insights should be visible on the document editMode: "$ref": "#/components/schemas/TextEditMode" publish: type: boolean description: Whether this document should be published and made visible to other workspace members, if a draft dataAttributes: type: array description: Data attributes to be updated. Attributes not included will be removed from the document. nullable: true items: type: object properties: dataAttributeId: type: string description: Unique identifier for the data attribute. format: uuid value: description: The value of the data attribute. Can be a string, boolean, or number depending on the data attribute type. example: In Progress oneOf: - type: string - type: boolean - type: number required: - dataAttributeId - value 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 collectionId: type: string format: uuid nullable: true description: Identifier for the collection where the template should be created publish: type: boolean description: Whether the new template should be published required: - id - publish 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. detach: type: boolean description: Whether to detach the document from the collection default: false 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 index: type: number description: The position index in the collection structure 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. collectionId: type: string format: uuid description: Identifier for the collection to restore the document to. 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. userId: type: string format: uuid description: If set, will filter the results to a specific user. 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 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" "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 "/documents.archived": post: tags: - Documents summary: List all archived documents description: This method will list all archived documents belonging to the workspace that the current user has access to. 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 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: documentsArchived "/documents.deleted": post: tags: - Documents summary: List all deleted documents description: This method will list all deleted documents belonging to the workspace that the current user has access to. 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: documentsDeleted "/documents.duplicate": post: tags: - Documents summary: Duplicate a document description: This method allows you to duplicate an existing document and optionally all of its child documents. 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. title: type: string description: New title for the duplicated document recursive: type: boolean description: Whether child documents should also be duplicated publish: type: boolean description: Whether the new document should be published collectionId: type: string format: uuid description: Identifier for the collection the document should be copied to parentDocumentId: type: string format: uuid description: Identifier for the parent document the document should be copied to 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" 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: documentsDuplicate "/documents.add_group": post: tags: - Documents summary: Add a group to a document description: This method allows you to give all members in a group access to 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. 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: groupMemberships: 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: documentsAddGroup "/documents.remove_group": post: tags: - Documents summary: Remove a group from a document description: This method allows you to revoke all members in a group access to 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. 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: documentsRemoveGroup "/documents.group_memberships": post: tags: - Documents summary: List document group memberships description: This method allows you to list a document's group memberships. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - type: object properties: id: type: string description: Unique identifier for the document. Either the UUID or the urlId is acceptable. query: type: string description: Filter memberships by group names 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" groupMemberships: 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" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: documentsGroupMemberships "/documents.empty_trash": post: tags: - Documents summary: Empty trash description: Permanently delete all documents in the trash. This action is irreversible. Only available to admin users. 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" "429": "$ref": "#/components/responses/RateLimited" operationId: documentsEmptyTrash "/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 description: Retrieve the details and current status of a file operation by its unique identifier. File operations represent long-running import or export tasks. 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 description: Delete a file operation and its associated files. This is useful for cleaning up completed or failed import/export operations. 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 description: List all file operations for the current workspace, filtered by type (import or export). 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 description: Retrieve the details of a group by its unique identifier, including its name and member count. 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 description: List all groups in the workspace. Groups are used to organize users and manage permissions for collections. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - "$ref": "#/components/schemas/Sorting" - type: object properties: userId: type: string format: uuid description: Filter to groups including a specific user externalId: type: string format: uuid description: Filter to groups matching an external ID query: type: string format: uuid description: Filter to groups matching a search query 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" 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: groupsList "/groups.create": post: tags: - Groups summary: Create a group description: Create a new group with the specified name. Groups can be used to organize users and assign collection permissions to multiple users at once. 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 description: Update an existing group's name. The group is identified by its unique identifier. 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/GroupMembership" "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 "/oauthClients.info": post: tags: - OAuthClients summary: Retrieve an OAuth client description: To retrieve information about an OAuth client you must pass either an `id` or a `clientId`. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the OAuth client. format: uuid clientId: type: string description: Public identifier for the OAuth client. example: 2bquf8avrpdv31par42a responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/OAuthClient" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsInfo "/oauthClients.list": post: tags: - OAuthClients summary: List accessible OAuth clients description: List all OAuth clients that the authenticated user has access to. This includes both clients created by the user and published clients available to the workspace. responses: "200": description: OK content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - "$ref": "#/components/schemas/Sorting" - type: object properties: data: type: array items: "$ref": "#/components/schemas/OAuthClient" policies: type: array items: "$ref": "#/components/schemas/Policy" pagination: "$ref": "#/components/schemas/Pagination" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsList "/oauthClients.create": post: tags: - OAuthClients summary: Create an OAuth client description: Create a new OAuth client application that can be used to authenticate users and access the API on their behalf. requestBody: content: application/json: schema: type: object properties: name: type: string description: Name of the OAuth client. example: My App description: type: string description: A short description of this OAuth client. example: Integrate Acme Inc's services into Outline. developerName: type: string description: The name of the developer who created this OAuth client. example: Acme Inc developerUrl: type: string description: The URL of the developer who created this OAuth client. example: https://example.com avatarUrl: type: string description: A URL pointing to an image representing the OAuth client. redirectUris: type: array items: type: string description: List of redirect URIs for the OAuth client. example: ["https://example.com/callback"] published: type: boolean description: Whether the OAuth client is available to other workspaces. example: true required: - name - redirectUris responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/OAuthClient" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsCreate "/oauthClients.update": post: tags: - OAuthClients summary: Update an OAuth client description: Update an existing OAuth client's properties such as name, description, redirect URIs, or published status. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the OAuth client. format: uuid name: type: string description: Name of the OAuth client. example: My App description: type: string description: A short description of this OAuth client. example: Integrate Acme Inc's services into Outline. developerName: type: string description: The name of the developer who created this OAuth client. example: Acme Inc developerUrl: type: string description: The URL of the developer who created this OAuth client. example: https://example.com avatarUrl: type: string description: A URL pointing to an image representing the OAuth client. redirectUris: type: array items: type: string description: List of redirect URIs for the OAuth client. example: ["https://example.com/callback"] published: type: boolean description: Whether the OAuth client is available to other workspaces. example: true required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/OAuthClient" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsUpdate "/oauthClients.rotate_secret": post: tags: - OAuthClients summary: Rotate the secret for an OAuth client description: Generate a new client secret for an OAuth client. The old secret will be invalidated immediately, so ensure your application is updated to use the new secret. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the OAuth client. format: uuid required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/OAuthClient" policies: type: array items: "$ref": "#/components/schemas/Policy" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsRotateSecret "/oauthClients.delete": post: tags: - OAuthClients summary: Delete an OAuth client description: Permanently delete an OAuth client and revoke all associated access tokens. This action cannot be undone. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the OAuth client. 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" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthClientsDelete "/oauthAuthentications.list": post: tags: - OAuthAuthentications summary: List accessible OAuth authentications description: List all OAuth authentications for the current user. These represent the third-party applications that the user has authorized to access their account. responses: "200": description: OK content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - "$ref": "#/components/schemas/Sorting" - type: object properties: data: type: array items: "$ref": "#/components/schemas/OAuthAuthentication" policies: type: array items: "$ref": "#/components/schemas/Policy" pagination: "$ref": "#/components/schemas/Pagination" "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: oauthAuthenticationsList "/oauthAuthentications.delete": post: tags: - OAuthAuthentications summary: Delete an OAuth authentiation description: Revoke an OAuth authentication, removing the third-party application's access to the user's account. requestBody: content: application/json: schema: type: object properties: oauthClientId: type: string format: uuid scope: type: array items: type: string required: - oauthClientId 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: oauthAuthenticationsDelete "/revisions.info": post: tags: - Revisions summary: Retrieve a revision description: A revision is a snapshot of a document at a specific point in time. This endpoint allows you to retrieve a specific version of a document by its unique identifier. 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 description: List all revisions for a specific document. Revisions represent historical snapshots of a document's content and can be used to track changes over time. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - "$ref": "#/components/schemas/Sorting" - type: object properties: documentId: type: string format: uuid description: The document ID to retrieve revisions for 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 description: Retrieve the details of a share link by its unique identifier or by the associated document ID. Shares allow documents to be accessed publicly or by specific users. 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 description: List all share links in the workspace. requestBody: content: application/json: schema: allOf: - "$ref": "#/components/schemas/Pagination" - "$ref": "#/components/schemas/Sorting" - type: object properties: query: type: string format: uuid description: Filter to shared documents matching a search query responses: "200": description: OK content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/Share" 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: 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" 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: sharesCreate "/shares.update": post: tags: - Shares summary: Update a share description: Allows changing an existing share's 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" 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: 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 description: Stars a document or collection so it appears in the users sidebar. One of either `documentId` or `collectionId` must be provided. 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 description: List all starred documents for the authenticated user. Stars allow users to bookmark important documents for quick access in the sidebar. 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 order in the sidebar description: Update the position of a starred document in the sidebar. The index parameter determines the display order relative to other starred documents. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid index: type: string required: - id - index 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 description: Remove a star from a document, removing it from the user's starred documents list in the sidebar. 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: starsDelete "/users.invite": post: tags: - Users summary: Invite users description: Send email invitations to one or more users to join the workspace. Invitations include a link to create an account and join the workspace. 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 description: Retrieve the details of a user by their unique identifier, including their name, email, avatar, and role within the workspace. 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 workspace 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" 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: 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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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" policies: type: array items: "$ref": "#/components/schemas/Policy" "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 description: The document ID to retrieve views for 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 TextEditMode: type: string description: The editing mode for text updates to a document. enum: - append - prepend - replace 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 example: 0 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 or an emoji 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 DataAttribute: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid name: type: string description: The name of this data attribute. example: Status description: type: string description: A description of the data attribute. example: The current status of the document. dataType: "$ref": "#/components/schemas/DataAttributeDataType" options: "$ref": "#/components/schemas/DataAttributeOptions" pinned: type: boolean description: Whether this data attribute is pinned to the top of documents. 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 DataAttributeDataType: type: string description: The data type of the attribute value. enum: - string - number - boolean - list DataAttributeOptions: type: object description: Additional options for certain data attribute types. properties: icon: type: string description: An icon representing the data attribute from the outline-icons package. options: type: array description: Valid options for list data type. items: type: object properties: value: type: string description: The label/value of the option. color: type: string description: Optional color for the option. DocumentDataAttribute: type: object properties: dataAttributeId: type: string description: Unique identifier for the associated data attribute. format: uuid value: description: The value of the data attribute for this document. example: In Progress oneOf: - type: string - type: boolean - type: number updatedAt: type: string description: The date and time that this object attribute was last changed readOnly: true format: date-time 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: "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 dataAttributes: type: array nullable: true items: "$ref": "#/components/schemas/DocumentDataAttribute" 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 OAuthClient: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid name: type: string description: The name of this OAuth client. example: Acme Inc description: type: string description: A short description of this OAuth client. example: Integrate Acme Inc's services into Outline. developerName: type: string description: The name of the developer who created this OAuth client. example: Acme Inc developerUrl: type: string description: The URL of the developer who created this OAuth client. example: https://example.com avatarUrl: type: string description: A URL pointing to an image representing the OAuth client. clientId: type: string description: The client ID for the OAuth client. readOnly: true example: 2bquf8avrpdv31par42a clientSecret: type: string description: The client secret for the OAuth client. readOnly: true example: ol_sk_rapdv31... redirectUris: type: array items: type: string description: The redirect URIs for the OAuth client. example: ["https://example.com/callback"] published: type: boolean description: Whether the OAuth client is available to other workspaces. example: true createdAt: type: string format: date-time description: Date and time when this OAuth client was created readOnly: true updatedAt: type: string format: date-time description: Date and time when this OAuth client was updated readOnly: true OAuthAuthentication: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid oauthClientId: type: string description: Identifier for the associated OAuthClient. readOnly: true format: uuid userId: type: string description: Identifier for the associated User. readOnly: true format: uuid scope: type: array items: type: string lastActiveAt: type: string format: date-time description: Date and time when this authentication was last used 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" 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 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 workspace, 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 workspace, it will be displayed in the workspace switcher and in the top left of the knowledge base along with the name. sharing: type: boolean description: Whether this workspace 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 workspace has embeds in documents globally enabled. It can be disabled to reduce potential data leakage to third parties. collaborativeEditing: type: boolean description: Whether this workspace has collaborative editing in documents globally enabled. inviteRequired: type: boolean description: Whether an invite is required to join this workspace, 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 workspace 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 workspace's knowledge base can be accessed. url: type: string description: The fully qualified URL at which this workspace'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 description: The abilities that are allowed by this policy, if an array is returned then the individual ID's in the array represent the memberships that grant the ability. additionalProperties: $ref: "#/components/schemas/Ability" example: read: true update: true delete: false Ability: description: A single permission granted by a policy example: true oneOf: - type: array items: type: string - 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: BearerAuth: type: http scheme: bearer bearerFormat: JWT OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://app.getoutline.com/oauth/authorize tokenUrl: https://app.getoutline.com/oauth/token refreshUrl: https://app.getoutline.com/oauth/token scopes: read: Read access write: Write access