openapi: 3.0.3 info: title: Lucid REST API version: '1.0' description: The Lucid REST API provides programmatic access to manage documents, users, folders, sharing, licensing, and audit logs across the Lucid Suite (Lucidchart, Lucidspark, and Lucidscale). Authenticate via OAuth 2.0 or API key. contact: name: Lucid Developer Platform url: https://developer.lucid.co/ x-documentation: https://developer.lucid.co/reference/api x-harvest: harvested: '2026-08-01' method: searched source: https://lucid-developer-docs.readme.io/mcp note: 'Assembled operation-by-operation from Lucid''s own documentation MCP server (tools list-endpoints + get-endpoint), which returns verbatim OpenAPI 3.0.3 fragments out of the spec Lucid uploaded to its ReadMe hub (/branches/1.4/apis/lucid-rest-api.json). Paths, operations, parameters, request bodies, responses, components and securitySchemes are provider content, unmodified. Only the info block is ours: ReadMe''s per-endpoint fragments omit info, so title/description are copied verbatim from the provider''s own list-specs description for this spec.' servers: - url: https://api.lucid.co tags: - name: OAuth 2.0 Tokens description: Create, refresh, introspect, and revoke OAuth 2.0 access tokens used to authenticate API requests on behalf of a user. - name: Accounts description: Retrieve information about the authenticated Lucid account. - name: Document Access description: Create, import, copy, retrieve, update, search, export, and trash documents across the Lucid Suite, and access their contents. - name: Legal Holds description: Create and manage legal holds on a Lucid account. Legal holds prevent documents from being permanently deleted for users placed on hold. - name: Documents Collaboration description: Manage user and team collaborator access on individual documents, including granting, updating, and revoking collaboration roles. - name: Folders Collaboration description: Manage user, group, and team collaborator access on folders, including granting, updating, and revoking collaboration roles. - name: Document Embedding description: Generate session tokens and render the embedded viewer iframe used to display Lucid documents in external applications. - name: Folders description: Create, retrieve, update, search, trash, and restore folders. Includes listing folder contents and root folder navigation. - name: Documents Sharing description: Create, retrieve, update, and delete share links for documents to control external access. - name: Folders Sharing description: Create, retrieve, update, and delete share links for folders to control external access. - name: Transfer Content description: Transfer ownership of a user's documents, folders, custom shape libraries, and Lucidscale objects to another user within the same account. - name: Users description: Retrieve, create, and search for users within the authenticated account. Includes user profile access. - name: Unfurling description: Retrieve metadata for Lucid document links to power rich previews, and serve direct iframe embeds for Lucid documents in external applications. - name: Embedding Utils description: Create, retrieve, delete, and change the version of embed instances on a document. - name: Document Picker description: Generate tokens and render an embedded document picker that lets users select Lucid documents from within your application. - name: Audit Logs description: Retrieve audit log events that record user and admin activity across the Lucid account. - name: Teams description: Create, retrieve, update, archive, and restore teams. Manage team membership by adding and removing users. - name: Cloud description: Manage cloud infrastructure credentials, data sources, and architecture diagrams for AWS, Azure, and Google Cloud. - name: Repositories description: Create and manage shared document repositories. Control repository membership by adding and removing users and groups. - name: Document Comments description: Retrieve comment threads on a document, list comments within a thread, and post new comments to an existing thread. - name: Subscriptions description: List and retrieve product subscriptions on the account. - name: Licenses description: View and manage product licenses assigned to users within a subscription. paths: /v1/oauth2/token: post: summary: Create or Refresh Access Token operationId: createOrRefreshAccessToken tags: - OAuth 2.0 Tokens security: - OAuth2: [] requestBody: required: true content: application/json: schema: oneOf: - type: object required: - code - client_id - client_secret - grant_type - redirect_uri properties: code: type: string description: The authorization code. client_id: type: string description: The client ID. client_secret: type: string description: The client secret. grant_type: type: string description: Value is always "authorization_code". redirect_uri: type: string description: The redirect URI used to get the authorization code. - type: object required: - refresh_token - client_id - client_secret - grant_type properties: refresh_token: type: string description: The current refresh token. client_id: type: string description: The client ID. client_secret: type: string description: The client secret. grant_type: type: string description: Value is always "refresh_token". responses: '200': description: OK application/json with the access token and refresh token (if the offline_access scope was included for creating access token). content: application/json: schema: $ref: '#/components/schemas/OAuth2Token' '401': description: Unauthorized if the client credentials are invalid. /v1/oauth2/token/introspect: post: summary: Introspect Access Token operationId: introspectAccessToken tags: - OAuth 2.0 Tokens security: - OAuth2: [] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - client_id - client_secret - token properties: client_id: type: string description: The client ID. client_secret: type: string description: The client secret. token: type: string description: The token to inspect. responses: '200': description: OK with information about the token, as specified in OAuth2 Introspect Token content: application/json: schema: $ref: '#/components/schemas/OAuth2IntrospectToken' '401': description: Unauthorized if the client credentials are invalid. /v1/oauth2/token/revoke: post: summary: Revoke Access Token description: Regardless of which token is revoked, all tokens from that authorization grant will become invalid. operationId: revokeAccessToken tags: - OAuth 2.0 Tokens security: - OAuth2: [] requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object required: - client_id - client_secret - token properties: client_id: type: string description: The client ID. client_secret: type: string description: The client secret. token: type: string description: The token to revoke. responses: '200': description: OK if the client credentials are valid. '401': description: Unauthorized if the client credentials are invalid. /v1/accounts/me: get: summary: Get Account Information description: Retrieves basic information about the authenticated account. operationId: getAccountInformation tags: - Accounts security: - ApiKey: - AccountReadonly - OAuth2: - account.info responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountInformationResource' '403': description: Forbidden /v1/accounts/me/classifications: get: summary: Get Classifications description: Returns the paginated list of classifications configured for the authenticated account. Deleted classifications are excluded from results. operationId: getClassifications tags: - Accounts security: - ApiKey: - AccountReadonly - OAuth2: - account.info responses: '200': description: OK. Returns a list of classifications for the account. content: application/json: schema: type: array items: $ref: '#/components/schemas/Classification' '403': description: Forbidden. Token does not have the required scope. /v1/accounts/me/documents/search: post: summary: Search Account Documents description: Returns a list of all documents belonging to the requesting user's account, sorted by created date. This API is exclusive to Enterprise Shield accounts. The endpoint supports pagination and has a per-account rate limit of 300 requests per 5 seconds. operationId: SearchAccountDocuments tags: - Document Access security: - ApiKey: - DocumentAdmin - OAuth2: - lucidchart.document.content:admin.readonly - lucidspark.document.content:admin.readonly - lucidscale.document.content:admin.readonly parameters: - $ref: '#/components/parameters/RequestAs-AccountDocuments' requestBody: required: true content: application/json: schema: type: object properties: userIds: type: array items: type: number description: 'When provided, limit the search to documents that at least one specified user can access. If no list is provided, search across the entire account. ' ownedByUsers: type: boolean description: When true, search results will only include documents owned by users specified by userIds. Ignored if no userIds are provided. documentIds: type: array items: type: string format: uuid description: List of documentIds to filter by. classificationIds: type: array items: type: string format: uuid description: List of classificationIds to filter by. statusIds: type: array items: type: number description: List of statusIds to filter by. createdStartTime: type: string format: date-time description: Start of range to filter documents by created time. createdEndTime: type: string format: date-time description: End of range to filter documents by created time. lastModifiedStartTime: type: string format: date-time description: Start of range to filter documents by last modified time. lastModifiedEndTime: type: string format: date-time description: End of range to filter documents by last modified time. product: type: array items: $ref: '#/components/schemas/Product' description: Array of Lucid Suite products to filter by. Default value assumes all valid products for the given scopes. default: - lucidchart - lucidscale - lucidspark keywords: type: string description: Keyword(s) to search against document content and titles. When provided, results will be sorted by relevance to keyword search. Use quotes to search for exact phrases (e.g. "Project X") documentLocation: type: string enum: - team folders - users - deleted - repositories description: Specify to search for documents in team folders, owned by users, deleted, or contained within repositories externalAccess: type: string enum: - any - external-collaborators - external-links description: Specify to search for documents with either “any” type of external access, “external-collaborators”, or "external-links" responses: '200': description: With paginated list of Account Documents content: application/json: schema: type: array items: $ref: '#/components/schemas/AccountDocument' '400': description: Bad Request if incorrect format '403': description: Forbidden if "product" query parameter is used and the token’s scopes do not contain the matching readonly scope for each product, or account does not have access to the API '429': description: Too Many Requests if account makes more than 300 requests in 5 seconds /v1/accounts/me/legalHolds: post: summary: Create Legal Hold description: Creates a new legal hold on an Enterprise Shield account with specified parameters including title, description, keywords, and start/end times. operationId: createLegalHold tags: - Legal Holds security: - ApiKey: - LegalHoldEdit - OAuth2: - account.legalhold requestBody: required: true content: application/json: schema: type: object properties: Title: type: string description: Title that should be given to the newly created legal hold. Max length of title is 80 characters. StartTime: type: string format: date-time description: Time that the legal hold should start. Must not be in the past. EndTime: type: string format: date-time description: Time that the legal hold should end. End time must be greater than or equal to 24 hours after the start time. Description: type: string description: Description that should be given to the newly created legal hold. Max length of description is 256 characters. Keywords: type: string description: 'Keyword(s) to search against document content and titles. Note: When provided, only relevant results will be added to the legal hold. Empty strings will be treated the same as when no keywords are provided. Max length of keywords is 400 characters.' required: - Title - StartTime - EndTime responses: '201': description: With the newly created legal hold. content: application/json: schema: $ref: '#/components/schemas/LegalHold' '400': description: Incorrect format or invalid parameters. '403': description: Account does not have permission to access the API. get: summary: Get Legal Holds description: Retrieves all legal holds configured for the authenticated account. The results are paginated. operationId: getLegalHolds tags: - Legal Holds security: - ApiKey: - LegalHoldReadonly - OAuth2: - account.legalhold - account.legalhold:readonly responses: '200': description: With paginated list of legal holds. content: application/json: schema: type: array items: $ref: '#/components/schemas/LegalHold' '403': description: Account does not have permission to access the API. /v1/accounts/me/legalHolds/{legalHoldId}/users/add: post: summary: Add Legal Hold Users description: Adds users to a specified legal hold. This action can only be performed for legal holds that have not yet started. operationId: addLegalHoldUsers tags: - Legal Holds security: - ApiKey: - LegalHoldEdit - OAuth2: - account.legalhold - account.legalhold.users parameters: - $ref: '#/components/parameters/LegalHoldIdPath' requestBody: required: true content: application/json: schema: type: object properties: Users: type: array items: type: number description: List of user ids for users to be put on the specified legal hold. Users must belong to the admin’s account. Max number of users per request is 200. required: - Users responses: '204': description: Users were correctly added to the legal hold. '400': description: Incorrect format or invalid parameters. '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/accounts/me/legalHolds/{legalHoldId}/users/remove: post: summary: Remove Legal Hold Users description: Removes users from a specified legal hold. This action can only be performed for legal holds that have not yet started. operationId: removeLegalHoldUsers tags: - Legal Holds security: - ApiKey: - LegalHoldEdit - OAuth2: - account.legalhold - account.legalhold.users parameters: - $ref: '#/components/parameters/LegalHoldIdPath' requestBody: required: true content: application/json: schema: type: object properties: Users: type: array items: type: number description: List of user ids for users to be removed from the specified legal hold. Users must belong to the admin’s account. Max number of users per request is 200. required: - Users responses: '204': description: Users were correctly removed from the legal hold. '400': description: Incorrect format or invalid parameters. '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/accounts/me/legalHolds/{legalHoldId}: patch: summary: Edit Legal Hold description: Modifies an existing legal hold, allowing changes to the title, description, and end time. If the legal hold has not yet started, the start time and keywords can also be updated. operationId: editLegalHold tags: - Legal Holds security: - ApiKey: - LegalHoldEdit - OAuth2: - account.legalhold parameters: - $ref: '#/components/parameters/LegalHoldIdPath' requestBody: required: true content: application/json: schema: type: object properties: Title: type: string description: The new title for the legal hold (the existing one will be replaced). Max length of title is 80 characters. StartTime: type: string format: date-time description: The new time that the legal hold will begin. Must be at least 24 hours before the end time and cannot be in the past. Cannot be changed if the legal hold has already started. EndTime: type: string format: date-time description: The new time that the legal hold will end and documents on the legal hold will be released. Must be at least 24 hours after the start time and cannot be in the past. Description: type: string description: The new description for the legal hold (the existing one will be replaced). Max length of description is 256 characters. Keywords: type: string description: The new keywords for the legal hold (any existing ones will be replaced). Max length of keywords is 400 characters. Cannot be changed if the legal hold has already started. responses: '200': description: With the legal hold that was successfully modified. content: application/json: schema: $ref: '#/components/schemas/LegalHold' '400': description: Incorrect format or invalid parameters. '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/accounts/me/legalHolds/{legalHoldId}/release: post: summary: Release Legal Hold description: Releases a legal hold specified by the legalHoldId. Once released, it may take up to 24 hours for the documents to be fully removed from the legal hold restriction. operationId: releaseLegalHold tags: - Legal Holds security: - ApiKey: - LegalHoldEdit - OAuth2: - account.legalhold parameters: - $ref: '#/components/parameters/LegalHoldIdPath' responses: '200': description: With the legal hold that was released. content: application/json: schema: $ref: '#/components/schemas/LegalHold' '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/accounts/me/legalHolds/{legalHoldId}/users: get: summary: Get Legal Hold Users description: Retrieves a paginated list of all users associated with a specified legal hold. operationId: getLegalHoldUsers tags: - Legal Holds security: - ApiKey: - LegalHoldReadonly - OAuth2: - account.legalhold - account.legalhold:readonly - account.legalhold.users - account.legalhold.users:readonly parameters: - $ref: '#/components/parameters/LegalHoldIdPath' responses: '200': description: With paginated list of Users. content: application/json: schema: type: array items: $ref: '#/components/schemas/User' '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/accounts/me/legalHoldDocuments/{legalHoldId}: get: summary: Get Legal Hold Documents description: Retrieves a paginated list of all documents associated with a specified legal hold. Documents may continue to appear for up to 24 hours after users are removed from the legal hold, as the system processes the release asynchronously. operationId: getLegalHoldDocuments tags: - Legal Holds security: - ApiKey: - LegalHoldReadonly - OAuth2: - account.legalhold - account.legalhold:readonly parameters: - $ref: '#/components/parameters/LegalHoldIdPath' responses: '200': description: With paginated list of Documents. content: application/json: schema: type: array items: $ref: '#/components/schemas/Document' '403': description: Account does not have permission to access the API. '404': description: The specified legal hold id was not found. /v1/documents/{id}/shares/users/{userId}: get: summary: Get Document User Collaborator description: Retrieves information about a specific user's collaboration access level for a given document, including the sharing permissions and role that the user has been granted. operationId: getDocumentUserCollaborators tags: - Documents Collaboration security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content.share.collaborator:readonly - lucidchart.document.app.picker.share.collaborator:readonly - lucidchart.document.app.folder - lucidscale.document.content.share.collaborator:readonly - lucidscale.document.app.picker.share.collaborator:readonly - lucidscale.document.app.folder - lucidspark.document.content.share.collaborator:readonly - lucidspark.document.app.picker.share.collaborator:readonly - lucidspark.document.app.folder parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: userId required: true description: ID of the user to retrieve collaborator settings for. schema: type: number responses: '200': description: OK with a Document User Collaborator Resource containing information about the user's collaboration settings. content: application/json: schema: $ref: '#/components/schemas/DocumentUserCollaborator' '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted, or does not exist. '404': description: Not Found when a user with the specified ID can not be found or does not have collaborator access to the document. put: summary: Create/Update Document User Collaborator description: Updates the collaborator role for a user on a document. If the user did not previously have access to the document, they will be granted access and a new collaborator record will be created. operationId: putDocumentUserCollaborators tags: - Documents Collaboration security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content.share.collaborator - lucidchart.document.app.picker.share.collaborator - lucidchart.document.app.folder - lucidscale.document.content.share.collaborator - lucidscale.document.app.picker.share.collaborator - lucidscale.document.app.folder - lucidspark.document.content.share.collaborator - lucidspark.document.app.picker.share.collaborator - lucidspark.document.app.folder parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: userId required: true description: ID of the user to retrieve collaborator settings for. schema: type: number requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - editandshare - edit - comment - view example: comment description: The Collaborator Role to assign to the user for this document. responses: '200': description: OK when updating an existing Document User Collaborator. Contains the updated Document User Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/DocumentUserCollaborator' '201': description: Created when creating a new Document User Collaborator. Contains the new Document User Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/DocumentUserCollaborator' '403': description: Forbidden if the token does not have permission to the document, or if the document has been deleted or does not exist. delete: summary: Delete Document User Collaborator description: Revokes all collaborator access to a document for the given user. The user may still have access to the document through other means such as shared folders. Cannot be used to remove the document owner's access. operationId: deleteDocumentUserCollaborators tags: - Documents Collaboration security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content.share.collaborator - lucidchart.document.app.picker.share.collaborator - lucidchart.document.app.folder - lucidscale.document.content.share.collaborator - lucidscale.document.app.picker.share.collaborator - lucidscale.document.app.folder - lucidspark.document.content.share.collaborator - lucidspark.document.app.picker.share.collaborator - lucidspark.document.app.folder parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: userId required: true description: ID of the user to retrieve collaborator settings for. schema: type: number responses: '204': description: No Content when the user's collaborator record on the document was successfully deleted. '403': description: Forbidden * if the token does not have permission to the document, or if the document has been deleted or does not exist. * when attempting to revoke the collaboration for the document owner. /v1/documents/{id}/shares/users: get: summary: List Document User Collaborators description: Retrieves information about all collaborators on the provided document. Supports pagination for managing large result sets. operationId: listDocumentUserCollaborators tags: - Documents Collaboration security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content.share.collaborator:readonly - lucidchart.document.app.picker.share.collaborator:readonly - lucidchart.document.app.folder - lucidscale.document.content.share.collaborator:readonly - lucidscale.document.app.picker.share.collaborator:readonly - lucidscale.document.app.folder - lucidspark.document.content.share.collaborator:readonly - lucidspark.document.app.picker.share.collaborator:readonly - lucidspark.document.app.folder parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid responses: '200': description: OK with an array of Document User Collaborator Resources for the document's collaborators. content: application/json: schema: type: array items: $ref: '#/components/schemas/DocumentUserCollaborator' '403': description: Forbidden if the token does not have permission to the document, or if the document has been deleted or does not exist. /v1/documents/{id}/shares/teams/{teamId}: get: summary: Get Document Team Collaborator description: Returns information about the given team's collaboration on the given document, including the team's access and collaboration permissions. operationId: getDocumentTeamCollaborator tags: - Documents Collaboration security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.app.folder - lucidchart.document.app.picker.share.collaborator:readonly - lucidchart.document.content.share.collaborator:readonly - lucidscale.document.app.folder - lucidscale.document.app.picker.share.collaborator:readonly - lucidscale.document.content.share.collaborator:readonly - lucidspark.document.app.folder - lucidspark.document.app.picker.share.collaborator:readonly - lucidspark.document.content.share.collaborator:readonly parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: teamId required: true description: ID of the team to retrieve collaborator settings for. schema: type: number example: 99 responses: '200': description: OK. Returns a Document Team Collaborator Resource containing information about the team's collaboration settings. content: application/json: schema: $ref: '#/components/schemas/DocumentTeamCollaborator' '403': description: Forbidden. Occurs if the app making the request does not have permission for the document, or if the document has been deleted or does not exist. '404': description: Not Found. Occurs when a team with the specified ID can not be found or does not have collaborator access to the document. put: summary: Create/Update Document Team Collaborator description: Updates the details of the given team's collaboration on the given document, or adds the team as a collaborator on the document if it isn't already a collaborator. operationId: putDocumentTeamCollaborator tags: - Documents Collaboration security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.app.folder - lucidchart.document.app.picker.share.collaborator - lucidchart.document.content.share.collaborator - lucidscale.document.app.folder - lucidscale.document.app.picker.share.collaborator - lucidscale.document.content.share.collaborator - lucidspark.document.app.folder - lucidspark.document.app.picker.share.collaborator - lucidspark.document.content.share.collaborator parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: teamId required: true description: ID of the team to retrieve collaborator settings for. schema: type: number example: 99 requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - editandshare - edit - comment - view example: comment description: The Collaborator Role to assign to the user for this document. responses: '200': description: OK when updating an existing Document Team Collaborator. Contains the updated Document Team Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/DocumentTeamCollaborator' '201': description: Created when creating a new Document Team Collaborator. Contains the new Document Team Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/DocumentTeamCollaborator' '403': description: Forbidden if the token does not have permission to the document, or if the document has been deleted or does not exist. delete: summary: Delete Document Team Collaborator description: Removes the given team as a collaborator on the given document. operationId: deleteDocumentTeamCollaborator tags: - Documents Collaboration security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.app.folder - lucidchart.document.app.picker.share.collaborator - lucidchart.document.content.share.collaborator - lucidscale.document.app.folder - lucidscale.document.app.picker.share.collaborator - lucidscale.document.content.share.collaborator - lucidspark.document.app.folder - lucidspark.document.app.picker.share.collaborator - lucidspark.document.content.share.collaborator parameters: - in: path name: id required: true description: ID of the document. schema: type: string format: uuid example: 110808fd-4553-4316-bccf-4f25ff59a532 - in: path name: teamId required: true description: ID of the team to retrieve collaborator settings for. schema: type: number example: 99 responses: '204': description: No Content. The team's collaborator record on the document was successfully deleted. '403': description: Forbidden * if the token does not have permission to the document, or if the document has been deleted or does not exist. * when attempting to revoke the collaboration for the document owner. /v1/folders/{id}/shares/users/{userId}: get: summary: Get Folder User Collaborator description: Retrieves information about a specific user's direct collaborator access to a given folder. A user having access to a folder through one of the folder's ancestors will not be shown through this API. operationId: getFolderUserCollaborators tags: - Folders Collaboration security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: userId required: true description: ID of the user to retrieve collaborator settings for. schema: type: number responses: '200': description: OK with a Folder User Collaborator Resource containing information about the user's collaboration settings. content: application/json: schema: $ref: '#/components/schemas/FolderUserCollaborator' '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted, or does not exist. '404': description: Not Found when a user with the specified ID cannot be found or does not have collaborator access to the folder. put: summary: Create/Update Folder User Collaborator description: Updates or establishes a user's collaborator access to a given folder. If the user does not already have access, a new Folder User Collaborator Resource is created. Collaborators cannot be given the role "owner", and the role of the folder's owner cannot be modified. operationId: putFolderUserCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: userId required: true description: ID of the user whose role to create or modify. schema: type: number requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - editandshare - edit - comment - view example: comment description: The Collaborator Role to assign to the user for this folder. responses: '200': description: OK when updating an existing Folder User Collaborator. Contains the updated Folder User Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderUserCollaborator' '201': description: Created when creating a new Folder User Collaborator. Contains the new Folder User Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderUserCollaborator' '400': description: Bad Request when trying to add or update a Folder User Collaborator to have the "owner" role. '403': description: Forbidden if the token does not have permission to the folder, or if the folder has been deleted or does not exist. delete: summary: Delete Folder User Collaborator description: Revokes a user's direct collaborator access to a given folder. The user may still have access to the folder through other means such as shared folders. This action cannot be used to revoke access from the folder owner. operationId: deleteFolderUserCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: userId required: true description: ID of the user to delete collaborator settings for. schema: type: number responses: '204': description: No Content when the user's collaborator record on the folder was successfully deleted. '400': description: Bad Request when removing the user would leave a project folder without an owner. Promote another user to owner on the project first, then retry. '403': description: Forbidden * if the token does not have permission to the folder, or if the folder has been deleted or does not exist. * when attempting to revoke the collaboration for the folder owner. /v1/folders/{id}/shares/users: get: summary: List Folder User Collaborators description: Retrieves all users who have direct collaborator access to a given folder. A user having access to a folder through one of the folder's ancestors will not be shown through this API. Results are paginated. operationId: listFolderUserCollaborators tags: - Folders Collaboration security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly parameters: - in: path name: id required: true description: ID of the folder. schema: type: number responses: '200': description: OK with an array of Folder User Collaborator Resources for the folder's collaborators. content: application/json: schema: type: array items: $ref: '#/components/schemas/FolderUserCollaborator' '403': description: Forbidden if the token does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/{id}/shares/groups/{groupId}: get: summary: Get Folder Group Collaborator description: Retrieves information about a group's direct collaborator access to a given folder. A group having access to a folder through one of the folder's ancestors will not be shown through this API. operationId: getFolderGroupCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderReadonly - OAuth2: - folder - folder:readonly parameters: - in: path name: id required: true description: Folder ID. schema: type: number - in: path name: groupId required: true description: Group ID. schema: type: number responses: '200': description: OK with a Folder Group Collaborator Resource containing information about the group's collaboration access on the folder. content: application/json: schema: $ref: '#/components/schemas/FolderGroupCollaborator' '403': description: Forbidden if the token does not have access to the folder, or if the folder has been deleted or does not exist. '404': description: Not Found when the group does not have direct collaborator access to the folder. put: summary: Create/Update Folder Group Collaborator description: Grants a group direct collaborator access to a given folder, or updates the group's role on the folder if it is already a collaborator. operationId: updateFolderGroupCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: Folder ID. schema: type: number - in: path name: groupId required: true description: Group ID. schema: type: number requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - editandshare - edit - comment - view example: comment description: The Collaborator Role to assign to the group for this folder. responses: '200': description: OK when updating an existing Folder Group Collaborator. Contains the updated Folder Group Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderGroupCollaborator' '201': description: Created when creating a new Folder Group Collaborator. Contains the new Folder Group Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderGroupCollaborator' '400': description: Bad Request when trying to add or update a Folder Group Collaborator to have the "owner" role. '403': description: Forbidden if the token does not have permission to the folder, or if the folder or group have been deleted or do not exist. delete: summary: Delete Folder Group Collaborator description: Revokes any direct collaborator access a group has to the given folder. operationId: deleteFolderGroupCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: Folder ID. schema: type: number - in: path name: groupId required: true description: Group ID. schema: type: number responses: '204': description: No Content when the group's collaborator record on the folder was successfully deleted. '400': description: Bad Request when removing the group would leave a project folder without an owner. '403': description: Forbidden if the token does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/{id}/shares/groups: get: summary: List Folder Group Collaborators description: Retrieves all groups that have been granted direct collaborator access to a given folder. A group having access to a folder through one of the folder's ancestors will not be shown through this API. Results are paginated. operationId: listFolderGroupCollaborators tags: - Folders Collaboration security: - ApiKey: - FolderReadonly - OAuth2: - folder - folder:readonly parameters: - in: path name: id required: true description: Folder ID. schema: type: number responses: '200': description: OK with an array of Folder Group Collaborator Resources containing the folder's collaborators, as well as Pagination headers. content: application/json: schema: type: array items: $ref: '#/components/schemas/FolderGroupCollaborator' '403': description: Forbidden if the token does not have access to the folder, or if the folder has been deleted or does not exist. /v1/folders/{id}/shares/teams/{teamId}: get: summary: Get Folder Team Collaborator description: Returns information about the given team's collaboration on the given folder. operationId: getFolderTeamCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: teamId required: true description: ID of the team to retrieve collaborator settings for. schema: type: number example: 99 responses: '200': description: OK with a Folder Team Collaborator Resource containing information about the team's collaboration access on the folder. content: application/json: schema: $ref: '#/components/schemas/FolderTeamCollaborator' '403': description: Forbidden when the app making the request does not have permission for the folder, or if the folder has been deleted or does not exist. '404': description: Not Found when a team with the specified ID cannot be found or does not have collaborator access to the folder. put: summary: Create/Update Folder Team Collaborator description: Updates the details of the given team's collaboration on the given folder, or adds the team as a collaborator on the folder if it is not already a collaborator. operationId: putFolderTeamCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: teamId required: true description: ID of the team whose role is to be created or modified. schema: type: number example: 99 requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - editandshare - edit - comment - view example: comment description: The Collaborator Role to assign to the team for this folder. responses: '200': description: OK when updating an existing Folder Team Collaborator. Contains the updated Folder Team Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderTeamCollaborator' '201': description: Created when creating a new Folder Team Collaborator. Contains the new Folder Team Collaborator Resource. content: application/json: schema: $ref: '#/components/schemas/FolderTeamCollaborator' '400': description: Bad Request when trying to add or update a collaborator to have the "owner" role. '403': description: Forbidden when the token does not have permission for the folder, or if the folder has been deleted or does not exist. delete: summary: Delete Folder Team Collaborator description: Revokes a team's direct collaborator access to the given folder. operationId: deleteFolderTeamCollaborator tags: - Folders Collaboration security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: teamId required: true description: ID of the team to delete collaborator settings for. schema: type: number example: 99 responses: '204': description: No Content when the team's collaborator record on the folder was successfully deleted. '400': description: Bad Request when removing the team would leave a project folder without an owner. '403': description: Forbidden if the token does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/documents: post: summary: Create Document description: 'Creates a new document for the requesting user, with the specified title. Requires `title` and `product`. Optionally, a `parent` folder, `extensionBootstrapData`, or Lucid Standard Import `content` can be provided to customize the new document. > 📘 > > This endpoint can only create a new Lucidchart or Lucidspark document. It cannot modify an existing document''s contents. > 📘 ##### Document Creation Location > > When there is no `parent` field on the request, the new document will be created in a default location depending on the authorizing token''s scopes. > > - If the token authorizing the request uses one of the `document.app` scopes, then the document will be created in an `app-specific folder`. > - If one of the `document.content` scopes is used, the document will be created in the user''s ''My Documents folder''. > - If both types of scopes are authorized on the token, the `document.content` behavior will take priority and the document will be created in the user''s ''My Documents'' folder. > 📘 ##### Bootstrap Data for Create Document > > Bootstrap data can be attached to the created document to be consumed by a specific [Extension Package](https://lucid.readme.io/docs/lucid-extension-api). See [Bootstrap Data for documents created via API](https://lucid.readme.io/docs/editor-extension-data#bootstrap-data-for-documents-created-via-api) for usage. > 📘 Standard Import > > When `content` is provided, it must conform to the Lucid Standard Import schema. For more information on how to use the Standard Import, refer to the extensive reference documentation [here](doc:overview-si). > > For examples of how to use the Standard Import, refer to the `/standard-import` folder in Lucid''s repository of [Sample Lucid REST Applications](https://github.com/lucidsoftware/sample-lucid-rest-applications/tree/main/standard-import). This repo also contains some example `.zip` Standard Import files you can reference or use in your own projects. ## Valid Authentication Methods **API Key Grants:** - `DocumentEdit` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content` - `lucidchart.document.app.folder` - `lucidspark.document.content` - `lucidspark.document.app.folder` ' operationId: createDocument tags: - Document Access security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidchart.document.app.folder - lucidspark.document.content - lucidspark.document.app.folder requestBody: required: true content: application/json: schema: type: object required: - title - product properties: title: type: string description: Title that should be given to the newly created document. product: $ref: '#/components/schemas/CreatableProduct' parent: type: number description: Folder ID for the new document. extensionBootstrapData: $ref: '#/components/schemas/BootstrapData' content: $ref: '#/components/schemas/LucidStandardImportContent' responses: '201': description: 'Created with Document resource containing information about the newly created document. ' content: application/json: schema: $ref: '#/components/schemas/Document' '400': description: Bad Request. * `'content' and 'extensionBootstrapData' cannot both be provided` — the `content` field is mutually exclusive with `extensionBootstrapData`. * Invalid `content` JSON — the provided content does not conform to the Lucid Standard Import schema. '403': description: Forbidden. * if the user doesn't have access to or permissions to create within the specified parent folder. * if the token authorizing the request has the document.app scope with a specified parent folder that is outside the app folder's folder tree. /v1/documents/create: post: summary: Create Document with Standard Import File description: 'Creates a new document from a Lucid Standard Import file (`.zip` archive) uploaded as multipart/form-data. Requires `file`, `type`, and `product`. Optionally, a `title` and `parent` folder can be provided. If no `title` is provided, the new document''s title will be the imported filename. > 📘 > > This endpoint can only create a new Lucidchart or Lucidspark document. It cannot modify an existing document''s contents. > 📘 ##### Document Creation Location > > When there is no `parent` field on the request, the new document will be created in a default location depending on the authorizing token''s scopes. > > - If the token authorizing the request uses one of the `document.app` scopes, then the document will be created in an `app-specific folder`. > - If one of the `document.content` scopes is used, the document will be created in the user''s ''My Documents folder''. > - If both types of scopes are authorized on the token, the `document.content` behavior will take priority and the document will be created in the user''s ''My Documents'' folder. > 📘 Standard Import > > For more information on how to use the Standard Import, refer to the extensive reference documentation [here](doc:overview-si). > > For examples of how to use the Standard Import, refer to the `/standard-import` folder in Lucid''s repository of [Sample Lucid REST Applications](https://github.com/lucidsoftware/sample-lucid-rest-applications/tree/main/standard-import). This repo also contains some example `.zip` Standard Import files you can reference or use in your own projects. ## Valid Authentication Methods **API Key Grants:** - `DocumentEdit` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content` - `lucidchart.document.app.folder` - `lucidspark.document.content` - `lucidspark.document.app.folder` ' operationId: createDocumentWithStandardImport tags: - Document Access security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidchart.document.app.folder - lucidspark.document.content - lucidspark.document.app.folder requestBody: required: true content: multipart/form-data: schema: type: object required: - file - type - product properties: file: type: string format: binary description: The Lucid Standard Import specification (`.zip` archive) from which to create the document. type: type: string enum: - x-application/vnd.lucid.standardImport product: $ref: '#/components/schemas/CreatableProduct' title: type: string description: Title that should be given to the newly created document. If no title is specified, the document will be automatically assigned the file name. parent: type: number description: Folder ID for the new document. responses: '201': description: 'Created with Document resource containing information about the newly created document. ' content: application/json: schema: $ref: '#/components/schemas/Document' '400': description: 'Bad Request. * Invalid request body — the provided payload does not conform to the Lucid Standard Import schema. ' '403': description: 'Forbidden. * if the user doesn''t have access to or permissions to create within the specified parent folder. * if the token authorizing the request has the document.app scope with a specified parent folder that is outside the app folder''s folder tree. * if the token does not have the correct scope for the import type. ' '415': description: Unsupported Media Type. The file type provided is not supported. /v1/documents/import: post: summary: Import Document description: 'Imports an external non-Lucid file as a new document within Lucid. The file is uploaded as multipart/form-data. Requires `file`, `type`, and `product`. Optionally, a `title` and `parent` folder can be provided. If no `title` is provided, the new document''s title will be the imported filename. > 📘 > > This endpoint can only create a new Lucidchart or Lucidspark document. It cannot modify an existing document''s contents. > 📘 ##### Document Creation Location > > When there is no `parent` field on the request, the new document will be created in a default location depending on the authorizing token''s scopes. > > - If the token authorizing the request uses one of the `document.app` scopes, then the document will be created in an `app-specific folder`. > - If one of the `document.content` scopes is used, the document will be created in the user''s ''My Documents folder''. > - If both types of scopes are authorized on the token, the `document.content` behavior will take priority and the document will be created in the user''s ''My Documents'' folder. > 📘 Board import > > - The `board` import type only accepts pdfs that are exports of digital whiteboards. > - The `board` import type can only be authorized by users with a Lucidspark Enterprise license. > - The `board` import type is experimental and importing the same board may produce varying results over time. ## Valid Authentication Methods **API Key Grants:** - `DocumentEdit` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content` - `lucidchart.document.app.folder` - `lucidspark.document.content` - `lucidspark.document.app.folder` ' operationId: importDocument tags: - Document Access security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidchart.document.app.folder - lucidspark.document.content - lucidspark.document.app.folder requestBody: required: true content: multipart/form-data: schema: type: object required: - file - type - product properties: file: type: string format: binary description: The file from which to import the document. type: type: string enum: - x-application/vnd.lucid.drawio - x-application/vnd.lucid.visio - x-application/vnd.lucid.gliffy - x-application/vnd.lucid.board description: 'The type of file provided for import. Supported types: * `x-application/vnd.lucid.drawio` — draw.io files (.drawio, .xml) for Lucidchart * `x-application/vnd.lucid.visio` — Visio files (.vsdx, .vdx) for Lucidchart * `x-application/vnd.lucid.gliffy` — Gliffy files (.gliffy, .gon, .gxml) for Lucidchart * `x-application/vnd.lucid.board` — Board files (.pdf) for Lucidspark ' product: $ref: '#/components/schemas/CreatableProduct' title: type: string description: Title that should be given to the newly imported document. If no title is specified, the document will be automatically assigned the file name. parent: type: number description: Folder ID for the new document. responses: '201': description: 'Created with Document resource containing information about the newly imported document. ' content: application/json: schema: $ref: '#/components/schemas/Document' '403': description: 'Forbidden. * if the user doesn''t have access to or permissions to create within the specified parent folder. * if the token authorizing the request has the document.app scope with a specified parent folder that is outside the app folder''s folder tree. * if the token does not have the correct scope for the import type. * if the token requesting a board import does not have a Lucidspark Enterprise License. ' '415': description: Unsupported Media Type. The file type provided is not supported. /v1/documents/copy: post: summary: Copy Document description: 'Copies one of the requesting user''s existing documents, with the specified title. Requires `title` and `template` (the ID of the document to copy). Optionally, a `parent` folder can be provided. Note that collaborator permissions are not transferred to the copied document. > 📘 > > This endpoint can only create a new Lucidchart or Lucidspark document. It cannot modify an existing document''s contents. > 📘 ##### Document Creation Location > > When there is no `parent` field on the request, the new document will be created in a default location depending on the authorizing token''s scopes. > > - If the token authorizing the request uses one of the `document.app` scopes, then the document will be created in an `app-specific folder`. > - If one of the `document.content` scopes is used, the document will be created in the user''s ''My Documents folder''. > - If both types of scopes are authorized on the token, the `document.content` behavior will take priority and the document will be created in the user''s ''My Documents'' folder. ## Valid Authentication Methods **API Key Grants:** - `DocumentEdit` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content` - `lucidchart.document.app.folder` - `lucidspark.document.content` - `lucidspark.document.app.folder` ' operationId: copyDocument tags: - Document Access security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidchart.document.app.folder - lucidspark.document.content - lucidspark.document.app.folder requestBody: required: true content: application/json: schema: type: object required: - title - template properties: title: type: string description: Title that should be given to the copied document. template: type: string format: uuid description: ID of the document to copy. parent: type: number description: Folder ID for the new document. responses: '201': description: 'Created with Document resource containing information about the newly copied document. ' content: application/json: schema: $ref: '#/components/schemas/Document' '403': description: 'Forbidden. * if the user doesn''t have access to or permissions to create within the specified parent folder. * if the user doesn''t have permissions to access the specified template to copy from. * if the token authorizing the request has the document.app scope with a specified parent folder that is outside the app folder''s folder tree. ' /v1/documents/{id}: get: summary: Get/Export Document description: 'Retrieves information about the requested document or exports it as an image. **Get Document:** Requires at least read-only access. Document owner information is only returned if the requesting user has view access and the document is unpublished. If published, the user must be at least a collaborator. **Export Document:** Exports a given document in a specified image format. When exporting oversized images, the resolution may be automatically scaled down to enable performant API requests. **Admin flow:** Account owners and document admins can access any document belonging to their account without needing a direct share by setting the `Lucid-Request-As: admin` header and authenticating with an admin scope or `DocumentAdmin` API key grant. ' operationId: getOrExportDocument tags: - Document Access security: - ApiKey: - DocumentReadonly - DocumentAdmin - OAuth2: - lucidchart.document.content:readonly - lucidchart.document.content:admin.readonly - lucidchart.document.app.picker:readonly - lucidchart.document.app.folder - lucidscale.document.content:readonly - lucidscale.document.content:admin.readonly - lucidscale.document.app.picker:readonly - lucidscale.document.app.folder - lucidspark.document.content:readonly - lucidspark.document.content:admin.readonly - lucidspark.document.app.picker:readonly - lucidspark.document.app.folder parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the document to be retrieved or exported. example: 110808fd-4553-4316-bccf-4f25ff59a532 - name: Lucid-Request-As in: header required: false description: 'If the requesting user is an account owner or document admin with the required permissions and they make the request with the value of "admin" as this header and include an admin scope or `DocumentAdmin` API key grant, the request will be made using their admin permissions and will succeed for any document belonging to their account. ' schema: type: string example: admin - name: Accept in: header description: "When using the Export Document API, the format of the exported document is set via\ \ the `Accept` header. This header contains up to two parts, separated by a semicolon:\n *\ \ A prefix stating which type of image you would like the document exported as. Options are:\n\ \ * `image/jpeg`\n * `image/png`\n * Optionally, you can also supply the dots per inch\ \ (DPI) you want the exported image to have. If this value is not provided, a default of 160\ \ will be used. For example:\n * `image/png;dpi=256`\n * `image/jpeg;dpi=64`" required: false schema: type: string example: image/png - name: page in: query description: 1-based page index of the document to export. Defaults to the first page. Only a single page is allowed. Optional for export operation. Cannot be provided when pageId is provided. required: false schema: type: number default: 1 - name: pageId in: query description: Specific page of the document to export. Only a single page is allowed. Optional for export operation. Cannot be provided when page is provided. example: J~65X_X714o2 required: false schema: type: string - name: crop in: query description: "Specifies the crop settings for the document export. Optional for export operation.\ \ Possible values are\n * Default (no crop parameter) - Exports the entire page canvas area\ \ that contains your content. Automatically adjusts to include all items on the page, including\ \ the space between them and maintains the relative positioning and spacing of your document\ \ elements\n * `x, y, width, height` - Crop to the specified region (in pixels) on the page.\ \ Example crop=1000,300,30,7\n * Note: The region (in pixels) is accurate to the number of\ \ pixels on the canvas. The number of pixels of the outputted image will only match the crop\ \ window at a DPI of 160.\n * `content` - Crop to page content. Example crop=content" required: false schema: type: string responses: '200': description: OK with Document resource containing information about the requested document or the binary data in the response body for exports. The Accept header specifies the type of image for exports. content: application/json: schema: $ref: '#/components/schemas/Document' image/png: schema: type: string format: binary '400': description: Bad Request. More than one page and/or pageId was provided for export. '403': description: Forbidden. The app making the request does not have permission to the document, or if the document has been deleted or does not exist. '404': description: Not Found. The specified page or pageID could not be found for export. '406': description: Not Acceptable. The specified image type is not supported for export. '429': description: Too Many Requests. If the account makes more than 75 requests in 5 seconds. patch: summary: Update Document description: 'Updates properties of an existing document. Supports partial updates via JSON for title, parent, and classification. Supports moving documents into (but not out of) repositories by providing a repo_-prefixed repository ID as the parent. ' operationId: updateDocument tags: - Document Access security: - OAuth2: - lucidchart.document.content parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the document to update. example: 110808fd-4553-4316-bccf-4f25ff59a532 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchDocumentRequestBody' responses: '200': description: OK with Document resource containing information about the updated document. content: application/json: schema: $ref: '#/components/schemas/Document' '400': description: Bad Request. * Title must be non-empty when included. * Title must be at most 300 characters. * Title must not start or end with whitespace. * Invalid parent ID. Must be either a string prefixed with repo_ (for repositories) or a number. * Custom tag values must be non-empty when included. * Custom tag values must not start or end with whitespace. * Classification ID must either be null or an existing classification ID. '403': description: Forbidden. The app making the request does not have permission to the document, or the document does not exist. '409': description: Conflict. A conflict occurred when saving the document. /v1/documents/{id}/trash: post: summary: Trash Document description: 'Moves the specified document to the trash for the requesting user. If the document is shared or part of a team folder, other users will still have access to the document. Requires the user to be the owner of the requested document or have the appropriate team folder permissions. ' operationId: trashDocument tags: - Document Access security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidchart.document.app.folder - lucidscale.document.content - lucidscale.document.app.folder - lucidspark.document.content - lucidspark.document.app.folder parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the document to be moved to the trash. example: 110808fd-4553-4316-bccf-4f25ff59a532 responses: '204': description: No Content when the document is successfully moved into the trash or is already trashed. '403': description: Forbidden. if the app making the request does not have permission to the document, or if the document has been deleted or does not exist. /v1/documents/search: post: summary: Search Documents operationId: searchDocuments tags: - Document Access security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content:readonly - lucidscale.document.content:readonly - lucidspark.document.content:readonly requestBody: required: true content: application/json: schema: type: object properties: product: type: array items: $ref: '#/components/schemas/Product' description: Array of Lucid Suite products to filter by. Default value assumes all valid products for the given scopes. default: - lucidchart - lucidscale - lucidspark createdStartTime: type: string format: date-time default: '0001-01-01T00:00:00Z' description: Date and time to filter documents that have been created after. Default value assumes the beginning of time. createdEndTime: type: string format: date-time default: '9999-12-31T23:59:59Z' description: Date and time to filter documents that have been created before. Default value assumes the current instant of time. lastModifiedAfter: type: string format: date-time default: '0001-01-01T00:00:00Z' description: Date and time to filter documents that have been modified after. Default value assumes the beginning of time. lastModifiedBefore: type: string format: date-time description: Date and time to filter documents that have been modified before. When omitted, results are not bounded by an upper modified-time limit. keywords: type: string description: Keywords to search against document content and titles. This field is truncated to 400 characters. When provided, results will be sorted by relevance to keyword search. excludeTrashed: type: boolean description: When set to true, excludes trashed/deleted documents from search results. When set to false or omitted, trashed documents are included in results with their trashedTimestamp populated. default: false documentLocation: type: string enum: - repositories description: When provided, restricts search results to documents contained within repositories the authenticated user can access. Only the value "repositories" is supported on this endpoint. owners: type: array items: type: number description: When provided, limit the search to documents owned by at least one of the specified users. Results are still restricted to documents the authenticated user can access. A maximum of 10000 users may be specified. externalAccess: type: string enum: - any - external-collaborators - external-links description: Specify to search for documents with either “any” type of external access, “external-collaborators”, or "external-links" statusIds: type: array items: type: number description: List of statusIds to filter by. documentIds: type: array items: type: string format: uuid description: List of documentIds to filter by. A maximum of 10000 documents may be specified. responses: '200': description: OK with an array of Document Resource objects containing information about documents the authenticated user has access to. content: application/json: schema: type: array items: $ref: '#/components/schemas/Document' '400': description: Bad Request if the request does not contain a body. '403': description: Forbidden if the product query parameter is used and the token's scopes do not contain the matching readonly scope for each product. '429': description: Too Many Requests if the account makes more than 300 requests in 5 seconds. /v1/documents/{id}/contents: get: summary: Document Contents description: 'Retrieves information about the contents of the requested Lucidchart or Lucidspark document. Due to the evolving nature of Lucid documents, an unchanged document may produce varying results over time. ' operationId: getDocumentContent tags: - Document Access security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content:readonly - lucidchart.document.app.picker:readonly - lucidchart.document.app.folder parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the document to have contents retrieved. example: 110808fd-4553-4316-bccf-4f25ff59a532 responses: '200': description: OK with Document Content resource containing information about the requested document's content. content: application/json: schema: $ref: '#/components/schemas/DocumentContent' '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted or does not exist. '429': description: Too Many Requests if the account makes more than 100 requests in 5 seconds. /v1/embeds: get: summary: Embed Viewer description: Display an embed within an iframe. If no embed id was included when creating the token, the iframe first displays a document picker where the user can create and configure a new embed. If an embed id was included, the iframe displays either an embedded document viewer, an embedded editor, or an embed configuration page depending on the token request body and embed settings. operationId: documentEmbeds tags: - Document Embedding security: - OAuth2: [] parameters: - name: token in: query required: true schema: type: string description: The embed session token retrieved from the Generate Embed Session Token endpoint. responses: '200': description: The iframe content displaying the embedded document picker or viewer. content: text/html: schema: type: string '401': description: Unauthorized. The token is missing or invalid. '403': description: Forbidden. The access to the embed is forbidden. '404': description: Not Found. The embed id is not found. /v1/embeds/token: post: summary: Generate Embed Session Token description: Generates a short-lived, limited-scope temporary access token to allow your app to display embedded Lucid documents in an iframe. The token allows the embedding website to load the document picker and document viewer, but does not grant access to any additional resource within Lucid. operationId: documentEmbedsToken tags: - Document Embedding security: - OAuth2: - lucidchart.document.app.picker.share.embed - lucidscale.document.app.picker.share.embed - lucidspark.document.app.picker.share.embed requestBody: required: true content: application/json: schema: type: object properties: embedId: type: string format: uuid description: ID of the document embed. This is needed for viewing an existing embed. origin: type: string description: The URL (including protocol) of the webpage that will host the embed. Must use the `https://` scheme (e.g., `https://example.com`, `http://localhost`). example: https://example.com sessionConfig: $ref: '#/components/schemas/SessionConfig' required: - origin responses: '200': description: Valid token that can be used to embed a document picker or a document viewer. content: application/jwt: schema: type: string '400': description: Bad Request. Occurs when `origin` is missing a protocol, uses an unsupported scheme, or is not a valid URL. '401': description: Access token is missing or invalid. '403': description: Access to the embed is forbidden. '404': description: The embed id in the parameter is not found. /v1/folders/{id}: get: summary: Get Folder description: Retrieves information about the requested folder. operationId: getFolder tags: - Folders security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly parameters: - name: id in: path required: true schema: type: number description: ID of the folder to be retrieved. responses: '200': description: OK with a Folder resource containing information about the requested folder. content: application/json: schema: $ref: '#/components/schemas/Folder' '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted (trashed is okay) or does not exist. patch: summary: Update Folder description: 'Allows the requester to modify certain fields on a folder. When updating the parent field, the folder moves to the new parent location while its contents remain intact. The requesting user must have both edit and share access to both the old and new parent folders, or the entire update will fail. It is not permitted to update the parent field on Team Folders. Moving folders into or out of Team Folders may encounter permission-related errors, but once a folder is within a Team Folder, reorganization among descendants within that Team Folder can proceed without permission issues. ' operationId: updateFolder tags: - Folders security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - name: id in: path required: true schema: type: number description: ID of the folder to be updated. requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: New name for the folder being updated. parent: type: number nullable: true description: New parent for the folder being updated. Causes the folder to be moved into another folder if an ID is provided or into the user's root folder ("My Documents") if `null` is provided. If the parent field is not included in the request, the folder will not be moved. Cannot be provided for Team Folders. responses: '200': description: OK with a Folder resource containing information about the updated folder. content: application/json: schema: $ref: '#/components/schemas/Folder' '400': description: Bad Request if the parent field is included in a request for a team folder, or if invalid input types are provided for id, name, or parent. '403': description: Forbidden if the app making the request does not have permission to the folder, the folder has been deleted or does not exist, or the request was not authorized to move the folder. /v1/folders: post: summary: Create Folder description: Creates a new folder. operationId: createFolder tags: - Folders security: - ApiKey: - FolderEdit - OAuth2: - folder - lucidchart.document.app.folder - lucidspark.document.app.folder - lucidscale.document.app.folder requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name of the folder being created. type: $ref: '#/components/schemas/FolderType' parent: nullable: true description: Destination folder or repository to create the new folder in. For repositories, use the repository ID prefixed with `repo_` (e.g., `repo_12345`). For folders, use the numeric folder ID. If it is not provided, the folder will be created in the root of the user's folder manager ("My Documents"). Ignored when `appFolder` is set to `true`. oneOf: - type: integer description: Numeric folder ID. - type: string description: Repository ID prefixed with `repo_`. example: 12345 appFolder: type: boolean description: 'When set to `true`, the folder is created inside the OAuth2 client''s app project folder, overriding the `parent` field. Required when using a `document.app.folder` scope without a `folder` scope. ' required: - name - type responses: '201': description: Created with a Folder resource containing information about the newly created folder. content: application/json: schema: $ref: '#/components/schemas/Folder' '400': description: Bad Request. * A team folder cannot be created within another folder or team. * Invalid parent ID. Must be either a string prefixed with repo_ (for repositories) or a number. * When using a `document.app.folder` scope, `appFolder` must be set to `true`. '403': description: 'Forbidden if the request is not authorized to create in the specified `parent` folder or repository, or when using a `document.app.folder` scope without setting `appFolder` to `true`. ' /v1/folders/{id}/trash: post: summary: Trash Folder description: Moves the given folder and all of its contents into the trash. operationId: trashFolder tags: - Folders security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - name: id in: path required: true schema: type: number description: ID of the folder to be moved to the trash. responses: '204': description: No Content when the folder is successfully moved into the trash or is already trashed. '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/{id}/restore: post: summary: Restore Folder description: Moves a trashed folder and all of its contents back to their original pre-trash locations. operationId: restoreFolder tags: - Folders security: - ApiKey: - FolderEdit - OAuth2: - folder parameters: - name: id in: path required: true schema: type: number description: ID of the folder to be restored from the trash. responses: '204': description: No Content when the folder is successfully moved out of the trash or is already not in the trash. '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/search: post: summary: Search Folders description: 'Retrieves information about folders the authenticated user has at least read-only access to. Admin requests using the `Lucid-Request-As: admin` header return all account folders; this capability is exclusive to Enterprise Shield accounts. Results are sorted by creation date and paginated. Rate limited to 300 requests per 5 seconds per account.' operationId: searchFolders tags: - Folders security: - ApiKey: - FolderReadonly - FolderAdmin - OAuth2: - folder:readonly - folder:admin.readonly - lucidchart.document.app.folder - lucidspark.document.app.folder - lucidscale.document.app.folder parameters: - $ref: '#/components/parameters/RequestAs-Folders' requestBody: required: true content: application/json: schema: type: object properties: type: $ref: '#/components/schemas/FolderType' description: 'Note: This endpoint only accepts the folder type' userIds: type: array items: type: number description: 'If provided, limit the search to folders that at least one specified user can access. Without a list, the system searches the entire account (admin-level) or only folders the authenticated user can access (user-level). ' ownedByUsers: type: boolean description: When true, search results will only include folders owned by users specified by userIds. Ignored if no userIds are provided. keywords: type: string description: Keywords to search against folder content and titles. This field is truncated to 400 characters. When provided, results will be sorted by relevance to keyword search. appFolder: type: boolean description: 'When set to `true`, restricts search results to folders within the OAuth2 client''s app project folder. Required when using a `document.app.folder` scope without a `folder:readonly` scope. ' responses: '200': description: OK with an array of Folder Resource objects containing information about folders the authenticated user has access to. content: application/json: schema: type: array items: $ref: '#/components/schemas/Folder' '400': description: 'Bad Request. * The request does not contain a body. * When using a `document.app.folder` scope, `appFolder` must be set to `true`. ' '403': description: 'Forbidden. * User requests with admin scope and without Lucid-Request-As=admin header. * User requests without an admin scope and includes Lucid-Request-As=admin header. * Account does not have access to the API. * When using a `document.app.folder` scope without setting `appFolder` to `true`. ' '429': description: Too Many Requests if the account makes more than 300 requests in 5 seconds. /v1/folders/{id}/contents: get: summary: List Folder Contents description: Retrieves basic information about the contents of a given folder. Results are paginated. operationId: listFolderContents tags: - Folders security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly parameters: - name: id in: path required: true schema: oneOf: - type: number - type: string enum: - root description: ID of the folder or `root` to retrieve contents of the authenticated user's root directory ("My Documents"). responses: '200': description: OK with an array of Folder Content Resources containing information about the contents of the requested folder. content: application/json: schema: type: array items: $ref: '#/components/schemas/FolderContent' '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/root/contents: get: summary: List Root Folder Contents description: Retrieves basic information about the contents of the root folder. Results are paginated. operationId: listRootFolderContents tags: - Folders security: - ApiKey: - FolderReadonly - OAuth2: - folder:readonly responses: '200': description: OK with an array of Folder Content Resources containing information about the contents of the requested folder. content: application/json: schema: type: array items: $ref: '#/components/schemas/FolderContent' '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted or does not exist. /v1/folders/app/contents: get: summary: List App Folder Contents operationId: listAppFolderContents tags: - Folders description: Lists the contents of the OAuth2 client's app project folder for the authenticated user. The app project folder is automatically resolved from the OAuth2 client ID associated with the access token. security: - OAuth2: - folder:readonly - lucidchart.document.app.folder - lucidspark.document.app.folder - lucidscale.document.app.folder responses: '200': description: OK with an array of Folder Content Resources containing information about the contents of the app project folder. content: application/json: schema: type: array items: $ref: '#/components/schemas/FolderContent' /v1/documents/{id}/shares/shareLinks/{shareLinkId}: get: summary: Get Document Share Link description: Retrieves information about a share link on the specified document. This endpoint will only retrieve information about share links created by the same OAuth2.0 client. operationId: getDocumentShareLink tags: - Documents Sharing security: - OAuth2: - lucidchart.document.content.share.link:readonly - lucidchart.document.app.picker.share.link:readonly - lucidchart.document.app.folder - lucidscale.document.content.share.link:readonly - lucidscale.document.app.picker.share.link:readonly - lucidscale.document.app.folder - lucidspark.document.content.share.link:readonly - lucidspark.document.app.picker.share.link:readonly - lucidspark.document.app.folder parameters: - $ref: '#/components/parameters/DocumentShareLinkDocumentId' - $ref: '#/components/parameters/DocumentShareLinkShareLinkId' responses: '200': description: OK with a Document Share Link resource containing information about the requested share link. content: application/json: schema: $ref: '#/components/schemas/DocumentShareLink' '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified document id does not belong to the document, does not exist, or the requesting app did not create the share link. patch: summary: Update Document Share Link description: Updates an existing share link's configuration settings on a document. Share links will only be updatable by the OAuth2.0 client that created them. All fields are optional; omitted settings retain their existing values. operationId: updateDocumentShareLink tags: - Documents Sharing security: - OAuth2: - lucidchart.document.content.share.link - lucidchart.document.app.picker.share.link - lucidchart.document.app.folder - lucidscale.document.content.share.link - lucidscale.document.app.picker.share.link - lucidscale.document.app.folder - lucidspark.document.content.share.link - lucidspark.document.app.picker.share.link - lucidspark.document.app.folder parameters: - $ref: '#/components/parameters/DocumentShareLinkDocumentId' - $ref: '#/components/parameters/DocumentShareLinkShareLinkId' requestBody: required: true content: application/json: schema: type: object properties: role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/DocumentLinkSecurity' responses: '200': description: OK with a Document Share Link resource containing information about the updated share link. content: application/json: schema: $ref: '#/components/schemas/DocumentShareLink' '400': description: Bad Request if the the document does not belong to an enterprise account and the restrictToAccount is set to true, defines a passcode, or defines an expiration or the allowAnonymous field is set to true on non-Lucidspark/Lucidchart documents. '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified document id does not belong to the document, does not exist, or the requesting app did not create the share link. delete: summary: Delete Document Share Link description: Deletes a share link on a document. This endpoint will only delete share links that were created by the same OAuth2.0 client making the request. operationId: deleteDocumentShareLink tags: - Documents Sharing security: - OAuth2: - lucidchart.document.content.share.link - lucidchart.document.app.picker.share.link - lucidchart.document.app.folder - lucidscale.document.content.share.link - lucidscale.document.app.picker.share.link - lucidscale.document.app.folder - lucidspark.document.content.share.link - lucidspark.document.app.picker.share.link - lucidspark.document.app.folder parameters: - $ref: '#/components/parameters/DocumentShareLinkDocumentId' - $ref: '#/components/parameters/DocumentShareLinkShareLinkId' responses: '204': description: No Content if the share link was deleted successfully. '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified document id does not belong to the document, does not exist, or the requesting app did not create the share link. /v1/documents/{id}/shares/shareLinks: post: summary: Create Document Share Link description: Creates a new share link on the provided document with the provided settings. The linkSecurity parameter is configurable only for enterprise license accounts but remains required for team accounts. operationId: createDocumentShareLink tags: - Documents Sharing security: - OAuth2: - lucidchart.document.content.share.link - lucidchart.document.app.picker.share.link - lucidchart.document.app.folder - lucidscale.document.content.share.link - lucidscale.document.app.picker.share.link - lucidscale.document.app.folder - lucidspark.document.content.share.link - lucidspark.document.app.picker.share.link - lucidspark.document.app.folder parameters: - $ref: '#/components/parameters/DocumentShareLinkDocumentId' requestBody: required: true content: application/json: schema: type: object properties: role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/DocumentLinkSecurity' required: - linkSecurity - role responses: '201': description: Created with a Document Share Link resource containing information about the created share link. content: application/json: schema: $ref: '#/components/schemas/DocumentShareLink' '400': description: Bad Request if the document does not belong to an enterprise account and the `restrictToAccount` is set to true, defines a passcode, or defines an expiration or the `allowAnonymous` field is set to true on non-Lucidspark/Lucidchart documents. '403': description: Forbidden if the app making the request does not have permission to the document, or if the document has been deleted, or does not exist. /v1/folders/{id}/shares/shareLinks/{shareLinkId}: get: summary: Get Folder Share Link description: Retrieves information about a share link on a given folder. This endpoint will only retrieve information about share links created by the same OAuth2.0 client. operationId: getFolderShareLink tags: - Folders Sharing security: - OAuth2: - folder:readonly parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: shareLinkId required: true description: Id of the share link to retrieve information for. schema: type: string responses: '200': description: OK with a Folder Share Link resource containing information about the requested share link. content: application/json: schema: $ref: '#/components/schemas/FolderShareLink' '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified folder id does not belong to the folder, does not exist, or the requesting app did not create the share link. patch: summary: Update Folder Share Link description: Updates an existing share link to the provided settings. If any settings are omitted, the existing settings are preserved. Share links are only updatable by the OAuth2.0 client that created them. If an expiration is provided outside the account-defined limits, it will be clamped to the maximum allowed time. operationId: updateFolderShareLink tags: - Folders Sharing security: - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: shareLinkId required: true description: ID of the share link belonging to the folder. schema: type: string requestBody: required: false content: application/json: schema: type: object properties: role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/FolderLinkSecurity' responses: '200': description: OK with a Folder Share Link resource containing information about the updated share link. content: application/json: schema: $ref: '#/components/schemas/FolderShareLink' '400': description: Bad Request if the folder does not belong to an enterprise account and the restrictToAccount is set to true, defines a passcode, or defines an expiration. '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified folder id does not belong to the folder, does not exist, or the requesting app did not create the share link. delete: summary: Delete Folder Share Link description: Deletes a share link from a folder. This endpoint will only delete share links created by the same OAuth2.0 client. operationId: deleteFolderShareLink tags: - Folders Sharing security: - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number - in: path name: shareLinkId required: true description: Id of the share link to delete. schema: type: string responses: '204': description: No Content if the share link was deleted successfully. '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted, or does not exist. '404': description: Not Found if the share link id with the specified folder id does not belong to the folder, does not exist, or the requesting app did not create the share link. /v1/folders/{id}/shares/shareLinks: post: summary: Create Folder Share Link description: Creates a new share link on the provided folder with the provided settings. The `linkSecurity` parameter is only configurable for enterprise license users but is still required for team accounts. If an expiration is provided outside account-defined limits, it will be clamped to the maximum allowed time. operationId: createFolderShareLink tags: - Folders Sharing security: - OAuth2: - folder parameters: - in: path name: id required: true description: ID of the folder. schema: type: number requestBody: required: true content: application/json: schema: type: object properties: role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/FolderLinkSecurity' required: - linkSecurity - role responses: '201': description: Created with a Folder Share Link resource containing information about the created share link. content: application/json: schema: $ref: '#/components/schemas/FolderShareLink' '400': description: Bad Request if the folder does not belong to an enterprise account and the `restrictToAccount` is set to true, defines a passcode, or defines an expiration. '403': description: Forbidden if the app making the request does not have permission to the folder, or if the folder has been deleted, or does not exist. /v1/shareLink/{shareLinkId}/accept: post: summary: Accept Share Links description: Accepts a share link for a document or folder on behalf of the authenticated user, granting them access to the shared resource. operationId: acceptShareLink tags: - Sharing security: - OAuth2: - invitation.accept parameters: - $ref: '#/components/parameters/DocumentShareLinkShareLinkId' responses: '200': description: OK with an Accept Share Link result containing information about the accepted document or folder. content: application/json: schema: $ref: '#/components/schemas/AcceptShareLinkResult' '403': description: Forbidden if the app making the request does not have permission to accept the share link, if the document/folder has been deleted, or the invitation requires a passcode (unsupported). '404': description: Not Found if the share link has expired or does not exist. /v1/transferUserContent: post: summary: Transfer User Content description: Transfers ownership of a user's Lucid documents, folders, custom shape libraries, and Lucidscale objects to another user on the same account. The recipient gains ownership and edit/share permissions for team folders the original owner could access. Notification emails are sent to both users upon completion. operationId: transferUserContent tags: - Transfer Content security: - OAuth2: - account.user.transfercontent requestBody: required: true content: application/json: schema: type: object properties: fromUser: type: string format: email description: Email of the user whose content will be transferred. toUser: type: string format: email description: Email of the user the content will be transferred to. required: - fromUser - toUser responses: '204': description: No Content when ownership is successfully transferred. '400': description: Bad Request when the `fromUser` and `toUser` are the same. '403': description: Forbidden when the users do not exist or are not on the authenticated account. '429': description: Too Many Requests if the account makes more than 30 requests in 5 seconds. x-rate-limit: description: This endpoint has a per account rate limit of 30 requests per 5 seconds. /v1/users/{id}: get: summary: Get User description: Retrieves information about the requested user. The requested user must be on the authenticated account. operationId: getUser tags: - Users security: - ApiKey: - AccountReadonly - OAuth2: - account.user:readonly parameters: - name: id in: path required: true schema: type: number description: ID of the user to be retrieved. example: 204 responses: '200': description: OK. Returns with a User resource containing information about the user. content: application/json: schema: $ref: '#/components/schemas/User' '403': description: Forbidden. Occurs if the user does not belong to the authenticated account or if the user does not exist. /v1/users: get: summary: List Users description: Retrieves information about all users on the authenticated account. operationId: listUsers tags: - Users security: - ApiKey: - AccountAdmin - OAuth2: - account.user:readonly - account.users:admin.readonly responses: '200': description: OK. Returns a list of User resources containing information about users on the account. content: application/json: schema: type: array items: $ref: '#/components/schemas/User' '404': description: Not Found post: summary: Create User description: Creates a new user and adds them to the authenticated account. Licenses are automatically assigned to the new user based on the account's auto-licensing configuration. Only available to Enterprise accounts. operationId: createUser tags: - Users security: - OAuth2: - account.user requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateUserBody' responses: '201': description: Created. Returns a User resource containing information about the created user. content: application/json: schema: $ref: '#/components/schemas/User' '400': description: Bad Request. Occurs if any input field is invalid. '403': description: Forbidden. Occurs if the app making the request does not have permission to create users, if the email domain is under domain control by a different account, or if the token requesting to create a user is not on an Enterprise account. '409': description: Conflict. Occurs if a user with the same email or username already exists. /v1/users/searchByEmail: post: summary: Search Users By Email description: Retrieves information about all users on the authenticated account whose email is provided. Matching is case-insensitive and requires an exact match; emails that do not correspond to a user on the account are excluded from results. operationId: userEmailSearch tags: - Users security: - ApiKey: - AccountReadonly - OAuth2: - account.user:readonly requestBody: content: application/json: schema: properties: emails: type: array items: type: string responses: '200': description: OK. Returns a list of Profile resources containing information about users on the account. Emails that could not be matched are not included. content: application/json: schema: type: array items: $ref: '#/components/schemas/Profile' '400': description: Bad Request. Occurs if the request body emails exceed 200 items or if any of the strings in the request body can not be parsed into the email format. /v1/users/me/profile: get: summary: Get Profile description: Retrieves basic information about the authenticated user. operationId: getUserProfile tags: - Users security: - ApiKey: - User - OAuth2: - user.profile responses: '200': description: OK. Returns a Profile resource containing information about the requesting user. content: application/json: schema: $ref: '#/components/schemas/Profile' '404': description: Not Found /v1/describeLink: post: summary: Describe Link description: 'Retrieve metadata about a Lucid document from its URL, including the document title, product, and type. Use this to generate rich link previews (unfurling) in external applications. ' operationId: describeLink tags: - Unfurling requestBody: required: true content: application/json: schema: type: object required: - url properties: url: type: string description: The URL of the Lucid document link to parse information from. responses: '200': description: Successfully retrieved information about the document link. content: application/json: schema: $ref: '#/components/schemas/LinkResource' '403': description: The URL is not a valid Lucid link. security: - ApiKey: [] - OAuth2: [] /v1/embeds/link: get: summary: Direct Embed description: Display an embed within an iframe. If the clientId is valid with the registered embed domain in the developer portal, the iframe will show either a login page or an embedded document viewer depending on the user's authorization status via browser cookies. operationId: directEmbed tags: - Unfurling parameters: - name: document in: query required: true schema: type: string description: The URL of the Lucid document link or the documentId retrieved from the Describe Link endpoint. - name: clientId in: query required: true schema: type: string description: The client ID obtained during App registration. responses: '200': description: OK - The iframe content displaying the embedded document picker or viewer. '400': description: Bad Request /v1/documents/{documentId}/embeds/{embedId}: get: summary: Get Document Embed description: Retrieves limited metadata about the embedded document. If the embed is a snapshot-version embed, the metadata will be drawn from the state of the document at the time that the snapshot was created. operationId: getEmbedInformation tags: - Embedding Utils security: - OAuth2: - lucidchart.document.content.share.embed:readonly - lucidchart.document.app.picker.share.embed:readonly - lucidscale.document.content.share.embed:readonly - lucidscale.document.app.picker.share.embed:readonly - lucidspark.document.content.share.embed:readonly - lucidspark.document.app.picker.share.embed:readonly parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the embedded document to retrieve. example: 001bd56d-1b10-4196-8ac6-45e3c22bd1c6 - name: embedId in: path required: true schema: type: string format: uuid description: ID of the document embed to retrieve. example: ec890631-c150-461c-992f-b96533aa05f4 responses: '200': description: OK. Returns a Document Embed Resource containing information about the requested document embed. content: application/json: schema: $ref: '#/components/schemas/EmbedInformation' '403': description: Forbidden. Occurs when the authorized token does not have permission to access the requested document or embed, or when the requested document or embed does not exist. delete: summary: Delete Document Embed description: Deletes an existing document embed. This will cause the document viewer to fail when attempting to load this document embed. operationId: deleteEmbed tags: - Embedding Utils security: - OAuth2: - account.info parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the embedded document to retrieve. example: 001bd56d-1b10-4196-8ac6-45e3c22bd1c6 - name: embedId in: path required: true schema: type: string format: uuid description: ID of the document embed to retrieve. example: 298f9a4a-09b5-440c-b95e-4d5c2d1aaf49 responses: '204': description: OK. Occurs when the document embed is deleted successfully. '403': description: Forbidden. Occurs when the access token isn't allowed to delete the embed. /v1/documents/{documentId}/embeds/{embedId}/document: get: summary: Get Document Embed Document description: Retrieves limited metadata about an embedded document. If the embed is a snapshot-version embed, the metadata will be drawn from the state of the document at the time that the snapshot was created. operationId: getEmbedDocument tags: - Embedding Utils security: - OAuth2: - lucidchart.document.content.share.embed:readonly - lucidchart.document.app.picker.share.embed:readonly - lucidscale.document.content.share.embed:readonly - lucidscale.document.app.picker.share.embed:readonly - lucidspark.document.content.share.embed:readonly - lucidspark.document.app.picker.share.embed:readonly parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the embedded document to retrieve. example: 001bd56d-1b10-4196-8ac6-45e3c22bd1c6 - name: embedId in: path required: true schema: type: string format: uuid description: ID of the document embed to retrieve. example: ec890631-c150-461c-992f-b96533aa05f4 responses: '200': description: OK. Returns a Document Embed Resource containing information about the requested document embed. content: application/json: schema: $ref: '#/components/schemas/EmbedDocument' '403': description: Forbidden. Occurs when the authorized token does not have permission to access the requested document or embed, or when the requested document or embed does not exist. /v1/documents/{id}/embeds: post: summary: Create Document Embed description: Creates an embed resource associated with a particular document. The request must be authenticated with an OAuth 2.0 token that has access to the document being embedded. operationId: createEmbed tags: - Embedding Utils security: - OAuth2: - lucidchart.document.content.share.embed - lucidchart.document.app.picker.share.embed - lucidscale.document.content.share.embed - lucidscale.document.app.picker.share.embed - lucidspark.document.content.share.embed - lucidspark.document.app.picker.share.embed parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the document to be embedded. example: 001bd56d-1b10-4196-8ac6-45e3c22bd1c6 requestBody: required: true content: application/json: schema: type: object properties: embedVersion: type: string enum: - latest-version - snapshot-version example: snapshot-version description: Determines what version of the document will be loaded in the document viewer. required: - embedVersion responses: '201': description: OK. Returns a Document Embed Resource containing information about the newly created document embed. content: application/json: schema: $ref: '#/components/schemas/EmbedInformation' '400': description: Bad Request. Occurs if the embed version provided in the request body is invalid. '403': description: Forbidden. Occurs when the access token isn't allowed to create an embed for this document. /v1/documents/{documentId}/embeds/{embedId}/changeVersion: post: summary: Change Document Embed Version description: Updates the version type of an existing document embed. When called with an embedVersion of "snapshot-version", the endpoint associates the existing embed with a snapshot of the document's current state. Updating an embed's version to snapshot-version cannot be reversed. operationId: changeEmbedVersion tags: - Embedding Utils security: - OAuth2: - lucidchart.document.content.share.embed - lucidchart.document.app.picker.share.embed - lucidscale.document.content.share.embed - lucidscale.document.app.picker.share.embed - lucidspark.document.content.share.embed - lucidspark.document.app.picker.share.embed parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the embedded document to retrieve. example: 001bd56d-1b10-4196-8ac6-45e3c22bd1c6 - name: embedId in: path required: true schema: type: string format: uuid description: ID of the document embed to retrieve. example: 298f9a4a-09b5-440c-b95e-4d5c2d1aaf49 requestBody: required: true content: application/json: schema: type: object properties: embedVersion: type: string enum: - latest-version - snapshot-version example: snapshot-version description: Determines what version of the document will be loaded in the document viewer. required: - embedVersion responses: '200': description: OK. Returns a Document Embed Resource containing information about the updated document embed. content: application/json: schema: $ref: '#/components/schemas/EmbedInformation' '400': description: Bad Request. Occurs if the embed version provided in the request body is invalid. '403': description: Forbidden. Occurs when the access token isn't allowed to change the embed version. /v1/documents/pickerToken: post: summary: Generate Document Picker Token description: Generates a token that can be used to embed a document picker for the specified product. Only documents for the specified product are shown in the picker. operationId: generateDocumentPickerToken tags: - Document Picker security: - OAuth2: - lucidchart.document.app.picker - lucidscale.document.app.picker - lucidspark.document.app.picker requestBody: required: true content: application/json: schema: type: object properties: product: type: string description: Determines which product is used for the document picker. Only documents for this product are shown. enum: - lucidchart - lucidscale - lucidspark example: lucidchart targetOrigin: type: string description: The domain that will be used to host the webpage in which the document picker will be embedded. This will be used as the targetOrigin parameter in a call to window.postMessage when the user selects a document. example: https://example.com responses: '200': description: OK - with valid token that can be used to embed a document picker. content: application/jwt: schema: type: string '400': description: Bad Request - when parameters are missing or invalid. '403': description: Forbidden - when the access token is not allowed to generate a document picker token for the provided product. /v1/documents/picker?token=:token: get: summary: Embedded Document Picker description: Displays an embedded document picker within an iframe, allowing users to browse and select documents. Supports optional document creation and auto-selection of newly created documents. operationId: embeddedDocumentPicker tags: - Document Picker security: - OAuth2: [] parameters: - name: token in: query required: true schema: type: string description: The document picker token retrieved from the Generate Document Picker Token endpoint. - name: allowDocumentCreation in: query required: false schema: type: boolean description: Enables the document picker user to create new documents. By default, created documents are not auto selected unless autoSelectCreatedDocument is set to true. - name: autoSelectCreatedDocument in: query required: false schema: type: boolean description: Enables the document picker to automatically select newly created documents. - name: newDocumenbtTitleSuggestion in: query required: false schema: type: string description: When create button is enabled, it suggests a default title for the new document. - name: hideCancelButton in: query required: false schema: type: boolean description: Determines whether the document picker hides the cancel button. - name: onErrorRedirectUrl in: query required: false schema: type: string description: The URL to redirect the user back to if the document picker raises an error. responses: '200': description: The iframe content displaying the embedded document picker. content: text/html: schema: type: string /v1/auditLogs: get: summary: Get Audit Logs description: Retrieves audit log events for the account. This API is exclusive to Enterprise Shield accounts. This endpoint is paginated. operationId: getAuditLogs tags: - Audit Logs security: - OAuth2: - account.audit.logs parameters: - name: from in: query required: false schema: type: string format: date-time description: The timestamp from which the audit logs will be returned. Defaults to 180 days prior to the current timestamp. example: '2021-01-01T00:00:00Z' - name: to in: query required: false schema: type: string format: date-time description: The timestamp to which the logs will be returned. Defaults to the current timestamp. example: '2021-01-01T00:00:00Z' - name: pageSize in: query required: false schema: type: integer default: 200 description: The number of audit logs to return per request. example: 100 - name: pageToken in: query required: false schema: type: string description: A token used for pagination to retrieve the next page of results when polling audit logs. example: eyJvIjoiMjAyNC0wOS0wNFQxNzoxNDoyOS4zNjA5NzhaXzU4ODk4NTkxNCJ9 responses: '200': description: OK. Returns an array of audit log events. content: application/json: schema: type: array items: $ref: '#/components/schemas/AuditLog' '400': description: Bad request. Occurs when the query parameters are invalid. '403': description: Forbidden. Occurs when the authorized token does not have permission to access audit logs. /v1/auditLogs/query: post: summary: Query Audit Logs description: Queries audit log events for the account using filter criteria specified in the request body. This API is exclusive to Enterprise Shield accounts. This endpoint is paginated. operationId: queryAuditLogs tags: - Audit Logs security: - OAuth2: - account.audit.logs parameters: - name: pageSize in: query required: false schema: type: integer default: 200 description: The number of audit logs to return per request. example: 100 - name: pageToken in: query required: false schema: type: string description: A token used for pagination to retrieve the next page of results when polling audit logs. example: eyJvIjoiMjAyNC0wOS0wNFQxNzoxNDoyOS4zNjA5NzhaXzU4ODk4NTkxNCJ9 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuditLogQueryRequestBody' responses: '200': description: OK. Returns an array of audit log events matching the query. content: application/json: schema: type: array items: $ref: '#/components/schemas/AuditLog' '400': description: Bad request. Occurs when the query parameters are invalid. '403': description: Forbidden. Occurs when the authorized token does not have permission to access audit logs. /v1/teams: get: summary: List Teams description: 'Retrieves information about teams the authenticated user has at least read-only access to. The list of teams returned depends on whether the request was made using user or admin permissions. User permissions return teams the requesting user has access to. Admin permissions return all teams belonging to the account. This endpoint is paginated. ' operationId: listTeams tags: - Teams security: - ApiKey: - TeamsReadonly - TeamsAdmin - OAuth2: - teams:readonly - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: filter in: query required: false schema: type: string enum: - include=memberonly description: The filter to apply to the returned teams. The only supported filter is "include=memberonly", which returns only teams that the requesting user is a member of. If no filter is provided, all `open` and `closed` teams on the account are returned, along with `hidden` teams that the requesting user is a member of. example: include=memberonly responses: '200': description: OK. Returns a list of Team resources containing information about teams directly accessible to the authenticated user. If requesting as admin, the list includes all teams on the account. If a filter is specified, only teams matching the filter are returned. content: application/json: schema: type: array items: $ref: '#/components/schemas/Team' post: summary: Create Team description: 'Creates a new team for the authenticated user, populated with the given team members. Hidden teams cannot be created via the REST API. Whether the requesting user is automatically added to the team depends on the permission type. With user permissions, the user is automatically added to the team. With admin permissions, the user is not automatically added. ' operationId: createTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTeamBody' responses: '201': description: Created. Returns a Team resource containing information about the created team. If requesting as admin, the user making the request will not have been automatically included as a user on the team. content: application/json: schema: $ref: '#/components/schemas/Team' '400': description: Bad Request. Occurs if the name in the request body is empty or exceeds the maximum allowed length. '403': description: Forbidden. Occurs if the user making the request does not have permission to create teams. '409': description: Conflict. Occurs if a team already exists with an identical name. /v1/teams/{id}: get: summary: Get Team description: 'Retrieves information about a requested team. The response depends on the permission type used: user permissions require that the authenticated user has access to the team, while admin permissions allow access to any team belonging to the account.' operationId: getTeam tags: - Teams security: - ApiKey: - TeamsReadonly - TeamsAdmin - OAuth2: - teams:readonly - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to get. example: 99 responses: '200': description: OK. Returns a Team resource containing information about the specified team. If requesting as admin, a Team resource may be returned even if the authenticated user does not have direct access to the specified team. content: application/json: schema: $ref: '#/components/schemas/Team' '403': description: Forbidden. * if the user making the request does not have access to the specified team. * if the team is not directly accessible by the authenticated user or does not exist. patch: summary: Update Team description: Updates the properties of an existing team, such as its name or type. With user permissions, the team must be one the requesting user has edit access to. With admin permissions, any team belonging to the account can be updated. operationId: updateTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to update. example: 99 requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateTeamBody' responses: '200': description: OK. Returns a Team resource containing information about the updated team. content: application/json: schema: $ref: '#/components/schemas/Team' '400': description: Bad Request. Occurs if the name in the request body is empty or exceeds the maximum allowed length. '403': description: Forbidden. * if the user making the request does not have access to the specified team. * if the team is not directly accessible by the authenticated user or does not exist. * if the team is managed via SCIM. Use the SCIM Groups API to modify SCIM-managed teams. '409': description: Conflict. Occurs if a team already exists with an identical name. /v1/teams/{id}/users: get: summary: List Users on Team description: 'Retrieves basic information about users on a specified team. With user permissions, the authenticated user must have access to the team. With admin permissions, users from any team belonging to the account can be retrieved. This endpoint is paginated. ' operationId: listUsersOnTeam tags: - Teams security: - ApiKey: - TeamsReadonly - TeamsAdmin - OAuth2: - teams:readonly - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to be queried. example: 99 responses: '200': description: OK. Returns a list of Profile resources containing basic information about users on the specified team. If requesting as admin, Profile resources may be returned even if the authenticated user does not have direct access to the specified team. content: application/json: schema: type: array items: $ref: '#/components/schemas/Profile' '403': description: Forbidden. * if the user making the request does not have access to the specified team. * if the team has been archived, is not directly accessible by the authenticated user, or does not exist. /v1/teams/{id}/users/add: post: summary: Add Users to Team description: Adds users to a specified team with assigned roles. With user permissions, the team must be one the requesting user has edit access to. With admin permissions, users can be added to any team belonging to the account. operationId: addUsersToTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to which to add users. example: 99 requestBody: content: application/json: schema: $ref: '#/components/schemas/AddUsersToTeamBody' responses: '204': description: No Content. The users were successfully added to the team with their assigned roles. If requesting as admin, users may have been added even though the authenticated user does not have direct access to the specified team. '403': description: Forbidden. * if not all the specified users are on the authenticated account. * if the user making the request does not have permission to edit teams. * if the user making the request does not have access to the specified team. * if the team is managed via SCIM. Use the SCIM Groups API to modify SCIM-managed teams. /v1/teams/{id}/users/remove: post: summary: Remove Users from Team description: Removes users from a specified team. With user permissions, the team must be one the requesting user has edit access to. With admin permissions, users can be removed from any team belonging to the account. operationId: removeUsersFromTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team from which to remove users. example: 99 requestBody: content: application/json: schema: $ref: '#/components/schemas/RemoveUsersFromTeamBody' responses: '204': description: No Content. The users were successfully removed from the team. If requesting as admin, users may be have been removed even if the authenticated user does not have direct access to the specified team. '400': description: Bad Request. * if the user making the request attempts to remove all users from the team. * if not all the specified users are members of the team. '403': description: Forbidden. * if the user making the request does not have permission to edit teams. * if the user making the request does not have access to the specified team. * if the team is managed via SCIM. Use the SCIM Groups API to modify SCIM-managed teams. /v1/teams/{id}/archive: post: summary: Archive Team description: Archives a team, making it inactive. With user permissions, the team must be one the requesting user has edit access to. With admin permissions, any team belonging to the account can be archived. operationId: archiveTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to be archived. example: 99 responses: '204': description: No Content. The team was successfully archived. If requesting as admin, the specified team may have been archived even though the authenticated user did not have direct access to it. '403': description: Forbidden. * if the user making the request does not have permission to edit teams. * if the user making the request does not have access to the specified team. * if the team is managed via SCIM. Use the SCIM Groups API to modify SCIM-managed teams. /v1/teams/{id}/restore: post: summary: Restore Team description: Restores a previously archived team. With user permissions, the team must be one the requesting user has edit access to. With admin permissions, any team belonging to the account can be restored. operationId: restoreTeam tags: - Teams security: - ApiKey: - TeamsEdit - TeamsAdmin - OAuth2: - teams - teams:admin parameters: - $ref: '#/components/parameters/RequestAs-Teams' - name: id in: path required: true schema: type: number description: ID of the team to be restored. example: 99 responses: '204': description: No Content. The team was successfully restored. If requesting as admin, the specified team may have been restored even though the authenticated user did not have direct access to it. '403': description: Forbidden. * if the user making the request does not have permission to edit teams. * if the user making the request does not have access to the specified team. * if the team is managed via SCIM. Use the SCIM Groups API to modify SCIM-managed teams. /v1/credentials/aws/externalId: get: summary: Get AWS External ID description: Get the user AWS External ID. A user should use this external ID to create a trust relationship with AWS, which is required to create a credential. operationId: getAwsExternalId tags: - Cloud security: - ApiKey: - CloudReadonly - OAuth2: - cloud.credential:readonly responses: '200': description: OK. Returns the AWS external ID required for cross-account role setup. content: application/json: schema: $ref: '#/components/schemas/AwsCredentialExternalId' /v1/credentials/aws: post: summary: Create AWS Credential description: Create a new credential for AWS. The external ID generated in the request to Get AWS External ID will be retrieved and included in the request to AWS automatically. operationId: createAwsCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddAwsCredentialRequest' responses: '201': description: Created. Returns the newly created AWS credential. content: application/json: schema: $ref: '#/components/schemas/AwsCredentialObject' '400': description: Bad Request. Occurs when the ARN or request parameters are invalid. /v1/credentials/aws/{awsCredentialId}: patch: summary: Update AWS Credential description: Update an existing credential for AWS. operationId: updateAwsCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential parameters: - name: awsCredentialId in: path required: true schema: $ref: '#/components/schemas/AwsCredentialId' description: The ID of the AWS credential to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAwsCredentialRequest' responses: '200': description: OK. Returns the updated AWS credential. content: application/json: schema: $ref: '#/components/schemas/AwsCredentialObject' '403': description: Forbidden. Occurs when the credential was not found or the user does not have access to it. /v1/credentials/azure: post: summary: Create Azure Credential description: Create a new credential for Azure. operationId: createAzureCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddAzureCredentialRequest' responses: '201': description: Created. Returns the newly created Azure credential. content: application/json: schema: $ref: '#/components/schemas/AzureCredentialObject' '409': description: Conflict. Occurs when a credential with the given client ID already exists. /v1/credentials/azure/{azureCredentialId}: patch: summary: Update Azure Credential description: Update an existing credential for Azure. operationId: updateAzureCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential parameters: - name: azureCredentialId in: path required: true schema: $ref: '#/components/schemas/AzureCredentialId' description: The ID of the Azure credential to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAzureCredentialRequest' responses: '200': description: OK. Returns the updated Azure credential. content: application/json: schema: $ref: '#/components/schemas/AzureCredentialObject' '403': description: Forbidden. Occurs when the credential was not found or the user does not have access to it. /v1/credentials/googleCloud: post: summary: Create Google Cloud Credential description: Create a new credential for Google Cloud. operationId: createGoogleCloudCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential requestBody: required: true content: multipart/form-data: schema: type: object properties: service-account-key-file: type: string format: binary description: The Google-Cloud-CLI-generated JSON file from which to create the new credential displayName: type: string description: When provided, the name to give the created credential required: - service-account-key-file responses: '201': description: Created. Returns the newly created Google Cloud credential. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudCredentialObject' '400': description: Bad Request. Occurs when no file is found or the file is invalid. '409': description: Conflict. Occurs when the credentials are already in use. /v1/credentials/googleCloud/{googleCloudCredentialId}: patch: summary: Update Google Cloud Credential description: Update an existing credential for Google Cloud. operationId: updateGoogleCloudCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential parameters: - name: googleCloudCredentialId in: path required: true schema: $ref: '#/components/schemas/GoogleCloudCredentialId' description: The ID of the Google Cloud credential to update requestBody: required: true content: multipart/form-data: schema: type: object properties: service-account-key-file: type: string format: binary description: When provided, the Google-Cloud-CLI-generated JSON file from which to update the credential displayName: type: string description: When provided, the name to give the updated credential responses: '200': description: OK. Returns the updated Google Cloud credential. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudCredentialObject' '400': description: Bad Request. Occurs when no file is found or the file is invalid. '403': description: Forbidden. Occurs when the credential was not found or the user does not have access to it. '409': description: Conflict. Occurs when the credentials are already in use. /v1/credentials: get: summary: List Credentials description: List all credentials on your Lucid account. operationId: listCredentials tags: - Cloud security: - ApiKey: - CloudReadonly - OAuth2: - cloud.credential:readonly responses: '200': description: OK. Returns a list of credentials that the user has access to. content: application/json: schema: type: array items: $ref: '#/components/schemas/CredentialObject' /v1/credentials/{credentialId}: get: summary: Get Credential description: Get details about a specific credential. operationId: getCredential tags: - Cloud security: - ApiKey: - CloudReadonly - OAuth2: - cloud.credential:readonly parameters: - name: credentialId in: path required: true schema: $ref: '#/components/schemas/CloudCredentialId' description: The ID of the credential to retrieve responses: '200': description: OK. Returns the specified credential. content: application/json: schema: $ref: '#/components/schemas/CredentialObject' '400': description: Bad Request. Occurs when the credential ID is malformatted. '403': description: Forbidden. Occurs when the credential does not exist or the user does not have access to it. delete: summary: Delete Credential description: Delete the specified credential. operationId: deleteCredential tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.credential parameters: - name: credentialId in: path required: true schema: $ref: '#/components/schemas/CloudCredentialId' description: The ID of the credential to delete responses: '204': description: No Content. Occurs when the credential is successfully deleted. '400': description: Bad Request. Occurs when the credential ID is malformatted. '403': description: Forbidden. Occurs when the credential does not exist or the user does not have access to it. /v1/dataSources/aws/resources: get: summary: Get Fully Supported AWS Resources description: Get a list of all AWS resources fully supported by Lucid Cloud. operationId: getFullySupportedAwsResources tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the AWS resources fully supported by the REST API. content: application/json: schema: type: array items: type: object example: - resource: AWS::ECS::Cluster - resource: AWS::S3::Bucket subResources: - resource: AWS::S3::Bucket--Additional-Metadata - resource: AWS::SNS::Topic subResources: - resource: AWS::SNS::Topic--Additional-Metadata - resource: AWS::SNS::Subscription subResources: - resource: AWS::SNS::Subscription--Additional-Metadata /v2/dataSources/aws/regions: get: summary: Get Supported AWS Regions description: Get a list of all AWS regions supported by Lucid Cloud. operationId: getSupportedAwsRegions tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of AWS regions supported by the REST API, including both default and opt-in regions. Each region is annotated with its type to indicate whether it requires explicit enablement in the AWS account. content: application/json: schema: type: array items: type: object properties: name: type: string description: The AWS region identifier type: type: string enum: - default - optin description: The region type - "default" for standard regions, "optin" for regions that require explicit enablement required: - name - type example: - name: us-east-1 type: default - name: eu-west-1 type: default - name: ap-east-1 type: optin - name: me-south-1 type: optin /v1/dataSources/azure/resources: get: summary: Get Fully Supported Azure Resources description: Get a list of all Azure resources fully supported by Lucid Cloud. operationId: getFullySupportedAzureResources tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the Azure resources fully supported by the REST API. content: application/json: schema: type: array items: type: object example: - resource: Microsoft.Web/serverFarms - resource: Microsoft.Network/dnszones subResources: - resource: Microsoft.Network/dnszones/recordsets - resource: Microsoft.Cdn/profiles subResources: - resource: Microsoft.Cdn/profiles/endpoints - resource: Microsoft.Cdn/profiles/endpoints/originGroups subResources: - resource: Microsoft.Cdn/profiles/endpoints/origins /v1/dataSources/googleCloud/resources: get: summary: Get Fully Supported Google Cloud Resources description: Get a list of all Google Cloud resources fully supported by Lucid Cloud. operationId: getFullySupportedGoogleCloudResources tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the Google Cloud resources fully supported by the REST API. content: application/json: schema: type: array items: type: object example: - resource: container.googleapis.com/NodePool - resource: compute.googleapis.com/Firewall - resource: compute.googleapis.com/VpnTunnel /v1/dataSources/aws: post: summary: Create AWS Data Source description: Create a new data source from AWS data. Returns a jobId that can be used to retrieve the status from the Get "Create AWS Data Source" Job Status endpoint. operationId: createAwsDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAwsDataSourceRequest' responses: '202': description: Accepted. Occurs when the creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. /v1/dataSources/aws/{jobReferenceId}/status: get: summary: Get "Create AWS Data Source" Job Status description: Get the status of a data source creation request started by Create AWS Data Source. operationId: getCreateAwsDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AwsDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources/aws/{awsDataSourceId}: post: summary: Update AWS Data Source description: Update an existing AWS data source to reflect the latest state of data in AWS. Optionally updates the resources and regions included in the data source as well. Returns a jobId that can be used to check the status via the Get "Update AWS Data Source" Job Status endpoint. operationId: updateAwsDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: awsDataSourceId in: path required: true schema: $ref: '#/components/schemas/AwsDataSourceId' description: The ID of the AWS data source to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAwsDataSourceRequest' responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. patch: summary: Edit AWS Data Source description: Edit the metadata of an AWS data source. Metadata refers to any property of the data source that is not related to the data source's cloud data itself. operationId: editAwsDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: awsDataSourceId in: path required: true schema: $ref: '#/components/schemas/AwsDataSourceId' description: The ID of the AWS data source to edit requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EditAwsDataSourceRequest' responses: '200': description: OK. Returns the edited AWS data source. content: application/json: schema: $ref: '#/components/schemas/AwsDataSourceObject' '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. /v1/dataSources/aws/{awsDataSourceId}/upload: post: summary: Update AWS Data Source from File description: Update an existing AWS data source to reflect the state represented in a JSON file exported from AWS directly via the AWS CLI. Returns a jobId that can be used to monitor progress through the Get "Update AWS Data Source" Job Status endpoint. operationId: updateAwsDataSourceFromFile tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: awsDataSourceId in: path required: true schema: $ref: '#/components/schemas/AwsDataSourceId' description: The ID of the AWS data source to update requestBody: required: true content: multipart/form-data: schema: type: object properties: awsclijson: type: string format: binary description: The AWS-CLI-generated JSON file from which to update the data source required: - awsclijson responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. /v1/dataSources/aws/{awsDataSourceId}/{jobReferenceId}/status: get: summary: Get "Update AWS Data Source" Job Status description: Get the status of a data source update request started by Update AWS Data Source or Update AWS Data Source from File. operationId: getUpdateAwsDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: awsDataSourceId in: path required: true schema: $ref: '#/components/schemas/AwsDataSourceId' description: The ID of the AWS data source associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AwsDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources/azure: post: summary: Create Azure Data Source description: Create a new data source from Azure data. Returns a jobId that can be used to check the status of the operation through the Get "Create Azure Data Source" Job Status endpoint. operationId: createAzureDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAzureDataSourceRequest' responses: '202': description: Accepted. Occurs when the creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. /v1/dataSources/azure/{jobReferenceId}/status: get: summary: Get "Create Azure Data Source" Job Status description: Get the status of a data source creation request started by Create Azure Data Source. operationId: getCreateAzureDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AzureDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources/azure/{azureDataSourceId}: post: summary: Update Azure Data Source description: Update an existing Azure data source to reflect the latest state of data in Azure. Optionally updates the resources included in the data source as well. Returns a jobId that can be used to monitor progress through the Get "Update Azure Data Source" Job Status endpoint. operationId: updateAzureDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: azureDataSourceId in: path required: true schema: $ref: '#/components/schemas/AzureDataSourceId' description: The ID of the Azure data source to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAzureDataSourceRequest' responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. patch: summary: Edit Azure Data Source description: Edit the metadata of an Azure data source. Metadata refers to any property of the data source that is not related to the data source's cloud data itself. operationId: editAzureDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: azureDataSourceId in: path required: true schema: $ref: '#/components/schemas/AzureDataSourceId' description: The ID of the Azure data source to edit requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EditAzureDataSourceRequest' responses: '200': description: OK. Returns the edited Azure data source. content: application/json: schema: $ref: '#/components/schemas/AzureDataSourceObject' /v1/dataSources/azure/{azureDataSourceId}/upload: post: summary: Update Azure Data Source from File description: Update an existing Azure data source to reflect the state represented in a JSON file exported from Azure directly via the Azure CLI. Returns a jobId that can be used to monitor progress through the Get "Update Azure Data Source" Job Status endpoint. operationId: updateAzureDataSourceFromFile tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: azureDataSourceId in: path required: true schema: $ref: '#/components/schemas/AzureDataSourceId' description: The ID of the Azure data source to update requestBody: required: true content: multipart/form-data: schema: type: object properties: azureclijson: type: string format: binary description: The Azure-CLI-generated JSON file from which to update the data source required: - azureclijson responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. /v1/dataSources/azure/{azureDataSourceId}/{jobReferenceId}/status: get: summary: Get "Update Azure Data Source" Job Status description: Get the status of a data source update request started by Update Azure Data Source or Update Azure Data Source from File. operationId: getUpdateAzureDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: azureDataSourceId in: path required: true schema: $ref: '#/components/schemas/AzureDataSourceId' description: The ID of the Azure data source associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AzureDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources/googleCloud: post: summary: Create Google Cloud Data Source description: Create a new data source from Google Cloud data. Returns a jobId that can be used to check the status of the operation through the Get "Create Google Cloud Data Source" Job Status endpoint. operationId: createGoogleCloudDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateGoogleCloudDataSourceRequest' responses: '202': description: Accepted. Occurs when the creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. /v1/dataSources/googleCloud/{jobReferenceId}/status: get: summary: Get "Create Google Cloud Data Source" Job Status description: Get the status of a data source creation request started by Create Google Cloud Data Source. operationId: getCreateGoogleCloudDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources/googleCloud/{googleCloudDataSourceId}: post: summary: Update Google Cloud Data Source description: Update an existing Google Cloud data source to reflect the latest state of data in Google Cloud. Optionally updates the resources included in the data source as well. Returns a jobId that can be used to monitor progress through the Get "Update Google Cloud Data Source" Job Status endpoint. operationId: updateGoogleCloudDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: googleCloudDataSourceId in: path required: true schema: $ref: '#/components/schemas/GoogleCloudDataSourceId' description: The ID of the Google Cloud data source to update requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateGoogleCloudDataSourceRequest' responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. patch: summary: Edit Google Cloud Data Source description: Edit the metadata of a Google Cloud data source. Metadata refers to any property of the data source that is not related to the data source's cloud data itself. operationId: editGoogleCloudDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: googleCloudDataSourceId in: path required: true schema: $ref: '#/components/schemas/GoogleCloudDataSourceId' description: The ID of the Google Cloud data source to edit requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EditGoogleCloudDataSourceRequest' responses: '200': description: OK. Returns the edited Google Cloud data source. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudDataSourceObject' '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. /v1/dataSources/googleCloud/{googleCloudDataSourceId}/upload: post: summary: Update Google Cloud Data Source from File description: Update an existing Google Cloud data source to reflect the state represented in a JSON file exported from Google Cloud directly via the Google Cloud CLI. Returns a jobId that can be used to monitor progress through the Get "Update Google Cloud Data Source" Job Status endpoint. operationId: updateGoogleCloudDataSourceFromFile tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: googleCloudDataSourceId in: path required: true schema: $ref: '#/components/schemas/GoogleCloudDataSourceId' description: The ID of the Google Cloud data source to update requestBody: required: true content: multipart/form-data: schema: type: object properties: googlecloudclijson: type: string format: binary description: The Google-Cloud-CLI-generated JSON file from which to update the data source required: - googlecloudclijson responses: '202': description: Accepted. Occurs when the update job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when no file is found or the file is invalid. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when an update job is already in progress for this data source. /v1/dataSources/googleCloud/{googleCloudDataSourceId}/{jobReferenceId}/status: get: summary: Get "Update Google Cloud Data Source" Job Status description: Get the status of a data source update request started by Update Google Cloud Data Source or Update Google Cloud Data Source from File. operationId: getUpdateGoogleCloudDataSourceJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: googleCloudDataSourceId in: path required: true schema: $ref: '#/components/schemas/GoogleCloudDataSourceId' description: The ID of the Google Cloud data source associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudDataSourceJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/dataSources: get: summary: List Data Sources description: List all data sources on your Lucid account. operationId: listDataSources tags: - Cloud security: - ApiKey: - CloudReadonly - OAuth2: - cloud.datasource:readonly responses: '200': description: OK. Returns a list of data sources. content: application/json: schema: type: array items: $ref: '#/components/schemas/DataSourceObject' /v1/dataSources/{dataSourceId}: get: summary: Get Data Source description: Gets a specific existing data source. If the creator of the data source is the user making the request, the link parameters will be returned with the data source. operationId: getDataSource tags: - Cloud security: - ApiKey: - CloudReadonly - OAuth2: - cloud.datasource:readonly parameters: - name: dataSourceId in: path required: true schema: $ref: '#/components/schemas/DataSourceId' description: The ID of the data source to retrieve responses: '200': description: OK. Returns the specified data source. content: application/json: schema: $ref: '#/components/schemas/DataSourceObject' '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. delete: summary: Delete Data Source description: Delete the specified data source and all related data (collections, schema, items, link parameters). Once deleted, none of the information can be recovered. operationId: deleteDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.datasource parameters: - name: dataSourceId in: path required: true schema: $ref: '#/components/schemas/DataSourceId' description: The ID of the data source to delete responses: '204': description: No Content. Occurs when the data source is successfully deleted. '400': description: Bad Request. Occurs when the data source ID is malformatted. '403': description: Forbidden. Occurs when the data source does not exist or the user does not have access to it. '409': description: Conflict. Occurs when deletion is attempted while jobs are running. /v1/documents/cloud/aws/viewTemplates: get: summary: Get Supported AWS View Templates description: Get a list of all AWS view templates fully supported by Lucid Cloud. operationId: getSupportedAwsViewTemplates tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the AWS view templates supported by the REST API. content: application/json: schema: type: array items: type: object example: - compliance-insights - cost-saving-insights - ecs /v1/documents/cloud/azure/viewTemplates: get: summary: Get Supported Azure View Templates description: Get a list of all Azure view templates fully supported by Lucid Cloud. operationId: getSupportedAzureViewTemplates tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the Azure view templates supported by the REST API. content: application/json: schema: type: array items: type: object example: - compliance-insights - cost-saving-insights - infrastructure /v1/documents/cloud/googleCloud/viewTemplates: get: summary: Get Supported Google Cloud View Templates description: Get a list of all Google Cloud view templates fully supported by Lucid Cloud. operationId: getSupportedGoogleCloudViewTemplates tags: - Cloud security: - ApiKey: [] responses: '200': description: OK. Returns a list of the Google Cloud view templates supported by the REST API. content: application/json: schema: type: array items: type: object example: - compliance-insights - cost-saving-insights - gke-clusters /v1/documents/cloud/aws: post: summary: Create Model from AWS Data Source description: Create a new model containing the visualization of data from an AWS data source. Returns a jobId that can be used to retrieve the status from the Get "Create Model from AWS Data Source" Job Status endpoint. operationId: createModelFromAwsDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateModelFromAwsDataSourceRequest' responses: '202': description: Accepted. Occurs when the model creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' /v1/documents/cloud/aws/{jobReferenceId}/status: get: summary: Get "Create Model from AWS Data Source" Job Status description: Get the status of a model creation request started by Create Model from AWS Data Source. operationId: getAwsModelCreationJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AwsModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/documents/cloud/aws/{documentId}/sync: post: summary: Sync Model with AWS Data Source description: Sync an existing model containing the visualization of data from an AWS data source, so that it is up-to-date with the data in that data source. Returns a jobId that can be used to get the status from Get "Sync Model with AWS Data Source" Job Status. operationId: syncModelFromAwsDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model to sync responses: '202': description: Accepted. Occurs when the model sync job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the document ID is malformatted. '403': description: Forbidden. Occurs when the document does not exist or the user does not have access to it. '409': description: Conflict. Occurs when a sync is already in progress for this document. /v1/documents/cloud/aws/{documentId}/sync/{jobReferenceId}/status: get: summary: Get "Sync Model with AWS Data Source" Job Status description: Get the status of a model sync request started by Sync Model with AWS Data Source. operationId: getAwsModelSyncJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AwsModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/documents/cloud/azure: post: summary: Create Model from Azure Data Source description: Create a new model containing the visualization of data from an Azure data source. Returns a jobId that can be used to retrieve the status from the Get "Create Model from Azure Data Source" Job Status endpoint. operationId: createModelFromAzureDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateModelFromAzureDataSourceRequest' responses: '202': description: Accepted. Occurs when the model creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' /v1/documents/cloud/azure/{jobReferenceId}/status: get: summary: Get "Create Model from Azure Data Source" Job Status description: Get the status of a model creation request started by Create Model from Azure Data Source. operationId: getAzureModelCreationJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AzureModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/documents/cloud/azure/{documentId}/sync: post: summary: Sync Model with Azure Data Source description: Sync an existing model containing the visualization of data from an Azure data source, so that it is up-to-date with the data in that data source. Returns a jobId that can be used to get the status from Get "Sync Model with Azure Data Source" Job Status. operationId: syncModelFromAzureDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model to sync responses: '202': description: Accepted. Occurs when the model sync job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the document ID is malformatted. '403': description: Forbidden. Occurs when the document does not exist or the user does not have access to it. '409': description: Conflict. Occurs when a sync is already in progress for this document. /v1/documents/cloud/azure/{documentId}/sync/{jobReferenceId}/status: get: summary: Get "Sync Model with Azure Data Source" Job Status description: Get the status of a model sync request started by Sync Model with Azure Data Source. operationId: getAzureModelSyncJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/AzureModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/documents/cloud/googleCloud: post: summary: Create Model from Google Cloud Data Source description: Create a new model containing the visualization of data from a Google Cloud data source. Returns a jobId that can be used to retrieve the status from the Get "Create Model from Google Cloud Data Source" Job Status endpoint. operationId: createModelFromGoogleCloudDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateModelFromGoogleCloudDataSourceRequest' responses: '202': description: Accepted. Occurs when the model creation job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' /v1/documents/cloud/googleCloud/{jobReferenceId}/status: get: summary: Get "Create Model from Google Cloud Data Source" Job Status description: Get the status of a model creation request started by Create Model from Google Cloud Data Source. operationId: getGoogleCloudModelCreationJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/documents/cloud/googleCloud/{documentId}/sync: post: summary: Sync Model with Google Cloud Data Source description: Sync an existing model containing the visualization of data from a Google Cloud data source, so that it is up-to-date with the data in that data source. Returns a jobId that can be used to get the status from Get "Sync Model with Google Cloud Data Source" Job Status. operationId: syncModelFromGoogleCloudDataSource tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model to sync responses: '202': description: Accepted. Occurs when the model sync job has been queued. content: application/json: schema: $ref: '#/components/schemas/JobReferenceIdResponse' '400': description: Bad Request. Occurs when the document ID is malformatted. '403': description: Forbidden. Occurs when the document does not exist or the user does not have access to it. '409': description: Conflict. Occurs when a sync is already in progress for this document. /v1/documents/cloud/googleCloud/{documentId}/sync/{jobReferenceId}/status: get: summary: Get "Sync Model with Google Cloud Data Source" Job Status description: Get the status of a model sync request started by Sync Model with Google Cloud Data Source. operationId: getGoogleCloudModelSyncJobStatus tags: - Cloud security: - ApiKey: - CloudEdit - OAuth2: - cloud.model parameters: - name: documentId in: path required: true schema: type: string format: uuid description: The document ID of the cloud model associated with the job - name: jobReferenceId in: path required: true schema: $ref: '#/components/schemas/JobReferenceId' responses: '200': description: OK. Returns the job status. content: application/json: schema: $ref: '#/components/schemas/GoogleCloudModelJobStatusResponse' '400': description: Bad Request. Occurs when the job reference ID is malformatted. '403': description: Forbidden. Occurs when the job does not exist or the user does not have access to it. /v1/repositories: get: summary: List Repositories description: Retrieves basic information for all repositories the authenticated user has permission to view. operationId: listRepositories tags: - Repositories security: - ApiKey: - RepositoryRead - OAuth2: - repository:readonly responses: '200': description: OK. Returns a list of repositories the user has access to. content: application/json: schema: type: array items: $ref: '#/components/schemas/RepositoryObject' '403': description: Forbidden. Occurs when the user does not have access to view any repository. post: summary: Create Repository description: Creates a new repository on the account. operationId: createRepository tags: - Repositories security: - ApiKey: - RepositoryEdit - OAuth2: - repository requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateRepositoryRequest' responses: '201': description: Created. Returns the newly created repository. content: application/json: schema: $ref: '#/components/schemas/RepositoryObject' '400': description: Bad Request. Occurs when no owner is provided, members or groups are added to an UNRESTRICTED repository, or invalid user/group IDs. '403': description: Forbidden. Occurs when the user does not have permission to create a repository. /v1/repositories/{repositoryId}: get: summary: Get Repository description: Retrieves basic information for the requested repository, provided the user has at least read-only access. operationId: getRepository tags: - Repositories security: - ApiKey: - RepositoryRead - OAuth2: - repository:readonly parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository responses: '200': description: OK. Returns the repository object. content: application/json: schema: $ref: '#/components/schemas/RepositoryObject' '403': description: Forbidden. Occurs when the user does not have access to the repository. /v1/repositories/{repositoryId}/users: get: summary: List Repository User Collaborators operationId: listRepositoryUsers tags: - Repositories description: List users with roles on a repository. security: - ApiKey: - RepositoryRead - OAuth2: - repository:readonly parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository responses: '200': description: OK. Returns a list of users and their roles on the repository. content: application/json: schema: type: array items: $ref: '#/components/schemas/RepositoryUser' '403': description: Forbidden. Occurs when the user does not have access to view repository owners or members. /v1/repositories/{repositoryId}/users/add: post: summary: Create or Update Repository User Roles operationId: addRepositoryUsers tags: - Repositories description: Manages user roles on a repository, allowing for updating of existing repository users or adding roles for new users on the repository. security: - ApiKey: - RepositoryEdit - OAuth2: - repository parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository requestBody: content: application/json: schema: $ref: '#/components/schemas/AddRepositoryUsersRequest' responses: '204': description: No Content. User and group roles have been successfully added or updated. '400': description: Bad Request. Occurs when duplicate or invalid user IDs are provided, or REPOSITORY_MEMBERs are added to an UNRESTRICTED repository. '403': description: Forbidden. Occurs when the user does not have permission to modify the repository. /v1/repositories/{repositoryId}/users/remove: post: summary: Remove Users from Repository operationId: removeRepositoryUsers tags: - Repositories description: Removes one or more users from a repository. security: - ApiKey: - RepositoryEdit - OAuth2: - repository parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository requestBody: required: true content: application/json: schema: type: object properties: users: type: array items: type: integer description: User ID to remove from the repository example: 123321 minItems: 1 description: Array of user IDs to remove from the repository required: - users responses: '204': description: No Content. Users have been successfully removed from the repository. '403': description: Forbidden. Occurs when the user does not have permission to modify the repository. /v1/repositories/{repositoryId}/groups: get: summary: List Repository Groups operationId: listRepositoryGroups tags: - Repositories description: List groups with repository member access. security: - ApiKey: - RepositoryRead - OAuth2: - repository:readonly parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository responses: '200': description: OK. Returns a list of groups with access to the repository. content: application/json: schema: type: array items: $ref: '#/components/schemas/RepositoryGroupCollaborator' '400': description: Bad Request. Occurs when attempting to list groups on an UNRESTRICTED repository. '403': description: Forbidden. Occurs when the user does not have access to the repository. /v1/repositories/{repositoryId}/groups/add: post: summary: Add Groups as Members on Repository operationId: addRepositoryGroups tags: - Repositories description: Add Groups to a repository. Users in the Group will have repository member access to the specified repository. security: - ApiKey: - RepositoryEdit - OAuth2: - repository parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RepositoryGroupsRequest' responses: '204': description: No Content. Groups have been successfully added. '400': description: Bad Request. Occurs when groups are added to an UNRESTRICTED repository, or invalid group IDs are provided. '403': description: Forbidden. Occurs when the user does not have permission to modify the repository. /v1/repositories/{repositoryId}/groups/remove: post: summary: Remove Groups from Repository operationId: removeRepositoryGroups tags: - Repositories description: Removes one or more groups from a restricted repository. security: - ApiKey: - RepositoryEdit - OAuth2: - repository parameters: - name: repositoryId in: path required: true schema: $ref: '#/components/schemas/RepositoryId' description: The unique identifier of the repository requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RepositoryGroupsRequest' responses: '204': description: No Content. Groups have been successfully removed from the repository. '400': description: Bad Request. Occurs when attempting to remove groups from an UNRESTRICTED repository. '403': description: Forbidden. Occurs when the user does not have permission to modify the repository. /v1/documents/{documentId}/threads: get: summary: List Document Threads description: 'Retrieves all comment threads for the specified document. Each thread includes its ID, creation timestamp, and status (open or closed). ## Valid Authentication Methods **API Key Grants:** - `DocumentReadonly` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content:readonly` - `lucidscale.document.content:readonly` - `lucidspark.document.content:readonly` - `lucid.document.content:readonly` ' operationId: listDocumentThreads tags: - Document Comments security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content:readonly - lucidscale.document.content:readonly - lucidspark.document.content:readonly - lucid.document.content:readonly parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the document to retrieve comment threads for. example: 110808fd-4553-4316-bccf-4f25ff59a532 responses: '200': description: OK with an array of Document Thread resources for the document's comment threads. content: application/json: schema: type: array items: $ref: '#/components/schemas/DocumentThread' '400': description: Bad Request if the document ID is malformed. '403': description: Forbidden if the app making the request does not have permission to the document, or if the document does not exist. /v1/documents/{documentId}/threads/{threadId}/comments: get: summary: List Thread Comments description: 'Retrieves all comments within a specific thread of a document. Each comment includes the author, comment text, creation timestamp, and any assigned users. ## Valid Authentication Methods **API Key Grants:** - `DocumentReadonly` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content:readonly` - `lucidscale.document.content:readonly` - `lucidspark.document.content:readonly` - `lucid.document.content:readonly` ' operationId: listDocumentThreadComments tags: - Document Comments security: - ApiKey: - DocumentReadonly - OAuth2: - lucidchart.document.content:readonly - lucidscale.document.content:readonly - lucidspark.document.content:readonly - lucid.document.content:readonly parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the document containing the thread. example: 110808fd-4553-4316-bccf-4f25ff59a532 - name: threadId in: path required: true schema: type: string description: ID of the comment thread to retrieve comments for. example: abc123 responses: '200': description: OK with an array of Document Comment resources for the thread's comments. content: application/json: schema: type: array items: $ref: '#/components/schemas/DocumentComment' '400': description: Bad Request if the document ID is malformed. '403': description: Forbidden if the app making the request does not have permission to the document, or if the document does not exist. '404': description: Not Found if the specified thread does not exist on the document. post: summary: Post Thread Comment description: 'Posts a new comment to an existing thread on a document. The comment text must be non-empty and cannot exceed 10,000 characters. ## Valid Authentication Methods **API Key Grants:** - `DocumentEdit` **OAuth 2.0 User Token Scopes:** - `lucidchart.document.content` - `lucidscale.document.content` - `lucidspark.document.content` - `lucid.document.content` ' operationId: postDocumentThreadComment tags: - Document Comments security: - ApiKey: - DocumentEdit - OAuth2: - lucidchart.document.content - lucidscale.document.content - lucidspark.document.content - lucid.document.content parameters: - name: documentId in: path required: true schema: type: string format: uuid description: ID of the document containing the thread. example: 110808fd-4553-4316-bccf-4f25ff59a532 - name: threadId in: path required: true schema: type: string description: ID of the comment thread to post a comment to. example: abc123 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostCommentRequestBody' responses: '204': description: No Content when the comment is successfully posted. '400': description: 'Bad Request. * Comment must be non-empty. * Comment must not exceed 10,000 characters. * Comment cannot be posted to a closed thread. ' '403': description: Forbidden if the app making the request does not have write permission to the document, or if the document does not exist. '404': description: Not Found if the specified thread does not exist on the document. /v1/subscriptions: get: summary: List Subscriptions description: Lists all subscriptions on the authenticated user's Lucid account. This endpoint is paginated. operationId: listSubscriptions tags: - Subscriptions security: - ApiKey: - LicensesAdmin - OAuth2: - licenses:admin.readonly - licenses:admin responses: '200': description: OK. Returns an array of subscriptions on the account. content: application/json: schema: type: array items: $ref: '#/components/schemas/Subscription' '403': description: Forbidden. Occurs when the user is not authorized to view subscriptions. /v1/subscriptions/{id}: get: summary: Get Subscription description: Retrieves details about a specific subscription on the account. operationId: getSubscription tags: - Subscriptions security: - ApiKey: - LicensesAdmin - OAuth2: - licenses:admin.readonly - licenses:admin parameters: - name: id in: path required: true schema: type: string format: uuid description: Subscription ID example: 8e8cf611-d74c-4a2f-8b61-754b22328fbb responses: '200': description: OK. Returns the subscription. content: application/json: schema: $ref: '#/components/schemas/Subscription' '403': description: Forbidden. Occurs when the user is not authorized to view subscriptions or the subscription does not exist. /v1/subscriptions/{id}/licenses: get: summary: List Licenses for Subscription description: Lists all licenses associated with a specific subscription. This endpoint is paginated. operationId: listSubscriptionLicenses tags: - Licenses security: - ApiKey: - LicensesAdmin - OAuth2: - licenses:admin.readonly - licenses:admin parameters: - name: id in: path required: true schema: type: string format: uuid description: Subscription ID example: 8e8cf611-d74c-4a2f-8b61-754b22328fbb responses: '200': description: OK. Returns an array of licenses associated with the specified subscription. content: application/json: schema: type: array items: $ref: '#/components/schemas/License' '403': description: Forbidden. Occurs when the user is not authorized to view licenses or the subscription does not exist. /v1/users/{id}/licenses: get: summary: List User Licenses description: Retrieves all licenses that have been granted to a specific user on the account. operationId: listUserLicenses tags: - Licenses security: - ApiKey: - LicensesAdmin - OAuth2: - licenses:admin.readonly - licenses:admin parameters: - name: id in: path required: true schema: type: integer description: User ID example: 123 responses: '200': description: OK. Returns an array of licenses granted to the specified user. content: application/json: schema: type: array items: $ref: '#/components/schemas/License' '403': description: Forbidden. Occurs when the user is not authorized to view licenses or the user does not exist. post: summary: Grant User License description: Grants a license to a user from a specified subscription. If the user already has a license on the given subscription, the existing license is returned. operationId: grantUserLicense tags: - Licenses security: - ApiKey: - LicensesAdmin - OAuth2: - licenses:admin parameters: - name: id in: path required: true schema: type: integer description: User ID example: 123 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GrantLicenseRequest' responses: '201': description: Created. Returns the granted license, or the existing license if the user already has one on this subscription. content: application/json: schema: $ref: '#/components/schemas/License' '403': description: Forbidden. Occurs when the user is not authorized to grant licenses. '409': description: Conflict. Occurs when there are no available licenses to grant, or the user is restricted from being granted a license. components: schemas: OAuth2Token: type: object properties: access_token: type: string description: Token to be used when making requests with OAuth 2.0 authentication. example: oauth2-Yzh4Y2Q3ZTVhY2FjYjkwOGJlZGNjNjU5NDM2NjgzZmUwMmNmMjkzM... client_id: type: string description: The client ID. example: 30VYbvlkqZv-SmJd7fTdpH9B9et2yqZA6Wvi5NY_ expires_in: type: number description: The lifetime in seconds of the access token. example: 3600 expires: type: number format: int64 description: Time until this token expires (expressed in milliseconds since Unix epoch). example: 1605732868411 refresh_token: type: string description: If the token includes the scope `offline_access`, then a refresh token will be provided. example: oauth2-AVU=-yPcwtzLkusIEnT7D9slQH4g8Ur0MdpUmpT0Z6BSMf6lmesRpTTSBGNniKd scopes: type: array items: type: string description: Scopes granted on this token. example: - lucidchart.document.app - offline_access token_type: type: string description: Value is always "bearer". example: bearer user_id: type: number description: ID of the user this token is on behalf of. Only returned when the token was granted on behalf of a user. Mutually exclusive with `account_id`. example: 341 account_id: type: number description: ID of the account this token is on behalf of. Only returned when the token was granted on behalf of an account. Mutually exclusive with `user_id`. example: 52 required: - access_token - user_id - account_id - client_id - expires_in - expires - scopes - token_type OAuth2IntrospectToken: type: object properties: active: type: boolean description: A boolean value indicating whether or not the token is active. example: true client_id: type: string description: The client ID. example: 30VYbvlkqZv-SmJd7fTdpH9B9et2yqZA6Wvi5NY_ expires_in: type: number description: The remaining lifetime in seconds of the access token. example: 3500 expires: type: number format: int64 description: Timestamp for when this token expires (expressed in milliseconds since Unix epoch). example: 1605732868411 scope: type: string description: Space-separated list of scopes allowed on this token. example: document.app offline_access token_type: type: string description: The type of token returned (currently, always "bearer"). example: bearer user_id: type: number description: ID of the user this token is on behalf of. Only returned when the token was granted on behalf of a user. Mutually exclusive with `account_id`. example: 1001 account_id: type: number description: ID of the account this token is on behalf of. Only returned when the token was granted on behalf of an account. Mutually exclusive with `user_id`. example: 52 required: - active - user_id - account_id - client_id - token_type - scope - expires_in - expires AccountInformationResource: type: object properties: id: type: number description: The unique ID for the authenticated account. name: type: string nullable: true description: The name assigned to the account. This field is null if no name has been assigned. Names are usually set by an admin and can be a helpful way to orient a user by informing them about which account an app will interact with. required: - id - name Classification: type: object properties: id: type: string format: uuid description: Unique ID of the classification. example: b7db4f07-5225-4a0c-8313-0fe199eec844 label: type: string description: Display name of the classification. example: private priority: type: integer description: Priority of the classification. example: 1 description: type: string nullable: true description: Optional description of the classification. example: For documents with sensitive customer data guidelineUrl: type: string nullable: true description: Optional URL linking to classification guidelines. example: https://lucid.app/lucidspark/classification-guidelines required: - id - label - priority Product: type: string enum: - lucidchart - lucidscale - lucidspark description: The Lucid Suite product that a document was created in. example: lucidchart AccountDocument: type: object properties: documentId: type: string format: uuid description: Unique ID of the document example: 110808fd-4553-4316-bccf-4f25ff59a532 title: type: string description: Title of the document example: document title adminViewUrl: type: string format: uri description: Link to view the document example: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/adminView created: type: string format: date-time description: Date and time of when the document was created example: '2019-04-22T13:47:23Z' owner: type: object properties: ownerType: type: string description: user or account id: type: number description: userId or accountId lastModified: type: string format: date-time description: Date and time of when the document was last modified example: '2020-06-26T16:29:37Z' trashed: type: string format: date-time nullable: true description: If defined, the timestamp when the document was moved to the trash example: null customTags: type: array items: type: string description: List of any custom tags assigned to the document example: - in progress product: $ref: '#/components/schemas/Product' status: type: string nullable: true description: Current assigned status of the document example: Complete classification: type: string nullable: true description: Current assigned classification of the document example: Private parent: type: integer nullable: true description: ID of the parent folder example: 123456788 userCollaboratorIds: type: array items: type: integer description: List of IDs of users that are collaborators on the document example: - 206418105 - 206418104 - 206418103 teamCollaboratorIds: type: array items: type: integer description: List of IDs of teams that are collaborators on the document example: - 111000660 - 111000661 - 111000659 required: - documentId - title - adminViewUrl - created - owner - lastModified - customTags - product - userCollaboratorIds - teamCollaboratorIds example: documentId: 110808fd-4553-4316-bccf-4f25ff59a532 title: document title adminViewUrl: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/adminView created: '2019-04-22T13:47:23Z' owner: ownerType: user id: '123456' lastModified: '2020-06-26T16:29:37Z' customTags: - in progress product: lucidchart status: Complete parent: 123456788 trashed: null userCollaboratorIds: - 206418105 - 206418104 - 206418103 teamCollaboratorIds: - 111000660 - 111000661 - 111000659 LegalHold: type: object properties: LegalHoldId: type: string format: uuid description: Unique ID of the legal hold. example: 110808fd-4553-4316-bccf-4f25ff59a532 AccountId: type: number description: Unique ID for the creating admin’s account. example: 100 StartTime: type: string format: date-time description: Start time of the legal hold. example: '2025-01-01T16:18:26Z' EndTime: type: string format: date-time description: End time of the legal hold. example: '2025-12-01T16:18:26Z' Title: type: string description: Title of the legal hold. example: New Legal Hold Description: type: string description: Description of the legal hold. example: Legal hold example Keywords: type: string description: Keyword(s) of the legal hold. example: alpha Created: type: string format: date-time description: Time that the legal hold was created. example: '2024-12-01T16:25:44Z' Modified: type: string format: date-time description: Time that the legal hold was last modified. example: '2024-12-01T16:25:44Z' required: - LegalHoldId - AccountId - StartTime - EndTime - Title - Created - Modified Avatar: type: object properties: type: type: string enum: - url example: url description: The kind of avatar. Currently always `url`, indicating the avatar is referenced by a link. Additional avatar kinds may be introduced in the future. link: type: string example: https://www.gravatar.com/avatar/00000000000000000000000000000000?s=200&d=404 description: A URL pointing to the user's avatar image. required: - type - link description: A reference to a user's avatar image. When the user has no uploaded avatar, this falls back to their Gravatar image. User: type: object properties: accountId: type: number example: 100 description: The unique ID for the user's account. enabled: type: boolean example: true description: Whether the user can authenticate to Lucid. Corresponds to the SCIM active attribute. email: type: string example: john-doe@example.com description: The user's email. name: type: string example: John Doe description: The user's full name. userId: type: number example: 101 description: The unique ID for the user. username: type: string example: johndoe description: The user's username. roles: type: array items: $ref: '#/components/schemas/UserRole' example: - billing-admin - team-admin description: A list of administrative roles assigned to the user. avatar: $ref: '#/components/schemas/Avatar' description: A reference to the user's avatar image, falling back to their Gravatar image. description: A standard representation of a user. UserRole: type: string enum: - account-owner - billing-admin - enterprise-shield-admin - developer - document-admin - group-admin - organizational-group-admin - team-admin - team-manager - template-admin - unknown-role description: Allows various administrative actions. CustomAttribute: type: object properties: type: type: string enum: - singleLineText - multiLineText - singleSelectDropdown - multiSelectDropdown - webLink - numericalRange - hierarchicalDropdown description: The custom attribute type example: singleLineText name: type: string description: Title of the custom attribute. hierarchicalDropdown attributes do not have names. example: Sample Label value: oneOf: - type: string - type: array items: oneOf: - $ref: '#/components/schemas/DataPair' - type: string description: The value assigned to the custom attribute. The type of this value is determined by the Attribute Type. example: null description: Object representing a custom attribute value for a document. required: - type DataPair: type: object properties: name: type: string description: Custom data key value: type: string description: Custom data value description: Object representing a key-value pair of data. required: - name - value example: name: City value: New York Document: type: object properties: documentId: type: string format: uuid description: Unique ID of the document example: 110808fd-4553-4316-bccf-4f25ff59a532 title: type: string description: Title of the document example: document title editUrl: type: string format: uri description: Link to edit the document example: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/edit viewUrl: type: string format: uri description: Link to view the document example: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/view version: type: integer description: Most recent version example: 101 pageCount: type: integer description: Number of pages within the document example: 5 canEdit: type: boolean description: If requesting user can edit the document example: false created: type: string format: date-time description: Date and time of when the document was created example: '2019-04-22T13:47:23Z' creatorId: type: integer description: ID of user who created and owns the document example: 12345 lastModified: type: string format: date-time description: Date and time of when the document was last modified example: '2020-06-26T16:29:37Z' lastModifiedUserId: type: integer description: ID of user who most recently modified the document example: 54321 customAttributes: type: array items: $ref: '#/components/schemas/CustomAttribute' description: List of any custom attributes belonging to the document. Populated for Enterprise Accounts only. example: [] customTags: type: array items: type: string description: List of any custom tags assigned to the document example: - in progress product: $ref: '#/components/schemas/Product' status: type: string nullable: true description: Current assigned status of the document example: Complete classification: type: string nullable: true description: Current assigned classification of the document example: Private classificationId: type: string format: uuid nullable: true description: Current assigned classification ID of the document. example: b7db4f07-5225-4a0c-8313-0fe199eec844 trashed: type: string format: date-time nullable: true description: If defined, the timestamp when the document was moved to the trash example: null parent: type: integer nullable: true description: ID of the parent folder example: null repository: nullable: true allOf: - $ref: '#/components/schemas/Repository' accountId: type: integer nullable: true description: ID of Lucid account that owns the document owner: $ref: '#/components/schemas/DocumentOwner' required: - documentId - title - editUrl - viewUrl - version - pageCount - canEdit - created - creatorId - lastModified - lastModifiedUserId - customAttributes - customTags - product - accountId example: documentId: 110808fd-4553-4316-bccf-4f25ff59a532 title: document title editUrl: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/edit viewUrl: https://lucid.app/lucidchart/110808fd-4553-4316-bccf-4f25ff59a532/view version: 101 pageCount: 5 canEdit: false created: '2019-04-22T13:47:23Z' creatorId: 12345 lastModified: '2020-06-26T16:29:37Z' lastModifiedUserId: 54321 customAttributes: [] customTags: - in progress product: lucidchart status: Complete classification: Private trashed: null parent: null repository: null owner: id: 123456 type: user name: John Doe accountId: 1234 DocumentOwner: type: object properties: id: type: number description: Id of either the user or the account, depending on the type of the document user resource. example: 123456 type: type: string description: Specifies if the owner resource is referring to a user or an account. Value will be either "user" or "account". example: user name: type: string description: Full name of the user that owns this document. This field is excluded if this document is owned by an account. example: John Doe Repository: type: object properties: repositoryId: type: string description: the ID of the repository example: repo_2000008 Role: type: string enum: - owner - editandshare - edit - comment - view description: The Collaborator Role on the document or folder DocumentUserCollaborator: type: object properties: documentId: type: string format: uuid description: Document ID userId: type: integer description: User ID role: $ref: '#/components/schemas/Role' created: type: string format: date-time description: Date and time when the collaboration was created required: - documentId - userId - role - created DocumentTeamCollaborator: type: object properties: documentId: type: string format: uuid description: Document ID teamId: type: integer description: Team ID role: $ref: '#/components/schemas/Role' created: type: string format: date-time description: Date and time when the collaboration was created required: - documentId - teamId - role - created FolderUserCollaborator: type: object properties: folderId: type: integer description: Folder ID userId: type: integer description: User ID role: $ref: '#/components/schemas/Role' created: type: string format: date-time description: Date and time when the collaboration was created required: - folderId - userId - role - created FolderGroupCollaborator: type: object properties: folderId: type: integer description: Folder ID groupId: type: integer description: Group ID role: $ref: '#/components/schemas/Role' created: type: string format: date-time description: Date and time when the collaboration was created required: - folderId - groupId - role - created FolderTeamCollaborator: type: object properties: folderId: type: integer description: Folder ID teamId: type: integer description: Team ID role: $ref: '#/components/schemas/Role' created: type: string format: date-time description: Date and time when the collaboration was created required: - folderId - teamId - role - created CreatableProduct: type: string enum: - lucidchart - lucidspark description: The Lucid Suite product types that can be created. example: lucidchart BootstrapData: type: object properties: packageId: type: string description: Id of the extension package which will consume this data example: 74672098-cf36-492c-b8e6-2c4233549cd3 extensionName: type: string description: Name of the editor extension which will consume this data. Note this is the name field of an editor extension found in your manifest.json file. example: sheets-adapter minimumVersion: type: string description: Minimum version of the extension package which will consume this data example: 1.4.0 data: type: object additionalProperties: type: string description: Data to provide to the extension package example: a: 1 b: 2 required: - packageId - extensionName - minimumVersion - data description: Bootstrap data can be attached to the created document to be consumed by a specific Extension Package. LucidStandardImportContent: type: object description: 'Defines the content of a document using the Lucid Standard Import format, including pages, shapes, and lines. Mutually exclusive with `extensionBootstrapData`. ' properties: version: type: integer description: The version of the Lucid Standard Import format. enum: - 1 example: 1 pages: type: array description: List of pages to create in the document. At least one page is required. minItems: 1 items: $ref: '#/components/schemas/LucidStandardImportPage' collections: type: array description: List of data collections to associate with the document. items: $ref: '#/components/schemas/LucidStandardImportCollection' documentSettings: $ref: '#/components/schemas/LucidStandardImportDocumentSettings' required: - version - pages LucidStandardImportPage: type: object description: A page definition within a Lucid Standard Import document. properties: id: type: string description: Unique identifier for the page within the import. example: page1 title: type: string description: The title of the page. example: Page 1 shapes: type: array description: List of shapes to place on the page. items: $ref: '#/components/schemas/LucidStandardImportShape' lines: type: array description: List of lines to place on the page. items: $ref: '#/components/schemas/LucidStandardImportLine' groups: type: array description: List of groups to create on the page. items: $ref: '#/components/schemas/LucidStandardImportGroup' layers: type: array description: List of layers to create on the page. items: $ref: '#/components/schemas/LucidStandardImportLayer' customData: type: array description: Custom key-value data to attach to the page. items: $ref: '#/components/schemas/LucidStandardImportCustomPageDatum' dataBackedShapes: type: array description: List of data-backed shape generators (e.g., org charts, mind maps). items: $ref: '#/components/schemas/LucidStandardImportGenerator' settings: $ref: '#/components/schemas/LucidStandardImportPageSettings' required: - id - title LucidStandardImportShape: type: object description: 'A shape definition within a page. The `type` field determines which kind of shape to create. Common shape types include `rectangle`, `circle`, `diamond`, `cloud`, `process`, `document`, `database`, `hexagon`, `octagon`, `pill`, `roundedRectangle`, `triangle`, `isoscelesTriangle`, `stickyNote`, `image`, `table`, `swimLanes`, and many more including BPMN shapes. ' properties: id: type: string description: Unique identifier for the shape within the import. Used to reference this shape from lines and groups. example: shape1 type: type: string description: The type of shape to create. enum: - bpmnActivity - bpmnBlackBoxPool - bpmnChoreography - bpmnConversation - bpmnDataObject - bpmnDataStore - bpmnEvent - bpmnGateway - bpmnGroup - bpmnPool - bpmnTextAnnotation - braceContainer - braceNote - bracketContainer - circle - circleContainer - cloud - connector - cross - namedContainer - namedShape - data - database - decision - delay - diamond - diamondContainer - directAccessStorage - display - document - doubleArrow - flexiblePolygon - freehandBlock - freehandDrawing - hexagon - hotspot - image - internalStorage - isoscelesTriangle - lucidCard - manualInput - manualOperation - merge - multipleDocuments - note - octagon - offPageLink - or - paperTape - pentagon - pillContainer - polyStar - predefinedProcess - preparation - process - rectangle - rectangleContainer - rightTriangle - roundedRectangleContainer - singleArrow - sparkCalloutSquare - sparkContainer - sparkFrame - stickyNote - storedData - summingJunction - swimLanes - table - terminator - text - umlClass example: rectangle boundingBox: $ref: '#/components/schemas/BoundingBox' text: type: string description: Text content to display inside the shape. example: Hello World opacity: type: integer description: Opacity of the shape, from 0 (fully transparent) to 100 (fully opaque). minimum: 0 maximum: 100 note: type: string description: A note to attach to the shape. zIndex: type: integer description: The z-order of the shape on the page. customData: type: array description: Custom key-value data to attach to the shape. items: $ref: '#/components/schemas/LucidStandardImportCustomDatum' style: $ref: '#/components/schemas/LucidStandardImportStyle' actions: type: array description: Interactive actions attached to the shape (e.g., navigate to a URL or page). items: $ref: '#/components/schemas/LucidStandardImportAction' linkedData: type: array description: Links to data collection entries. items: $ref: '#/components/schemas/LucidStandardImportLinkedDatum' required: - id - type - boundingBox BoundingBox: type: object description: The bounding box that defines a shape's position and size on the page. properties: x: type: number description: The x-coordinate of the top-left corner. example: 0 y: type: number description: The y-coordinate of the top-left corner. example: 0 w: type: number description: The width of the bounding box. example: 100 h: type: number description: The height of the bounding box. example: 50 required: - x - y - w - h LucidStandardImportLine: type: object description: A line definition within a page. properties: id: type: string description: Unique identifier for the line within the import. example: line1 lineType: type: string description: The type of line routing. enum: - straight - elbow - curved example: elbow stroke: $ref: '#/components/schemas/LucidStandardImportStroke' endpoint1: $ref: '#/components/schemas/LucidStandardImportEndpoint' endpoint2: $ref: '#/components/schemas/LucidStandardImportEndpoint' text: type: array description: Text labels to display along the line. items: $ref: '#/components/schemas/LucidStandardImportLineText' customData: type: array description: Custom key-value data to attach to the line. items: $ref: '#/components/schemas/LucidStandardImportCustomDatum' linkedData: type: array description: Links to data collection entries. items: $ref: '#/components/schemas/LucidStandardImportLinkedDatum' joints: type: array description: Control points for straight lines. items: $ref: '#/components/schemas/AbsolutePoint' elbowControlPoints: type: array description: Control points for elbow lines. items: $ref: '#/components/schemas/AbsolutePoint' cornerRadius: type: number description: Corner radius for elbow line bends. zIndex: type: integer description: The z-order of the line on the page. lineJumps: type: boolean description: 'Whether this line draws a small hump where it crosses other lines. When set, overrides the page-level `lineJumps` setting for this line only. ' required: - id - lineType - endpoint1 - endpoint2 LucidStandardImportStyle: type: object description: Visual style properties for a shape. properties: fill: $ref: '#/components/schemas/LucidStandardImportFill' stroke: $ref: '#/components/schemas/LucidStandardImportStroke' rounding: type: number description: Corner rounding radius for the shape. Must be between 0 and 720, inclusive. default: 6 minimum: 0 maximum: 720 textColor: type: string description: Text color as a hex color string. example: '#000000' LucidStandardImportFill: description: 'Fill style for a shape. The `type` field determines the fill kind. - `color`: A solid color fill. - `image`: An image fill, either by URL or by reference to an image in the import archive. ' discriminator: propertyName: type mapping: color: '#/LucidStandardImportColorFill' image: '#/LucidStandardImportImageFill' oneOf: - $ref: '#/components/schemas/LucidStandardImportColorFill' - $ref: '#/components/schemas/LucidStandardImportImageFill' LucidStandardImportColorFill: type: object description: A solid color fill. properties: type: type: string enum: - color color: type: string description: Fill color as a hex color string. example: '#ffffff' required: - type - color LucidStandardImportImageFill: type: object description: An image fill, either by URL or by reference to an image in the import archive. properties: type: type: string enum: - image url: type: string description: URL of the image. Use this or `ref`, not both. example: https://example.com/image.png ref: type: string description: Reference to an image in the import archive. Use this or `url`, not both. imageScale: type: string description: How the image should be scaled within the shape. enum: - fill - page - shape required: - type LucidStandardImportAction: type: object description: 'An interactive action attached to a shape. The `type` field determines the action kind. ' discriminator: propertyName: type mapping: url: '#/LucidStandardImportUrlAction' gotoPage: '#/LucidStandardImportGotoPageAction' gotoDocument: '#/LucidStandardImportGotoDocumentAction' toggleLayer: '#/LucidStandardImportToggleLayerAction' showLayer: '#/LucidStandardImportShowLayerAction' hideLayer: '#/LucidStandardImportHideLayerAction' oneOf: - $ref: '#/components/schemas/LucidStandardImportUrlAction' - $ref: '#/components/schemas/LucidStandardImportGotoPageAction' - $ref: '#/components/schemas/LucidStandardImportGotoDocumentAction' - $ref: '#/components/schemas/LucidStandardImportToggleLayerAction' - $ref: '#/components/schemas/LucidStandardImportShowLayerAction' - $ref: '#/components/schemas/LucidStandardImportHideLayerAction' LucidStandardImportUrlAction: type: object description: Navigate to an external URL. properties: type: type: string enum: - url url: type: string description: The target URL. example: https://example.com newWindow: type: boolean description: Whether to open in a new window. required: - type - url LucidStandardImportGotoPageAction: type: object description: Navigate to a page in the current document. properties: type: type: string enum: - gotoPage pageId: type: string description: The ID of the target page. example: page2 required: - type - pageId LucidStandardImportGotoDocumentAction: type: object description: Navigate to a page in another document. properties: type: type: string enum: - gotoDocument documentId: type: string description: The ID of the target document. pageId: type: string description: The ID of the target page within the document. newWindow: type: boolean description: Whether to open in a new window. required: - type - documentId - pageId LucidStandardImportToggleLayerAction: type: object description: Toggle visibility of layers. properties: type: type: string enum: - toggleLayer layers: type: array description: List of layer names to toggle. items: type: string required: - type - layers LucidStandardImportShowLayerAction: type: object description: Show layers. properties: type: type: string enum: - showLayer layers: type: array description: List of layer names to show. items: type: string required: - type - layers LucidStandardImportHideLayerAction: type: object description: Hide layers. properties: type: type: string enum: - hideLayer layers: type: array description: List of layer names to hide. items: type: string required: - type - layers LucidStandardImportStroke: type: object description: Stroke styling for a line. properties: color: type: string description: Hex color string for the stroke. default: '#000000' example: '#000000' width: type: number description: Stroke thickness. Must be between 0 and 10, inclusive. default: 2 minimum: 0 maximum: 10 example: 2 style: type: string description: The stroke dash style. enum: - solid - dotted - dashed default: solid example: solid LucidStandardImportEndpoint: type: object description: 'An endpoint of a line. The `type` field determines how the endpoint is positioned. - `shapeEndpoint`: Connects to a shape by its ID. - `positionEndpoint`: Connects to an absolute position on the page. - `lineEndpoint`: Connects to another line at a relative position. ' discriminator: propertyName: type mapping: shapeEndpoint: '#/LucidStandardImportShapeEndpoint' positionEndpoint: '#/LucidStandardImportPositionEndpoint' lineEndpoint: '#/LucidStandardImportLineEndpoint' oneOf: - $ref: '#/components/schemas/LucidStandardImportShapeEndpoint' - $ref: '#/components/schemas/LucidStandardImportPositionEndpoint' - $ref: '#/components/schemas/LucidStandardImportLineEndpoint' LucidStandardImportShapeEndpoint: type: object description: An endpoint connected to a shape. properties: type: type: string enum: - shapeEndpoint style: $ref: '#/components/schemas/EndpointStyle' shapeId: type: string description: The ID of the shape to connect to. example: shape1 position: $ref: '#/components/schemas/RelativePoint' description: Optional relative position on the shape to connect to. If omitted, uses smart auto-linking. required: - type - style - shapeId LucidStandardImportPositionEndpoint: type: object description: An endpoint at an absolute position on the page. properties: type: type: string enum: - positionEndpoint style: $ref: '#/components/schemas/EndpointStyle' position: $ref: '#/components/schemas/AbsolutePoint' required: - type - style - position LucidStandardImportLineEndpoint: type: object description: An endpoint connected to another line. properties: type: type: string enum: - lineEndpoint style: $ref: '#/components/schemas/EndpointStyle' lineId: type: string description: The ID of the line to connect to. example: line1 position: type: number description: Relative position along the line (0 to 1 inclusive). minimum: 0 maximum: 1 required: - type - style - lineId - position EndpointStyle: type: string description: The visual style of a line endpoint. enum: - none - aggregation - arrow - hollowArrow - openArrow - async1 - async2 - closedSquare - openSquare - bpmnConditional - bpmnDefault - closedCircle - openCircle - composition - exactlyOne - generalization - many - nesting - one - oneOrMore - zeroOrMore - zeroOrOne example: arrow LucidStandardImportLineText: type: object description: A text label on a line. properties: text: type: string description: The text content. position: type: number description: Relative position along the line (0 to 1 inclusive). default: 0.5 minimum: 0 maximum: 1 side: type: string description: Which side of the line the text appears on. enum: - top - middle - bottom default: middle required: - text AbsolutePoint: type: object description: An absolute point on the page canvas. properties: x: type: number description: The x-coordinate. Must be between -1200000 and 1200000, inclusive. y: type: number description: The y-coordinate. Must be between -1200000 and 1200000, inclusive. required: - x - y RelativePoint: type: object description: A relative point with coordinates between 0 and 1, inclusive. properties: x: type: number description: The relative x-coordinate (0 to 1). minimum: 0 maximum: 1 y: type: number description: The relative y-coordinate (0 to 1). minimum: 0 maximum: 1 required: - x - y LucidStandardImportGroup: type: object description: A group of items on a page. properties: id: type: string description: Unique identifier for the group. example: group1 items: type: array description: 'List of item IDs (shapes, lines, groups) contained in this group. An item can belong to only one group. If an item ID is specified in multiple groups, it is assigned to the first group encountered, and all subsequent references to that item ID are ignored. ' items: type: string customData: type: array description: Custom key-value data to attach to the group. items: $ref: '#/components/schemas/LucidStandardImportCustomDatum' linkedData: type: array description: Links to data collection entries. items: $ref: '#/components/schemas/LucidStandardImportLinkedDatum' note: type: string description: A note to attach to the group. zIndex: type: integer description: The z-order of the group on the page. required: - id LucidStandardImportLayer: type: object description: A layer on a page. Layers can contain shapes, lines, and groups. properties: id: type: string description: Unique identifier for the layer. example: layer1 title: type: string description: The display name of the layer. example: Background items: type: array description: 'List of item IDs (shapes, lines, groups) contained in this layer. An item can belong to only one layer. If an item ID is specified in multiple layers, it is assigned to the first layer encountered, and all subsequent references to that item ID are ignored. ' items: type: string customData: type: array description: Custom key-value data to attach to the layer. items: $ref: '#/components/schemas/LucidStandardImportCustomDatum' linkedData: type: array description: Links to data collection entries. items: $ref: '#/components/schemas/LucidStandardImportLinkedDatum' note: type: string description: A note to attach to the layer. layerIndex: type: integer description: The index order of the layer. required: - id - title LucidStandardImportDocumentSettings: type: object description: Document-level settings for a Lucid Standard Import. properties: units: type: string description: The measurement unit for the document. Defaults to inches (`in`) if not specified. enum: - in - cm - px - pt default: in example: in LucidStandardImportPageSettings: type: object description: Page-level settings for a Lucid Standard Import page. properties: fillColor: type: string description: Background fill color for the page as a hex color string. example: '#ffffff' infiniteCanvas: type: boolean description: Whether the page uses an infinite canvas. size: $ref: '#/components/schemas/LucidStandardImportPageSize' autoTiling: type: boolean description: Whether auto-tiling is enabled for the page. lineJumps: type: boolean description: 'Whether lines on this page draw small humps where they cross other lines. Individual lines may override this with their own `lineJumps` setting. ' LucidStandardImportPageSize: description: 'Page size configuration. Either a standard page size with an optional format, or a custom size with explicit dimensions. ' oneOf: - $ref: '#/components/schemas/LucidStandardImportStandardPageSize' - $ref: '#/components/schemas/LucidStandardImportCustomPageSize' LucidStandardImportStandardPageSize: type: object description: A standard named page size. properties: type: type: string description: The standard page size name. enum: - letter - legal - executive - a3 - a4 - a5 - tabloid - folio - statement example: letter format: type: string description: Page orientation. enum: - landscape - portrait default: portrait required: - type LucidStandardImportCustomPageSize: type: object description: A custom page size with explicit dimensions. properties: w: type: number description: Width of the page. Must be between 1.0 and 20000.0, inclusive. minimum: 1 maximum: 20000 h: type: number description: Height of the page. Must be between 1.0 and 20000.0, inclusive. minimum: 1 maximum: 20000 required: - w - h LucidStandardImportCollection: type: object description: 'A data collection to associate with the document. Exactly one of `dataSource` or `values` must be provided — providing both or neither is an error. ' properties: id: type: string description: Unique identifier for the collection. required: - id oneOf: - title: Data source reference required: - dataSource properties: dataSource: type: string description: The data source this collection belongs to. - title: Inline values required: - values properties: values: type: array description: 'Inline JSON data for the collection. Each element is an object whose keys become the column headers and whose values become the row data. ' items: type: object additionalProperties: true LucidStandardImportCustomDatum: type: object description: A custom key-value pair attached to an item. properties: key: type: string description: The data key. value: type: string description: The data value. required: - key - value LucidStandardImportCustomPageDatum: type: object description: A custom key-value pair attached to a page, optionally globally inherited. properties: key: type: string description: The data key. value: type: string description: The data value. global: type: boolean description: When true, this data is globally inherited. default: false required: - key - value LucidStandardImportLinkedDatum: type: object description: A reference linking an item to a data collection entry. properties: collectionId: type: string description: The ID of the collection containing the data. key: type: string description: The key identifying the data entry within the collection. required: - collectionId - key LucidStandardImportGenerator: type: object description: 'A data-backed shape generator that automatically creates shapes from data. The `type` field determines which generator is used. ' properties: type: type: string description: The type of generator. enum: - orgChart - mindMap - assistedLayout - umlSequence required: - type PatchDocumentRequestBody: type: object description: Request body for updating a document. At least one field should be provided. properties: title: type: string description: New title for the document. Must be non-empty, at most 300 characters, and must not start or end with whitespace. example: My Updated Document parent: nullable: true description: 'ID of the folder or repository to move the document into. Set to null to move the document to the root folder. For repositories, use the repository ID prefixed with `repo_` (e.g., `repo_12345`). For folders, use the numeric folder ID. ' oneOf: - type: integer description: Numeric folder ID. - type: string description: Repository ID prefixed with `repo_`. example: 12345 customTags: type: array items: type: string description: List of custom tags to assign to the document. Including this field overwrites all existing tags on the document with the provided values. Each tag must be non-empty and must not start or end with whitespace. Omitting this field leaves existing tags unchanged; set to an empty array to clear all tags. example: - in progress classificationId: type: string format: uuid nullable: true description: ID of the classification to assign to the document. Omitting this field leaves the existing classification unchanged; set to null to remove the classification. example: 1cdad938-bf0f-4a0c-a2f8-bf4eb94225ce DocumentContent: type: object properties: id: type: string format: uuid description: Document ID example: 8e7b19ec-27ff-40e3-beb8-03f51b1661b2 title: type: string description: Title of the document example: document title product: $ref: '#/components/schemas/Product' pages: type: array items: $ref: '#/components/schemas/Page' description: Array of Page resources on the document accountId: type: integer nullable: false description: ID of Lucid account that owns the document data: $ref: '#/components/schemas/Data' description: Data contained on the document description: Object representing the contents of a Lucidchart document required: - id - title - product - pages - accountId - data example: id: 8e7b19ec-27ff-40e3-beb8-03f51b1661b2 title: document title product: lucidchart pages: [] accountId: 1234 data: collections: [] Page: type: object properties: id: type: string description: Page ID example: YGcM5DNywbTK title: type: string description: Title of the page example: document page title index: type: integer description: 0-Based index of the page in the document example: 0 items: $ref: '#/components/schemas/Items' description: Shapes, Lines, Groups, and Layers on the page customData: type: array items: $ref: '#/components/schemas/DataPair' description: Array of Data Pair resources linked to the page linkedData: type: array items: $ref: '#/components/schemas/LinkedData' description: Array of Linked Data resources linked to the page description: Object representing a single page of a Lucidchart document. required: - id - title - index - items - customData - linkedData example: id: YGcM5DNywbTK title: document page title index: 0 items: shapes: [] lines: [] groups: [] layers: [] customData: [] linkedData: [] Items: type: object properties: shapes: type: array items: $ref: '#/components/schemas/Shape' description: Array of Shape resources lines: type: array items: $ref: '#/components/schemas/Line' description: Array of Line resources groups: type: array items: $ref: '#/components/schemas/Group' description: Array of Group resources layers: type: array items: $ref: '#/components/schemas/Layer' description: Array of Layer resources description: Individual shapes, lines, groups, and layers all contain a unique ItemId identifying the object. required: - shapes - lines - groups - layers Shape: type: object properties: id: type: string description: Shape ID example: VTAu-oQASzul class: type: string description: A unique string representing the type of the shape (e.g., ProcessBlock) example: ProcessBlock textAreas: type: array items: $ref: '#/components/schemas/TextArea' customData: type: array items: $ref: '#/components/schemas/DataPair' linkedData: type: array items: $ref: '#/components/schemas/LinkedData' contains: $ref: '#/components/schemas/Contains' description: If the shape is a container (e.g., a frame), lists the IDs of shapes, lines, and groups contained within it image: $ref: '#/components/schemas/Image' description: If the shape has an image fill, describes the image linkUrl: type: string description: The external website or destination URL attached to the shape, if configured. example: https://example.com required: - id - class - textAreas - customData - linkedData description: Object representing a shape placed on a page of a document. Note that the ItemId of a shape is unique across all groups, layers, shapes, and lines. Contains: type: object properties: shapes: type: array items: type: string description: Array of IDs of shapes contained within the container example: - VTAuCB8~evzW lines: type: array items: type: string description: Array of IDs of lines contained within the container example: - VTAuo_Y56.q~ groups: type: array items: type: string description: Array of IDs of groups contained within the container example: - VTAu-dl6qtyx required: - shapes - lines - groups description: Object listing the IDs of items contained within a container shape (e.g., a frame). Image: type: object properties: type: type: string enum: - resource - user description: Whether the image is a Lucid resource image (`resource`) or a user-uploaded image (`user`) example: resource id: type: string description: The ID of the resource image. Present when type is `resource`. example: T2VkijPHy1qh url: type: string description: The URL of the user-uploaded image. Present when type is `user`. example: https://example.com/image.png required: - type description: Object describing the image fill on a shape. Line: type: object properties: id: type: string description: Line ID example: VTAuwAeC0_R1 endpoint1: $ref: '#/components/schemas/Endpoint' endpoint2: $ref: '#/components/schemas/Endpoint' textAreas: type: array items: $ref: '#/components/schemas/TextArea' customData: type: array items: $ref: '#/components/schemas/DataPair' linkedData: type: array items: $ref: '#/components/schemas/LinkedData' description: Object representing a line on the page of a document. Note that the ItemId of a line is unique across all groups, layers, shapes, and lines. required: - id - endpoint1 - endpoint2 - textAreas - customData - linkedData Group: type: object properties: id: type: string description: Group ID example: VTAu-dl6qtyx members: type: array items: type: string description: Array of IDs of shapes, lines, & groups contained within the group example: - VTAuCB8~evzW - VTAuo_Y56.q~ customData: type: array items: $ref: '#/components/schemas/DataPair' linkedData: type: array items: $ref: '#/components/schemas/LinkedData' description: Object representing a group on the page of a document. Note that the ItemId of a group is unique across all groups, layers, shapes, and lines. required: - id - members Layer: type: object properties: id: type: string description: Layer ID example: VTAu-dl6qtyx name: type: string description: The name of the layer example: Layer 1 members: type: array items: type: string description: Array of IDs of shapes, lines, & groups contained within the layer example: - VTAuCB8~evzW - VTAuo_Y56.q~ customData: type: array items: $ref: '#/components/schemas/DataPair' linkedData: type: array items: $ref: '#/components/schemas/LinkedData' description: Object representing a layer on the page of a document. Note that the ItemId of a layer is unique across all groups, layers, shapes, and lines. required: - id - name - members - customData - linkedData LinkedData: type: object properties: collection_id: type: string description: Id of the collection containing the data example: ABAuwlf2BTy8 data: type: array items: $ref: '#/components/schemas/DataPair' description: Key-value pairs from the dataset primaryKeyValue: type: string description: The value of the primary key of the dataset example: Pkey Value description: Object representing data linked to a resource on a document. required: - data - primaryKeyValue Endpoint: type: object properties: style: type: string description: Line end style example: Arrow connectedTo: type: string nullable: true description: Id of shape or line the line is connected to example: null description: Object representing the endpoint of a Line. required: - style - connectedTo TextArea: type: object properties: label: type: string description: Text area label example: Text text: type: string description: Text displayed in the text area. This is plain text. All formatting has been removed & formulas evaluated. example: Start here description: Object representing a text area on a Shape or Line. required: - label - text Data: type: object properties: collections: type: array items: $ref: '#/components/schemas/Collection' description: Array of collections required: - collections description: Object representing an array of Collections on a document. Collection: type: object properties: id: type: string description: Id of the collection example: ABAuwlf2BTy8 name: type: string description: Collection name example: Collection 1 primaryKey: type: array items: type: string description: The primary key column name example: - PKey 1 required: - id - name - primaryKey description: A collection is a container inside of a source of data. A data source can have many collections, but a collection can only belong to one data source. A collection can be thought of as a tab or individual sheet in a spreadsheet file. SessionConfig: type: object properties: products: type: array items: $ref: '#/components/schemas/Product' description: A list of Products that a user can choose a document from to be embedded. Defaults to all products. viewerType: type: object properties: default: $ref: '#/components/schemas/ViewerType' description: What type of viewer to load by defaults. If not specified, defaults to rich. Users can change this later. ui: $ref: '#/components/schemas/UI' customSettings: $ref: '#/components/schemas/ViewerCustomSettings' ViewerType: type: string enum: - rich - simple description: '- rich: The standard Lucid viewer experience. A fully interactive viewer with zoom, panning, and support for hotspots and other interactive elements. - simple: A basic Lucid viewer experience that can be used in place of the rich viewer if there are performance or load time concerns. The simple viewer renders non-interactive raster images instead of a high-fidelity vector experience and is a poorer fit for viewing larger documents. ' UI: type: string enum: - viewer - settings description: '- viewer: When loading an existing embed, go directly to the standard embedded view of the document. - settings: When loading an existing embed, show the user the embed settings interface before taking them to the standard embed view of the document. ' ViewerCustomSettings: type: string enum: - postMessage - none description: '- postMessage: Display a "Settings for " link in the embed settings view where users can update the settings. When clicked, the OpenCustomSettings postMessage event would be fired so the app can display its own customized settings view. - none: "Settings for " link would not be available in the settings editor. ' FolderAttribute: type: object description: An attribute assigned to the folder. properties: name: type: string description: Name of the attribute example: Sample Label value: description: Value of the attribute. Can be any type, but attributes with the same name will always have the same type. example: Sample Value Folder: type: object description: A standard representation of a folder. properties: id: type: number description: Unique ID of the folder example: 123456789 type: $ref: '#/components/schemas/FolderType' name: type: string description: Name of the folder example: Folder Name parent: type: number description: ID of the parent folder. example: 123456788 nullable: true created: type: string format: date-time description: Date and time of when the folder was created example: '2020-06-26T16:29:37Z' trashed: type: string format: date-time description: Date and time of when the folder was trashed example: '2022-01-20T12:14:18Z' attributes: type: array description: An array of attributes assigned to the folder. Can be null or empty. items: $ref: '#/components/schemas/FolderAttribute' required: - id - type - name - created FolderType: type: string description: '* folder - Folders can live in other folders, team folders, or the root of a user’s folder manager ("My Documents"). A folder in "My Documents" will have a null parent field. * team - Team folders can never live in another folder and are always located in the "Team Folders" section of a user''s folder manager. Team folders will not have a parent field. Learn more ' enum: - folder - team example: folder FolderContent: type: object description: A representation of a single item contained in a folder. properties: id: anyOf: - type: string format: uuid - type: number description: Unique ID of the folder or document being referred to. This field will be a Number for folders and a UUID for documents. example: 123456789 type: $ref: '#/components/schemas/FolderContentType' name: type: string description: Name of the folder or document example: Folder Name isShortcut: type: boolean description: A boolean value indicating whether or not the folder or document is a shortcut. example: false product: $ref: '#/components/schemas/Product' required: - id - type - name - isShortcut FolderContentType: type: string description: '* folder - Type denoting that the Folder Content Resource is a folder and will have a Number id field and no product field. * document - Type denoting that the Folder Content Resource is a document and will have a UUID id field and will contain a product field. ' enum: - folder - document example: document DocumentLinkSecurity: type: object properties: restrictToAccount: type: boolean description: Whether or not users outside the document's account can accept the share link. Changing this value to true will immediately revoke access for any external users who previously gained access through this link. expires: type: string format: date-time description: If defined, the date and time the share link expires. passcode: type: string description: If defined, the required passcode to accept the share link. The passcode length must be between 1 – 80 characters. minLength: 1 maxLength: 80 allowAnonymous: type: boolean description: Whether or not the share link allows for anonymous guests. required: - restrictToAccount - allowAnonymous example: restrictToAccount: false expires: '2023-12-11T21:48:35.293Z' passcode: password allowAnonymous: false SharingRole: type: string enum: - editandshare - edit - comment - view description: 'Roles determine what actions an invitation will grant on a document. Invitations to a document only grant the specified level of access to just that one document. If a link''s role is changed, the new role applies immediately to all users who accessed via that link. - `editandshare`: View, comment on, edit, and control which users can access the document. - `edit`: View, comment on, and edit the document. - `comment`: View the document. Leave comments on the document. - `view`: View the document. ' DocumentShareLink: type: object properties: shareLinkId: type: string description: Id of the share link. example: inv_8a38797a-e5fc-4479-8492-e000dc93cb60 documentId: type: string format: uuid description: Id of the document the share link belongs to. example: f6bf19b5-d109-4ef5-92b2-cdaf0de43001 role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/DocumentLinkSecurity' created: type: string format: date-time description: The date and time the share link was created. example: '2022-11-11T21:48:35.293Z' createdBy: type: number description: User Id of the user that created the share link. example: 1280 lastModified: type: string format: date-time description: The date and time the share link was last modified. example: '2022-11-11T21:48:35.293Z' acceptUrl: type: string format: uri description: Link to accept the share link invitation. example: https://lucid.app/lucidchart/f6bf19b5-d109-4ef5-92b2-cdaf0de43001/edit?invitationId=inv_8a38797a-e5fc-4479-8492-e000dc93cb60 required: - shareLinkId - documentId - role - linkSecurity - created - createdBy - lastModified - acceptUrl FolderLinkSecurity: type: object properties: restrictToAccount: type: boolean description: Whether the share link is restricted to users within the folder's account. Changing this value to true will immediately revoke access for any external users who previously gained access through this link. example: true expires: type: string format: date-time description: If defined, the date and time the share link expires. example: '2025-11-11T21:48:35.293Z' passcode: type: string description: If defined, the required passcode to accept the share link. The passcode length must be between 1 – 80 characters. minLength: 1 maxLength: 80 example: passcode required: - restrictToAccount FolderShareLink: type: object properties: shareLinkId: type: string description: Id of the share link. example: inv_8a38797a-e5fc-4479-8492-e000dc93cb60 folderId: type: number description: Id of the folder the share link belongs to. example: 123456 role: $ref: '#/components/schemas/SharingRole' linkSecurity: $ref: '#/components/schemas/FolderLinkSecurity' created: type: string format: date-time description: The date and time the share link was created. example: '2022-11-11T21:48:35.293Z' createdBy: type: number description: User Id of the user that created the share link. example: 1280 lastModified: type: string format: date-time description: The date and time the share link was last modified. example: '2022-11-11T21:48:35.293Z' acceptUrl: type: string format: uri description: Link to accept the share link invitation. example: https://lucid.app/folder/invitations/accept/inv_8a38797a-e5fc-4479-8492-e000dc93cb60 required: - shareLinkId - folderId - role - linkSecurity - created - createdBy - lastModified - acceptUrl AcceptShareLinkResult: type: object properties: InvitationType: type: string enum: - document - folder description: The kind of share link that was accepted. example: document DocumentIdOpt: type: string format: uuid nullable: true description: The ID of the document whose share link was accepted. Null when the accepted share link is for a folder. example: f6bf19b5-d109-4ef5-92b2-cdaf0de43001 FolderIdOpt: type: string format: integer nullable: true description: The ID of the folder whose share link was accepted. Null when the accepted share link is for a document. example: null required: - InvitationType CreateUserBody: type: object properties: email: type: string example: john-doe@example.com description: The user's email. firstName: type: string example: John description: The user's first name. lastName: type: string example: Doe description: The user's last name. username: type: string example: john-doe@example.com description: The user's username. If not provided the email will be used as the username. password: type: string example: '`.~b"J