--- 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 allow full access to your data, you should treat them like passwords and they should never be committed to source control. ### Usage To authenticate with API, you should supply the API key as a "Bearer" token in the `Authorization` header (`Authorization: Bearer YOUR_API_KEY`). API keys can be revoked at any time by the creating user or an administrator of the workspace. If an API key is revoked, any requests made with that key will return a `401 Unauthenticated` response. ### Format All API keys always begin with `ol_api_` followed by a random string of 38 letters and numbers. ## 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: AccessRequests description: | `AccessRequests` represent a request by a user for access to a document they do not currently have permission to view. The request can be approved or dismissed by a user with permission to share the document. - 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 snapshot of a document at a point in time. They are used to keep track of editing and collaboration history – a document can also be restored to a previous revision if necessary. - 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: Templates description: | `Templates` represent reusable document templates that can be used as a starting point when creating new documents. Templates can be scoped to a specific collection or available workspace-wide. - 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: "/accessRequests.create": post: tags: - AccessRequests summary: Create an access request description: Request access to a document. The request will be sent to users with permission to share the document for approval or dismissal. requestBody: content: application/json: schema: type: object properties: documentId: type: string format: uuid description: Identifier for the document to request access to. required: - documentId responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/AccessRequest" 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: accessRequestsCreate "/accessRequests.info": post: tags: - AccessRequests summary: Retrieve an access request description: Retrieve information about an access request by `id`, or the current user's pending request for a document by `documentId`. At least one of these parameters must be provided. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid description: Unique identifier for the access request. documentId: type: string format: uuid description: Identifier for the document to find a pending request for the current user. responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/AccessRequest" 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: accessRequestsInfo "/accessRequests.approve": post: tags: - AccessRequests summary: Approve an access request description: Approve a pending access request, granting the requesting user a membership on the document with the specified permission. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid description: Unique identifier for the access request. permission: type: string description: The permission to grant the requesting user. enum: - read - read_write - admin default: read required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/AccessRequest" 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: accessRequestsApprove "/accessRequests.dismiss": post: tags: - AccessRequests summary: Dismiss an access request description: Dismiss a pending access request without granting the requesting user access to the document. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid description: Unique identifier for the access request. required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/AccessRequest" 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: accessRequestsDismiss "/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 description: Name of the file attachment. example: image.png documentId: type: string description: Identifier for the associated document, if any. format: uuid contentType: type: string description: MIME type of the file attachment. example: image/png size: type: integer minimum: 0 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 mode: type: string enum: - post - put description: Indicates which presigned upload method the server is configured to use. When `post`, the client should perform a multipart form POST using `uploadUrl` and `form`. When `put`, the client should perform a PUT request to `url` with the supplied `headers`. uploadUrl: type: string format: uri description: Present when `mode` is `post`. The endpoint to POST a multipart form upload to. form: type: object description: Present when `mode` is `post`. The form fields to include in the multipart upload, including signed credentials. url: type: string format: uri description: Present when `mode` is `put`. The presigned URL to PUT the file contents to. headers: type: object description: Present when `mode` is `put`. The HTTP headers that must be sent with the PUT request. 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: Redirect to the attachment URL "401": "$ref": "#/components/responses/Unauthenticated" "403": "$ref": "#/components/responses/Unauthorized" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: attachmentsRedirect "/attachments.delete": post: tags: - Attachments summary: Delete an attachment description: Deleting an attachment is permanent. 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. Only one of `description` or `data` may be provided. example: HR documentation is confidential and should be handled with care. data: type: object description: The collection description as a rich-text ProseMirror JSON document. Only one of `description` or `data` may be provided. 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.duplicate": post: tags: - Collections summary: Duplicate a collection description: | Duplicate an existing collection along with its published documents. The original collection's settings – icon, color, permission, sharing, and sorting – are preserved on the copy. Draft and archived documents are not duplicated. Document duplication runs asynchronously in the background, so the copy may initially be returned before all of its documents have been created. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the collection to duplicate. format: uuid name: type: string description: An optional name for the new collection. If omitted, the original collection's name is reused. 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: collectionsDuplicate "/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. Only one of `description` or `data` may be provided. example: HR documentation is confidential and should be handled with care. data: type: object description: The collection description as a rich-text ProseMirror JSON document. Only one of `description` or `data` may be provided. 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 description: Identifier for the collection format: uuid userId: type: string description: Identifier for the user to add to the collection 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 description: Identifier for the user to remove from the collection 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. Provide `anchorText` to create an inline comment attached to a specific text range in the document. 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 anchorText: type: string description: Plain text substring to anchor the comment to as an inline comment. The first occurrence in the document's plain text is used unless disambiguated by `anchorPrefix` and/or `anchorSuffix`. anchorPrefix: type: string description: Text immediately preceding `anchorText`, used to disambiguate between multiple occurrences. Requires `anchorText`. anchorSuffix: type: string description: Text immediately following `anchorText`, used to disambiguate between multiple occurrences. Requires `anchorText`. 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" - "$ref": "#/components/schemas/Sorting" 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.insights": post: tags: - Documents summary: Retrieve insights for a document description: Retrieve a chronologically sorted array of activity rollups (views, comments, reactions, revisions, editors) for a document. Recent activity is returned as daily rollups, while older activity is aggregated into weekly rollups. Insights must be enabled on the document. Defaults to the last 30 days when no date range is provided. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid description: Unique identifier for the document. startDate: type: string format: date-time description: Start of the insights window (inclusive). Defaults to 30 days ago. endDate: type: string format: date-time description: End of the insights window (inclusive). Defaults to today. required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/DocumentInsight" "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: documentsInsights "/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, html, mhtml (or mht) web pages, eml email messages, and textbundle/textpack bundles 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, PDF, or TextBundle format. The response format is determined by the Accept header (`text/markdown`, `text/html`, `application/pdf`, or `application/x-textbundle`). 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 description: Optionally filter to documents created by a specific user backlinkDocumentId: type: string format: uuid parentDocumentId: type: string format: uuid 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 maxLength: 1536000 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 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 maxLength: 1536000 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" findText: type: string description: The text to find within the document when using `patch` editMode. This text will be replaced with the value of `text`. Required when `editMode` is `patch`. 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 create a 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/Template" 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 permanently 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 description: Identifier for the group format: uuid userId: type: string description: Identifier for the user to add to the group 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 group format: uuid userId: type: string description: Identifier for the user to remove from the group 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. requestBody: content: application/json: schema: "$ref": "#/components/schemas/Pagination" responses: "200": description: OK content: application/json: schema: 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" "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. requestBody: content: application/json: schema: "$ref": "#/components/schemas/Pagination" responses: "200": description: OK content: application/json: schema: 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" "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/RevisionDetail" "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. The `data` and `text` fields are omitted from listed revisions for performance; use `revisions.info` to retrieve the full content of a specific revision. 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 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 or collection. If you request multiple shares for the same resource with the same API key, the same share object will be returned. By default all shares are unpublished. Exactly one of `documentId` or `collectionId` must be provided. requestBody: content: application/json: schema: type: object properties: documentId: type: string format: uuid description: Identifier for the document to share. Mutually exclusive with `collectionId`. collectionId: type: string format: uuid description: Identifier for the collection to share. Mutually exclusive with `documentId`. oneOf: - required: - documentId - required: - collectionId 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 title: type: string maxLength: 255 nullable: true description: Override title displayed on the publicly shared page. If not set the source document or collection title is used. iconUrl: type: string format: uri maxLength: 4096 nullable: true description: URL of an icon to display on the publicly shared page, overriding the workspace branding. 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" suppressEmail: type: boolean description: If true, the invitation emails will not be sent to the invited users. Defaults to false. 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 includeSuspended: type: boolean description: Whether to include views from suspended users default: false 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" "404": "$ref": "#/components/responses/NotFound" "429": "$ref": "#/components/responses/RateLimited" operationId: viewsCreate "/templates.create": post: tags: - Templates summary: Create a template description: Create a new template that can be used as a starting point for new documents. Templates can optionally be scoped to a specific collection. requestBody: content: application/json: schema: type: object properties: id: type: string format: uuid description: Optionally provide a specific UUID for the template. title: type: string description: The title of the template. minLength: 1 maxLength: 255 data: type: object description: The body of the template as a Prosemirror document. icon: type: string description: An emoji to use as the template icon. nullable: true color: type: string description: The color of the template icon in hex format. nullable: true pattern: "^#[0-9A-Fa-f]{6}$" collectionId: type: string format: uuid description: Identifier for the collection to which the template belongs. required: - title - data responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/Template" 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: templatesCreate "/templates.list": post: tags: - Templates summary: List all templates description: List all templates available to the current user. Optionally filter by collection. Templates not associated with a collection are workspace-wide. 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 query: type: string description: Search query to filter templates by title responses: "200": description: OK content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/Template" 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: templatesList "/templates.info": post: tags: - Templates summary: Retrieve a template description: Retrieve a template by its unique identifier. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the template. 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/Template" 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: templatesInfo "/templates.update": post: tags: - Templates summary: Update a template description: Update an existing template by its unique identifier. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the template. Either the UUID or the urlId is acceptable. title: type: string description: The title of the template. data: type: object description: The body of the template as a Prosemirror document. icon: type: string description: An emoji to use as the template icon. nullable: true color: type: string description: The color of the template icon in hex format. nullable: true pattern: "^#[0-9A-Fa-f]{6}$" fullWidth: type: boolean description: Whether the template should be displayed full width. collectionId: type: string format: uuid description: Identifier for the collection to which the template belongs. Set to null for a workspace-wide template. nullable: true required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/Template" 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: templatesUpdate "/templates.delete": post: tags: - Templates summary: Delete a template description: Delete a template by its unique identifier. This will soft-delete the template, it can be restored later. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the template. Either the UUID or the urlId is acceptable. required: - id responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean "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: templatesDelete "/templates.restore": post: tags: - Templates summary: Restore a template description: Restore a previously deleted template by its unique identifier. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the template. 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/Template" 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: templatesRestore "/templates.duplicate": post: tags: - Templates summary: Duplicate a template description: Create a copy of an existing template. Optionally override the title and target collection. requestBody: content: application/json: schema: type: object properties: id: type: string description: Unique identifier for the template to duplicate. Either the UUID or the urlId is acceptable. title: type: string description: Override the title of the duplicated template. collectionId: type: string format: uuid description: Identifier for the collection to place the duplicated template in. If not provided, uses the original template's collection. nullable: true required: - id responses: "200": description: OK content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/Template" 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: templatesDuplicate components: schemas: Permission: type: string enum: - read - read_write TextEditMode: type: string description: The editing mode for text updates to a document. When set to `patch`, the `findText` parameter is required and the existing occurrence of `findText` will be replaced with the value of `text`. enum: - append - prepend - replace - patch AccessRequest: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid documentId: type: string description: Identifier for the document this request is for. format: uuid userId: type: string description: Identifier for the user that made the request. format: uuid user: "$ref": "#/components/schemas/User" teamId: type: string description: Identifier for the workspace the request belongs to. format: uuid status: type: string description: The current status of the access request. enum: - pending - approved - dismissed responderId: type: string description: Identifier for the user that responded to the request, if any. format: uuid nullable: true responder: "$ref": "#/components/schemas/User" respondedAt: type: string description: The date and time the request was responded to, if any. format: date-time nullable: 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 Attachment: type: object properties: contentType: type: string example: image/png size: type: string description: >- The size of the attachment in bytes. Returned as a string as the value may exceed the safe integer range. name: type: string url: type: string format: uri documentId: type: string description: Identifier for the associated document, if any. format: uuid nullable: true userId: type: string description: Identifier for the user that created the attachment. 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 url: type: string description: The relative URL path at which the collection can be accessed. readOnly: true 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 nullable: true description: A description of the collection, may contain markdown formatting example: "" data: type: object nullable: true description: The collection description as rich-text JSON, when available. 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 nullable: true description: The position of the collection in the sidebar example: P color: type: string nullable: true 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 nullable: true description: A string that represents an icon in the outline-icons package or an emoji permission: "$ref": "#/components/schemas/Permission" templateManagement: "$ref": "#/components/schemas/Permission" sharing: type: boolean description: Whether public document sharing is enabled in this collection default: false commenting: type: boolean nullable: true description: Whether commenting is enabled in this collection 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" sourceMetadata: type: object nullable: true description: Metadata about the external source this collection was imported from, if any. properties: externalId: type: string externalName: type: string createdByName: type: string 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" createdById: type: string description: Identifier for the user who created this comment. format: uuid readOnly: true updatedAt: type: string description: The date and time that this object was last changed readOnly: true format: date-time resolvedAt: type: string description: The date and time that this comment was resolved, if it has been. format: date-time nullable: true readOnly: true resolvedBy: allOf: - nullable: true - "$ref": "#/components/schemas/User" resolvedById: type: string description: Identifier for the user who resolved this comment, if any. format: uuid nullable: true readOnly: true reactions: type: array description: List of emoji reactions on this comment. items: type: object readOnly: true 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 nullable: true parentDocumentId: type: string description: Identifier for the document this is a child of, if any. format: uuid nullable: true 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. icon: type: string nullable: true description: An emoji or icon associated with the document. example: "\U0001F389" color: type: string nullable: true description: The color of the document icon in hex format. text: type: string description: The text content of the document, contains markdown formatting example: "…" data: type: object nullable: true description: The body of the document as a Prosemirror document, returned in place of text when requested. url: type: string description: A URL path to access the document. readOnly: true urlId: type: string description: A short unique ID that can be used to identify the document as an alternative to the UUID example: hDYep1TPAM collaboratorIds: type: array description: Identifiers of users who have edited the document. items: type: string format: uuid tasks: type: object description: Task completion counts for the document. properties: completed: type: number total: type: number 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 nullable: true 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 DocumentInsight: type: object description: A rollup of activity counts for a document over a daily or weekly period. properties: date: type: string format: date description: The UTC day the rollup represents. For weekly rollups this is the first day (Monday) of the week. period: type: string description: The length of time the rollup covers. Daily rollups are stored for recent activity, older rollups are aggregated into weekly buckets. enum: - day - week viewCount: type: integer description: Total number of document views on this day. viewerCount: type: integer description: Number of unique viewers on this day. commentCount: type: integer description: Total comments made on this day. reactionCount: type: integer description: Total reactions added on this day. revisionCount: type: integer description: Number of document revisions on this day. editorCount: type: integer description: Number of unique editors on this day. 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 userId: type: string description: Identifier for the user associated with the event, if any. format: uuid readOnly: true actorId: type: string description: The user that performed the action. format: uuid readOnly: true authType: type: string description: The authentication method used to perform the action. enum: - api - app - mcp - oauth nullable: true 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 changes: type: object nullable: true description: The set of changes made by this event. This field is only returned when the `auditLog` boolean is true. 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 format: type: string description: The file format of the resulting file. example: outline-markdown readOnly: true name: type: string description: >- The name of the file operation, derived from the collection name, document title, or file name. readOnly: true state: type: string description: The state of the file operation. example: complete readOnly: true enum: - creating - uploading - complete - error - expired error: type: string nullable: true description: An error message if the file operation failed. readOnly: true size: type: string description: >- The size of the resulting file in bytes. Returned as a string as the value may exceed the safe integer range. readOnly: true example: "2048" collectionId: type: string nullable: true description: >- Identifier for the associated collection, if the file operation is scoped to a single collection. readOnly: true format: uuid documentId: type: string nullable: true description: >- Identifier for the associated document, if the file operation is scoped to a single document. readOnly: true format: uuid user: "$ref": "#/components/schemas/User" 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 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 description: type: string nullable: true description: A short description of this group. externalId: type: string nullable: true description: An identifier for this group in an external system, if linked. disableMentions: type: boolean description: Whether mentioning this group is disabled. externalGroup: type: object nullable: true description: Details of the linked external group, if any. 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 nullable: true description: A short description of this OAuth client. example: Integrate Acme Inc's services into Outline. developerName: type: string nullable: true description: The name of the developer who created this OAuth client. example: Acme Inc developerUrl: type: string nullable: true description: The URL of the developer who created this OAuth client. example: https://example.com avatarUrl: type: string nullable: true 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... clientType: type: string description: The type of the OAuth client. readOnly: true enum: - public - confidential 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 lastActiveAt: type: string format: date-time nullable: true description: Date and time when this OAuth client was last used. readOnly: 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 oauthClient: type: object readOnly: true description: A reduced, public representation of the associated OAuth client. properties: name: type: string description: type: string nullable: true developerName: type: string nullable: true developerUrl: type: string nullable: true avatarUrl: type: string nullable: true clientId: type: string published: type: boolean 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 createdAt: type: string format: date-time description: Date and time when this authentication was created readOnly: true Revision: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid documentId: type: string description: Identifier for the associated document. readOnly: true format: uuid title: type: string description: Title of the document. readOnly: true name: type: string nullable: true description: The name of the revision, if any. readOnly: true icon: type: string nullable: true description: An emoji or icon associated with the revision. readOnly: true color: type: string nullable: true description: The color of the revision icon in hex format. readOnly: true collaborators: type: array items: "$ref": "#/components/schemas/User" createdAt: type: string format: date-time description: Date and time when this revision was created readOnly: true createdBy: "$ref": "#/components/schemas/User" createdById: type: string description: Identifier for the user who created this revision. format: uuid readOnly: true deletedAt: type: string format: date-time nullable: true description: Date and time when this revision was deleted, if applicable. readOnly: true RevisionDetail: allOf: - "$ref": "#/components/schemas/Revision" - type: object properties: data: type: object description: The body of the revision as a Prosemirror document. readOnly: true text: type: string description: Body of the document, may contain markdown formatting readOnly: true 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 sourceTitle: type: string description: Title of the shared document or collection. readOnly: true sourcePath: type: string description: Path of the shared document or collection. readOnly: true documentId: type: string format: uuid nullable: true description: Identifier of the shared document, if any. readOnly: true collectionId: type: string format: uuid nullable: true description: Identifier of the shared collection, if any. readOnly: true urlId: type: string nullable: true description: Short URL identifier for the share, if set. readOnly: true url: type: string format: uri description: URL of the publicly shared document. readOnly: true domain: type: string nullable: true description: Custom domain the share is served on, if any. title: type: string maxLength: 255 nullable: true description: Override title displayed on the publicly shared page. If not set the source document or collection title is used. iconUrl: type: string format: uri maxLength: 4096 nullable: true description: URL of an icon displayed on the publicly shared page, overriding the workspace branding. 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. allowSubscriptions: type: boolean example: true description: Whether visitors to the public share can subscribe to receive email notifications when the document is updated. Requires SMTP to be configured on the workspace. allowIndexing: type: boolean description: Whether the shared page may be indexed by search engines. showLastUpdated: type: boolean description: Whether to show the last-updated time on the shared page. showTOC: type: boolean description: Whether to show a table of contents on the shared page. views: type: number description: The number of times the shared page has been viewed. readOnly: true createdAt: type: string format: date-time description: Date and time when this share was created readOnly: true createdBy: allOf: - "$ref": "#/components/schemas/User" nullable: true description: The user that created the share. Only returned to viewers with access to read the share; omitted from responses to unauthenticated viewers of a published share, and when the creating user has been deleted. readOnly: true updatedAt: type: string format: date-time description: Date and time when this share was edited readOnly: true lastAccessedAt: type: string format: date-time nullable: true description: Date and time when this share was last viewed. Only returned to workspace admins. 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 nullable: true collectionId: type: string description: Unique identifier for the starred collection. readOnly: true format: uuid nullable: true createdAt: type: string format: date-time description: Date and time when this star was created readOnly: true updatedAt: type: string format: date-time description: Date and time when this star was last changed 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 necessary. description: type: string nullable: true description: A short description of this workspace. 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. memberTeamCreate: type: boolean description: Whether members are allowed to create new groups. If false then only admins can create groups. 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. 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. domain: type: string nullable: true description: The custom domain configured for this workspace, if any. url: type: string description: The fully qualified URL at which this workspace's knowledge base can be accessed. readOnly: true format: uri passkeysEnabled: type: boolean description: Whether passkey authentication is enabled for this workspace. preferences: type: object nullable: true description: Workspace-level preference flags. guidanceMCP: type: string nullable: true description: Guidance text provided to MCP integrations. 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 necessary. 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. color: type: string description: A color representing the user, used in the UI for avatars without an image. readOnly: true 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 necessary. format: email readOnly: true role: "$ref": "#/components/schemas/UserRole" isSuspended: type: boolean description: Whether this user has been suspended. readOnly: true lastActiveAt: type: string nullable: true description: The last time this user made an API request, this value is updated at most every 5 minutes. readOnly: true format: date-time timezone: type: string nullable: true description: The timezone this user has registered. 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 updatedAt: type: string description: The date and time that this user was last updated. readOnly: true format: date-time deletedAt: type: string nullable: true description: The date and time that this user was deleted, if applicable. 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 documentId: type: string description: Identifier for the associated document, if any. readOnly: true format: uuid nullable: true collectionId: type: string description: Identifier for the associated collection, if any. readOnly: true format: uuid nullable: true permission: "$ref": "#/components/schemas/Permission" createdById: type: string description: Identifier for the user who created this membership. readOnly: true format: uuid sourceId: type: string description: Identifier for the membership this one was inherited from, if any. readOnly: true format: uuid nullable: true index: type: string description: The position of the collection in the user's sidebar. nullable: true 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 - mcp 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 documentId: type: string description: Identifier for the associated document, if any. readOnly: true format: uuid nullable: true collectionId: type: string description: Identifier for the associated collection, if any. readOnly: true format: uuid nullable: true permission: "$ref": "#/components/schemas/Permission" sourceId: type: string description: Identifier for the membership this one was inherited from, if any. readOnly: true format: uuid nullable: true 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 documentId: type: string description: Identifier for the associated document, if any. readOnly: true format: uuid nullable: true collectionId: type: string description: Identifier for the associated collection, if any. readOnly: true format: uuid nullable: true permission: "$ref": "#/components/schemas/Permission" sourceId: type: string description: Identifier for the membership this one was inherited from, if any. readOnly: true format: uuid nullable: true Template: type: object properties: id: type: string description: Unique identifier for the object. readOnly: true format: uuid url: type: string description: A URL path to access the template. readOnly: true urlId: type: string description: A short unique identifier for the template used in URLs. readOnly: true title: type: string description: The title of the template. data: type: object description: The body of the template as a Prosemirror document. icon: type: string description: An emoji to use as the template icon. nullable: true color: type: string description: The color of the template icon in hex format. nullable: true fullWidth: type: boolean description: Whether the template should be displayed full width. collectionId: type: string description: Identifier for the associated collection, if any. format: uuid nullable: true createdAt: type: string description: The date and time that the template was created. readOnly: true format: date-time createdBy: "$ref": "#/components/schemas/User" updatedAt: type: string description: The date and time that the template was last changed. readOnly: true format: date-time updatedBy: "$ref": "#/components/schemas/User" deletedAt: type: string description: The date and time that the template was deleted. readOnly: true format: date-time nullable: true publishedAt: type: string nullable: true description: The date and time that the template was published. readOnly: true format: date-time 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 userId: type: string format: uuid description: Identifier of the user who viewed the document. 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