{ "openapi": "3.0.1", "x-settings": { "publish": true }, "info": { "title": "Miro Developer Platform", "version": "v2.0", "description": "\n\n### Miro Developer Platform concepts\n\n- New to the Miro Developer Platform? Interested in learning more about platform concepts??\n[Read our introduction page](https://beta.developers.miro.com/docs/introduction) and familiarize yourself with the Miro Developer Platform capabilities in a few minutes.\n\n\n### Getting started with the Miro REST API\n\n- [Quickstart (video):](https://beta.developers.miro.com/docs/try-out-the-rest-api-in-less-than-3-minutes) try the REST API in less than 3 minutes.\n- [Quickstart (article):](https://beta.developers.miro.com/docs/build-your-first-hello-world-app-1) get started and try the REST API in less than 3 minutes.\n\n\n### Miro REST API tutorials\n\nCheck out our how-to articles with step-by-step instructions and code examples so you can:\n\n- [Get started with OAuth 2.0 and Miro](https://beta.developers.miro.com/docs/getting-started-with-oauth)\n\n\n### Miro App Examples\n\nClone our [Miro App Examples repository](https://github.com/miroapp/app-examples) to get inspiration, customize, and explore apps built on top of Miro's Developer Platform 2.0.\n" }, "servers": [ { "url": "https://api.miro.com/" } ], "paths": { "/v1/oauth/revoke": { "post": { "tags": ["tokens"], "summary": "Revoke token (v1)", "description": "

Please use the new revoke endpoint /v2/oauth/revoke. This endpoint is considered vulnerable and deprecated due to access token passed publicly in the URL.

Revoke the current access token. Revoking an access token means that the access token will no longer work. When an access token is revoked, the refresh token is also revoked and no longer valid. This does not uninstall the application for the user.", "operationId": "revoke-token", "deprecated": true, "parameters": [ { "description": "Access token that you want to revoke", "in": "query", "name": "access_token", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Token revoked" }, "400": { "description": "Failed to revoke token" } } } }, "/v1/oauth-token": { "get": { "tags": ["tokens"], "summary": "Get access token information", "description": "Get information about an access token, such as the token type, scopes, team, user, token creation date and time, and the user who created the token.", "operationId": "token-info", "responses": { "200": { "description": "Token information", "content": { "application/json": { "schema": { "title": "Token information", "type": "object", "required": ["type", "organization", "team", "createdBy", "user"], "properties": { "type": { "type": "string" }, "organization": { "title": "Organization information", "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "id": { "type": "string" } }, "required": ["type", "name", "id"] }, "team": { "title": "Team information", "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "id": { "type": "string" } }, "required": ["type", "name", "id"] }, "createdBy": { "type": "object", "title": "User information", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "id": { "type": "string" } }, "required": ["type", "name", "id"] }, "user": { "type": "object", "title": "User information", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "id": { "type": "string" } }, "required": ["type", "name", "id"] }, "scopes": { "type": "array", "items": { "type": "string" } } } } } } }, "400": { "description": "Invalid token provided" } } } }, "/v2/orgs/{org_id}/ai-interaction-logs": { "get": { "x-settings": { "publish": true, "skip-tests": true }, "description": "Retrieves AI interaction logs for your organization. AI interaction logs capture user interactions with AI features in Miro. You can retrieve results for a specific time period. You can also filter results based on object IDs and the emails of users who interacted with AI features. Additionally, results can be paginated for easier viewing and processing.\n

Required scope

aiinteractionlogs:read\n

Rate limiting

Level 4\n

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on.

\n", "operationId": "enterprise-get-ai-interaction-logs", "parameters": [ { "name": "org_id", "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "object_ids", "description": "List of object IDs used to retrieve AI interaction logs. \nCurrently, supported object types include board IDs and organization IDs. \nYou can obtain object IDs from the response of this endpoint (the object.id field), \nfrom other Platform API endpoints (for example, [Get boards API](https://developers.miro.com/reference/get-boards)), \nor from Miro UI URLs (board ID and organization ID from the URLs).\n", "example": ["3458764549483493025", "u8J_kllZmDk="], "in": "query", "required": false, "schema": { "type": "array", "maxItems": 15, "items": { "description": "Unique identifier of the object (organization, board) where AI interaction happened for the User.", "type": "string", "example": "3458764549483493025" } } }, { "name": "emails", "description": "Filters AI interaction logs using a list of user emails. Only AI interactions associated with the provided emails will be included in the response.", "example": ["someone@domain.com", "someoneelse@domain.com"], "in": "query", "required": false, "schema": { "type": "array", "maxItems": 15, "items": { "description": "Email address of the user whose AI interaction logs you want to retrieve. Only interactions associated with the specified emails are returned.", "type": "string", "example": "someone@domain.com" } } }, { "name": "from", "description": "Start date and time of the time range used to filter AI interaction logs. Only interactions that were stored within the specified from - to time range are returned.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2026-01-30T17:26:50Z", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "to", "description": "End date and time of the time range used to filter AI interaction logs. Only interactions that were stored within the specified from - to time range are returned.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2036-03-30T17:26:50Z", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "cursor", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n", "in": "query", "required": false, "schema": { "type": "string" }, "example": "MTY2OTg4NTIwMDAwMHwxMjM=" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of logs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100 }, "example": 100 }, { "name": "sorting", "description": "Sort order in which you want to view the result set based on the interaction date. To sort by an ascending date, specify `asc`. To sort by a descending date, specify `desc`.\n", "in": "query", "required": false, "schema": { "type": "string", "default": "asc", "enum": ["asc", "desc"] }, "example": "asc" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAiInteractionLogsResponse" } } }, "description": "Response from the API that includes AI interaction logs, size of the data list, pagination cursor, and pagination limit.\n" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get AI interaction logs (Beta)", "tags": ["AI Interaction Logs"] } }, "/v2/audit/logs": { "get": { "description": "Retrieves a page of audit events from the last 90 days. If you want to retrieve data that is older than 90 days, you can use the CSV export feature.

Required scope

auditlogs:read

Rate limiting

Level 2", "operationId": "enterprise-get-audit-logs", "parameters": [ { "description": "Retrieve audit logs created after the date and time provided. This is the start date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-03-30T17:26:50.000Z` as the value for the `createdAfter` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\"\n", "example": "2023-03-30T17:26:50.000Z", "in": "query", "name": "createdAfter", "required": true, "schema": { "type": "string" } }, { "description": "Retrieve audit logs created before the date and time provided. This is the end date of the duration for which you want to retrieve audit logs. For example, if you want to retrieve audit logs between `2023-03-30T17:26:50.000Z` and `2023-04-30T17:26:50.000Z`, provide `2023-04-30T17:26:50.000Z` as the value for the `createdBefore` parameter.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), including milliseconds and a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2023-04-30T17:26:50.000Z", "in": "query", "name": "createdBefore", "required": true, "schema": { "type": "string" } }, { "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the appropriate cursor value returned in the response.", "in": "query", "name": "cursor", "schema": { "type": "string" } }, { "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.
Default: `100`\n", "example": 100, "in": "query", "name": "limit", "schema": { "type": "integer" } }, { "description": "Sort order in which you want to view the result set. Based on the value you provide, the results are sorted in an ascending or descending order of the audit log creation date (audit log `createdAt` parameter).
Default: `ASC`\n", "example": "ASC", "in": "query", "name": "sorting", "schema": { "type": "string", "enum": ["ASC", "DESC"] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditPage" } } }, "description": "Audit logs fetched" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get audit logs", "tags": ["Audit Logs"] } }, "/v2/orgs/{org_id}/data-classification-settings": { "get": { "description": "Retrieves board classification settings for an existing organization.

Required scope

organizations:read

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-organization-settings-get", "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataClassificationOrganizationSettings" } } }, "description": "Organization board classification settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get organization settings", "tags": ["Board classification: Organization level"] } }, "/v2/orgs/{org_id}/teams/{team_id}/data-classification": { "patch": { "description": "Updates board classification for not-classified only or all boards in an existing team.

Required scope

boards:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-team-boards-bulk", "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the team", "example": "3074457345618265000", "in": "path", "name": "team_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBoardsDataClassificationLabelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBoardsDataClassificationLabel" } } }, "description": "Number of updated boards" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Bulk update boards classification", "tags": ["Board classification: Team level"] } }, "/v2/orgs/{org_id}/teams/{team_id}/data-classification-settings": { "get": { "description": "Retrieves board classification settings for an existing team.

Required scope

organizations:teams:read

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-team-settings-get", "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the team", "example": "3074457345618265000", "in": "path", "name": "team_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataClassificationTeamSettings" } } }, "description": "Team board classification settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get team settings", "tags": ["Board classification: Team level"] }, "patch": { "description": "Updates board classification settings for an existing team.

Required scope

organizations:teams:write

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-team-settings-set", "x-settings": { "skip-tests": true }, "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the team", "example": "3074457345618265000", "in": "path", "name": "team_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTeamSettingsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataClassificationTeamSettings" } } }, "description": "Team board classification settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update team settings", "tags": ["Board classification: Team level"] } }, "/v2/orgs/{org_id}/teams/{team_id}/boards/{board_id}/data-classification": { "get": { "description": "Retrieves board classification for a board.

Required scope

boards:read

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-board-get", "x-settings": { "skip-tests": true }, "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the team", "example": "3074457345618265000", "in": "path", "name": "team_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board that you want to retrieve.", "example": "o9J_kzlUDmo=", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardDataClassificationLabel" } } }, "description": "Board classification" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get board classification", "tags": ["Board classification: Board level"] }, "post": { "description": "Updates board classification for an existing board.

Required scope

boards:write

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-dataclassification-board-set", "x-settings": { "skip-tests": true }, "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the team", "example": "3074457345618265000", "in": "path", "name": "team_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board that you want to update.", "example": "o9J_kzlUDmo=", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataClassificationLabelId" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardDataClassificationLabel" } } }, "description": "Board classification" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update board classification", "tags": ["Board classification: Board level"] } }, "/v2/boards/{board_id}/docs": { "post": { "description": "Adds a doc format item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-doc-format-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocFormatCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocFormatItem" } } }, "description": "Doc format item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create doc format item", "tags": ["doc formats"] } }, "/v2/boards/{board_id}/docs/{item_id}": { "get": { "description": "Retrieves information for a specific doc format item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-doc-format-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } }, { "description": "Controls the contentType of the returned doc's content.", "in": "query", "name": "textContentType", "required": false, "schema": { "type": "string", "enum": ["html", "markdown"] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocFormatItem" } } }, "description": "Doc format item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get doc format item", "tags": ["doc formats"] }, "delete": { "description": "Deletes a doc format item from the board

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-doc-format-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Doc format item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete doc format item", "tags": ["doc formats"] } }, "/v2/orgs/{org_id}/cases": { "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get all cases", "operationId": "get-all-cases", "description": "Retrieves the list of eDiscovery cases in an organization.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "$ref": "#/components/parameters/queryPageLimit" }, { "$ref": "#/components/parameters/queryPageCursor" }, { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the list of cases.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true } ], "responses": { "200": { "description": "Case objects", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCaseResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "post": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Create case", "operationId": "create-case", "description": "Creating a case for legal hold is the first critical step in the eDiscovery process when litigation or an investigation is anticipated. One of the purposes of creating a case is that it acts as a container that allows admins to group multiple legal holds under one case. For more information, see our Help Center page on creating a case.

This API creates a new case in an organization.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseRequest" } } }, "required": true }, "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization in which you want to create a new case.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true } ], "responses": { "200": { "description": "Case created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/cases/{case_id}": { "delete": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Close case", "operationId": "delete-case", "description": "Closing a case is the final stage in the eDiscovery process, marking the conclusion of a legal matter or investigation. You must ensure that all associated legal holds within the case are closed before closing the case. Closing a case will permanently delete it. For more information, see our Help Center page on closing a case.

This API closes a case in an organization.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization in which you want to close a case.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case you want to close.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true } ], "responses": { "204": { "description": "Case closed successfully." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get case", "operationId": "get-case", "description": "Retrieves information about a case in an organization.

Required scope

organization:cases:management

Rate limiting

Level 3

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the case information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case you want to retrieve.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true } ], "responses": { "200": { "description": "Case object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "put": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Edit case", "operationId": "edit-case", "description": "Editing a case allows eDiscovery Admins to keep case details accurate and aligned with the evolving scope of a legal matter. As investigations progress, it may be necessary to update the case name or description to reflect changes in focus, terminology, or internal documentation standards. Since a case serves as the central container for one or more legal holds, keeping its information up to date helps ensure clarity, consistency, and easier navigation for all stakeholders involved in the legal process.

Required scope

organization:cases:management

Rate limiting

Level 3

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseRequest" } } }, "required": true }, "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to edit the case information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case you want to edit.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true } ], "responses": { "200": { "description": "Case object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/cases/{case_id}/legal-holds": { "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get all legal holds within a case", "operationId": "get-all-legal-holds", "description": "Retrieves the list of all legal holds within a case for an organization.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "$ref": "#/components/parameters/queryPageLimit" }, { "$ref": "#/components/parameters/queryPageCursor" }, { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the list of legal holds within a case.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case for which you want to retrieve the list of legal holds.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true } ], "responses": { "200": { "description": "Legal hold objects", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedLegalHoldResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "post": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Create legal hold", "operationId": "create-legal-hold", "description": "After creating a case it is possible to add one or multiple legal holds to the case. Creating a legal hold involves identifying the relevant users associated with a case and applying the hold to prevent permanent deletion of content that those users own, co-own, create, edit or access. For more information, see our Help Center page on adding a legal hold to a case.

This API creates a new legal hold in a case for an organization. Newly created legal holds could take up to 24 hours to be processed.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldRequest" } } }, "required": true }, "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization in which you want to create a new legal hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case in which you want to create a new legal hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true } ], "responses": { "200": { "description": "Legal hold created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/cases/{case_id}/export-jobs": { "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get board export jobs of a case", "operationId": "get-legal-hold-export-jobs", "description": "Retrieves board export jobs for a case.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "$ref": "#/components/parameters/queryPageLimit" }, { "$ref": "#/components/parameters/queryPageCursor" }, { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the list of export jobs within a case.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case for which you want to retrieve the list of export jobs.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true } ], "responses": { "200": { "description": "Export job objects containing job IDs.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCaseExportJobsResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}": { "delete": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Close legal hold", "operationId": "delete-legal-hold", "description": "Closing a legal hold is one of the final steps in the eDiscovery process once the litigation or investigation has concluded. This process involves releasing the Miro boards and custodians that were under legal hold, allowing the preserved boards to return to normal operations. Closing a legal hold will permanently delete it. For more information, see our Help Center page on closing a legal hold.

This API closes a legal hold in a case for an organization. Once a legal hold is closed, it can take up to 24 hours to release the content items from the legal hold.

Required scope

organization:cases:management

Rate limiting

Level 4

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization in which you want to close a legal hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case in which you want to close a legal hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true }, { "in": "path", "name": "legal_hold_id", "description": "The ID of the legal hold you want to close.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619013003", "required": true } ], "responses": { "204": { "description": "Legal hold closed successfully." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get legal hold information", "operationId": "get-legal-hold", "description": "Retrieves information about a legal hold within a case for an organization.

Required scope

organization:cases:management

Rate limiting

Level 3

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the legal hold information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case for which you want to retrieve the legal hold information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true }, { "in": "path", "name": "legal_hold_id", "description": "The ID of the legal hold you want to retrieve.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619013003", "required": true } ], "responses": { "200": { "description": "Legal hold object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] }, "put": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Edit legal hold", "operationId": "edit-legal-hold", "description": "Editing a legal hold allows eDiscovery Admins to adjust and refine ongoing legal preservation efforts as case requirements evolve. Whether new custodians are identified, additional Miro boards become relevant, or existing boards or users are no longer in scope, editing a legal hold ensures that the correct data remains preserved and defensible throughout the legal process. Admins can update the legal hold’s name or description and add or remove users and boards as needed. This flexibility supports dynamic legal workflows and ensures that preservation stays precise, up to date, and aligned with the scope of the legal matter—maintaining compliance while avoiding unnecessary data retention.

When a legal hold is edited, boards newly added to the hold will begin having their versions preserved from that point forward, boards or users removed from the hold will stop being preserved, and their versions will no longer be preserved as part of that legal hold, boards that remain under hold will continue to have all versions preserved, including any deletions that occur after the hold was applied. This approach ensures organizations can respond to legal demands with accuracy and accountability as a case evolves.

Required scope

organization:cases:management

Rate limiting

Level 3

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldRequest" } } }, "required": true }, "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to edit the legal hold information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case for which you want to edit the legal hold information.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true }, { "in": "path", "name": "legal_hold_id", "description": "The ID of the legal hold you want to edit.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619013003", "required": true } ], "responses": { "200": { "description": "Legal hold object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegalHoldResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}/content-items": { "get": { "x-settings": { "publish": true, "skip-tests": true }, "summary": "Get content items under legal hold", "operationId": "get-legal-hold-content-items", "description": "Once a legal hold is in place you can review or explore the preserved Miro boards to ensure that all relevant data is intact and ready for legal proceedings or investigations. For more information, see our Help Center page on reviewing boards under legal hold.

This API lists all content items under a specific legal hold in a case for an organization. Please verify that the legal hold is in 'ACTIVE' state to guarantee that the legal hold has finished processing the full list of content items under hold.

Required scope

organization:cases:management

Rate limiting

Level 3

Enterprise Guard only

This API is available only for Enterprise plan users with the Enterprise Guard add-on. You can only use this endpoint if you have both the Company Admin and eDiscovery Admin roles.", "parameters": [ { "in": "path", "name": "org_id", "description": "The ID of the organization for which you want to retrieve the list of content items under hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345618265000", "required": true }, { "in": "path", "name": "case_id", "description": "The ID of the case for which you want to retrieve the list of content items under hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619012007", "required": true }, { "in": "path", "name": "legal_hold_id", "description": "The ID of the legal hold for which you want to retrieve the list of content items under hold.", "schema": { "type": "string", "pattern": "^[0-9]+$" }, "example": "3074457345619013003", "required": true }, { "$ref": "#/components/parameters/queryPageLimit" }, { "$ref": "#/components/parameters/queryPageCursor" } ], "responses": { "200": { "description": "Content item objects", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedLegalHoldContentItemsResponse" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "tags": ["Legal holds"] } }, "/v2/orgs/{org_id}/boards/export/jobs": { "post": { "x-settings": { "skip-tests": true }, "description": "Creates an export job for one or more boards.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-board-export", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board export job.", "example": "92343229-c532-446d-b8cb-2f155bedb807", "in": "query", "name": "request_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBoardExportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportJobId" } } }, "description": "Unique identifier of the board export job" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "425": { "$ref": "#/components/responses/425" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create board export job", "tags": ["Board Export"] }, "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves the list of board export jobs based on the filters provided in the request.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-board-export-jobs", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "Status of the board export jobs that you want to retrieve, such as JOB_STATUS_CREATED, JOB_STATUS_IN_PROGRESS, JOB_STATUS_CANCELLED or JOB_STATUS_FINISHED.", "required": false, "schema": { "type": "array", "items": { "type": "string", "description": "Indicates the current state of the board export job.\nPossible values:\n`JOB_STATUS_CREATED`: the job has been created but not yet started. Retry the status call after some time.\n`JOB_STATUS_IN_PROGRESS`: the job is in progress, and the results are not ready yet. Retry the status call after some time.\n`JOB_STATUS_CANCELLED`: the job has been cancelled and will not produce any more results.\n`JOB_STATUS_FINISHED`: the job is complete. You can now get results for the board export job.", "example": "JOB_STATUS_CREATED" } } }, { "name": "creatorId", "in": "query", "description": "Unique identifier of the board export job creator.", "required": false, "schema": { "type": "array", "items": { "type": "integer", "format": "int64" } }, "example": [1234567890, 9876543210] }, { "name": "cursor", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n", "in": "query", "required": false, "schema": { "type": "string", "format": "uuid" }, "example": "87a1a375-cee6-43f2-8049-5c9b5b6b9069" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of jobs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 500, "default": 50 }, "example": 10 } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportJobsList" } } }, "description": "List of board export jobs." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get board export jobs list", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/boards/export/jobs/{job_id}": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves the status of the board export job.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-board-export-job-status", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board export job.", "example": "92343229-c532-446d-b8cb-2f155bedb807", "in": "path", "name": "job_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportJobStatus" } } }, "description": "Board export job status" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get board export job status", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/boards/export/jobs/{job_id}/results": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves the result of the board export job. The response provides more information about the board export job, such as the S3 link to the files created.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-board-export-job-results", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the job.", "example": "92343229-c532-446d-b8cb-2f155bedb807", "in": "path", "name": "job_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportResult" } } }, "description": "Board export job result" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get results for board export job", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/boards/export/jobs/{job_id}/status": { "put": { "x-settings": { "skip-tests": true }, "description": "Updates the status of the board export job.
Currently, only the cancellation of an ongoing export job is supported.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-board-export-job", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board export job.", "example": "92343229-c532-446d-b8cb-2f155bedb807", "in": "path", "name": "job_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["status"], "properties": { "status": { "description": "Only the `CANCELLED` status is currently supported.", "type": "string", "enum": ["CANCELLED"] } }, "example": { "status": "CANCELLED" } } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "type": "object", "required": ["status"], "properties": { "status": { "allOf": [ { "$ref": "#/components/schemas/BoardExportJobStatus" }, { "type": "string", "example": "CANCELLED" } ] } } } } }, "description": "Update board export job status" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update board export job status", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/boards/export/jobs/{job_id}/tasks": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves the list of tasks for the board export job.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-board-export-job-tasks", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board export job.", "example": "08ac2d88-c3a7-46a1-923d-b5fb88ff3fe2", "in": "path", "name": "job_id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "status", "in": "query", "description": "Filters the list of board export tasks by their status. Accepts an array of statuses such as TASK_STATUS_CREATED, TASK_STATUS_CANCELLED, TASK_STATUS_SCHEDULED, TASK_STATUS_SUCCESS or TASK_STATUS_ERROR.", "required": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportTaskStatusFilter" } }, "example": "TASK_STATUS_CREATED" }, { "name": "cursor", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n", "in": "query", "required": false, "schema": { "type": "string", "format": "uuid" }, "example": "87a1a375-cee6-43f2-8049-5c9b5b6b9069" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of tasks in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 500, "default": 50 }, "example": 50 } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportJobTasksList" } } }, "description": "List of tasks for the board export job." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get board export job tasks list", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/boards/export/jobs/{job_id}/tasks/{task_id}/export-link": { "post": { "x-settings": { "skip-tests": true }, "description": "Creates a link to download the results of a board export task.

Required scope

boards:export

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-board-export-task-export-link", "parameters": [ { "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier of the board export job.", "example": "08ac2d88-c3a7-46a1-923d-b5fb88ff3fe2", "in": "path", "name": "job_id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "description": "Unique identifier of the board export task.", "example": "9394a815-86ea-418c-8bfc-71772fdb692d", "in": "path", "name": "task_id", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardExportTaskExportLink" } } }, "description": "Link to download the results of a board export task." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "425": { "$ref": "#/components/responses/425" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create task export link", "tags": ["Board Export"] } }, "/v2/orgs/{org_id}/content-logs/items": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves content changes for board items within your organization. Content changes are actions that users can perform on board items, such as updating a sticky note's text. You can retrieve results for a specific time period. You can also filter results based on the board IDs and the emails of users who created, modified, or deleted a board item. Additionally, results can be paginated for easier viewing and processing.\n

Required scope

contentlogs:export\n

Rate limiting

Level 4\n

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin.

\n", "operationId": "enterprise-board-content-item-logs-fetch", "parameters": [ { "name": "org_id", "description": "Unique identifier of the organization.", "example": "3074457345821141000", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "board_ids", "description": "List of board IDs for which you want to retrieve the content logs.", "example": ["o9J_kzlUDmo=", "u8J_kllZmDk="], "in": "query", "required": false, "schema": { "type": "array", "maxItems": 15, "items": { "description": "Unique identifier of the board for which you want to retrieve the content logs.", "type": "string", "example": "o9J_kzlUDmo=" } } }, { "name": "emails", "description": "Filter content logs based on the list of emails of users who created, modified, or deleted the board item.", "example": ["someone@domain.com", "someoneelse@domain.com"], "in": "query", "required": false, "schema": { "type": "array", "maxItems": 15, "items": { "description": "Email of the user who created, modified, or deleted the board item.", "type": "string", "example": "someone@domain.com" } } }, { "name": "from", "description": "Filter content logs based on the date and time when the board item was last modified. This is the start date and time for the modified date duration.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2022-03-30T17:26:50Z", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "to", "description": "Filter content logs based on the date and time when the board item was last modified. This is the end date and time for the modified date duration. Format: UTC, adheres to\n[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2023-03-30T17:26:50Z", "in": "query", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "cursor", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request.\n", "in": "query", "required": false, "schema": { "type": "string" }, "example": "MTY2OTg4NTIwMDAwMHwxMjM=" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of logs in the response is greater than the limit specified, the response returns the cursor parameter with a value.\n", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 1000, "default": 1000 }, "example": 1000 }, { "name": "sorting", "description": "Sort order in which you want to view the result set based on the modified date. To sort by an ascending modified date, specify `asc`. To sort by a descending modified date, specify `desc`.\n", "in": "query", "required": false, "schema": { "type": "string", "default": "asc", "enum": ["asc", "desc"] }, "example": "asc" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetBoardItemContentLogsResponse" } } }, "description": "Response from the API that includes content logs of board items such as data, size of the data list, pagination cursor, and pagination limit.\n" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Retrieve content change logs of board items", "tags": ["Board Content Logs"] } }, "/v2/sessions/reset_all": { "post": { "x-settings": { "skip-tests": true }, "description": "Reset all sessions of a user. Admins can now take immediate action to restrict user access to company data in case of security concerns. Calling this API ends all active Miro sessions across devices for a particular user, requiring the user to sign in again. This is useful in situations where a user leaves the company, their credentials are compromised, or there's suspicious activity on their account.

Required scope

sessions:delete

Rate limiting

Level 3

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-post-user-sessions-reset", "parameters": [ { "in": "query", "name": "email", "required": true, "description": "Email ID of the user whose sessions you want to reset. Note that this user will be signed out from all devices.", "example": "john.smith@example.com", "schema": { "type": "string" } } ], "responses": { "200": { "description": "User Sessions Reset", "content": {} }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Reset all sessions of a user", "tags": ["Reset all sessions of a user"] } }, "/Users": { "get": { "tags": ["User"], "description": "Retrieves the list of users in your organization.

Note
: The API returns users that are members in the organization, it does not return users that are added in the organization as guests.", "parameters": [ { "name": "attributes", "in": "query", "required": false, "description": "A comma-separated list of attribute names to return in the response.

Example attributes: id, userName, displayName, name, userType, active, emails, photos, groups, roles. You can also retrieve attributes within complex attributes, for Example: emails.value. The API also supports sorting and the filter parameter.", "schema": { "type": "string" } }, { "name": "filter", "in": "query", "required": false, "description": "You can request a subset of resources by specifying the filter query parameter containing a filter expression. Attribute names and attribute operators used in filters are not case sensitive. The filter parameter must contain at least one valid expression. Each expression must contain an attribute name followed by an attribute operator and an optional value.
eq = equal
ne = not equal
co = contains
sw = starts with
ew = ends with
pr = preset (has value)
gt = greater than
ge = greater than or equal to
lt = less than
le = less than or equal to
and = Logical \"and\"
or = Logical \"or\"
not = \"Not\" function
() = Precedence grouping
The value must be passed within parenthesis.

Example filters:

For fetching users with user name as user@miro.com: userName eq \"user@miro.com\"

For fetching all active users in the organization: active eq true

For fetching users with \"user\" in their displayName: displayName co \"user\"

For fetching users that are member of a specific group (team): groups.value eq \"3458764577585056871\"

For fetching users that are not of userType Full: userType ne \"Full\"", "schema": { "type": "string" } }, { "name": "startIndex", "in": "query", "required": false, "description": "Use startIndex in combination with count query parameters to receive paginated results.

start index is 1-based.

Example: startIndex=1", "schema": { "type": "integer" } }, { "name": "count", "in": "query", "required": false, "description": "Specifies the maximum number of query results per page.

Use count in combination with startIndex query parameters to receive paginated results.

The count query parameter is set to 100 by default and the maximum value allowed for this parameter is 1000.

Example: count=12", "schema": { "type": "integer" } }, { "name": "sortBy", "in": "query", "required": false, "description": "Specifies the attribute whose value will be used to order the response.

Example: sortBy=userName, sortBy=emails.value", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "required": false, "description": "Defines the order in which the sortBy parameter is applied.

Example: sortOrder=ascending", "schema": { "type": "string", "enum": ["ascending", "descending"] } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/UserListResponse" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], "totalResults": 1, "itemsPerPage": 1, "startIndex": 1, "Resources": [ { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } ] } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserListResponse" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], "totalResults": 1, "itemsPerPage": 1, "startIndex": 1, "Resources": [ { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } ] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "listUsers", "summary": "List users", "x-codeSamples": [ { "lang": "curl", "label": "List users", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Users' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "List users (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Users',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] }, "post": { "tags": ["User"], "description": "Creates a new user in the organization.


Note: All newly provisioned users are added to the default team.", "requestBody": { "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/CreateUserResource" } }, "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserResource" } } }, "required": true }, "responses": { "201": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/CreateUserResponse" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserResponse" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } } }, "headers": { "Location": { "description": "URL of the created resource.", "schema": { "type": "string", "format": "uri" } } } }, "400": { "$ref": "#/components/responses/createUser400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/createUser409" }, "413": { "$ref": "#/components/responses/413" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "createUser", "summary": "Create user", "x-codeSamples": [ { "lang": "curl", "label": "Create user", "source": "curl -X POST 'https://api.miro.com/api/v1/scim/Users' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'\n -d '{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"userName\": \"bjensen\",\n \"name\": {\n \"givenName\": \"Barbara\",\n \"familyName\": \"Jensen\"\n },\n \"active\": true,\n \"emails\": [\n {\n \"value\": \"bjensen@example.com\",\n \"primary\": true\n }\n ]\n}'" }, { "lang": "javascript", "label": "Create user (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Users',\n {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n body: JSON.stringify({\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"userName\": \"bjensen\",\n \"name\": {\n \"givenName\": \"Barbara\",\n \"familyName\": \"Jensen\"\n },\n \"active\": true,\n \"emails\": [\n {\n \"value\": \"bjensen@example.com\",\n \"primary\": true\n }\n ]\n})\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/Users/{id}": { "get": { "tags": ["User"], "description": "Retrieves a single user resource.

Note
: Returns only users that are members in the organization. It does not return users that are added in the organization as guests.", "parameters": [ { "name": "id", "in": "path", "description": "User ID of the user to be retrieved", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "required": false, "description": "A comma-separated list of attribute names to return in the response.


Example attributes - id, userName, displayName, name, userType, active, emails, photos, groups, roles.


Note: It is also possible to fetch attributes within complex attributes, for Example: emails.value", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/getUser404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "getUser", "summary": "Get user", "x-codeSamples": [ { "lang": "curl", "label": "Get user", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Users/{id}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "Get user (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Users/{id}',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] }, "put": { "tags": ["User"], "description": "Updates an existing user resource. This is the easiest way to replace user information.

If the user is deactivated,
userName, userType, and roles.value cannot be updated.
emails.value, emails.display, emails.primary get ignored and do not return any error.

Note: If the user is not a member in the organization, they cannot be updated. Additionally, users with guest role in the organization cannot be updated. ", "parameters": [ { "name": "id", "in": "path", "description": "User ID. A server-assigned, unique identifier for this user.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Payload to update user information.", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/UserResource" } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserResource" } } }, "required": true }, "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } } }, "headers": { "ETag": { "description": "Entity tag identifying the current version of the resource.", "schema": { "type": "string" } } } }, "400": { "$ref": "#/components/responses/updateUser400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/updateUser404" }, "409": { "$ref": "#/components/responses/updateUser409" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "replaceUser", "summary": "Replace user", "x-codeSamples": [ { "lang": "curl", "label": "Replace user", "source": "curl -X PUT 'https://api.miro.com/api/v1/scim/Users/{id}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'\n -d '{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"userName\": \"bjensen\",\n \"name\": {\n \"givenName\": \"Barbara\",\n \"familyName\": \"Jensen\"\n },\n \"active\": true,\n \"emails\": [\n {\n \"value\": \"bjensen@example.com\",\n \"primary\": true\n }\n ]\n}'" }, { "lang": "javascript", "label": "Replace user (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Users/{id}',\n {\n method: 'PUT',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n body: JSON.stringify({\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"userName\": \"bjensen\",\n \"name\": {\n \"givenName\": \"Barbara\",\n \"familyName\": \"Jensen\"\n },\n \"active\": true,\n \"emails\": [\n {\n \"value\": \"bjensen@example.com\",\n \"primary\": true\n }\n ]\n})\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] }, "patch": { "tags": ["User"], "description": "Updates an existing user resource, overwriting values for specified attributes. Attributes that are not provided will remain unchanged. PATCH operation only updates the fields provided.

Note: If the user is not a member in the organization, they cannot be updated. Additionally, users with guest role in the organization cannot be updated. ", "parameters": [ { "name": "id", "in": "path", "description": "User ID. A server-assigned, unique identifier for this user.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Payload to update user information.

The body of a PATCH request must contain the attribute `Operations`, and its value is an array of one or more PATCH operations. Each PATCH operation object must have exactly one \"op\" member.", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/PatchUserResource" } }, "application/json": { "schema": { "$ref": "#/components/schemas/PatchUserResource" } } }, "required": true }, "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/UserResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "2819c223-7f76-453a-919d-413861904646", "userName": "bjensen", "name": { "givenName": "Barbara", "familyName": "Jensen" }, "active": true, "emails": [ { "value": "bjensen@example.com", "primary": true } ], "meta": { "resourceType": "User", "location": "/Users/2819c223-7f76-453a-919d-413861904646" } } } }, "headers": { "ETag": { "description": "Entity tag identifying the current version of the resource.", "schema": { "type": "string" } } } }, "400": { "$ref": "#/components/responses/updateUser400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/updateUser404" }, "409": { "$ref": "#/components/responses/updateUser409" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "patchUser", "summary": "Patch user", "x-codeSamples": [ { "lang": "curl", "label": "Patch user (active)", "source": "curl -X PATCH 'https://api.miro.com/api/v1/scim/Users/{id}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'\n -d '{\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n ],\n \"Operations\": [\n {\n \"op\": \"replace\",\n \"path\": \"active\",\n \"value\": true\n }\n ]\n}'" }, { "lang": "javascript", "label": "Patch user (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Users/{id}',\n {\n method: 'PATCH',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n body: JSON.stringify({\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n ],\n \"Operations\": [\n {\n \"op\": \"replace\",\n \"path\": \"active\",\n \"value\": true\n }\n ]\n})\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] }, "delete": { "tags": ["User"], "operationId": "deleteUser", "summary": "Delete user", "description": "Deletes a single user from the organization.

Note: A user who is the last admin in the team or the last admin in the organization cannot be deleted. User must be a member in the organization to be deleted. Users that have guest role in the organization cannot be deleted.

After a user is deleted, the ownership of all the boards that belong to the deleted user is transferred to the oldest team member who currently has an admin role.", "parameters": [ { "name": "id", "in": "path", "description": "User ID. A server-assigned, unique identifier for this user.", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Successful Operation - No content" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/deleteUser404" }, "409": { "$ref": "#/components/responses/deleteUser409" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/Groups": { "get": { "tags": ["Group"], "description": "Retrieves the list of groups (teams) in the organization.

Note: Along with groups (teams), the users that are part of those groups (teams) are also retrieved. Only users that have member role in the organization are fetched.", "parameters": [ { "name": "attributes", "in": "query", "required": false, "description": "A comma-separated list of attribute names to return in the response.

Example attributes: id,displayName
Note: It is also possible to fetch attributes within complex attributes, for Example: members.display.", "schema": { "type": "string" } }, { "name": "filter", "in": "query", "required": false, "description": "You can request a subset of resources by specifying the filter query parameter containing a filter expression. Attribute names and attribute operators used in filters are not case sensitive. The filter parameter must contain at least one valid expression. Each expression must contain an attribute name followed by an attribute operator and an optional value.
eq = equal
ne = not equal
co = contains
sw = starts with
ew = ends with
pr = preset (has value)
gt = greater than
ge = greater than or equal to
lt = less than
le = less than or equal to
and = Logical \"and\"
or = Logical \"or\"
not = \"Not\" function
() = Precedence grouping
The value must be passed within parenthesis.

For Example: displayName eq \"Product Team\" will fetch information related to team matching the display name \"Product Team\".
Note: Filtering on complex attributes is not supported", "schema": { "type": "string" } }, { "name": "startIndex", "in": "query", "required": false, "description": "Use startIndex in combination with count query parameters to receive paginated results.

start index is 1-based.

Example: startIndex=1", "schema": { "type": "integer" } }, { "name": "count", "in": "query", "required": false, "description": "Specifies the maximum number of query results per page.

Use count in combination with startIndex query parameters to receive paginated results.

The count query parameter is set to 100 by default and the maximum value allowed for this parameter is 1000.

Example: count=12", "schema": { "type": "integer" } }, { "name": "sortBy", "in": "query", "required": false, "description": "Specifies the attribute whose value will be used to order the response. Example sortBy=displayName", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "required": false, "description": "Defines the order in which the 'sortBy' parameter is applied. Example: sortOrder=ascending", "schema": { "type": "string", "enum": ["ascending", "descending"] } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/GroupListResponse" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], "totalResults": 1, "itemsPerPage": 1, "startIndex": 1, "Resources": [ { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } ] } }, "application/json": { "schema": { "$ref": "#/components/schemas/GroupListResponse" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"], "totalResults": 1, "itemsPerPage": 1, "startIndex": 1, "Resources": [ { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } ] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "listGroups", "summary": "List groups", "x-codeSamples": [ { "lang": "curl", "label": "List groups", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Groups' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "List groups (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Groups',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/Groups/{id}": { "get": { "tags": ["Group"], "description": "Retrieves a single Group resource.
Note: Along with groups (teams), the users that are part of those groups (teams) are also retrieved. Only users that have member role in the organization are fetched.", "parameters": [ { "name": "id", "in": "path", "description": "A server-assigned, unique identifier for this Group (team).", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "required": false, "description": "A comma-separated list of attribute names to return in the response.

Example attributes: id,displayName
Note: It is also possible to retrieve attributes within complex attributes. For example: members.display", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/GroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/GroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } } }, "headers": { "ETag": { "description": "Entity tag identifying the current version of the resource.", "schema": { "type": "string" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "413": { "$ref": "#/components/responses/413" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "getGroup", "summary": "Get group", "x-codeSamples": [ { "lang": "curl", "label": "Get group", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Groups/{id}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "Get group (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Groups/{id}',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] }, "patch": { "tags": ["Group"], "description": "Updates an existing group resource, i.e. a team, overwriting values for specified attributes. Patch operation for group can be used to add, remove, or replace team members and to update the display name of the group (team).

To add a user to the group (team), use add operation.
To remove a user from a group (team), use remove operation.
To update a user resource, use the replace operation.
The last team admin cannot be removed from the team.

Note: Attributes that are not provided will remain unchanged. PATCH operation only updates the fields provided.

Team members removal specifics:
For remove or replace operations, the team member is removed from the team and from all team boards. The ownership of boards that belong to the removed team member is transferred to the oldest team member who currently has an admin role. After you remove a team member, adding the team member again to the team does not automatically restore their previous ownership of the boards. If the user is not registered fully in Miro and is not assigned to any other team, the user is also removed from the organization.

Add team members specifics:
All added team members are reactivated or recreated if they were deactivated or deleted earlier.

External users specifics:
When adding existing users with the role ORGANIZATION_EXTERNAL_USER or ORGANIZATION_TEAM_GUEST_USER to a team, we set FULL license and ORGANIZATION_INTERNAL_USER roles. ", "parameters": [ { "name": "id", "in": "path", "description": "Group (Team) ID. A server-assigned, unique identifier for this Group (team).", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "required": false, "description": "A comma-separated list of attribute names to return in the response.

Example attributes: id,displayName
It is also possible to fetch attributes within complex attributes, for Example: members.display", "schema": { "type": "string" } } ], "requestBody": { "description": "Payload to add, replace, remove members in the specified group (team).

The body of a PATCH request must contain the attribute `Operations` and its value is an array of one or more PATCH operations. Each PATCH operation object must have exactly one `op` member. ", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/PatchGroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "Add", "path": "members", "value": [ { "value": "3074457365265951581" }, { "value": "3074457365266570558" } ] }, { "op": "Remove", "path": "members[value eq 3074457364022187294]" }, { "op": "Replace", "path": "displayName", "value": "design_unit2_product" } ] } }, "application/json": { "schema": { "$ref": "#/components/schemas/PatchGroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "Add", "path": "members", "value": [ { "value": "3074457365265951581" }, { "value": "3074457365266570558" } ] }, { "op": "Remove", "path": "members[value eq 3074457364022187294]" }, { "op": "Replace", "path": "displayName", "value": "design_unit2_product" } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Operation

A remove operation is successful only if all members to be removed can be removed.", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/GroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } }, "application/json": { "schema": { "$ref": "#/components/schemas/GroupResource" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "id": "a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d", "displayName": "Sales Ops", "members": [ { "value": "2819c223-7f76-453a-919d-413861904646", "ref": "/Users/2819c223-7f76-453a-919d-413861904646", "type": "User" } ], "meta": { "resourceType": "Group", "location": "/Groups/a9e4bf9e-3f67-4a22-9a12-9a0522c88c5d" } } } }, "headers": { "ETag": { "description": "Entity tag identifying the current version of the resource.", "schema": { "type": "string" } } } }, "400": { "$ref": "#/components/responses/updateGroup400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/updateGroup409" }, "413": { "$ref": "#/components/responses/413" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "patchGroup", "summary": "Patch group", "x-codeSamples": [ { "lang": "curl", "label": "Patch group (add member)", "source": "curl -X PATCH 'https://api.miro.com/api/v1/scim/Groups/{id}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'\n -d '{\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n ],\n \"Operations\": [\n {\n \"op\": \"add\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": \"\"\n }\n ]\n }\n ]\n}'" }, { "lang": "javascript", "label": "Patch group (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Groups/{id}',\n {\n method: 'PATCH',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n body: JSON.stringify({\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:PatchOp\"\n ],\n \"Operations\": [\n {\n \"op\": \"add\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": \"\"\n }\n ]\n }\n ]\n})\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/ServiceProviderConfig": { "get": { "tags": ["Discovery"], "description": "Retrieve supported operations and SCIM API basic configuration.", "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/ServiceProviderConfigResponse" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"], "patch": { "supported": true }, "bulk": { "supported": false }, "filter": { "supported": true, "maxResults": 200 }, "changePassword": { "supported": false }, "sort": { "supported": true }, "etag": { "supported": false }, "authenticationSchemes": [ { "type": "oauthbearertoken", "name": "OAuth Bearer Token" } ] } }, "application/json": { "schema": { "$ref": "#/components/schemas/ServiceProviderConfigResponse" }, "example": { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"], "patch": { "supported": true }, "bulk": { "supported": false }, "filter": { "supported": true, "maxResults": 200 }, "changePassword": { "supported": false }, "sort": { "supported": true }, "etag": { "supported": false }, "authenticationSchemes": [ { "type": "oauthbearertoken", "name": "OAuth Bearer Token" } ] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "listServiceProviderConfigs", "summary": "Get Service Provider Config", "x-codeSamples": [ { "lang": "curl", "label": "Get ServiceProviderConfig", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/ServiceProviderConfig' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "Get ServiceProviderConfig (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/ServiceProviderConfig',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/ResourceTypes": { "get": { "tags": ["Discovery"], "description": "Retrieve information about which SCIM resources are supported.

Currently, Miro supports Users and Groups as Resource Types.", "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/ResourceTypeListResponse" }, "example": { "Resources": [ { "id": "User", "name": "User", "endpoint": "/Users", "schema": "urn:ietf:params:scim:schemas:core:2.0:User" } ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"] } }, "application/json": { "schema": { "$ref": "#/components/schemas/ResourceTypeListResponse" }, "example": { "Resources": [ { "id": "User", "name": "User", "endpoint": "/Users", "schema": "urn:ietf:params:scim:schemas:core:2.0:User" } ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "listResourceTypes", "summary": "List resource types", "x-codeSamples": [ { "lang": "curl", "label": "List resource types", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/ResourceTypes' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "List resource types (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/ResourceTypes',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/ResourceTypes/{resource}": { "get": { "tags": ["Discovery"], "description": "Retrieve metadata for the available resource types (User and Group) that are supported.", "parameters": [ { "name": "resource", "in": "path", "required": true, "schema": { "type": "string", "description": "Resource type identifier for which to retrieve metadata. Supported values are 'User' and 'Group'.", "enum": ["User", "Group"] } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/ResourceType" }, "example": { "id": "User", "name": "User", "endpoint": "/Users", "schema": "urn:ietf:params:scim:schemas:core:2.0:User" } }, "application/json": { "schema": { "$ref": "#/components/schemas/ResourceType" }, "example": { "id": "User", "name": "User", "endpoint": "/Users", "schema": "urn:ietf:params:scim:schemas:core:2.0:User" } } }, "headers": { "ETag": { "description": "Entity tag identifying the current version of the resource.", "schema": { "type": "string" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "getResourceType", "summary": "Get resource type", "x-codeSamples": [ { "lang": "curl", "label": "Get resource type", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/ResourceTypes/{resource}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "Get resource type (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/ResourceTypes/{resource}',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/Schemas": { "get": { "tags": ["Discovery"], "description": "Retrieve metadata about Users, Groups, and extension attributes that are currently supported.", "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/SchemaListResponse" }, "example": { "Resources": [ { "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", "description": "User Account", "attributes": [ { "name": "userName", "type": "string", "required": true } ] } ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"] } }, "application/json": { "schema": { "$ref": "#/components/schemas/SchemaListResponse" }, "example": { "Resources": [ { "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", "description": "User Account", "attributes": [ { "name": "userName", "type": "string", "required": true } ] } ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 1, "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "listSchemas", "summary": "List schemas", "x-codeSamples": [ { "lang": "curl", "label": "List schemas", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Schemas' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "List schemas (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Schemas',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/Schemas/{uri}": { "get": { "tags": ["Discovery"], "description": "Retrieve information about how users, groups, and enterprise-user attributes URIs that are formatted.", "parameters": [ { "name": "uri", "in": "path", "description": "Schema URI of a particular resource type.", "required": true, "schema": { "type": "string", "enum": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:core:2.0:Group", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ] } } ], "responses": { "200": { "description": "Successful Operation", "content": { "application/scim+json": { "schema": { "$ref": "#/components/schemas/SchemaResource" }, "example": { "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", "description": "User Account", "attributes": [ { "name": "userName", "type": "string", "required": true } ] } }, "application/json": { "schema": { "$ref": "#/components/schemas/SchemaResource" }, "example": { "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", "description": "User Account", "attributes": [ { "name": "userName", "type": "string", "required": true } ] } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } }, "operationId": "getSchema", "summary": "Get schema", "x-codeSamples": [ { "lang": "curl", "label": "Get schema", "source": "curl -X GET 'https://api.miro.com/api/v1/scim/Schemas/{uri}' \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/scim+json'" }, { "lang": "javascript", "label": "Get schema (fetch)", "source": "const res = await fetch(\n 'https://api.miro.com/api/v1/scim/Schemas/{uri}',\n {\n method: 'GET',\n headers: {\n 'Authorization': 'Bearer ',\n 'Content-Type': 'application/scim+json'\n },\n // no body\n }\n);\nconst data = await res.json();\nconsole.log(data);" } ] } }, "/v2/orgs/{org_id}": { "get": { "description": "Retrieves organization information.

Required scope

organizations:read

Rate limiting

Level 3

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-organization", "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } }, "description": "Organization found" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get organization info", "tags": ["Organizations"] } }, "/v2/orgs/{org_id}/members": { "get": { "description": "Retrieves organization members based on the organization ID and the cursor, or based on the user emails provided in the request.

Required scope

organizations:read

Rate limiting

Level 3

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-organization-members", "parameters": [ { "in": "query", "name": "emails", "schema": { "type": "string", "description": "Emails of the organization members you want to retrieve. If you specify a value for the `emails` parameter, only the `emails` parameter is considered. All other filtering parameters are ignored. Maximum emails size is 10. Example: `emails=someEmail1@miro.com,someEmail2@miro.com`", "example": "someEmail1@miro.com" } }, { "in": "query", "name": "role", "schema": { "type": "string", "description": "Filter organization members by role", "enum": [ "organization_internal_admin", "organization_internal_user", "organization_external_user", "organization_team_guest_user", "unknown" ] } }, { "in": "query", "name": "license", "schema": { "type": "string", "description": "Filter organization members by license", "enum": [ "advanced", "standard", "basic", "full", "occasional", "free", "free_restricted", "full_trial", "unknown" ] } }, { "in": "query", "name": "active", "schema": { "type": "boolean", "description": "Filter results based on whether the user is active or deactivated. Learn more about user deactivation." } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "The ID of the organization member used as the reference for pagination. To retrieve the first portion of the collection don't pass a cursor value. To retrieve the next portion of the collection, set the `cursor` parameter value to the ID of the last organization member you received in the response of the previous request.", "example": "3055557345821141000" } }, { "in": "query", "name": "limit", "schema": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Limit for the number of organization members returned in the result list.", "format": "int32", "example": 100, "default": 100 } }, { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/OrganizationMembersSearchResponse" }, { "$ref": "#/components/schemas/OrganizationMembersSearchByEmailsResponse" } ] } } }, "description": "Organization members queries successfully" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get organization members", "tags": ["Organization Members"] } }, "/v2/orgs/{org_id}/members/{member_id}": { "get": { "description": "Retrieves organization member information for an existing organization.

Required scope

organizations:read

Rate limiting

Level 3

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-organization-member", "parameters": [ { "description": "id of the organization", "example": "3074457345821141000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } }, { "description": "id of the organization member", "example": "3055557345821141000", "in": "path", "name": "member_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationMember" } } }, "description": "Organization member found" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get organization member", "tags": ["Organization Members"] } }, "/v2/boards": { "post": { "description": "Creates a board with the specified name and sharing policies.

Note

You can only create up to 3 team boards with the free plan.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "create-board", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardChanges" } } } }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardWithLinks" } } }, "description": "Board created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create board", "tags": ["Boards"] }, "get": { "description": "Retrieves a list of boards accessible to the user associated with the provided access token. This endpoint supports filtering and sorting through URL query parameters.\nCustomize the response by specifying `team_id`, `project_id`, or other query parameters. Filtering by `team_id` or `project_id` (or both) returns results instantly. For other filters, allow a few seconds for indexing of newly created boards.\n\nIf you're an Enterprise customer with Company Admin permissions:\n- Enable **Content Admin** permissions to retrieve all boards, including private boards (those not explicitly shared with you). For details, see the [Content Admin Permissions for Company Admins](https://help.miro.com/hc/en-us/articles/360012777280-Content-Admin-permissions-for-Company-Admins).\n- Note that **Private board contents remain inaccessible**. The API allows you to verify their existence but prevents viewing their contents to uphold security best practices. Unauthorized access attempts will return an error.\n

Required scope

boards:read

Rate limiting

Level 1
\n", "operationId": "get-boards", "parameters": [ { "in": "query", "name": "team_id", "schema": { "type": "string", "description": "The team_id for which you want to retrieve the list of boards. If this parameter is sent in the request, the `query` and `owner` parameters are ignored." } }, { "in": "query", "name": "project_id", "schema": { "type": "string", "description": "The `project_id` for which you want to retrieve the list of boards.
**Note:** Projects have been renamed to Spaces. Use this as the unique identifier (ID) of the space. If this parameter is included in the request, the `query` and `owner` parameters are ignored." } }, { "in": "query", "name": "query", "schema": { "type": "string", "description": "Retrieves a list of boards that contain the query string provided in the board name or board description. For example, if you want to retrieve a list of boards that have the word `beta` in the board name or description, add `beta` as the `query` parameter value. You can use the `query` parameter with the owner parameter to narrow down the board search results.", "maxLength": 500 } }, { "in": "query", "name": "owner", "schema": { "type": "string", "description": "Retrieves a list of boards that belong to a specific owner ID. You must pass the owner ID (for example, 3074457353169356300), not the owner name. You can use the 'owner' parameter with the `query` parameter to narrow down the board search results. Note that if you pass the `team_id` in the same request, the `owner` parameter is ignored." } }, { "in": "query", "name": "limit", "schema": { "type": "string", "description": "The maximum number of boards to retrieve.\nDefault: `20`", "maximum": 50, "minimum": 1 } }, { "in": "query", "name": "offset", "schema": { "type": "string", "description": "The (zero-based) offset of the first item in the collection to return.\nDefault: `0`." } }, { "in": "query", "name": "sort", "schema": { "type": "string", "default": "default", "description": "Sort order in which you want to view the result set. The parameter is applicable only when you search for boards by team or project.\n* `default` - If `team_id` is present, `last_created`. Otherwise, `last_opened`.\n* `last_modified` - sort by the date and time when the board was last modified.\n* `last_opened` - sort by the date and time when the board was last opened.\n* `last_created` - sort by the date and time when the board was created.\n* `alphabetically` - sort by the board name (alphabetically).", "enum": ["default", "last_modified", "last_opened", "last_created", "alphabetically"] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardsPagedResponse" } } }, "description": "Board search results." }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get boards", "tags": ["Boards"] }, "put": { "description": "Creates a copy of an existing board. You can also update the name, description, sharing policy, and permissions policy for the new board in the request body.

Required scope

boards:write

Rate limiting

Level 4
", "operationId": "copy-board", "parameters": [ { "description": "Unique identifier (ID) of the board that you want to copy.", "in": "query", "name": "copy_from", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CopyBoardChanges" } } } }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardWithLinksAndWithoutProject" } } }, "description": "Board copied" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Copy board", "tags": ["Boards"] } }, "/v2/boards/{board_id}": { "get": { "description": "Retrieves information about a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-specific-board", "parameters": [ { "description": "Unique identifier (ID) of the board that you want to retrieve.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardWithLinksAndLastOpened" } } }, "description": "Board retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get specific board", "tags": ["Boards"] }, "patch": { "description": "Updates a specific board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-board", "parameters": [ { "description": "Unique identifier (ID) of the board that you want to update.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardChanges" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardWithLinks" } } }, "description": "Board updated" }, "202": { "description": "The board update operation has been accepted and will be processed asynchronously. If the operation exceeds the expected duration, a response will be returned.\nTo monitor the status of the board update, use the Get specific board API. This API allows you to verify whether the board has been successfully updated." }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update board", "tags": ["Boards"] }, "delete": { "description": "Deletes a board. Deleted boards go to Trash (on paid plans) and can be restored via UI within 90 days after deletion.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-board", "parameters": [ { "description": "Unique identifier (ID) of the board that you want to delete.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Board deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete board", "tags": ["Boards"] } }, "/v2/boards/{board_id}/app_cards": { "post": { "description": "Adds an app card item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-app-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCardCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCardItem" } } }, "description": "App card item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create app card item", "tags": ["App card items"] } }, "/v2/boards/{board_id}/app_cards/{item_id}": { "get": { "description": "Retrieves information for a specific app card item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-app-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCardItem" } } }, "description": "App card item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get app card item", "tags": ["App card items"] }, "patch": { "description": "Updates an app card item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-app-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCardUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppCardItem" } } }, "description": "Card item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update app card item", "tags": ["App card items"] }, "delete": { "description": "Deletes an app card item from a board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-app-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete an item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "App card item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete app card item", "tags": ["App card items"] } }, "/v2/boards/{board_id}/cards": { "post": { "description": "Adds a card item to a board

Required scope

boards:write

Rate limiting

Level 2
", "x-settings": { "skip-tests": true }, "operationId": "create-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardItem" } } }, "description": "Card item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create card item", "tags": ["Card items"] } }, "/v2/boards/{board_id}/cards/{item_id}": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves information for a specific card item on a board

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardItem" } } }, "description": "Card item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get card item", "tags": ["Card items"] }, "patch": { "x-settings": { "skip-tests": true }, "description": "Updates a card item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardItem" } } }, "description": "Card item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update card item", "tags": ["Card items"] }, "delete": { "x-settings": { "skip-tests": true }, "description": "Deletes a card item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-card-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Card item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete card item", "tags": ["Card items"] } }, "/v2/boards/{board_id}/connectors": { "post": { "description": "Adds a connector to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-connector", "parameters": [ { "description": "Unique identifier (ID) of the board for which you want to create the connector.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorCreationData" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorWithLinks" } } }, "description": "Connector created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create connector", "tags": ["Connectors"] }, "get": { "description": "Retrieves a list of connectors for a specific board.\n\nThis method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request. For example, if you set the `limit` query parameter to `10` and the board contains 20 objects, the first call will return information about the first 10 objects in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-connectors", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "default": "10", "description": "The maximum number of results to return per call. If the number of connectors in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a `cursor` that points to the next portion of the results. To retrieve the next portion of the collection, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request." } }, { "description": "Unique identifier (ID) of the board from which you want to retrieve a list of connectors.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorsCursorPaged" } } }, "description": "Connectors retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get connectors", "tags": ["Connectors"] } }, "/v2/boards/{board_id}/connectors/{connector_id}": { "get": { "description": "Retrieves information for a specific connector on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-connector", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific connector.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the connector that you want to retrieve.", "in": "path", "name": "connector_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorWithLinks" } } }, "description": "Connector retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get specific connector", "tags": ["Connectors"] }, "patch": { "description": "Updates a connector on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-connector", "parameters": [ { "description": "Unique identifier (ID) of the board for which you want to update the connector.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the connector that you want to update.", "in": "path", "name": "connector_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorChangesData" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectorWithLinks" } } }, "description": "Connector updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update connector", "tags": ["Connectors"] }, "delete": { "description": "Deletes the specified connector from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-connector", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the connector.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the connector that you want to delete.", "in": "path", "name": "connector_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Connector deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete connector", "tags": ["Connectors"] } }, "/v2/boards/{board_id}/documents": { "post": { "description": "Adds a document item to a board by specifying the URL where the document is hosted.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-document-item-using-url", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentItem" } } }, "description": "Document item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create document item using URL", "tags": ["Document items"] } }, "/v2/boards/{board_id}/documents/{item_id}": { "get": { "description": "Retrieves information for a specific document item on a board

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-document-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentItem" } } }, "description": "Document item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get document item", "tags": ["Document items"] }, "patch": { "description": "Updates a document item on a board

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-document-item-using-url", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentItem" } } }, "description": "Document item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update document item using URL", "tags": ["Document items"] }, "delete": { "description": "Deletes a document item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-document-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Document item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete document item", "tags": ["Document items"] } }, "/v2/boards/{board_id}/embeds": { "post": { "description": "Adds an embed item containing external content to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-embed-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedItem" } } }, "description": "Embed item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create embed item", "tags": ["Embed items"] } }, "/v2/boards/{board_id}/embeds/{item_id}": { "get": { "description": "Retrieves information for a specific embed item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-embed-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedItem" } } }, "description": "Embed item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get embed item", "tags": ["Embed items"] }, "patch": { "description": "Updates an embed item on a board based on the data properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-embed-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedItem" } } }, "description": "Embed item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update embed item", "tags": ["Embed items"] }, "delete": { "description": "Deletes an embed item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-embed-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Embed item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete embed item", "tags": ["Embed items"] } }, "/v2/boards/{board_id}/images": { "post": { "x-settings": { "skip-tests": true }, "description": "Adds an image item to a board by specifying an image URL.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-image-item-using-url", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageItem" } } }, "description": "Image item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create image item using URL", "tags": ["Image items"] } }, "/v2/boards/{board_id}/images/{item_id}": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves information for a specific image item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-image-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageItem" } } }, "description": "Image item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get image item", "tags": ["Image items"] }, "patch": { "x-settings": { "skip-tests": true }, "description": "Updates an image item on a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-image-item-using-url", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageItem" } } }, "description": "Image item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update image item using URL", "tags": ["Image items"] }, "delete": { "x-settings": { "skip-tests": true }, "description": "Deletes an image item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-image-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Image item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete image item", "tags": ["Image items"] } }, "/v2/boards/{board_id}/items": { "get": { "description": "Retrieves a list of items for a specific board. You can retrieve all items on the board, a list of child items inside a parent item, or a list of specific types of items by specifying URL query parameter values.\n\nThis method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request. For example, if you set the `limit` query parameter to `10` and the board contains 20 objects, the first call will return information about the first 10 objects in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-items", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "default": "10", "description": "The maximum number of results to return per call. If the number of items in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "type", "schema": { "type": "string", "enum": [ "text", "shape", "sticky_note", "image", "document", "card", "app_card", "preview", "frame", "embed", "doc_format", "data_table_format" ], "description": "If you want to get a list of items of a specific type, specify an item type. For example, if you want to retrieve the list of card items, set `type` to `cards`. A `document` is meant for uploaded documents like PDFs while `doc_format` is a Miro structured document similar to a Google Doc.\n Possible values: `app_card`, `card`, `data_table_format`, `document`, `embed`, `frame`, `image`, `shape`, `sticky_note`, `text`, `doc_format`" } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a `cursor` that points to the next portion of the results. To retrieve the next portion of the collection, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request." } }, { "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItemCursorPaged" } } }, "description": "Items retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get items on board", "tags": ["Items"] } }, "/v2/boards/{board_id}/items/{item_id}": { "get": { "description": "Retrieves information for a specific item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-specific-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItem" } } }, "description": "Item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get specific item on board", "tags": ["Items"] }, "patch": { "description": "Updates the position or the parent of an item on a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-item-position-or-parent", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItemUpdate" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItem" } } }, "description": "Item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update item position or parent", "tags": ["Items"] }, "delete": { "description": "Deletes an item from a board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete item", "tags": ["Items"] } }, "/v2/boards/{board_id}/members": { "post": { "x-settings": { "skip-tests": true }, "description": "Shares the board and Invites new members to collaborate on a board by sending an invitation email. Depending on the board's Sharing policy, there might be various scenarios where membership in the team is required in order to share the board with a user.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "share-board", "parameters": [ { "description": "Unique identifier (ID) of the board to which the board member belongs.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardMembersInvite" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvitationResult" } } }, "description": "Board members invited" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Share board", "tags": ["Board members"] }, "get": { "description": "Retrieves a pageable list of members for a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-board-members", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "description": "The maximum number of board members to retrieve.\nDefault: `20`.", "maximum": 50, "minimum": 1 } }, { "in": "query", "name": "offset", "schema": { "type": "string", "description": "The (zero-based) offset of the first item in the collection to return.\nDefault: `0`." } }, { "description": "Unique identifier (ID) of the board to which the board member belongs.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardMembersPagedResponse" } } }, "description": "Board members retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get all board members", "tags": ["Board members"] } }, "/v2/boards/{board_id}/members/{board_member_id}": { "get": { "x-settings": { "skip-tests": true }, "description": "Retrieves information for a board member.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-specific-board-member", "parameters": [ { "description": "Unique identifier (ID) of the board to which the board member belongs.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the board member whose role you want to retrieve.", "in": "path", "name": "board_member_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardMemberWithLinks" } } }, "description": "Board member retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get specific board member", "tags": ["Board members"] }, "patch": { "x-settings": { "skip-tests": true }, "description": "Updates the role of a board member.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-board-member", "parameters": [ { "description": "Unique identifier (ID) of the board for which you want to update the role of the board member.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the board member whose role you want to update.", "in": "path", "name": "board_member_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardMemberChanges" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardMemberWithLinks" } } }, "description": "Board member updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update board member", "tags": ["Board members"] }, "delete": { "x-settings": { "skip-tests": true }, "description": "Removes a board member from a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "remove-board-member", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete an item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the board member whose role you want to delete.", "in": "path", "name": "board_member_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Board member deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Remove board member", "tags": ["Board members"] } }, "/v2/boards/{board_id}/shapes": { "post": { "description": "Adds a shape item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-shape-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create shape item", "tags": ["Shape items"] } }, "/v2/boards/{board_id}/shapes/{item_id}": { "get": { "description": "Retrieves information for a specific shape item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-shape-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get shape item", "tags": ["Shape items"] }, "patch": { "description": "Updates a shape item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-shape-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update shape item", "tags": ["Shape items"] }, "delete": { "description": "Deletes a shape item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-shape-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Shape item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete shape item", "tags": ["Shape items"] } }, "/v2/boards/{board_id}/sticky_notes": { "post": { "description": "Adds a sticky note item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-sticky-note-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StickyNoteCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StickyNoteItem" } } }, "description": "Sticky Note item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create sticky note item", "tags": ["Sticky note items"] } }, "/v2/boards/{board_id}/sticky_notes/{item_id}": { "get": { "description": "Retrieves information for a specific sticky note item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-sticky-note-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StickyNoteItem" } } }, "description": "Sticky Note item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get sticky note item", "tags": ["Sticky note items"] }, "patch": { "description": "Updates a sticky note item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-sticky-note-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StickyNoteUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StickyNoteItem" } } }, "description": "Sticky Note item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update sticky note item", "tags": ["Sticky note items"] }, "delete": { "description": "Deletes a sticky note item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-sticky-note-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Sticky Note item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete sticky note item", "tags": ["Sticky note items"] } }, "/v2/boards/{board_id}/texts": { "post": { "description": "Adds a text item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-text-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextItem" } } }, "description": "Text item created" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create text item", "tags": ["Text items"] } }, "/v2/boards/{board_id}/texts/{item_id}": { "get": { "description": "Retrieves information for a specific text item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-text-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextItem" } } }, "description": "Text item retrieved" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get text item", "tags": ["Text items"] }, "patch": { "description": "Updates a text item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-text-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextItem" } } }, "description": "Text item updated" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update text item", "tags": ["Text items"] }, "delete": { "description": "Deletes a text item from the board

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-text-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Text item deleted" }, "400": { "$ref": "#/components/responses/400" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete text item", "tags": ["Text items"] } }, "/v2/boards/{board_id}/items/bulk": { "parameters": [ { "$ref": "#/components/parameters/boardId" } ], "post": { "x-settings": { "publish": true }, "description": "Adds different types of items to a board. You can add up to 20 items of the same or different type per create call. For example, you can create 3 shape items, 4 card items, and 5 sticky notes in one create call. The bulk create operation is transactional. If any item's create operation fails, the create operation for all the remaining items also fails, and none of the items will be created.

To try out this API in our documentation:

1. In the **BODY PARAMS** section, scroll down until you see **ADD OBJECT** (Figure 1).

“add
Figure 1. Add object user interface in readme

2. Click **ADD OBJECT**, and then select or enter the appropriate values for parameters of the item that you want to add.

3. Repeat steps 1 and 2 for each item that you want to add.

Required scope

boards:write\n

Rate limiting

Level 2 per item. For example, if you want to create one sticky note, one card, and one shape item in one call, the rate limiting applicable will be 300 credits. This is because create item calls take Level 2 rate limiting of 100 credits each, 100 for sticky note, 100 for card, and 100 for shape item.", "operationId": "create-items", "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ItemCreate" }, "minItems": 1, "maxItems": 20 } } }, "required": true }, "responses": { "201": { "description": "Items created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Items" } } } }, "400": { "description": "Malformed request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkOperationError" } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "summary": "Create items in bulk", "tags": ["Bulk operations"] } }, "/v2/boards/{board_id_Platformbulkcreateoperation}/items": { "parameters": [ { "$ref": "#/components/parameters/boardId" } ] }, "/v2/boards/{board_id}/frames": { "post": { "description": "Adds a frame to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-frame-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create a frame.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FrameCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FrameItem" } } }, "description": "Frame created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Create frame", "tags": ["frames"] } }, "/v2/boards/{board_id}/frames/{item_id}": { "get": { "description": "Retrieves information for a specific frame on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-frame-item", "parameters": [ { "description": "Unique identifier (ID) of the board that contains the frame that you want to retrieve", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the frame that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FrameItem" } } }, "description": "Frame retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get frame", "tags": ["frames"] }, "patch": { "description": "Updates a frame on a board based on the data, style, or geometry properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-frame-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the frame.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the frame that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FrameUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FrameItem" } } }, "description": "Frame updated" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 409 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Update frame", "tags": ["frames"] }, "delete": { "description": "Deletes a frame from a board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-frame-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the frame.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the frame that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Frame deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete frame", "tags": ["frames"] } }, "/v2/boards/{board_id_PlatformContainers}/items": { "get": { "description": "Retrieves a list of items within a specific frame. A frame is a parent item and all items within a frame are child items. This method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request. For example, if you set the `limit` query parameter to `10` and the board contains 20 objects, the first call will return information about the first 10 objects in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-items-within-frame", "parameters": [ { "description": "Unique identifier (ID) of the board that contains the frame for which you want to retrieve the list of available items.", "in": "path", "name": "board_id_PlatformContainers", "required": true, "schema": { "type": "string" } }, { "description": "ID of the frame for which you want to retrieve the list of available items.", "in": "query", "name": "parent_item_id", "required": true, "schema": { "type": "string", "minimum": 0 } }, { "in": "query", "name": "limit", "schema": { "type": "string", "default": "10", "description": "The maximum number of results to return per call. If the number of items in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "type", "schema": { "type": "string", "description": "If you want to get a list of items of a specific type, specify an item type. For example, if you want to retrieve the list of card items, set `type` to `cards`.\n Possible values: `app_card`, `card`, `document`, `embed`, `frame`, `image`, `shape`, `sticky_note`, `text`" } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a `cursor` that points to the next portion of the results. To retrieve the next portion of the collection, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request." } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItemCursorPaged" } } }, "description": "Items within frame retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get items within frame", "tags": ["items"] } }, "/v2/boards/{board_id_Platformcreateitemsinbulkusingfilefromdevice}/items/bulk": { "parameters": [ { "$ref": "#/components/parameters/boardId" } ], "post": { "description": "Adds different types of items to a board using files from a device. You can add up to 20 items of the same or different type per create call. For example, you can create 5 document items and 5 images in one create call. The bulk create operation is transactional. If any item's create operation fails, the create operation for all the remaining items also fails, and none of the items will be created.\nTo try out this API in our documentation:\n1. In the **BODY PARAMS** section, select **ADD FILE**, and then upload a local file. Repeat for each item that you want to add.\n2. Upload a JSON file that contains the bulk data for the items you want to create.\n\n

Required scope

boards:write

Rate limiting

Level 2 per item
\n", "operationId": "create-items-in-bulk-using-file-from-device", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "data": { "type": "string", "format": "binary", "description": "JSON file containing bulk data, where each object represents an item to be created. For details, see [JSON file example](https://developers.miro.com/reference/json-data-example)." }, "resources": { "type": "array", "description": "Array of items to create (PDFs, images, etc.). Maximum of 20 items.", "items": { "type": "string", "format": "binary" } } }, "required": ["data", "resources"] } } } }, "responses": { "201": { "description": "Items created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Items" } } } } }, "summary": "Create items in bulk using file from device", "tags": ["Bulk operations"] } }, "/v2-experimental/apps/{app_id}/metrics": { "get": { "summary": "Get app metrics", "description": "Returns a list of usage metrics for a specific app for a given time range, grouped by requested time period.\n\nThis endpoint requires an app management API token. It can be generated in the Your Apps section of Developer Hub.
\n

Required scope

boards:read
\n

Rate limiting

Level 1
\n", "operationId": "get-metrics", "tags": ["App metrics (experimental)"], "parameters": [ { "in": "path", "name": "app_id", "required": true, "schema": { "type": "string" }, "description": "ID of the app to get metrics for." }, { "in": "query", "name": "startDate", "required": true, "schema": { "type": "string", "format": "date" }, "description": "Start date of the period in UTC format. For example, 2024-12-31." }, { "in": "query", "name": "endDate", "required": true, "schema": { "type": "string", "format": "date" }, "description": "End date of the period in UTC format. For example, 2024-12-31." }, { "in": "query", "name": "period", "schema": { "type": "string", "enum": ["DAY", "WEEK", "MONTH"], "default": "WEEK" }, "description": "Group data by this time period." } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "periodStart": { "type": "string", "description": "Date from which the metrics are aggregated.", "format": "date" }, "uniqueUsers": { "type": "integer", "description": "Number of unique users who performed at least one activity in the application." }, "uniqueRecurringUsers": { "type": "integer", "description": "Number of unique users who have been active for more than one day over the past 30 days." }, "uniqueOrganizations": { "type": "integer", "description": "Number of unique company accounts that have installed the application." }, "installations": { "type": "integer", "description": "Number of application installations for a team." }, "uninstallations": { "type": "integer", "description": "Number of application uninstallations for a team." } } } } } } }, "404": { "description": "App not found response", "content": { "application/json": { "schema": { "type": "object", "description": "App not found response", "properties": { "message": { "type": "string" }, "status": { "type": "integer" } } } } } } } } }, "/v2-experimental/apps/{app_id}/metrics-total": { "get": { "summary": "Get total app metrics", "description": "Returns total usage metrics for a specific app since the app was created.\n\nThis endpoint requires an app management API token. It can be generated in your apps section of Developer Hub.
\n

Required scope

boards:read
\n

Rate limiting

Level 1
\n", "operationId": "get-metrics-total", "tags": ["App metrics (experimental)"], "parameters": [ { "in": "path", "name": "app_id", "required": true, "schema": { "type": "string" }, "description": "ID of the app to get total metrics for." } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "uniqueUsers": { "type": "integer", "description": "Number of unique users who performed at least one activity in the application." }, "uniqueRecurringUsers": { "type": "integer", "description": "Number of unique users who have been active for more than one day over the past 30 days." }, "uniqueOrganizations": { "type": "integer", "description": "Number of unique company accounts that have installed the application." }, "installations": { "type": "integer", "description": "Number of application installations for a team." }, "uninstallations": { "type": "integer", "description": "Number of application uninstallations for a team." } } } } } }, "404": { "description": "App not found response", "content": { "application/json": { "schema": { "type": "object", "description": "App not found response", "properties": { "message": { "type": "string", "description": "Description of the error." }, "status": { "type": "integer", "description": "HTTP status code." } } } } } } } } }, "/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}": { "get": { "description": "Retrieves information for a specific mind map node on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-mindmap-node-experimental", "parameters": [ { "schema": { "type": "string" }, "name": "board_id", "in": "path", "required": true, "description": "Unique identifier (ID) of the board from which you want to retrieve a mind map node." }, { "schema": { "type": "string" }, "name": "item_id", "in": "path", "required": true, "description": "Unique identifier (ID) of the mind map node that you want to retrieve." } ], "responses": { "200": { "description": "Mind map node retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MindmapItem" } } } } }, "summary": "Get specific mind map node", "tags": ["Mind map nodes (experimental)"] }, "delete": { "description": "Deletes a mind map node item and its child nodes from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-mindmap-node-experimental", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the mind map node.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the mind map node that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Mind map node deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete mind map node", "tags": ["Mind map nodes (experimental)"] } }, "/v2-experimental/boards/{board_id}/mindmap_nodes": { "parameters": [ { "schema": { "type": "string" }, "name": "board_id", "in": "path", "required": true, "description": "Unique identifier (ID) of the board from which you want to retrieve mind map nodes." } ], "get": { "summary": "Get mind map nodes", "tags": ["Mind map nodes (experimental)"], "responses": { "200": { "description": "Mind map nodes retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MindmapCursorPaged" } } } } }, "operationId": "get-mindmap-nodes-experimental", "description": "Retrieves a list of mind map nodes for a specific board.\n\nThis method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request. For example, if you set the `limit` query parameter to `10` and the board contains 20 objects, the first call will return information about the first 10 objects in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "parameters": [ { "schema": { "type": "string" }, "in": "query", "name": "limit", "description": "Maximum number of results returned" }, { "schema": { "type": "string" }, "in": "query", "name": "cursor", "description": "Points to the next portion of the results set" } ] }, "post": { "description": "Adds a mind map node to a board. A root node is the starting point of a mind map. A node that is created under a root node is a child node. For information on mind maps, use cases, mind map structure, and more, see the Mind Map Overview page.

Required scope

boards:write

Rate limiting

Level 2

Known limitations on node placement: Currently, the create API supports explicit positions for nodes. This means that users can only place nodes based on the x, y coordinates provided in the position parameters. If the position is not provided in the request, nodes default to coordinates x=0, y=0, effectively placing them at the center of the board.

Upcoming changes: We understand the importance of flexibility in node placement. We are actively working on implementing changes to support positioning nodes relative to their parent node as well. This enhancement offers a more dynamic and intuitive mind mapping experience.

Additionally, we are actively working on providing the update API, further enhancing the functionality of mind map APIs.", "operationId": "create-mindmap-nodes-experimental", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MindmapCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MindmapItem" } } }, "description": "Mind map node created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Create mind map node", "tags": ["Mind map nodes (experimental)"] } }, "/v2-experimental/boards/{board_id}/items": { "get": { "description": "Retrieves a list of items for a specific board. You can retrieve all items on the board, a list of child items inside a parent item, or a list of specific types of items by specifying URL query parameter values.\n\nThis method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request. For example, if you set the `limit` query parameter to `10` and the board contains 20 objects, the first call will return information about the first 10 objects in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-items-experimental", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "default": "10", "description": "The maximum number of results to return per call. If the number of items in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "type", "schema": { "type": "string", "enum": ["shape"] } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a `cursor` that points to the next portion of the results. To retrieve the next portion of the collection, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request." } }, { "description": "Unique identifier (ID) of the board for which you want to retrieve the list of available items.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItemCursorPaged" } } }, "description": "Items retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get items on board", "tags": ["Flowchart shapes (experimental)"] } }, "/v2-experimental/boards/{board_id}/items/{item_id}": { "get": { "description": "Retrieves information for a specific item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-specific-item-experimental", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericItem" } } }, "description": "Item retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get specific item on board", "tags": ["Flowchart shapes (experimental)"] }, "delete": { "description": "Deletes an item from a board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-item-experimental", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Item deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete item", "tags": ["items"] } }, "/v2-experimental/boards/{board_id}/shapes": { "post": { "description": "Adds a flowchart shape item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-shape-item-flowchart", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Create shape item", "tags": ["Flowchart shapes (experimental)"] } }, "/v2-experimental/boards/{board_id}/shapes/{item_id}": { "get": { "description": "Retrieves information for a specific shape item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-shape-item-flowchart", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get shape item", "tags": ["Flowchart shapes (experimental)"] }, "patch": { "description": "Updates a flowchart shape item on a board based on the data and style properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-shape-item-flowchart", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShapeItem" } } }, "description": "Shape item updated" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Update shape item", "tags": ["Flowchart shapes (experimental)"] }, "delete": { "description": "Deletes a flowchart shape item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-shape-item-flowchart", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Shape item deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete shape item", "tags": ["Flowchart shapes (experimental)"] } }, "/v2-experimental/boards/{board_id}/code_widgets": { "get": { "description": "Retrieves a list of code widget items for a specific board.\n\nThis method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-code-widget-items", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "default": "10", "description": "The maximum number of results to return per call. If the number of items in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "cursor", "schema": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the limit specified and a `cursor` that points to the next portion of the results. To retrieve the next portion of the collection, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request." } }, { "description": "Unique identifier (ID) of the board for which you want to retrieve the list of code widget items.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetCursorPaged" } } }, "description": "Code widget items retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get code widget items", "tags": ["Code widget items (experimental)"] }, "post": { "description": "Adds a code widget item to a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-code-widget-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetCreateRequest" } } }, "required": false }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetItem" } } }, "description": "Code widget item created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Create code widget item", "tags": ["Code widget items (experimental)"] } }, "/v2-experimental/boards/{board_id}/code_widgets/{item_id}": { "get": { "description": "Retrieves information for a specific code widget item on a board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-code-widget-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to retrieve a specific item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetItem" } } }, "description": "Code widget item retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get code widget item", "tags": ["Code widget items (experimental)"] }, "patch": { "description": "Updates a code widget item on a board based on the data properties provided in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-code-widget-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetItem" } } }, "description": "Code widget item updated" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Update code widget item", "tags": ["Code widget items (experimental)"] }, "delete": { "description": "Deletes a code widget item from the board.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "delete-code-widget-item", "parameters": [ { "description": "Unique identifier (ID) of the board from which you want to delete the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to delete.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Code widget item deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete code widget item", "tags": ["Code widget items (experimental)"] } }, "/v2-experimental/boards/{board_id}/code_widgets/{item_id}/position": { "patch": { "description": "Updates the position of a code widget item on a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "move-code-widget-item", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to move the item.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to move.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PositionChange" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CodeWidgetItem" } } }, "description": "Code widget item moved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error obj", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Move code widget item", "tags": ["Code widget items (experimental)"] } }, "/v2/boards/{board_id_PlatformFileUpload}/documents": { "post": { "x-readme": { "explorer-enabled": false, "samples-languages": ["shell"], "code-samples": [ { "language": "curl", "code": "curl -X \"POST\" \"https://api.miro.com/v2/boards/{board_id_PlatformFileUpload}/documents\" \\\n-H \"accept: application/json\" \\\n-H \"Authorization: Bearer {{ACCESS_TOKEN}}\" \\\n-H \"Content-Type: multipart/form-data\" \\\n-F \"data={\\\"title\\\":\\\"testpdf\\\",\\\"position\\\":{\\\"x\\\":3000,\\\"y\\\":3000}};type=application/json\" \\\n-F \"resource=@/Users/user/test.pdf;type=application/pdf\"\n", "name": "Custom cURL snippet", "install": "brew install curl", "correspondingExample": "documentPostExample" } ] }, "description": "Adds a document item to a board by selecting file from device.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-document-item-using-file-from-device", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id_PlatformFileUpload", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "title": { "type": "string", "description": "Title for the document.", "example": "foo.pdf" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "resource": { "type": "string", "format": "binary", "description": "Select a file to upload. Maximum file size is 6 MB." } }, "required": ["resource"] } } } }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentItem" }, "examples": { "documentPostExample": { "value": { "id": "3458764517517819000", "type": "document", "data": { "imageUrl": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/resources/documents/3458764515979043608?format=preview&redirect=false", "title": "testpdf" }, "geometry": { "width": 512, "height": 512 }, "position": { "x": 3000, "y": 3000, "origin": "center", "relativeTo": "canvas_center" }, "links": { "self": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/documents/3458764597687208572" }, "createdAt": "2024-08-21T11:19:57Z", "createdBy": { "id": "3458764569867985278", "type": "user" }, "modifiedAt": "2024-08-21T11:19:57Z", "modifiedBy": { "id": "3458764569867985278", "type": "user" } } } } } }, "description": "Document item created" } }, "summary": "Create document item using file from device", "tags": ["documents"] } }, "/v2/boards/{board_id_PlatformFileUpload}/documents/{item_id}": { "patch": { "x-readme": { "explorer-enabled": false, "samples-languages": ["shell"], "code-samples": [ { "language": "curl", "code": "curl -X \"PATCH\" \"https://api.miro.com/v2/boards/{board_id_PlatformFileUpload}/documents/{item_id}\" \\\n-H \"accept: application/json\" \\\n-H \"Authorization: Bearer {{ACCESS_TOKEN}}\" \\\n-H \"Content-Type: multipart/form-data\" \\\n-F \"data={\\\"title\\\":\\\"testpdf\\\",\\\"position\\\":{\\\"x\\\":3000,\\\"y\\\":3000}};type=application/json\" \\\n-F \"resource=@/Users/user/test.pdf;type=application/pdf\"\n", "name": "Custom cURL snippet", "install": "brew install curl", "correspondingExample": "documentPatchExample" } ] }, "description": "Updates a document item on a board by using file from a device.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-document-item-using-file-from-device", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id_PlatformFileUpload", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadFileFromDevice" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentItem" }, "examples": { "documentPatchExample": { "value": { "id": "3458764517517819000", "type": "document", "data": { "imageUrl": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/resources/documents/3458764515979043608?format=preview&redirect=false", "title": "testpdf" }, "geometry": { "width": 512, "height": 512 }, "position": { "x": 3000, "y": 3000, "origin": "center", "relativeTo": "canvas_center" }, "links": { "self": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/documents/3458764597687208572" }, "createdAt": "2024-08-21T11:19:57Z", "createdBy": { "id": "3458764569867985278", "type": "user" }, "modifiedAt": "2024-08-21T11:19:57Z", "modifiedBy": { "id": "3458764569867985278", "type": "user" } } } } } }, "description": "Document item updated" } }, "summary": "Update document item using file from device", "tags": ["documents"] } }, "/v2/boards/{board_id_PlatformFileUpload}/images": { "post": { "x-readme": { "explorer-enabled": false, "samples-languages": ["shell"], "code-samples": [ { "language": "curl", "code": "curl -X \"POST\" \"https://api.miro.com/v2/boards/{board_id_PlatformFileUpload}/images\" \\\n -H \"accept: application/json\" \\\n -H \"Authorization: Bearer {{ACCESS_TOKEN}} \\\n -H \"Content-Type: multipart/form-data\" \\\n -F \"data={\\\"position\\\":{\\\"x\\\":3000,\\\"y\\\":3000}};type=application/json\" \\\n -F \"resource=@image.png;type=image/png\"\n", "name": "Custom cURL snippet", "install": "brew install curl", "correspondingExample": "imagePostExample" } ] }, "x-settings": { "skip-tests": true }, "description": "Adds an image item to a board by specifying a file from device.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "create-image-item-using-local-file", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the item.", "in": "path", "name": "board_id_PlatformFileUpload", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadFileFromDevice" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageItem" }, "examples": { "imagePostExample": { "value": { "id": "3458764597687208572", "type": "image", "data": { "imageUrl": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/resources/images/3458764515979043608?format=preview&redirect=false", "title": "image" }, "geometry": { "width": 512, "height": 512 }, "position": { "x": 3000, "y": 3000, "origin": "center", "relativeTo": "canvas_center" }, "links": { "self": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/images/3458764597687208572" }, "createdAt": "2024-08-21T11:19:57Z", "createdBy": { "id": "3458764569867985278", "type": "user" }, "modifiedAt": "2024-08-21T11:19:57Z", "modifiedBy": { "id": "3458764569867985278", "type": "user" } } } } } }, "description": "Image item created" } }, "summary": "Create image item using file from device", "tags": ["images"] } }, "/v2/boards/{board_id_PlatformFileUpload}/images/{item_id}": { "patch": { "x-readme": { "explorer-enabled": false, "samples-languages": ["shell"], "code-samples": [ { "language": "curl", "code": "curl -X \"PATCH\" \"https://api.miro.com/v2/boards/{board_id_PlatformFileUpload}/images/{item_id}\" \\\n -H \"accept: application/json\" \\\n -H \"Authorization: Bearer {{ACCESS_TOKEN}} \\\n -H \"Content-Type: multipart/form-data\" \\\n -F \"data={\\\"position\\\":{\\\"x\\\":3000,\\\"y\\\":3000}};type=application/json\" \\\n -F \"resource=@image.png;type=image/png\"\n", "name": "Custom cURL snippet", "install": "brew install curl", "correspondingExample": "imagePatchExample" } ] }, "x-settings": { "skip-tests": true }, "description": "Updates an image item on a board.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "update-image-item-using-file-from-device", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update the item.", "in": "path", "name": "board_id_PlatformFileUpload", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to update.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UploadFileFromDevice" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageItem" }, "examples": { "imagePatchExample": { "value": { "id": "3458764597687208572", "type": "image", "data": { "imageUrl": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/resources/images/3458764515979043608?format=preview&redirect=false", "title": "image" }, "geometry": { "width": 512, "height": 512 }, "position": { "x": 3000, "y": 3000, "origin": "center", "relativeTo": "canvas_center" }, "links": { "self": "https://api.miro.com/v2/boards/board_id_PlatformFileUpload/images/3458764597687208572" }, "createdAt": "2024-08-21T11:19:57Z", "createdBy": { "id": "3458764569867985278", "type": "user" }, "modifiedAt": "2024-08-21T11:19:57Z", "modifiedBy": { "id": "3458764569867985278", "type": "user" } } } } } }, "description": "Image item updated" } }, "summary": "Update image item using file from device", "tags": ["images"] } }, "/v2/boards/{board_id}/groups": { "post": { "description": "Creates a group of items on a board. The group is created with the items that are passed in the request body.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "createGroup", "summary": "Create group", "parameters": [ { "in": "path", "name": "board_id", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupResponseShort" } } }, "description": "Group created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] }, "get": { "description": "Returns all the groups and the items of the respective groups within a specific board.
This method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request.
For example, if you set the `limit` query parameter to `10` and the board contains 20 items that are a part of a group, the first call will return information about the first 10 items in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "get-all-groups", "summary": "Get all groups on a board", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "query", "name": "limit", "description": "The maximum number of items to return at one time, default is 10, maximum is 50.", "required": false, "schema": { "type": "integer", "format": "int32", "default": 10, "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "cursor", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "limit": { "type": "integer", "format": "int32", "description": "Limit of items.", "example": 10 }, "size": { "type": "integer", "format": "int32", "description": "Size of the items.", "example": 1 }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/GroupResponseShort" } } } } } }, "description": "Groups retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] } }, "/v2/boards/{board_id}/groups/items": { "get": { "description": "Returns a list of items that are a part of any group, within a specific board.
This method returns results using a cursor-based approach. A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, on your next call to the same method, set the `cursor` parameter equal to the `cursor` value you received in the response of the previous request.
For example, if you set the `limit` query parameter to `10` and the board contains 20 items that are a part of a group, the first call will return information about the first 10 items (not 10 groups) in the response along with a cursor parameter and value. In this example, let's say the cursor parameter value returned in the response is `foo`. If you want to retrieve the next set of objects, on your next call to the same method, set the cursor parameter value to `foo`.

Required scope

boards:read

Rate limiting

Level 2
", "operationId": "getItemsByGroupId", "summary": "Get items of a group by ID", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "query", "name": "limit", "description": "The maximum number of items to return at one time, default is 10, maximum is 50.", "required": false, "schema": { "type": "integer", "format": "int32", "default": 10, "maximum": 50, "minimum": 10 } }, { "in": "query", "name": "cursor", "required": false, "schema": { "type": "string" } }, { "in": "query", "name": "group_item_id", "description": "The ID of the group item to retrieve.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "type": "object", "properties": { "limit": { "type": "integer", "format": "int32", "description": "Limit of items.", "example": 10 }, "size": { "type": "integer", "format": "int32", "description": "Size of the items.", "example": 1 }, "total": { "type": "integer", "format": "int32", "description": "total items that are part of any group", "example": 1 }, "data": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the group.", "example": "3258764517517852419" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `group`." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ItemPagedResponse" } } } } } } } }, "description": "Items retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] } }, "/v2/boards/{board_id}/groups/{group_id}": { "get": { "description": "Returns a list of items in a specific group.

Required scope

boards:read\n

Rate limiting

Level 2 per item ID", "operationId": "getGroupById", "summary": "Get a group by its ID", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "path", "name": "group_id", "description": "Unique identifier (ID) of the group.", "required": true, "schema": { "$ref": "#/components/schemas/GroupId" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupResponseShort" } } }, "description": "Group retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] }, "delete": { "description": "Ungroups items from a group.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "unGroup", "summary": "Ungroup items", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "path", "name": "group_id", "description": "Unique identifier (ID) of the group.", "required": true, "schema": { "$ref": "#/components/schemas/GroupId" } }, { "in": "query", "name": "delete_items", "required": false, "description": "Indicates whether the items should be removed. By default, false.", "schema": { "type": "boolean" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Ungrouped" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] }, "put": { "description": "This endpoint updates an existing group by replacing it entirely with a new group. When the update is made, the original group is completely replaced, and a new group ID is assigned.

Required scope

boards:write

Rate limiting

Level 2
", "operationId": "updateGroup", "summary": "Updates a group with new items", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "path", "name": "group_id", "description": "Unique identifier (ID) of the group.", "required": true, "schema": { "$ref": "#/components/schemas/GroupId" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupResponseShort" } } }, "description": "update group response" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] } }, "/v2/boards/{board_id}/groups/{group_id}?": { "delete": { "description": "Deletes a group from a board. All the items in the group are deleted along with the group. Note - this endpoint will delete items which are locked as well.

Required scope

boards:write

Rate limiting

Level 3
", "operationId": "deleteGroup", "summary": "Deletes the group", "parameters": [ { "in": "path", "name": "board_id", "description": "Unique identifier (ID) of the board.", "required": true, "schema": { "$ref": "#/components/schemas/BoardId" } }, { "in": "path", "name": "group_id", "description": "Unique identifier (ID) of the group.", "required": true, "schema": { "$ref": "#/components/schemas/GroupId" } }, { "in": "query", "name": "delete_items", "required": true, "description": "Indicates whether the items should be removed. Set to `true` to delete items in the group.", "schema": { "type": "boolean" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Group deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 400 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 404 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "description": "Test error object.", "properties": { "code": { "type": "string", "description": "Code of the error.", "example": "error" }, "message": { "type": "string", "description": "Description of the error.", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status Code of the error.", "example": 429 }, "type": { "type": "string", "description": "Type of the error.", "example": "error" } } } } }, "description": "Too many requests" } }, "tags": ["groups"] } }, "/v2/oauth/revoke": { "post": { "summary": "Revoke token (v2)", "description": "Revoke the current access token. Revoking an access token means that the access token will no longer work. When an access token is revoked, the refresh token is also revoked and no longer valid. This does not uninstall the application for the user.", "operationId": "revoke-token-v2", "tags": ["OAuth"], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RevokeTokenRequest" } } }, "required": true }, "responses": { "204": { "description": "Token revoked" }, "404": { "description": "Failed to revoke token", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/v2/boards/{board_id}/items/{item_id}/tags": { "get": { "description": "Retrieves all the tags from the specified item.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-tags-from-item", "parameters": [ { "description": "Unique identifier (ID) of the board with the item whose tags you want to retrieve.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item whose tags you want to retrieve.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTagsResponse" } } }, "description": "Get tags from an item" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get tags from item", "tags": ["tags"] } }, "/v2/boards/{board_id}/tags": { "post": { "description": "Creates a tag on a board.

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "create-tag", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to create the tag.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagWithLinks" } } }, "description": "Tag created" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Create tag", "tags": ["tags"] }, "get": { "description": "Retrieves all the tags from the specified board.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-tags-from-board", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "description": "The maximum number of items that can be returned for a single request.\nDefault: `20`.", "maximum": 50, "minimum": 1 } }, { "in": "query", "name": "offset", "schema": { "type": "string", "description": "The displacement of the first item in the collection to return.\nDefault: `0`." } }, { "description": "Unique identifier (ID) of the board whose tags you want to retrieve.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagsPagedResponse" } } }, "description": "Board tags retrieved" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get tags from board", "tags": ["tags"] } }, "/v2/boards/{board_id}/tags/{tag_id}": { "get": { "description": "Retrieves information for a specific tag.

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "get-tag", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag that you want to retrieve.", "in": "path", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagWithLinks" } } }, "description": "Tag retrieved by id" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get tag", "tags": ["tags"] }, "patch": { "description": "Updates a tag based on the data properties provided in the request body.
Note: Updates to tags made via the REST API will not be reflected on the board in realtime. To see REST API updates to tags on a board, you need to refresh the board. This applies to the following endpoints: [Attach tag to item](https://developers.miro.com/reference/attach-tag-to-item), [Remove tag from item](https://developers.miro.com/reference/remove-tag-from-item), [Delete tag](https://developers.miro.com/reference/delete-tag).

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "update-tag", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to update a specific tag.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag that you want to update.", "in": "path", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagWithLinks" } } }, "description": "Tag updated" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Update tag", "tags": ["tags"] }, "delete": { "description": "Deletes the specified tag from the board. The tag is also removed from all cards and sticky notes on the board.
Note: Updates to tags made via the REST API will not be reflected on the board in realtime. To see REST API updates to tags on a board, you need to refresh the board. This applies to the following endpoints: [Attach tag to item](https://developers.miro.com/reference/attach-tag-to-item), [Remove tag from item](https://developers.miro.com/reference/remove-tag-from-item), [Update tag](https://developers.miro.com/reference/update-tag).

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "delete-tag", "parameters": [ { "description": "Unique identifier (ID) of the board where you want to delete a specific tag.", "in": "path", "name": "board_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag that you want to delete.", "in": "path", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Tag deleted" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Delete tag", "tags": ["tags"] } }, "/v2/boards/{board_id_PlatformTags}/items": { "get": { "description": "Retrieves all the items that have the specified tag.

Required scope

boards:read

Rate limiting

Level 1
", "operationId": "get-items-by-tag", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "description": "The maximum number of items that can be returned for a single request.\nDefault: `20`.", "maximum": 50, "minimum": 1 } }, { "in": "query", "name": "offset", "schema": { "type": "string", "description": "The displacement of the first item in the collection to return.\nDefault: `0`." } }, { "description": "Unique identifier (ID) of the board where you want to retrieve a specific tag.", "in": "path", "name": "board_id_PlatformTags", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag that you want to retrieve.", "in": "query", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemPagedResponse" } } }, "description": "Item with certain tag" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Get items by tag", "tags": ["tags"] } }, "/v2/boards/{board_id_PlatformTags}/items/{item_id}": { "post": { "description": "Attach an existing tag to the specified item. Card and sticky note items can have up to 8 tags.
Note: Updates to tags made via the REST API will not be reflected on the board in realtime. To see REST API updates to tags on a board, you need to refresh the board. This applies to the following endpoints: [Remove tag from item](https://developers.miro.com/reference/remove-tag-from-item), [Update tag](https://developers.miro.com/reference/update-tag), [Delete tag](https://developers.miro.com/reference/delete-tag).

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "attach-tag-to-item", "parameters": [ { "description": "Unique identifier (ID) of the board with the item that you want to add a tag to.", "in": "path", "name": "board_id_PlatformTags", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item to which you want to add a tag.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag you want to add to the item.", "in": "query", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Add a tag to an item" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Attach tag to item", "tags": ["tags"] }, "delete": { "description": "Removes the specified tag from the specified item. The tag still exists on the board.
Note: Updates to tags made via the REST API will not be reflected on the board in realtime. To see REST API updates to tags on a board, you need to refresh the board. This applies to the following endpoints: [Attach tag to item](https://developers.miro.com/reference/attach-tag-to-item), [Update tag](https://developers.miro.com/reference/update-tag), [Delete tag](https://developers.miro.com/reference/delete-tag).

Required scope

boards:write

Rate limiting

Level 1
", "operationId": "remove-tag-from-item", "parameters": [ { "description": "Unique identifier (ID) of the board with the item that you want to remove a tag from.", "in": "path", "name": "board_id_PlatformTags", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the item that you want to remove the tag from.", "in": "path", "name": "item_id", "required": true, "schema": { "type": "string" } }, { "description": "Unique identifier (ID) of the tag that you want to remove from the item.", "in": "query", "name": "tag_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "Tag removed from an item" }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Malformed request" }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string", "description": "Code of the error", "example": "error" }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of the error", "example": "error" } } } } }, "description": "Too many requests" } }, "summary": "Remove tag from item", "tags": ["tags"] } }, "/v2/orgs/{org_id}/teams/{team_id}/projects": { "post": { "description": "Projects are essentially folders of boards with the option to manage user access for a smaller group of people within a team. Projects are here to help you organize your boards and make them easier to find and share. In other words, a project is a group of boards that you can share with your teammates all at once. For more information, see our Help Center page on Projects.

This API creates a new project in an existing team of an organization.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-project", "parameters": [ { "name": "org_id", "description": "The ID of the organization within which you you want to create a project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team within which you you want to create a project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProjectRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } }, "description": "Contains information about the project, such as the project name." }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Create project", "tags": ["Projects"] }, "get": { "description": "Retrieves the list of projects in an existing team of an organization. You can retrieve all projects, including all private projects (projects that haven't been specifically shared with you) by enabling Content Admin permissions. To enable Content Admin permissions, see [Content Admin permissions for Company Admins](https://help.miro.com/hc/en-us/articles/360012777280-Content-Admin-permissions-for-Company-Admins).

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-projects", "parameters": [ { "name": "org_id", "description": "The ID of the organization from which you want to retrieve the list of available projects.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team from which you want to retrieve the list of available projects.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of projects in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "in": "query", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100 }, "example": 100 }, { "name": "cursor", "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.", "in": "query", "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectPage" } } }, "description": "Contains the result set information, such as the content, limit, cursor, or size." }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "List of projects", "tags": ["Projects"] } }, "/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}": { "get": { "description": "Retrieves project information, such as a name for an existing project.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-project", "parameters": [ { "name": "org_id", "description": "The ID of the organization from which you want to retrieve the project information.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team from which you want to retrieve the project information.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project for which you want to retrieve the information.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } }, "description": "Project object" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Get project", "tags": ["Projects"] }, "patch": { "description": "Update information about a project, such as the project name.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-project", "parameters": [ { "name": "org_id", "description": "The ID of an Organization.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of a Team.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of a Project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProjectRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } }, "description": "Project object" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Update project", "tags": ["Projects"] }, "delete": { "description": "Deletes a project. After a project is deleted, all boards and users that belong to the project remain in the team.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-project", "parameters": [ { "name": "org_id", "description": "The ID of the organization from which you want to delete a project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team from which you want to delete a project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project that you want to delete.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "204": { "description": "Project deleted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Delete project", "tags": ["Projects"] } }, "/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/settings": { "get": { "description": "Retrieves the project settings.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-project-settings", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012091" }, { "name": "project_id", "description": "The ID of the project for which you want to retrieve the project settings.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectSettings" } } }, "description": "Defines the sharing policies for the boards within the project." }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Get project settings", "tags": ["Project Settings"] }, "patch": { "description": "Updates the settings of a project.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-project-settings", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project whose settings you want to update.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProjectSettingsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectSettings" } } }, "description": "Project object" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Update project settings", "tags": ["Project Settings"] } }, "/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members": { "post": { "description": "Add a Miro user to a project.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-add-project-member", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project to which you want to add a user.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddProjectMemberRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectMember" } } }, "description": "Project object" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Add member in a project", "tags": ["Project Members"] }, "get": { "description": "Retrieves the list of members for a specific project.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-project-members", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project for which you want to retrieve the list of members.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "limit", "description": "The maximum number of results to return per call. If the number of project members in the response is greater than the limit specified, the response returns the cursor parameter with a value.", "in": "query", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100 }, "example": 100 }, { "name": "cursor", "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.", "in": "query", "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectMemberPage" } } }, "description": "Page of project member" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "List of project members", "tags": ["Project Members"] } }, "/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}": { "get": { "description": "Retrieves information for a specific project member.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-project-member", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project from which you want to retrieve specific member information.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "member_id", "description": "The ID of the member for which you want to retrieve information.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "307445734562315000" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectMember" } } }, "description": "Contains information about the project member, such as the member's role." }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Get project member", "tags": ["Project Members"] }, "patch": { "description": "Updates details of a project member, such as the member's role.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-project-member", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project member belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project member belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of a Project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "member_id", "description": "The ID of the member whose details you want to update.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "307445734562315000" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProjectMemberRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectMember" } } }, "description": "Contains information about the project member, such as the member's role." }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Update project member", "tags": ["Project Members"] }, "delete": { "description": "Remove a member from a project. The user remains in the team even after the member is removed from a project.

Note

Projects have been renamed to Spaces, and the terms can be used interchangeably.

Required scope

projects:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-project-member", "parameters": [ { "name": "org_id", "description": "The ID of the organization to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "team_id", "description": "The ID of the team to which the project belongs.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345619012000" }, { "name": "project_id", "description": "The ID of the project from which you want to remove a member.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, { "name": "member_id", "description": "The ID of the member that you want to remove from a project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" } ], "responses": { "204": { "description": "Project member removed" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error400" } } }, "description": "Malformed request" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error401" } } }, "description": "Invalid authentication credentials" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error403" } } }, "description": "Invalid access" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error404" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error409" } } }, "description": "Conflict" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error429" } } }, "description": "Too many requests" } }, "summary": "Remove project member", "tags": ["Project Members"] } }, "/v2/orgs/{org_id}/teams": { "post": { "description": "Creates a new team in an existing organization.

Required scope

organizations:teams:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-team", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } }, "description": "Team object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create team", "tags": ["Teams"] }, "get": { "description": "Retrieves list of teams in an existing organization.

Required scope

organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-teams", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "name": "limit", "in": "query", "schema": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Limit for the number of teams returned in the result list.", "format": "int32", "example": 100, "default": 100 } }, { "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.", "example": "3055557345821140500", "in": "query", "name": "cursor", "schema": { "type": "string" } }, { "description": "Name query. Filters teams by name using case insensitive partial match. A value \"dev\" will return both \"Developer's team\" and \"Team for developers\".", "example": "My team", "in": "query", "name": "name", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Page of teams that match the search query.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamsPage" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "List teams", "tags": ["Teams"] } }, "/v2/orgs/{org_id}/teams/{team_id}": { "get": { "description": "Retrieves team information for an existing team.

Required scope

organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-team", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } }, "description": "Team object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get team", "tags": ["Teams"] }, "patch": { "description": "Updates an existing team.

Required scope

organizations:teams:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-team", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamChanges" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } }, "description": "Team object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update team", "tags": ["Teams"] }, "delete": { "description": "Deletes an existing team.

Required scope

organizations:teams:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-team", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "responses": { "204": { "description": "Team deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete team", "tags": ["Teams"] } }, "/v2/orgs/{org_id}/teams/{team_id}/members": { "post": { "description": "Invites a new Miro user to an existing team. The user must exist in your Miro organization. Users who do not exist in your Miro organization can be invited to the team via [SCIM](https://developers.miro.com/docs/scim) and an external identity provider, such as Okta or Azure Active Directory.

Required scope

organizations:teams:write

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-invite-team-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMemberInvite" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMember" } } }, "description": "Invitation result object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Invite team members", "tags": ["Team Members"] }, "get": { "description": "Retrieves team members by cursor.

Required scope

organizations:teams:read

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-team-members", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "name": "limit", "in": "query", "schema": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Limit for the number of team members returned in the result list.", "format": "int32", "example": 100, "default": 100 } }, { "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.", "example": "3055557345821140500", "in": "query", "name": "cursor", "schema": { "type": "string" } }, { "description": "\nRole query. Filters members by role using full word match. Accepted values are:\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n* \"non_team\": External user, non-team user.\n* \"team_guest\": (Deprecated) Team-guest user, user with access only to a team without access to organization.\n", "in": "query", "name": "role", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Page of team members that match the search query.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMembersPage" } } } }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "List team members", "tags": ["Team Members"] } }, "/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}": { "get": { "description": "Retrieves team member by id.

Required scope

organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-team-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/pathTeamMemberId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMember" } } }, "description": "Team member object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get team member", "tags": ["Team Members"] }, "patch": { "description": "Updates team member role in team by id.

Required scope

organizations:teams:write

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-team-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/pathTeamMemberId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMemberChanges" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamMember" } } }, "description": "Team member object" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update team member", "tags": ["Team Members"] }, "delete": { "description": "Deletes team member from team by id.

Required scope

organizations:teams:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-team-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/pathTeamMemberId" } ], "responses": { "204": { "description": "Deleted successfully" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete team member from team", "tags": ["Team Members"] } }, "/v2/orgs/{org_id}/default_teams_settings": { "get": { "description": "Retrieves default team settings of an existing organization.

Required scope

organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-default-team-settings", "parameters": [ { "description": "The id of an Organization.", "example": "3074457345618265000", "in": "path", "name": "org_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamSettings" } } }, "description": "Team settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get default team settings", "tags": ["Team Settings"] } }, "/v2/orgs/{org_id}/teams/{team_id}/settings": { "get": { "description": "Retrieves team settings of an existing team.

Required scope

organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-team-settings", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamSettings" } } }, "description": "Team settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get team settings", "tags": ["Team Settings"] }, "patch": { "description": "Updates team settings of an existing team.

Required scope

organizations:teams:write

Rate limiting

Level 2

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-team-settings", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamSettingsChanges" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamSettings" } } }, "description": "Team settings" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update team settings", "tags": ["Team Settings"] } }, "/v2/orgs/{org_id}/groups": { "get": { "description": "Retrieves the list of user groups in an organization.

Required scope

organizations:groups:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/queryLimitGroups" }, { "$ref": "#/components/parameters/queryCursorGroups" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupsPage" } } }, "description": "Page of user groups" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "List of user groups", "tags": ["User groups"] }, "post": { "description": "Creates a new user group in an organization.

Required scope

organizations:groups:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateGroupRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } }, "description": "User group" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create user group", "tags": ["User groups"] } }, "/v2/orgs/{org_id}/groups/{group_id}": { "get": { "description": "Retrieves a user group in an organization.

Required scope

organizations:groups:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } }, "description": "User group" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get user group", "tags": ["User groups"] }, "patch": { "description": "Updates a user group in an organization.

Required scope

organizations:groups:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateGroupRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } }, "description": "User group" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Update user group", "tags": ["User groups"] }, "delete": { "description": "Deletes a user group from an organization.

Required scope

organizations:groups:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "204": { "description": "User group deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete user group", "tags": ["User groups"] } }, "/v2/orgs/{org_id}/groups/{group_id}/members": { "get": { "description": "Retrieves the list of members who are part of a team in an existing organization.

Required scope

organizations:groups:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-group-members", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" }, { "$ref": "#/components/parameters/queryLimitGroupMembers" }, { "$ref": "#/components/parameters/queryCursorGroupMembers" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupMembersPage" } } }, "description": "Page of user group members" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "List of user group members", "tags": ["User group members"] }, "post": { "description": "Adds a member to a user group in an organization.

Required scope

organizations:groups:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-create-group-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateGroupMemberRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupMember" } } }, "description": "User group member" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create user group member", "tags": ["User group members"] }, "patch": { "description": "Add and remove members in one request. For example, remove user A and add user B. You can add or remove up to 500 users at a time.

Required scope

organizations:groups:write

Rate limiting

Level 1 per item. For example, if you want to add 10 users and remove 5, the rate limiting applicable will be 750 credits. This is because each user addition or deletion takes Level 1 rate limiting of 50 credits, so 15 * 50 = 750.

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-update-group-members", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserGroupMembersRequest" } } }, "required": true }, "responses": { "207": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserGroupMembersResult" } } }, "description": "Results for adding or removing members of a user group.
Note that adding users might succeed partially. In this case, the array of responses contains two objects with operation set to \"addMembers\": one for the successfully added members, and one explaining why the operation failed for the remaining members." }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "413": { "$ref": "#/components/responses/413" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Bulk edit of membership in user group", "tags": ["User group members"] } }, "/v2/orgs/{org_id}/groups/{group_id}/members/{member_id}": { "get": { "description": "Retrieves information about a user group member in an organization.

Required scope

organizations:groups:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-get-group-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" }, { "$ref": "#/components/parameters/pathGroupMemberId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupMember" } } }, "description": "User group member" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get user group member", "tags": ["User group members"] }, "delete": { "description": "Removes a member from a user group in an organization.

Required scope

organizations:groups:write

Rate limiting

Level 4

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-delete-group-member", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" }, { "$ref": "#/components/parameters/pathGroupMemberId" } ], "responses": { "204": { "description": "User group member object deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete user group member", "tags": ["User group members"] } }, "/v2/orgs/{org_id}/groups/{group_id}/teams": { "get": { "description": "Retrieves the list of teams that the user group is a part of.

Required scope

organizations:groups:read
organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-groups-get-teams", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" }, { "$ref": "#/components/parameters/queryLimitGroupTeams" }, { "$ref": "#/components/parameters/queryCursorGroupTeams" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupTeamsPage" } } }, "description": "Page of teams to user group connections" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get teams of a user group", "tags": ["User group to teams"] } }, "/v2/orgs/{org_id}/groups/{group_id}/teams/{team_id}": { "get": { "description": "Retrieves information of a team that the user group is a part of in an organization.

Required scope

organizations:groups:read
organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-groups-get-team", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathGroupId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupTeam" } } }, "description": "Team to user group connection" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get user group team", "tags": ["User group to teams"] } }, "/v2/orgs/{org_id}/teams/{team_id}/groups": { "get": { "description": "Retrieves the list of user groups that are part of a team in an organization.

Required scope

organizations:groups:read
organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-teams-get-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/queryLimitTeamGroups" }, { "$ref": "#/components/parameters/queryCursorTeamGroups" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamGroupsPage" } } }, "description": "Page of user groups to team connections" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "List of user group to team connections", "tags": ["Team user groups"] }, "post": { "description": "Adds a user group to a team in an organization.

Required scope

organizations:groups:read
organizations:teams:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

'", "operationId": "enterprise-teams-create-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTeamGroupRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamGroup" } } }, "description": "User group to team connection" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create user group to team connection", "tags": ["Team user groups"] } }, "/v2/orgs/{org_id}/teams/{team_id}/groups/{group_id}": { "get": { "description": "Retrieves information about a specific user group of a team.

Required scope

organizations:groups:read
organizations:teams:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-teams-get-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamGroup" } } }, "description": "Get user group of a team" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get user group of a team", "tags": ["Team user groups"] }, "delete": { "description": "Removes a user group from a team in an existing organization.

Required scope

organizations:groups:read
organizations:teams:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-teams-delete-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathTeamId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "204": { "description": "User group to team connection deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete user group to team connection", "tags": ["Team user groups"] } }, "/v2/orgs/{org_id}/boards/{board_id}/groups": { "get": { "description": "Retrieves information about user groups invited to the specified board.

Required scope

organizations:groups:read
boards:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-boards-get-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathBoardId" }, { "$ref": "#/components/parameters/queryLimitBoardUserGroups" }, { "$ref": "#/components/parameters/queryCursorBoardUserGroups" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardUserGroupsPage" } } }, "description": "Get user groups assigned to board" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get board user group assignments", "tags": ["Share boards with groups"] }, "post": { "description": "Shares a board with user groups with a specified role. Updates the role if already shared.

Required scope

organizations:groups:read
boards:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-boards-create-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathBoardId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBoardUserGroupsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BoardUserGroup" } } }, "description": "User group role assignment on board" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create board user group assignments", "tags": ["Share boards with groups"] } }, "/v2/orgs/{org_id}/boards/{board_id}/groups/{group_id}": { "delete": { "description": "Removes a user group from the specified board.

Required scope

organizations:groups:read
boards:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-boards-delete-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathBoardId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "204": { "description": "User group to board assignment deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete board user group assignment", "tags": ["Share boards with groups"] } }, "/v2/orgs/{org_id}/projects/{project_id}/groups": { "get": { "description": "Retrieves information about user groups invited to the specified project.

Required scope

organizations:groups:read
projects:read

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-projects-get-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathProjectId" }, { "$ref": "#/components/parameters/queryLimitProjectUserGroups" }, { "$ref": "#/components/parameters/queryCursorProjectUserGroups" } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUserGroupsPage" } } }, "description": "Get user groups assigned to project" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Get project user group assignments", "tags": ["Share projects with groups"] }, "post": { "description": "Shares a project with user groups with a specified role. Updates the role if already shared.

Required scope

organizations:groups:read
projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-project-create-group", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathProjectId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProjectUserGroupsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUserGroup" } } }, "description": "User group role assignment on project" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Create project user group assignments", "tags": ["Share projects with groups"] } }, "/v2/orgs/{org_id}/projects/{project_id}/groups/{group_id}": { "delete": { "description": "Removes a user group from the specified project.

Required scope

organizations:groups:read
projects:write

Rate limiting

Level 1

Enterprise only

This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin. You can request temporary access to Enterprise APIs using this form.

", "operationId": "enterprise-project-delete-groups", "parameters": [ { "$ref": "#/components/parameters/pathOrgId" }, { "$ref": "#/components/parameters/pathProjectId" }, { "$ref": "#/components/parameters/pathGroupId" } ], "responses": { "204": { "description": "User group to project assignment deleted" }, "400": { "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "$ref": "#/components/responses/409" }, "429": { "$ref": "#/components/responses/429" } }, "summary": "Delete project user group assignment", "tags": ["Share projects with groups"] } } }, "components": { "schemas": { "GetAiInteractionLogsResponse": { "type": "object", "description": "Response for query using cursor and filter parameters.", "properties": { "limit": { "type": "integer", "description": "The maximum number of results to return per call. If the number of logs in the response is\ngreater than the limit specified, the response returns the cursor parameter with a value.\n", "format": "int32", "example": 100 }, "size": { "type": "integer", "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.\n", "format": "int32", "example": 1 }, "data": { "$ref": "#/components/schemas/AiInteractionLogList" }, "cursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.\n", "example": "MTY2OTg4NTIwMDAwMHwxMjM=" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } } }, "AiInteractionLogList": { "type": "array", "description": "Contains the list of AI interaction logs.", "items": { "$ref": "#/components/schemas/AiInteractionLog" } }, "AiInteractionLog": { "type": "object", "description": "Contains information about a single AI interaction log entry.", "properties": { "id": { "type": "string", "description": "Unique identifier of the AI interaction log entry.", "example": "2dcf57ff-f12c-4fad-b708-c1642204b41b" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the AI interaction occurred.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2023-06-24T17:32:28Z" }, "storedAt": { "type": "string", "format": "date-time", "description": "Date and time when the AI interaction log was stored.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n", "example": "2023-06-24T17:32:30Z" }, "sessionId": { "type": "string", "description": "Unique identifier of the session during which the AI interaction occurred.", "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, "messageId": { "type": "string", "description": "Unique identifier of the message associated with the AI interaction.", "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901" }, "object": { "$ref": "#/components/schemas/AiInteractionLogObject" }, "aiFeatureName": { "type": "string", "description": "Name of the AI feature that was used during the interaction.", "example": "ai_generate_sticky_notes" }, "actor": { "$ref": "#/components/schemas/AiInteractionLogActor" }, "logType": { "type": "string", "description": "Type of the AI interaction log entry.", "example": "request" }, "details": { "type": "object", "description": "Additional details about the AI interaction. The structure of this object varies depending on the AI feature used. The text may contain unstructured data that could reveal information used in interactions with the LLM.", "additionalProperties": true, "example": { "text": "{\\\"text\\\":\\\"Generate me 1 sticker with the text \\\\\\\"AI generates content\\\\\\\"\\\",\\\"board_context\\\":{\\\"selection\\\":{\\\"selected_nodes\\\":[],\\\"reference_images\\\":[],\\\"design_reference_images\\\":[],\\\"comments\\\":[]},\\\"talktracks\\\":[],\\\"config\\\":{\\\"processing_method\\\":\\\"none\\\",\\\"ai_feature\\\":\\\"ai_generate_sticky_notes\\\"},\\\"context_prototype\\\":null,\\\"prototype_description\\\":null,\\\"screens\\\":null}}" } } } }, "AiInteractionLogObject": { "type": "object", "description": "Contains information about the Miro object involved in the AI interaction.", "properties": { "id": { "type": "string", "description": "Unique identifier of the Miro object involved in the AI interaction, e.g., Board ID or Organization ID.\n", "example": "3458764549483493025" }, "type": { "type": "string", "description": "Type of the Miro object involved in the AI interaction, e.g., \"board, \"organization\".", "example": "board" } } }, "AiInteractionLogActor": { "type": "object", "description": "Contains information about the user who performed the AI interaction.", "properties": { "id": { "type": "string", "description": "Unique identifier of the user who performed the AI interaction.", "example": "3458764517517852417" }, "email": { "type": "string", "description": "Email of the user who performed the AI interaction.", "example": "john.smith.demo@miro.com" }, "name": { "type": "string", "description": "Name of the user who performed the AI interaction.", "example": "John Smith" } } }, "AuditPage": { "type": "object", "properties": { "type": { "type": "string", "description": "Type of the response, in this case it's always 'cursor-list'", "example": "cursor-list" }, "limit": { "type": "integer", "description": "Page limit", "example": 10 }, "size": { "type": "integer", "description": "Item count in current page", "example": 2 }, "cursor": { "type": "string", "description": "The key that should be used as the cursor request parameter to fetch the next page", "example": "2023-09-01T09:30:10.840687Z#1234567890123456789-DDB" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/AuditEvent" }, "description": "Audit events list" } } }, "AuditEvent": { "type": "object", "properties": { "id": { "type": "string", "description": "Audit event id", "example": "2023-09-01T09:30:10.840687Z#1234567890123456789-DDB" }, "context": { "$ref": "#/components/schemas/AuditContext" }, "object": { "$ref": "#/components/schemas/AuditObject" }, "createdAt": { "type": "string", "description": "Time when the audit event has been created", "format": "date-time", "example": "2023-09-01T09:30:10.840+0000" }, "details": { "type": "object", "description": "Details json related to the audit event", "example": "{ \"authType\": \"SSO\", \"mfaFactorType\": \"NONE\" }" }, "createdBy": { "$ref": "#/components/schemas/AuditCreatedBy" }, "event": { "type": "string", "description": "Event type of the audit event", "example": "sign_in_succeeded" }, "category": { "type": "string", "description": "Event category of the audit event.", "example": "authentication" } } }, "AuditContext": { "type": "object", "description": "Audit context", "properties": { "ip": { "type": "string", "description": "Ip address associated with the audit context", "example": "0.0.0.0" }, "team": { "$ref": "#/components/schemas/AuditTeam" }, "organization": { "$ref": "#/components/schemas/AuditOrganization" } } }, "AuditTeam": { "type": "object", "description": "Team associated with the audit context", "properties": { "id": { "type": "string", "description": "Id of the team", "example": "1234567890123456789" }, "name": { "type": "string", "description": "Name of the team", "example": "Example Team" } } }, "AuditOrganization": { "type": "object", "description": "Organization associated with the audit context", "properties": { "id": { "type": "string", "description": "Id of the organization", "example": "1234567890123456789" }, "name": { "type": "string", "description": "Name of the organization", "example": "Example Organization" } } }, "AuditObject": { "type": "object", "description": "The object related with the audit event", "properties": { "id": { "type": "string", "description": "Id of the object", "example": "1234567890123456789" }, "name": { "type": "string", "description": "Name of the object", "example": "Example Object" } } }, "AuditCreatedBy": { "type": "object", "description": "The details regarding the creator of the audit event", "properties": { "type": { "type": "string", "description": "Type of the creator", "example": "user", "enum": ["user", "application", "scim_provisioner", "miro_automation"] }, "id": { "type": "string", "description": "Id of the creator", "example": "1234567890123456789" }, "name": { "type": "string", "description": "Name of the creator", "example": "John Smith" }, "email": { "type": "string", "description": "Email of the creator", "example": "john.smith@miro.com" } } }, "BoardDataClassificationLabel": { "type": "object", "properties": { "color": { "type": "string", "description": "Label color.", "example": "blue" }, "description": { "type": "string", "description": "Label description.", "example": "Board could not be shared publicly" }, "id": { "type": "string", "description": "Label id.", "example": "3000457366756290996" }, "name": { "type": "string", "description": "Label name.", "example": "internal" }, "sharingRecommendation": { "type": "string", "description": "Sharing Recommendation (one of NO_SHARING_RESTRICTIONS, ONLY_WITHIN_ORGANIZATION, ONLY_WITHIN_TEAM or ONLY_WITH_AUTHORIZED_TEAM_MEMBERS ).", "example": "NO_SHARING_RESTRICTIONS" }, "guidelineUrl": { "type": "string", "description": "Indicates the URL for the board classification label guidelines.", "example": "https://miro.com" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "board-data-classification-label" } } }, "DataClassificationLabel": { "description": "Data classification label", "type": "object", "properties": { "id": { "type": "string", "description": "Label id.", "example": "3000457366756290996" }, "color": { "type": "string", "description": "Label color.", "example": "#F5DC80" }, "default": { "type": "boolean", "description": "Label is default.", "example": false }, "description": { "type": "string", "description": "Label description.", "example": "Board could not be shared publicly" }, "name": { "type": "string", "description": "Label name.", "example": "internal" }, "orderNumber": { "type": "integer", "description": "Label order number.", "format": "int32", "example": 2 }, "sharingRecommendation": { "type": "string", "description": "Sharing Recommendation (one of NO_SHARING_RESTRICTIONS, ONLY_WITHIN_ORGANIZATION, ONLY_WITHIN_TEAM or ONLY_WITH_AUTHORIZED_TEAM_MEMBERS ).", "example": "NO_SHARING_RESTRICTIONS" }, "guidelineUrl": { "type": "string", "description": "Indicates the URL for the board classification label guidelines.", "example": "https://miro.com" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "data-classification-label" } } }, "DataClassificationLabelId": { "type": "object", "properties": { "labelId": { "type": "string", "description": "Data classification label id", "example": "3000457366756290996" } } }, "DataClassificationOrganizationSettings": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Data classification enabled for organization", "example": true }, "labels": { "type": "array", "description": "Data classification labels", "items": { "$ref": "#/components/schemas/DataClassificationLabel" } }, "type": { "type": "string", "description": "Type of the object returned.", "default": "data-classification-organization-settings" } } }, "DataClassificationTeamSettings": { "type": "object", "properties": { "defaultLabelId": { "type": "string", "description": "Data classification default label id", "example": "3000457366756290996" }, "enabled": { "type": "boolean", "description": "Data classification enabled for team", "example": true }, "type": { "type": "string", "description": "Type of the object returned.", "default": "team-data-classification-settings" } } }, "UpdateBoardsDataClassificationLabel": { "type": "object", "properties": { "numberUpdatedBoards": { "type": "integer", "description": "Number of boards updated in the team", "format": "int64", "example": 10 }, "type": { "type": "string", "description": "Type of the object returned.", "default": "boards-data-classification-label-changed" } } }, "UpdateBoardsDataClassificationLabelRequest": { "type": "object", "properties": { "labelId": { "type": "integer", "description": "Data classification label id for team", "format": "int64", "example": 3000457366756291000 }, "notClassifiedOnly": { "type": "boolean", "description": "Assign data classification label to not-classified only or to all boards of team", "example": true } } }, "UpdateTeamSettingsRequest": { "type": "object", "properties": { "defaultLabelId": { "type": "integer", "description": "Data classification default label id", "format": "int64", "example": 3000457366756291000 }, "enabled": { "type": "boolean", "description": "Data classification enabled for team", "example": true } } }, "BasicEntityInfo": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the entity.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Type of entity.", "example": "user" } } }, "ParentIdPlatformContainers": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the parent frame.", "example": "3458764517517819001" } } }, "CaseRequest": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the case.", "example": "My Case" }, "description": { "type": "string", "description": "The description of the case.", "example": "Info about my case" } }, "required": ["name"] }, "CaseResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^[0-9]+$", "description": "Unique identifier of the case.", "example": "3074457345619012007" }, "organizationId": { "type": "string", "pattern": "^[0-9]+$", "description": "Unique identifier of the organization.", "example": "3074457345618265000" }, "name": { "type": "string", "description": "The name of the case.", "example": "My Case" }, "description": { "type": "string", "description": "The description of the case.", "example": "Info about my case" }, "createdBy": { "$ref": "#/components/schemas/User" }, "lastModifiedBy": { "$ref": "#/components/schemas/User" }, "createdAt": { "type": "string", "format": "date-time" }, "lastModifiedAt": { "type": "string", "format": "date-time" } }, "required": ["createdAt", "createdBy", "id", "lastModifiedAt", "name", "organizationId"] }, "LegalHoldRequest": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the legal hold.", "example": "My legal hold" }, "description": { "type": "string", "description": "The description of the legal hold.", "example": "Info about my legal hold" }, "scope": { "$ref": "#/components/schemas/LegalHoldRequestScope" } }, "required": ["name", "scope"] }, "LegalHoldRequestScope": { "description": "The legal hold scope determines the criteria used to put content items under hold. The variants of this field might get extended in the future, although the most common use case is to put users under hold. Currently only the `users` scope is supported. However, the parsing of this field must ignore unexpected variants. The request must always include a list of all users to be placed under hold, whether it's for a new legal hold or an update to an existing one. You can have up to 200 users per legal hold, including users added in legal hold updates.", "oneOf": [ { "$ref": "#/components/schemas/LegalHoldRequestScopeUsers" } ] }, "LegalHoldRequestScopeUsers": { "title": "Users", "type": "object", "properties": { "users": { "type": "array", "items": { "type": "object", "properties": { "email": { "type": "string", "description": "Email of the user", "example": "john.smith@example.com" } }, "required": ["email"] } } }, "required": ["user"] }, "LegalHoldResponse": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^[0-9]+$", "description": "Unique identifier of the legal hold.", "example": "3074457345618265000" }, "organizationId": { "type": "string", "pattern": "^[0-9]+$", "description": "Unique identifier of the organization.", "example": "3074457345618265000" }, "caseId": { "type": "string", "pattern": "^[0-9]+$", "description": "Unique identifier of the case.", "example": "3074457345618265000" }, "name": { "type": "string", "description": "The name of the legal hold.", "example": "My legal hold" }, "description": { "type": "string", "description": "The description of the legal hold.", "example": "Info about my legal hold" }, "state": { "$ref": "#/components/schemas/LegalHoldState" }, "scope": { "$ref": "#/components/schemas/LegalHoldResponseScope" }, "createdBy": { "$ref": "#/components/schemas/User" }, "lastModifiedBy": { "$ref": "#/components/schemas/User" }, "createdAt": { "type": "string", "format": "date-time" }, "lastModifiedAt": { "type": "string", "format": "date-time" } }, "required": [ "createdAt", "createdBy", "id", "caseId", "lastModifiedAt", "name", "organizationId", "scope", "scopeValue", "state" ] }, "LegalHoldResponseScope": { "description": "The legal hold scope determines the criteria used to put content items under hold. The variants of this field might get extended in the future, although the most common use case is to put users under hold. Currently only the `users` scope is supported. However, the parsing of this field must ignore unexpected variants.", "oneOf": [ { "$ref": "#/components/schemas/LegalHoldResponseScopeUsers" } ] }, "LegalHoldResponseScopeUsers": { "title": "Users scope", "type": "object", "description": "List of users under legal hold.", "properties": { "users": { "type": "array", "minItems": 1, "maxItems": 200, "items": { "$ref": "#/components/schemas/User" } } } }, "PaginatedLegalHoldContentItemsResponse": { "description": "List of content items under legal hold.", "allOf": [ { "$ref": "#/components/schemas/Pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/LegalHoldContentItemsResponse" } } } } ] }, "LegalHoldContentItemsResponse": { "type": "object", "properties": { "contentId": { "type": "string", "description": "Identifier for the piece of content referenced by a content item. In the case of a board, this represents the `boardKey` and can be used to export a board using the Discovery APIs.", "example": "uXjVOD6LSME=" }, "type": { "type": "string", "description": "Type of the content item that is returned.\n", "example": "board" } }, "required": ["id", "name", "type"] }, "LegalHoldState": { "type": "string", "description": "The state of the legal hold. Legal holds could take up to 24 hours to be processed and the state could be one of the following:\n- `PROCESSING`: the legal hold is being created and content items are being processed.\n- `ACTIVE`: the legal hold has been created and all content items have been processed.\n- `DELETING`: the legal hold is being deleted and content items are being processed.\n", "enum": ["PROCESSING", "ACTIVE", "DELETING"] }, "User": { "description": "User information.", "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the user.", "example": "3458764517517852417" }, "email": { "type": "string", "description": "User email.", "example": "john.smith@example.com" }, "firstName": { "type": "string", "description": "First name of the user.", "example": "John" }, "lastName": { "type": "string", "description": "Last name of the user.", "example": "Smith" } }, "required": ["id", "email", "firstName", "lastName"] }, "PaginatedCaseResponse": { "allOf": [ { "$ref": "#/components/schemas/Pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/CaseResponse" } } } } ] }, "PaginatedLegalHoldResponse": { "allOf": [ { "$ref": "#/components/schemas/Pagination" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/LegalHoldResponse" } } } } ] }, "PaginatedCaseExportJobsResponse": { "description": "Board export job for a case.", "properties": { "size": { "type": "integer", "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.\n", "format": "int32", "example": 1 }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "limit": { "$ref": "#/components/schemas/PageLimit", "description": "The maximum number of results to return per call. If the number of items in the response is\ngreater than the limit specified, the response returns the cursor parameter with a value.\n" }, "type": { "type": "string", "description": "Type of the response, in this case it's always 'cursor-list'.", "default": "cursor-list" }, "data": { "type": "array", "items": { "type": "object", "description": "Board export job.", "properties": { "id": { "type": "string", "description": "Unique identifier of the board export job.", "format": "uuid", "example": "92343229-c532-446d-b8cb-2f155bedb807" } } } } } }, "Pagination": { "type": "object", "properties": { "size": { "type": "integer", "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.\n", "format": "int32", "example": 1 }, "total": { "$ref": "#/components/schemas/PageTotal" }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "limit": { "$ref": "#/components/schemas/PageLimit", "description": "The maximum number of results to return per call. If the number of items in the response is\ngreater than the limit specified, the response returns the cursor parameter with a value.\n" }, "type": { "type": "string", "description": "Type of the response, in this case it's always 'cursor-list'.", "default": "cursor-list" } } }, "PageTotal": { "type": "integer", "description": "Total number of results in the collection.", "format": "int32", "example": 15 }, "BoardExportJobId": { "required": ["jobId"], "type": "object", "properties": { "jobId": { "type": "string", "description": "Unique identifier of the board export job.", "format": "uuid", "example": "92343229-c532-446d-b8cb-2f155bedb807" } } }, "BoardFormat": { "type": "string", "enum": ["SVG", "HTML", "PDF"], "default": "SVG", "description": "Specifies the format of the file to which the board will be exported. Supported formats include SVG (default), HTML, and PDF.", "example": "SVG" }, "ExportJobStatus": { "type": "string", "description": "Indicates the current state of the board export job.\nPossible values:\n`CREATED`: the job has been created but not yet started. Retry the status call after some time.\n`IN_PROGRESS`: the job is in progress, and the results are not ready yet. Retry the status call after some time.\n`CANCELLED`: the job has been cancelled and will not produce any more results.\n`FINISHED`: the job is complete. You can now get results for the board export job.", "enum": ["CREATED", "IN_PROGRESS", "CANCELLED", "FINISHED"], "example": "CREATED" }, "BoardExportJobsList": { "description": "List of export jobs.", "type": "object", "properties": { "total": { "$ref": "#/components/schemas/PageTotal" }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BoardExportJob" } } } }, "BoardExportJob": { "description": "Board export job.", "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the board export job.", "format": "uuid", "example": "92343229-c532-446d-b8cb-2f155bedb807" }, "name": { "type": "string", "description": "Board export job name." }, "boardFormat": { "$ref": "#/components/schemas/BoardFormat" }, "status": { "type": "string", "description": "Indicates the current state of the board export job.\nPossible values:\n`created`: the job has been created but not yet started. Retry the status call after some time.\n`in_progress`: the job is in progress, and the results are not ready yet. Retry the status call after some time.\n`cancelled`: the job has been cancelled and will not produce any more results.\n`finished`: the job is complete. You can now get results for the board export job.", "example": "created" }, "createdAt": { "type": "string", "format": "date-time" }, "modifiedAt": { "type": "string", "format": "date-time" }, "tasksCount": { "type": "object", "properties": { "total": { "type": "integer", "format": "int64", "description": "Total number of tasks in the export." }, "success": { "type": "integer", "format": "int64", "description": "Successfully exported tasks count." }, "error": { "type": "integer", "format": "int64", "description": "Failed tasks count." } } }, "creator": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the user who created the board export job.", "example": "3458764517517852417" } } } } }, "BoardExportJobStatus": { "required": ["jobStatus"], "type": "object", "properties": { "jobStatus": { "$ref": "#/components/schemas/ExportJobStatus" } } }, "BoardExportResult": { "type": "object", "properties": { "jobId": { "type": "string", "description": "Unique identifier of the board export job.", "format": "uuid", "example": "92343229-c532-446d-b8cb-2f155bedb807" }, "results": { "type": "array", "description": "Board export task results.", "items": { "$ref": "#/components/schemas/BoardExportTaskResult" } } } }, "ExportTaskStatus": { "type": "string", "description": "Indicates the status of the individual board export task.\nPossible values:\n`SUCCESS`: the board export task was completed successfully and the results are available.\n`ERROR`: the board export task encountered an error and failed to complete. The `errorMessage` field provides more information on the error.\n`CANCELLED`: the board export task was cancelled.\n`SCHEDULED`: the board export task has been scheduled and is waiting to be processed.\n`CREATED`: the board export task was created.", "example": "CREATED" }, "ExportTaskStatusFilter": { "type": "string", "description": "Indicates the status of the individual board export task.\nPossible values:\n`TASK_STATUS_SUCCESS`: the board export task was completed successfully and the results are available.\n`TASK_STATUS_ERROR`: the board export task encountered an error and failed to complete. The `errorMessage` field provides more information on the error.\n`TASK_STATUS_CANCELLED`: the board export task was cancelled.\n`TASK_STATUS_SCHEDULED`: the board export task has been scheduled and is waiting to be processed.\n`TASK_STATUS_CREATED`: the board export task was created.", "example": "TASK_STATUS_CREATED" }, "ExportTaskErrorType": { "type": "string", "description": "Indicates the type of error encountered during the board export task.\nPossible values:\n`TEMPORARY`: the board export task encountered a temporary error. Retry the board export task after some time.\n`FATAL`: the board export failed and cannot be retried. This export will never succeed due to issues such as board corruption, non-existence, or other unrecoverable errors. Please verify the board's state or contact support if assistance is needed.\n`UNKNOWN`: the board export task encountered an unexpected exception. Retry the board export task after some time.", "example": "TEMPORARY" }, "BoardExportJobTasksList": { "type": "object", "properties": { "total": { "$ref": "#/components/schemas/PageTotal" }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BoardExportTask" } } } }, "BoardExportTask": { "type": "object", "required": ["id", "status"], "properties": { "id": { "type": "string", "description": "Unique identifier of the board export task.", "example": "9394a815-86ea-418c-8bfc-71772fdb692d" }, "status": { "$ref": "#/components/schemas/ExportTaskStatus" }, "artifactExpiredAt": { "type": "string", "format": "date-time", "description": "The date and time when the artifact will no longer be available in the S3 storage. After this time, the link will no longer be valid and the exported files will not be accessible.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2025-08-24T17:32:28Z" }, "sizeInBytes": { "type": "integer", "format": "int64", "description": "Size of the exported artifact in bytes.", "example": 1048576 }, "errorMessage": { "type": "string", "description": "Contains the description of the error that occurred during a board export task." }, "errorType": { "$ref": "#/components/schemas/ExportTaskErrorType" }, "board": { "type": "object", "description": "Information about a board in the board export task.", "properties": { "key": { "type": "string", "description": "Unique identifier of the board.", "example": "o9J_kzlUDmo=" } } } } }, "BoardExportTaskResult": { "required": ["boardId", "status"], "type": "object", "properties": { "boardId": { "type": "string", "description": "Unique identifier of the board.", "example": "o9J_kzlUDmo=" }, "errorMessage": { "type": "string", "description": "Contains the description of the error that occurred during a board export task." }, "exportLink": { "type": "string", "description": "URL of the S3 bucket that contains the exported files." }, "status": { "$ref": "#/components/schemas/ExportTaskStatus" }, "errorType": { "$ref": "#/components/schemas/ExportTaskErrorType" } }, "description": "Board export task results." }, "BoardExportTaskExportLink": { "required": ["status"], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/ExportTaskStatus" }, "exportLink": { "type": "string", "description": "URL of the S3 bucket that contains the exported files." }, "artifactExpiredAt": { "type": "string", "format": "date-time", "description": "The date and time when the artifact will no longer be available in the S3 storage. After this time, the link will no longer be valid and the exported files will not be accessible.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2025-08-24T17:32:28Z" }, "linkExpiredAt": { "type": "string", "format": "date-time", "description": "The date and time when the export link will expire. After this time, the link will no longer be valid.\nFormat: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2025-08-24T17:32:28Z" }, "errorMessage": { "type": "string", "description": "Contains the description of the error that occurred during a board export task results link creation." }, "errorType": { "type": "string", "description": "Indicates the type of error encountered during the board export task results link creation.\nPossible values:\n`TEMPORARY`: the board export task encountered a temporary error. Retry the board export task results link creation after some time.\n`FATAL`: the board export failed and cannot be retried. This export will never succeed due to issues such as board corruption, non-existence, or other unrecoverable errors. Please verify the board's state or contact support if assistance is needed.\n`UNKNOWN`: the board export task encountered an unexpected exception. Retry the board export task results link creation after some time.", "example": "TEMPORARY" } }, "description": "Board export task results link." }, "CreateBoardExportRequest": { "type": "object", "properties": { "boardIds": { "maxItems": 1000, "minItems": 1, "type": "array", "description": "List of board IDs to be exported. Each export job can contain up to 1,000 boards.", "example": "o9J_kzlUDmo=", "items": { "type": "string", "description": "List of board IDs to be exported. Each export job can contain up to 1,000 boards.", "example": "o9J_kzlUDmo=" } }, "boardFormat": { "$ref": "#/components/schemas/BoardFormat" } }, "description": "List of board IDs to be exported. Each export job can contain up to 1,000 boards." }, "GetBoardItemContentLogsResponse": { "type": "object", "description": "Response for query using cursor and filter parameters.", "properties": { "limit": { "type": "integer", "description": "The maximum number of results to return per call. If the number of logs in the response is\ngreater than the limit specified, the response returns the cursor parameter with a value.\n", "format": "int32", "example": 20 }, "size": { "type": "integer", "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.\n", "format": "int32", "example": 1 }, "data": { "$ref": "#/components/schemas/BoardItemContentLogList" }, "cursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.\n", "example": "MTY2OTg4NTIwMDAwMHwxMjM=" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } } }, "BoardItemContentLogList": { "type": "array", "description": "Contains the list of content logs for a board item.", "items": { "$ref": "#/components/schemas/BoardItemContentLog" } }, "BoardItemContentLog": { "type": "object", "description": "Contains information about the content log of for a board item.", "properties": { "id": { "type": "string", "description": "Unique identifier of the content log.", "example": "2dcf57ff-f12c-4fad-b708-c1642204b41b" }, "contentId": { "type": "string", "description": "Unique identifier of the board where the action happened.", "example": "o9J_kzlUDmo=" }, "actionType": { "type": "string", "enum": ["create", "update", "delete"], "description": "Type of action within the board, such as creation of a widget, update of a comment message, and so on.", "example": "update" }, "actionTime": { "type": "string", "format": "date-time", "example": "2023-06-24T17:32:28Z", "description": "Date and time when the action happened.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).\n" }, "actor": { "$ref": "#/components/schemas/Actor" }, "itemType": { "type": "string", "enum": ["widget", "comment_thread", "comment_message"], "description": "Type of the board item on which the action happened.", "example": "widget" }, "itemId": { "type": "string", "description": "Unique identifier of the board item on which the action happened. For example, the widget ID.", "example": "3458764549483493025" }, "state": { "$ref": "#/components/schemas/State" }, "relationships": { "type": "array", "description": "Contains the list of items related to the current board item.", "items": { "$ref": "#/components/schemas/Relationship" } } } }, "Actor": { "type": "object", "description": "Contains information about the user who performed the action.", "properties": { "id": { "type": "string", "description": "Unique identifier of the user who performed the action.", "example": "3458764517517852417" }, "email": { "type": "string", "description": "Email of the user who performed the action.", "example": "john.smith.demo@miro.com" }, "name": { "type": "string", "description": "Name of the user who performed the action.", "example": "John Smith" } } }, "State": { "type": "object", "description": "Object that contains information about the state of the board item after the action was performed." }, "Relationship": { "type": "object", "description": "Object that contains information about a related board item for the current item.", "properties": { "type": { "type": "string", "description": "Indicates the relationship of this item with the current item. For example, if `type` returns `parent`, this means that related item is a parent for the current item.", "example": "parent" }, "itemType": { "type": "string", "description": "Indicates the type of the related board item. For example, if `itemType` returns `widget`, this means that related item is a widget.", "example": "widget" }, "itemId": { "type": "string", "description": "Unique identifier of the related board item.", "example": "3074457345933870505" } } }, "BasicErrorEnterpriseUserSessionResetEnterprisePlan": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code." }, "code": { "type": "string", "description": "Description of the status code." }, "message": { "type": "string", "description": "Explanation for the error" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "error" } } }, "PatchUserResource": { "type": "object", "required": ["schemas", "Operations"], "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource used. In this case, identifies the request as a SCIM PatchOp.", "items": { "type": "string", "enum": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "example": "urn:ietf:params:scim:api:messages:2.0:PatchOp" } }, "Operations": { "type": "array", "description": "A list of patch operations.

\nUpdating the user to deactivated/reactivated,
{ \"op\": \"Replace\", \"path\": \"active\", \"value\": \"true/false\" } must be provided in the Operations array.

Renaming the user,
{ \"op\": \"Replace\", \"path\": \"displayName\", \"value\": \"New displayName\" } must be provided in the Operations array.

Upgrading userType (license) to Full,
{ \"op\": \"Replace\", \"path\": \"userType\", \"value\": \"Full\" } must be provided in the Operations array. Note that userType (license) cannot be downgraded using this operation.

Updating userName of the user,
{ \"op\": \"Replace\", \"path\": \"userName\", \"value\": \"oleg@test.com\" } must be provided in the Operations array.

Updating userRole of the user, { \"op\": \"Replace\",
\"path\": \"roles[primary eq true].value\", \"value\": \"ORGANIZATION_INTERNAL_ADMIN\" must be provided in the Operations array. Note that ORGANIZATION_INTERNAL_ADMIN and ORGANIZATION_INTERNAL_USER are the only supported primary user roles and guest roles are not supported.

Adding an admin role,
{ \"op\": \"Add\", \"path\": \"roles\", \"value\": [{\"value\": \"Content Admin\", \"type\": \"organization_admin_role\", \"primary\": false}]} must be provided in the Operations array.

Removing an admin role,
{ \"op\": \"Remove\", \"path\":\"roles[value eq \\\"Content Admin\\\"]\" } must be provided in the Operations array.

Updating department of the user,
{ \"op\": \"Replace\", \"path\": \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department\", \"value\": \"IT\" } must be provided in the Operations array. Similarly, attributes such as employeeNumber, costCentre, organization, division, manager (displayName and value) can also be updated. ", "items": { "type": "object", "required": ["op", "path", "value"], "properties": { "op": { "type": "string", "description": "The operation to perform.", "enum": ["Add", "Remove", "Replace"], "example": "Replace" }, "path": { "type": "string", "description": "Attribute path being modified.", "example": "userType" }, "value": { "type": "string", "description": "The value to apply in the operation.", "example": "Full" } } } } } }, "CreateUserResponse": { "$ref": "#/components/schemas/UserResource" }, "CreateUserResource": { "type": "object", "required": ["userName"], "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource uses. In this case it is the SCIM core User schema.", "items": { "type": "string", "enum": ["urn:ietf:params:scim:schemas:core:2.0:User"], "example": "urn:ietf:params:scim:schemas:core:2.0:User" } }, "userName": { "type": "string", "description": "The unique username/login identifier. An email address in this case.

Note: Payload must include the userName attribute populated with an email address

User is created with this email address in the organization. This attribute will be used as full name of the created user if the displayName or name attribute is not provided.", "example": "user@miro.com" }, "name": { "type": "object", "description": "Structured object for the person’s name. This includes the family name (last name), and given name (first name).", "required": ["familyName", "givenName"], "properties": { "formatted": { "description": "This attribute is used if the displayName attribute is not provided, name attribute is provided and this attribute value is not empty.

Maximum length: 60 characters", "type": "string", "example": "Adam Taylor" }, "familyName": { "description": "This attribute is used if the displayName attribute is not provided, name attribute is provided and formatted attribute value is not provided.

Maximum length: Combined character count for both attributes givenName and familyName must not exceed 60 characters.", "type": "string", "example": "Doe" }, "givenName": { "description": "This attribute is used if the displayName attribute is not provided, name attribute is provided and formatted attribute value is not provided.

Maximum length: Combined character count for both attributes givenName and familyName must not exceed 60 characters.", "type": "string", "example": "John" } } }, "displayName": { "description": "A human-readable name for the user, typically the full name. This attribute is used if the value is not empty.

Maximum length: 60 characters", "type": "string", "example": "John Doe" }, "userType": { "type": "string", "description": "Free-form string to indicate the user license type in the organization.

Only supported values for license types are allowed. Supported license types can vary per organization. An organization can have one or more of the following license type values: Full, Free, Free Restricted, Full (Trial), Basic, Standard, Advanced.

Note: When `userType` is specified, the `userType` license is set per the value provided. When `userType` is not specified, the user license is set according to internal Miro logic, which depends on the organization plan.", "example": "Full" }, "active": { "type": "boolean", "description": "Indicates whether the user is active or deactivated in the organization." }, "photos": { "type": "array", "description": "An array of display picture for the user in the organization. Contains photo value and type.

Notes: Must be a text URL to the image. Supported file types: jpg, jpeg, bmp, png, gif.

To define file type, you should have defined file extension in url (e.g. https://host.com/avatar_user1.jpg) or request to url should return together with a file content a header Content-Type (e.g. Content-Type = image/jpeg)

Maximum file size to download is: 31457280 bytes.

Example (Okta): photos.^[type==photo].value
Example (Azure): photos[type eq \"photo\"].value", "items": { "type": "object", "properties": { "type": { "type": "string", "example": "photo" }, "value": { "type": "string", "example": "https://example.com/path_to_image.jpg" } } } }, "roles": { "type": "array", "description": "An array of roles assigned to the user in the organization. Contains role value, display, type, and primary flag.

organization_user_role supported values include: ORGANIZATION_INTERNAL_ADMIN and ORGANIZATION_INTERNAL_USER. organization_admin_role supported values include: Content Admin, User Admin, Security Admin, or names of custom admin roles.

Example (Okta) for organization_user_role: roles.^[primary==true].value
Example (Azure) for organization_user_role: roles[primary eq \"True\"].value
Example (Okta) for organization_admin_role: roles.^[primary==false].value
Example (Azure) for organization_admin_role: roles[primary eq \"False\"].value
", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of the role. Supported values are organization_user_role and organization_admin_role. Only one role should in the same array can have type `organization_user_role`.", "example": "organization_user_role" }, "value": { "type": "string", "description": "The role assigned to the user.
For `organization_user_role` type, supported values include: ORGANIZATION_INTERNAL_ADMIN and ORGANIZATION_INTERNAL_USER.
For `organization_admin_role` type, supported values include: Content Admin, User Admin, Security Admin, or names of custom admin roles.", "example": "ORGANIZATION_INTERNAL_USER" }, "display": { "type": "string", "description": "A human-readable name or description of the role.", "example": "Member" }, "primary": { "type": "boolean", "description": "Indicates whether this role is the primary role. Only one role can be marked as primary." } } } }, "preferredLanguage": { "type": "string", "description": "Specifies the user's preferred language.

Example: en_US for English.", "example": "en_US" }, "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "type": "object", "description": "Enterprise User extension schema.", "properties": { "employeeNumber": { "type": "string", "example": "E0001", "description": "Maximum length: 20 characters" }, "costCenter": { "type": "string", "example": "CS001", "description": "Maximum length: 120 characters" }, "organization": { "type": "string", "example": "OrgX", "description": "Maximum length: 120 characters" }, "division": { "type": "string", "example": "Div001", "description": "Maximum length: 120 characters" }, "department": { "type": "string", "example": "DeptA", "description": "Maximum length: 120 characters" }, "manager": { "type": "object", "description": "Manager of the user.", "properties": { "displayName": { "type": "string", "example": "John Doe", "description": "Maximum length: 60 characters" }, "value": { "type": "string", "description": "The \"value\" field has String type in SCIM standard but the managerId internal Miro field has Long type. If the \"value\" attribute is not a numeric value, we ignore the value." } } } } } } }, "UserResource": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource uses. In this case it is the SCIM core User schema.", "items": { "type": "string", "enum": ["urn:ietf:params:scim:schemas:core:2.0:User"], "example": "urn:ietf:params:scim:schemas:core:2.0:User" } }, "id": { "type": "string", "description": "A server-assigned, unique identifier for this user.", "example": "3074457365265951581" }, "meta": { "type": "object", "description": "Metadata about the resource.", "properties": { "resourceType": { "type": "string", "description": "The SCIM resource type", "example": "User" }, "location": { "type": "string", "description": "Fully qualified URL of the resource.", "example": "http://api-hailey:9111/api/v1/scim/Users/3074457365265951581" } } }, "userName": { "type": "string", "description": "The unique username/login identifier. An email address in this case.", "example": "user@miro.com" }, "name": { "type": "object", "description": "Structured object for the person’s name. This includes the family name (last name), and given name (first name).", "properties": { "formatted": { "type": "string", "description": "The full name of the user, formatted for display according to cultural and locale conventions.", "example": "Mr. John Doe" }, "familyName": { "type": "string", "description": "Last name / surname", "example": "Doe" }, "givenName": { "type": "string", "description": "First name", "example": "John" } } }, "displayName": { "type": "string", "description": "A human-readable name for the user, typically the full name.", "example": "John Doe" }, "userType": { "type": "string", "description": "Free-form string to indicate the user license type in the organization.", "example": "Full" }, "active": { "type": "boolean", "description": "Indicates whether the user is active or deactivated in the organization." }, "emails": { "type": "array", "description": "An array of email addresses, each an object with a value, display and primary flag.", "items": { "type": "object", "properties": { "value": { "type": "string", "description": "E-mail addresses for the user", "example": "user@miro.com" }, "type": { "type": "string", "description": "A label that identifies the type of email address.", "example": "work" }, "primary": { "type": "boolean", "description": "Indicates the user's primary email address. Only one item in the list should have primary set to true." } } } }, "photos": { "type": "array", "description": "An array for profile pictures, contains type.", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Indicates the type of photo.", "example": "photo" }, "value": { "type": "string", "description": "The URL of the image", "example": "https://example.com/path_to_image.jpg" } } } }, "groups": { "type": "array", "description": "An array of groups (teams) the user belongs to in the organization. Contains id and display name of the team.", "items": { "type": "object", "properties": { "value": { "type": "string", "description": "The unique ID of the group.", "example": "3074457365266112911" }, "display": { "type": "string", "description": "Human-readable name of the group.", "example": "Product" } } } }, "roles": { "type": "array", "description": "An array of roles assigned to the user in the organization. Contains role type, value, display and primary flag.", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of the role. Supported values are organization_user_role and organization_admin_role. Only one role should have type organization_user_role.", "example": "organization_user_role" }, "value": { "type": "string", "description": "The role assigned to the user.
For `organization_user_role` type, supported values include: ORGANIZATION_INTERNAL_ADMIN and ORGANIZATION_INTERNAL_USER.
For `organization_admin_role` type, supported values include: Content Admin, User Admin, Security Admin, or names of custom admin roles.", "example": "ORGANIZATION_INTERNAL_USER" }, "display": { "type": "string", "description": "A human-readable name or description of the role.", "example": "Member" }, "primary": { "type": "boolean", "description": "Indicates whether this role is the primary role. Only one role can be marked as primary." } } } }, "preferredLanguage": { "type": "string", "description": "Specifies the users preferred language.

Example: en_US for English.", "example": "en_US" }, "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "type": "object", "description": "Enterprise User extension schema.", "properties": { "employeeNumber": { "type": "string", "example": "E0001", "description": "Unique identifier for the user within the organization. Maximum length: 20 characters" }, "costCenter": { "type": "string", "example": "CS001", "description": "Cost center associated with the user. Maximum length: 120 characters" }, "organization": { "type": "string", "example": "OrgX", "description": "Name of the organization to which the user belongs. Maximum length: 120 characters" }, "division": { "type": "string", "example": "Div001", "description": "The division to which the user belongs within the organization. Maximum length: 120 characters" }, "department": { "type": "string", "example": "DeptA", "description": "The department to which the user belongs within the organization. Maximum length: 120 characters" }, "manager": { "type": "object", "description": "Manager of the user.", "properties": { "displayName": { "type": "string", "example": "John Doe", "description": "The user's manager name. Maximum length: 60 characters" }, "value": { "type": "string", "description": "The \"value\" field has String type in SCIM standard but the managerId internal Miro field has Long type. If the \"value\" attribute is not a numeric value, we ignore the value." } } } } } } }, "UserListResponse": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this response.

In this case, it contains urn:ietf:params:scim:api:messages:2.0:ListResponse, which indicates that this is a SCIM ListResponse — a paginated wrapper around a set of resources (such as Users or Groups).", "items": { "type": "string", "example": "urn:ietf:params:scim:api:messages:2.0:ListResponse" } }, "totalResults": { "type": "number", "description": "The total number of results matching the request.", "example": 12 }, "startIndex": { "type": "number", "description": "The index of the first returned result in the current page.", "example": 1 }, "itemsPerPage": { "type": "number", "description": "The number of items returned in the response.", "example": 10 }, "Resources": { "type": "array", "items": { "$ref": "#/components/schemas/UserResource" } } } }, "PatchGroupResource": { "type": "object", "required": ["schemas", "Operations"], "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource uses. In this case it is the PatchOp schema.", "enum": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "items": { "type": "string" } }, "Operations": { "type": "array", "description": "A list of patch operations.

Multiple users can be added or removed from the group (team) in one request. use the array to add or remove multiple users.

For updating security group name:
\"op\"=\"replace\", \"value\"={\"id\":\"13266533725732\", \"displayName\":\"New group name\"} must be provided in the Operations array.", "items": { "type": "object", "required": ["op"], "properties": { "op": { "type": "string", "description": "Supported operations for this Patch request.", "enum": ["Add", "Remove", "Replace"] }, "path": { "type": "string", "description": "The \"path\" attribute value is a string containing an attribute path describing the target of the operation. The \"path\" attribute is optional for the \"add\", and \"replace\" operations and is required for the \"remove\" operation.

", "enum": ["members", "displayName"] }, "value": { "oneOf": [ { "type": "array", "items": { "type": "object", "required": ["value"], "properties": { "value": { "type": "string", "description": "A server-assigned, unique identifier for the user to be added, removed, or replaced.", "example": "3074457364156964977" } } } }, { "type": "string", "description": "Human-readable name of the group to be updated." } ] } } } } } }, "GroupResource": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource uses. In this case it is the SCIM core Groups schema.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:Group" } }, "id": { "type": "string", "description": "A server-assigned, unique identifier for this Group (team).", "example": "3074457365836251622" }, "meta": { "type": "object", "description": "Metadata about the resource.", "properties": { "resourceType": { "type": "string", "description": "Type of resource.", "example": "Group" }, "location": { "type": "string", "description": "URI of resource.", "example": "http://api-xochitl:9111/api/v1/scim/Groups/3074457365836251622" } } }, "displayName": { "type": "string", "description": "A human readable name for the Group (team).", "example": "Product" }, "members": { "type": "array", "description": "A list of all members that are part of the Group (team).", "items": { "type": "object", "properties": { "value": { "type": "string", "description": "A server-assigned, unique identifier for the user (member).", "example": "3074457365265951581" }, "type": { "type": "string", "description": "Type of item - in this case it is User for all members.", "example": "User" }, "display": { "type": "string", "description": "A human-readable name for the user (member), typically the full name.", "example": "John Doe" } } } } } }, "GroupListResponse": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this response.

In this case, it contains urn:ietf:params:scim:api:messages:2.0:ListResponse, which indicates that this is a SCIM ListResponse — a paginated wrapper around a set of resources (such as Users or Groups).", "items": { "type": "string", "example": "urn:ietf:params:scim:api:messages:2.0:ListResponse" } }, "totalResults": { "type": "number", "description": "The total number of results matching the request.", "example": 12 }, "startIndex": { "type": "number", "description": "The index of the first returned result in the current page.", "example": 1 }, "itemsPerPage": { "type": "number", "description": "The number of items returned in the response.", "example": 10 }, "Resources": { "type": "array", "items": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource uses. In this case it is the SCIM core Groups schema.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:Group" } }, "id": { "type": "string", "description": "A server-assigned, unique identifier for this Group (team).", "example": "3074457365836251622" }, "displayName": { "type": "string", "description": "A human readable name for the Group (team).", "example": "Product" }, "members": { "type": "array", "description": "A list of all members that are part of the Group (team).", "items": { "type": "object", "properties": { "value": { "type": "string", "description": "A server-assigned, unique identifier for the user (member).", "example": "3074457365265951581" }, "type": { "type": "string", "description": "Type of item - in this case it is User for all members.", "example": "User" }, "display": { "type": "string", "description": "A human-readable name for the user (member), typically the full name.", "example": "User One" } } } }, "meta": { "type": "object", "description": "Metadata about the resource.", "properties": { "resourceType": { "type": "string", "description": "Type of resource.", "example": "Group" }, "location": { "type": "string", "description": "URI of resource.", "example": "http://api-synai:9111/api/v1/scim/Groups/3074457365836251622" } } } } } } }, "description": "list of groups (teams)" }, "ServiceProviderConfigResponse": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this response.

In this case, it contains urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig, which indicates that this is a SCIM ServiceProviderConfig response.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig" } }, "documentationUri": { "type": "string", "description": "A link to Miro SCIM documentation.", "example": "https://developers.miro.com/docs/scim" }, "patch": { "type": "object", "description": "Indicator of whether the PATCH operation is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if the operation is supported.", "example": true } } }, "bulk": { "type": "object", "description": "Indicator of whether the Bulk operation is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if the operation is supported.", "example": false }, "maxOperations": { "type": "number", "description": "Maximum operations supported in a single request.", "example": 0 }, "maxPayloadSize": { "type": "number", "description": "Maximum payload size supported for a single request.", "example": 0 } } }, "filter": { "type": "object", "description": "Indicator of whether the Filter operation is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if the operation is supported.", "example": true }, "maxResults": { "type": "number", "description": "Maximum results returned in a list response.", "example": 200 } } }, "changePassword": { "type": "object", "description": "Indicator of whether the Change Password operation is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if the operation is supported.", "example": false } } }, "sort": { "type": "object", "description": "Indicator of whether the Sort operation is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if the operation is supported.", "example": true } } }, "etag": { "type": "object", "description": "Indicator of whether ETag is supported.", "properties": { "supported": { "type": "boolean", "description": "Returns true if ETag is supported.", "example": false } } }, "authenticationSchemes": { "type": "array", "description": "A list of supported authentication schemes.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the authentication scheme.", "example": "OAuth 2.0 Bearer Token" }, "description": { "type": "string", "description": "Description of the authentication scheme.", "example": "The OAuth 2.0 Bearer Token Authentication scheme. OAuth enables clients to access protected resources by obtaining an access token which is defined in RFC 6750 as a string representing an access authorization issued to the client rather than using the resource owner's credentials directly." }, "specUri": { "type": "string", "description": "Specification URI of the authentication scheme.", "example": "http://tools.ietf.org/html/rfc6750" }, "type": { "type": "string", "description": "Type of the authentication scheme.", "example": "oauthbearertoken" }, "primary": { "type": "boolean", "description": "Returns true if this is the primary authentication scheme of the service provider.", "example": true } } } } }, "description": "Supported operations and SCIM API basic configuration." }, "ResourceTypeListResponse": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this response.

In this case, it contains urn:ietf:params:scim:api:messages:2.0:ListResponse, which indicates that this is a SCIM ListResponse response containing list of supported resource types.", "items": { "type": "string", "example": "urn:ietf:params:scim:api:messages:2.0:ListResponse" } }, "totalResults": { "type": "number", "description": "Number of resource types returned in the response.", "example": 2 }, "Resources": { "type": "array", "items": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this resource type.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:ResourceType" } }, "id": { "type": "string", "description": "Identifier of the resource type. Since Miro supports Users and Groups, the values are User or Group.", "example": "User" }, "name": { "type": "string", "description": "Name of the resource type. Since Miro supports Users and Groups, the values are User or Group.", "example": "User" }, "description": { "type": "string", "description": "Description of the resource type. Since Miro supports Users and Groups, the values are User or Group.", "example": "User" }, "endpoint": { "type": "string", "description": "Endpoint extension of the resource type. Since Miro supports Users and Groups, the values are /Users or /Groups.", "example": "/Users" }, "schema": { "type": "string", "description": "Schema URI of the resource type. Since Miro supports Users and Groups, the values are urn:ietf:params:scim:schemas:core:2.0:User or urn:ietf:params:scim:schemas:core:2.0:Group.", "example": "urn:ietf:params:scim:schemas:core:2.0:User" }, "schemaExtensions": { "type": "array", "description": "Schema extensions supported for the resource type.", "items": { "type": "object", "properties": { "schema": { "type": "string", "description": "Schema extension URI of the resource type.", "example": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" }, "required": { "type": "boolean", "description": "Indicator of whether the schema extension is required.", "example": false } } } } } } } }, "description": "Information about the supported resource types. Currently Miro supports Users and Groups." }, "ResourceType": { "type": "object", "properties": { "schemas": { "type": "array", "description": "An array of URNs that identify the schema(s) that define the structure of this resource type.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:ResourceType" } }, "id": { "type": "string", "description": "Identifier of the resource type.", "example": "User" }, "name": { "type": "string", "description": "Name of the resource type.", "example": "User" }, "description": { "type": "string", "description": "Name of the resource type.", "example": "User" }, "endpoint": { "type": "string", "description": "Endpoint extension of the resource type.", "example": "/Users" }, "schema": { "type": "string", "description": "Schema URI of the resource type.", "example": "urn:ietf:params:scim:schemas:core:2.0:User" }, "schemaExtensions": { "type": "array", "description": "Schema extensions supported for the resource type.", "items": { "type": "object", "properties": { "schema": { "type": "string", "description": "Schema extension URI of the resource type.", "example": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" }, "required": { "type": "boolean", "description": "Indicator of whether the schema extension is required.", "example": false } } } } }, "description": "Metadata for the available resource types (User and Group)" }, "SchemaListResponse": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Schema(s) that define the structure of this response.

In this case, it contains urn:ietf:params:scim:api:messages:2.0:ListResponse, which indicates that this is a SCIM ListResponse.", "items": { "type": "string", "example": "urn:ietf:params:scim:api:messages:2.0:ListResponse" } }, "totalResults": { "type": "number", "description": "Number of schemas returned in the response.", "example": 3 }, "Resources": { "type": "array", "description": "Resources containing metadata about attributes that are currently supported.", "items": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Schema(s) that define the structure of this resource.", "items": { "type": "string", "example": "urn:ietf:params:scim:schemas:core:2.0:Schema" } }, "id": { "type": "string", "description": "Identifier of the resource.", "example": "urn:ietf:params:scim:schemas:core:2.0:User" }, "name": { "type": "string", "description": "Name of the resource.", "example": "User" }, "description": { "type": "string", "description": "Description of the resource.", "example": "User Account" }, "attributes": { "type": "array", "description": "Attributes that are currently supported.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the attribute.", "example": "userName" }, "type": { "type": "string", "description": "Data type of the attribute.", "example": "string" }, "multiValued": { "type": "boolean", "description": "Indicates whether the attribute is multi-valued.", "example": false }, "description": { "type": "string", "description": "Description of the attribute.", "example": "Unique identifier for the user typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users." }, "required": { "type": "boolean", "description": "Indicates whether the attribute is required.", "example": true }, "caseExact": { "type": "boolean", "description": "Indicates whether the attribute is case exact.", "example": false }, "mutability": { "type": "string", "description": "Indicates the mutability of the attribute.", "example": "readWrite" }, "returned": { "type": "string", "description": "Indicates when the attribute is returned in a response.", "example": "default" }, "uniqueness": { "type": "string", "description": "Indicates the uniqueness of the attribute.", "example": "server" } } } }, "meta": { "type": "object", "description": "Metadata about the resource.", "properties": { "resourceType": { "type": "string", "description": "Type of the resource.", "example": "Schema" }, "location": { "type": "string", "description": "The URI of the resource.", "example": "https://miro.com/api/v1/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" } } } } } } }, "description": "Metadata about Users, Groups and extension attributes that are currently supported." }, "SchemaAttribute": { "type": "object", "properties": { "schemas": { "type": "array", "description": "Identifies which schema(s) this resource used. In this case it is the SCIM core User/Group schema.", "items": { "type": "string", "enum": ["urn:ietf:params:scim:schemas:core:2.0:User"], "example": "urn:ietf:params:scim:schemas:core:2.0:User" } }, "name": { "type": "string", "description": "Name of schema attribute.", "example": "userName" }, "type": { "type": "string", "description": "Type of schema attribute.", "example": "string" }, "multiValued": { "type": "boolean", "description": "Indicates whether the attribute is multi-valued.", "example": false }, "description": { "type": "string", "description": "Description of schema attribute.", "example": "Unique identifier for the user typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users." }, "required": { "type": "boolean", "description": "Indicates whether the attribute is required.", "example": true }, "subAttributes": { "type": "array", "items": { "$ref": "#/components/schemas/SchemaAttribute" } }, "caseExact": { "type": "boolean", "description": "Indicates whether the attribute is case exact.", "example": false }, "mutability": { "type": "string", "description": "Indicates the mutability of the attribute.", "example": "readWrite" }, "returned": { "type": "string", "description": "Indicates when the attribute is returned in a response.", "example": "default" }, "uniqueness": { "type": "string", "description": "Indicates the uniqueness of the attribute.", "example": "server" } }, "description": "Definition of schema attributes." }, "SchemaResource": { "type": "object", "properties": { "id": { "type": "string", "description": "Identifier of the schema resource.", "example": "urn:ietf:params:scim:schemas:core:2.0:User" }, "name": { "type": "string", "description": "Name of the schema resource.", "example": "User" }, "description": { "type": "string", "description": "Description of the schema resource.", "example": "User Account" }, "attributes": { "type": "array", "description": "Attributes that are currently supported.", "items": { "$ref": "#/components/schemas/SchemaAttribute" } }, "meta": { "type": "object", "description": "Metadata about the schema resource.", "properties": { "resourceType": { "type": "string", "description": "Type of the resource.", "example": "Schema" }, "location": { "type": "string", "description": "The URI of the resource.", "example": "https://miro.com/api/v1/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" } } } }, "description": "Information on how users, groups, and enterprise-user attributes are formatted." }, "BasicErrorOrganizationsEnterprisePlan": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code." }, "code": { "type": "string", "description": "Description of the status code." }, "message": { "type": "string", "description": "Explanation for the error" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "error" } } }, "Organization": { "required": ["fullLicensesPurchased", "id", "name", "plan"], "type": "object", "properties": { "id": { "type": "string", "description": "Id of the organization", "example": "3074457345821140946" }, "fullLicensesPurchased": { "type": "integer", "description": "Purchased FULL licenses", "format": "int32" }, "name": { "type": "string", "description": "Name of the organization", "example": "Miro company" }, "plan": { "type": "string", "description": "Organization plan type", "example": "company", "enum": [ "company", "consultant", "consultant_slf", "business", "paid_team_org", "integration_org", "professional_2022", "edu_team_org", "free_team_org", "dev_team_org", "unknown" ] }, "type": { "type": "string", "description": "Type of the object returned.", "default": "organization" } } }, "OrganizationMember": { "description": "Organization member", "required": ["active", "email", "id", "license", "role"], "type": "object", "properties": { "id": { "type": "string", "description": "Id of the user", "example": "3074457345821140934" }, "active": { "type": "boolean", "description": "Indicates if a user is active or deactivated. Learn more about user deactivation.", "example": true }, "email": { "type": "string", "description": "User email", "example": "user@miro.com" }, "lastActivityAt": { "type": "string", "description": "Date and time when the user was last active.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)). If the user never logged in, the parameter value is empty.\n", "format": "date-time" }, "license": { "type": "string", "description": "Name of the current user license in the organization", "example": "full", "enum": [ "advanced", "standard", "basic", "full", "occasional", "free", "free_restricted", "full_trial", "unknown" ] }, "licenseAssignedAt": { "type": "string", "description": "Time when the license was assigned to the user", "format": "date-time" }, "role": { "type": "string", "description": "Name of the user role in the organization", "example": "organization_internal_user", "enum": [ "organization_internal_admin", "organization_internal_user", "organization_external_user", "organization_team_guest_user", "unknown" ] }, "type": { "type": "string", "description": "Type of the object returned.", "default": "organization-member" }, "adminRoles": { "description": "List of admin roles assigned to the user", "type": "array", "items": { "$ref": "#/components/schemas/AdminRole" } } } }, "OrganizationMembersSearchByEmailsResponse": { "description": "Response for search organization members by user emails", "type": "array", "items": { "$ref": "#/components/schemas/OrganizationMember" } }, "OrganizationMembersSearchResponse": { "type": "object", "description": "Response for query by cursor and filter parameters", "properties": { "limit": { "type": "integer", "description": "Maximum number of results returned based on the limit specified in the request. For example, if there are 20 results, the request has no cursor value, and the limit is set to 20, the size of the results will be 20. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the cursor parameter value.", "format": "int32", "example": 20 }, "size": { "type": "integer", "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10.", "format": "int32", "example": 1 }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/OrganizationMember" } }, "cursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.", "example": "3074457345821140946" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } } }, "AdminRole": { "type": "object", "properties": { "type": { "type": "string", "description": "Type of the admin role prebuilt or custom", "example": "prebuilt", "enum": ["prebuilt", "custom"] }, "name": { "type": "string", "description": "Name of the admin role", "example": "User Admin" } } }, "AppCardCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/AppCardDataChanges" }, "style": { "$ref": "#/components/schemas/AppCardStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "AppCardDataChanges": { "type": "object", "description": "Contains app card item data, such as the title, description, or fields.", "properties": { "description": { "type": "string", "description": "A short text description to add context about the app card.", "example": "Sample app card description" }, "fields": { "type": "array", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "items": { "$ref": "#/components/schemas/CustomField" } }, "status": { "type": "string", "default": "disconnected", "description": "Status indicating whether an app card is connected and in sync with the source. When the source for the app card is deleted, the status returns `disabled`.", "enum": ["disconnected", "connected", "disabled"] }, "title": { "type": "string", "default": "sample app card item", "description": "A short text header to identify the app card." } } }, "AppCardItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/AppCardData" }, "style": { "$ref": "#/components/schemas/AppCardStyle" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "app_card" } }, "required": ["id", "type"] }, "UpdateAppCardStyle": { "type": "object", "description": "Contains information about the style of an app card item, such as the fill color.", "properties": { "fillColor": { "type": "string", "description": "Hex value of the border color of the app card.", "example": "#2d9bf0" } } }, "AppCardUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/AppCardDataChanges" }, "style": { "$ref": "#/components/schemas/UpdateAppCardStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "Board": { "type": "object", "description": "Contains the result data.", "properties": { "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was created. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "createdBy": { "$ref": "#/components/schemas/UserInfoShort" }, "currentUserMembership": { "$ref": "#/components/schemas/BoardMember" }, "description": { "type": "string", "description": "Description of the board.", "example": "Sample board description" }, "id": { "type": "string", "description": "Unique identifier (ID) of the board.", "example": "uXjVOD6LSME=" }, "lastOpenedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last opened by any user. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "lastOpenedBy": { "$ref": "#/components/schemas/UserInfoLastOpenedBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last modified. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "modifiedBy": { "$ref": "#/components/schemas/UserInfoShort" }, "name": { "type": "string", "description": "Name of the board.", "example": "Sample board name" }, "owner": { "$ref": "#/components/schemas/UserInfoShort" }, "picture": { "$ref": "#/components/schemas/Picture" }, "policy": { "$ref": "#/components/schemas/BoardPolicy" }, "team": { "$ref": "#/components/schemas/Team" }, "project": { "$ref": "#/components/schemas/BoardProject" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `board`.", "example": "board" }, "viewLink": { "type": "string", "description": "URL to view the board.", "example": "https://miro.com/app/board/uXjVOD6LSME=" } }, "required": ["description", "id", "name", "type"] }, "BoardChanges": { "type": "object", "properties": { "description": { "type": "string", "description": "Description of the board.", "maxLength": 300, "minLength": 0 }, "name": { "type": "string", "default": "Untitled", "description": "Name for the board.", "maxLength": 60, "minLength": 1 }, "policy": { "$ref": "#/components/schemas/BoardPolicyChange" }, "teamId": { "type": "string", "description": "Unique identifier (ID) of the team where the board must be placed.\n\n**Note**: On Enterprise plan, boards can be moved via API by Board Owners, Co-Owners, and Content Admins. This behavior differs from the Miro UI, where only Board Owners can move boards. This difference is **intentional** and works as designed. On non-Enterprise plans, only Board Owners can move boards between teams—both via the API and the Miro UI." }, "projectId": { "type": "string", "description": "Unique identifier (ID) of the project to which the board must be added.\n\n**Note**: Projects have been renamed to Spaces. Use this parameter to update the space. For Starter and Edu plans, Team Admins looking to move boards between Spaces/Projects of the same team would need to be direct Board Editors on the boards to move." } } }, "CopyBoardChanges": { "type": "object", "properties": { "description": { "type": "string", "description": "Description of the board.", "maxLength": 300, "minLength": 0 }, "name": { "type": "string", "default": "Untitled", "description": "Name for the board.", "maxLength": 60, "minLength": 1 }, "policy": { "$ref": "#/components/schemas/BoardPolicyChange" }, "teamId": { "type": "string", "description": "Unique identifier (ID) of the team where the board must be placed." } } }, "BoardLinks": { "type": "object", "description": "Contains applicable links for the board.", "properties": { "related": { "type": "string", "description": "Link to obtain information about the board members associated with the board.", "example": "http://api.miro.com/v2/boards/o9J_k1JKioQ=/members?limit=20&offset=0" }, "self": { "type": "string", "description": "Link to obtain information about the current board.", "example": "http://api.miro.com/v2/boards/o9J_k1JKioQ=" } } }, "BoardMember": { "type": "object", "description": "Contains the current user's board membership details. The current user could be different from the board owner.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3074457353169356300" }, "name": { "type": "string", "description": "Name of the user.", "example": "John Smith" }, "role": { "type": "string", "description": "Role of the board member.", "enum": ["viewer", "commenter", "editor", "coowner", "owner"] }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, `type` returns `board_member`.", "example": "board_member" } }, "required": ["id", "name", "type"] }, "BoardMemberChanges": { "type": "object", "properties": { "role": { "type": "string", "default": "commenter", "description": "Role of the board member.", "enum": ["viewer", "commenter", "editor", "coowner", "owner"] } } }, "BoardMemberWithLinks": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3074457353169356300" }, "name": { "type": "string", "description": "Name of the user.", "example": "John Smith" }, "role": { "type": "string", "description": "Role of the board member.", "enum": ["viewer", "commenter", "editor", "coowner", "owner"] }, "links": { "$ref": "#/components/schemas/SelfLink" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, `type` returns `board_member`.", "example": "board_member" } }, "required": ["id", "name", "type"] }, "BoardMembersInvite": { "type": "object", "properties": { "emails": { "type": "array", "description": "Email IDs of the users you want to invite to the board. You can invite up to 20 members per call.", "items": { "type": "string", "example": "member@email.com", "description": "Email IDs of the users you want to invite to the board. You can invite up to 20 members per call." }, "maxItems": 20, "minItems": 1 }, "role": { "type": "string", "default": "commenter", "description": "Role of the board member. Inviting users with the role `owner` has the same effect as the role `coowner`.", "enum": ["viewer", "commenter", "editor", "coowner", "owner"] }, "message": { "type": "string", "description": "The message that will be sent in the invitation email.", "example": "Hey there! Join my board and let's collaborate on this project!" } }, "required": ["emails"] }, "BoardMembersPagedResponse": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/BoardMember" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based).", "example": 1 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response. The `size` is the number of results returned considering the `offset` and the `limit` values sent in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`.
If there are `10` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `10`.
If there are `30` results, and the request has the offset set to `28` and the `limit` set to `20`, the `size` of the results will be `2` as the `offset` is the zero-based offset of the first item in the collection.", "example": 1 }, "offset": { "type": "integer", "format": "int32", "description": "Zero-based index of the first item in the collection. For example, If there are `30` results, and the request has the offset set to `28`, the response will return `2` results.", "example": 0 }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the offset parameter. In this example, you will set the offset parameter to 20 as the offset is zero-based.\n", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "type": { "type": "string" } } }, "BoardPermissionsPolicy": { "type": "object", "description": "Defines the permissions policies for the board.", "properties": { "collaborationToolsStartAccess": { "type": "string", "default": "all_editors", "description": "Defines who can start or stop timer, voting, video chat, screen sharing, attention management. Others will only be able to join. To change the value for the `collaborationToolsStartAccess` parameter, contact Miro Customer Support.", "enum": ["all_editors", "board_owners_and_coowners"] }, "copyAccess": { "type": "string", "default": "anyone", "description": "Defines who can copy the board, copy objects, download images, and save the board as a template or PDF.", "enum": ["anyone", "team_members", "team_editors", "board_owner"] }, "sharingAccess": { "type": "string", "default": "team_members_with_editing_rights", "description": "Defines who can change access and invite users to this board. To change the value for the `sharingAccess` parameter, contact Miro Customer Support.", "enum": ["team_members_with_editing_rights", "owner_and_coowners"] } } }, "BoardPolicy": { "type": "object", "description": "Defines the permissions policies and sharing policies for the board.", "properties": { "permissionsPolicy": { "$ref": "#/components/schemas/BoardPermissionsPolicy" }, "sharingPolicy": { "$ref": "#/components/schemas/BoardSharingPolicy" } } }, "BoardPolicyChange": { "type": "object", "description": "Defines the permissions policies and sharing policies for the board.", "properties": { "permissionsPolicy": { "$ref": "#/components/schemas/BoardPermissionsPolicy" }, "sharingPolicy": { "$ref": "#/components/schemas/BoardSharingPolicyChange" } } }, "BoardSharingPolicy": { "type": "object", "description": "Defines the public-level, organization-level, and team-level access for the board. The access level that a user gets depends on the highest level of access that results from considering the public-level, team-level, organization-level, and direct sharing access.", "properties": { "access": { "type": "string", "description": "Defines the public-level access to the board.", "enum": ["private", "view", "edit", "comment"] }, "accessPasswordRequired": { "type": "boolean", "description": "Defines if a password is required to access the board.", "default": false }, "inviteToAccountAndBoardLinkAccess": { "type": "string", "default": "no_access", "description": "Defines the user role when inviting a user via the invite to team and board link. For Enterprise users, the `inviteToAccountAndBoardLinkAccess` parameter is always set to `no_access`.", "enum": ["viewer", "commenter", "editor", "coowner", "owner", "guest", "no_access"] }, "organizationAccess": { "type": "string", "default": "private", "description": "Defines the organization-level access to the board. If the board is created for a team that does not belong to an organization, the `organizationAccess` parameter is always set to the default value.", "enum": ["private", "view", "comment", "edit"] }, "teamAccess": { "type": "string", "description": "Defines the team-level access to the board.", "enum": ["private", "view", "comment", "edit"] } } }, "BoardSharingPolicyChange": { "type": "object", "description": "Defines the public-level, organization-level, and team-level access for the board. The access level that a user gets depends on the highest level of access that results from considering the public-level, team-level, organization-level, and direct sharing access.", "properties": { "access": { "type": "string", "default": "private", "description": "Defines the public-level access to the board.", "enum": ["private", "view", "edit", "comment"] }, "inviteToAccountAndBoardLinkAccess": { "type": "string", "default": "no_access", "description": "Defines the user role when inviting a user via the invite to team and board link. For Enterprise users, the `inviteToAccountAndBoardLinkAccess` parameter is always set to `no_access` regardless of the value that you assign for this parameter.", "enum": ["viewer", "commenter", "editor", "no_access"] }, "organizationAccess": { "type": "string", "default": "private", "description": "Defines the organization-level access to the board. If the board is created for a team that does not belong to an organization, the `organizationAccess` parameter is always set to the default value.", "enum": ["private", "view", "comment", "edit"] }, "teamAccess": { "type": "string", "description": "Defines the team-level access to the board. By default, **edit** for the free plan and **private** for other plans.", "enum": ["private", "view", "comment", "edit"] } } }, "BoardWithLinks": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the board.", "example": "uXjVOD6LSME=" }, "name": { "type": "string", "description": "Name of the board.", "example": "Sample board name" }, "description": { "type": "string", "description": "Description of the board.", "example": "Sample board description" }, "team": { "$ref": "#/components/schemas/Team" }, "project": { "$ref": "#/components/schemas/BoardProject" }, "picture": { "$ref": "#/components/schemas/Picture" }, "policy": { "$ref": "#/components/schemas/BoardPolicy" }, "viewLink": { "type": "string", "description": "URL to view the board.", "example": "https://miro.com/app/board/uXjVOD6LSME=" }, "owner": { "$ref": "#/components/schemas/UserInfoShort" }, "currentUserMembership": { "$ref": "#/components/schemas/BoardMember" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was created. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "createdBy": { "$ref": "#/components/schemas/UserInfoShort" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last modified. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "modifiedBy": { "$ref": "#/components/schemas/UserInfoShort" }, "links": { "$ref": "#/components/schemas/BoardLinks" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `board`.", "example": "board" } }, "required": ["description", "id", "name", "type"] }, "BoardWithLinksAndLastOpened": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the board.", "example": "uXjVOD6LSME=" }, "name": { "type": "string", "description": "Name of the board.", "example": "Sample board name" }, "description": { "type": "string", "description": "Description of the board.", "example": "Sample board description" }, "team": { "$ref": "#/components/schemas/Team" }, "project": { "$ref": "#/components/schemas/BoardProject" }, "picture": { "$ref": "#/components/schemas/Picture" }, "policy": { "$ref": "#/components/schemas/BoardPolicy" }, "viewLink": { "type": "string", "description": "URL to view the board.", "example": "https://miro.com/app/board/uXjVOD6LSME=" }, "owner": { "$ref": "#/components/schemas/UserInfoShort" }, "currentUserMembership": { "$ref": "#/components/schemas/BoardMember" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was created. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "createdBy": { "$ref": "#/components/schemas/UserInfoShort" }, "lastOpenedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last opened by any user. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "lastOpenedBy": { "$ref": "#/components/schemas/GetBoardUserInfoLastOpenedBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last modified. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "modifiedBy": { "$ref": "#/components/schemas/UserInfoShort" }, "links": { "$ref": "#/components/schemas/BoardLinks" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `board`.", "example": "board" } }, "required": ["description", "id", "name", "type"] }, "BoardWithLinksAndWithoutProject": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the board.", "example": "uXjVOD6LSME=" }, "name": { "type": "string", "description": "Name of the board.", "example": "Sample board name" }, "description": { "type": "string", "description": "Description of the board.", "example": "Sample board description" }, "team": { "$ref": "#/components/schemas/Team" }, "picture": { "$ref": "#/components/schemas/Picture" }, "policy": { "$ref": "#/components/schemas/BoardPolicy" }, "viewLink": { "type": "string", "description": "URL to view the board.", "example": "https://miro.com/app/board/uXjVOD6LSME=" }, "owner": { "$ref": "#/components/schemas/UserInfoShort" }, "currentUserMembership": { "$ref": "#/components/schemas/BoardMember" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was created. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "createdBy": { "$ref": "#/components/schemas/UserInfoShort" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the board was last modified. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "modifiedBy": { "$ref": "#/components/schemas/UserInfoShort" }, "links": { "$ref": "#/components/schemas/BoardLinks" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `board`.", "example": "board" } }, "required": ["description", "id", "name", "type"] }, "BoardsPagedResponse": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/Board" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based).", "example": 1 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response. The `size` is the number of results returned considering the `offset` and the `limit` values sent in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`.
If there are `10` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `10`.
If there are `30` results, and the request has the offset set to `28` and the `limit` set to `20`, the `size` of the results will be `2` as the `offset` is the zero-based offset of the first item in the collection.", "example": 1 }, "offset": { "type": "integer", "format": "int32", "description": "Zero-based index of the first item in the collection. For example, If there are `30` results, and the request has the offset set to `28`, the response will return `2` results.", "example": 0 }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the offset parameter. In this example, you will set the offset parameter to 20 as the offset is zero-based.\n", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "type": { "type": "string" } } }, "Caption": { "type": "object", "description": "Contains the connector's caption data, such as content and its position.", "properties": { "content": { "type": "string", "description": "The text you want to display on the connector. Supports inline HTML tags.", "example": "

Caption text

", "maxLength": 200, "minLength": 0 }, "position": { "type": "string", "description": "The relative position of the text on the connector, in percentage, minimum 0%, maximum 100%. With 50% value, the text will be placed in the middle of the connector line. Default: 50%", "example": "50%" }, "textAlignVertical": { "type": "string", "description": "The vertical position of the text on the connector. Default: middle", "enum": ["top", "middle", "bottom"] } }, "required": ["content"] }, "CardCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CardData" }, "style": { "$ref": "#/components/schemas/CardStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "CardItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/CardData" }, "style": { "$ref": "#/components/schemas/CardStyle" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "card" } }, "required": ["id", "type"] }, "UpdateCardStyle": { "type": "object", "description": "Contains information about the style of a card item, such as the card theme.", "properties": { "cardTheme": { "type": "string", "description": "Hex value of the border color of the card.", "example": "#2d9bf0" } } }, "CardUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CardData" }, "style": { "$ref": "#/components/schemas/UpdateCardStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "ConnectorChangesData": { "type": "object", "description": "If both are provided, startItem.id must be different from endItem.id", "properties": { "startItem": { "$ref": "#/components/schemas/ItemConnectionChangesData" }, "endItem": { "$ref": "#/components/schemas/ItemConnectionChangesData" }, "shape": { "type": "string", "description": "The path type of the connector line, defines curvature. Default: curved.", "enum": ["straight", "elbowed", "curved"] }, "captions": { "type": "array", "description": "Blocks of text you want to display on the connector.", "items": { "$ref": "#/components/schemas/Caption" }, "maxItems": 20, "maxLength": 20, "minItems": 0 }, "style": { "$ref": "#/components/schemas/UpdateConnectorStyle" } } }, "ConnectorCreationData": { "type": "object", "description": "startItem.id must be different from endItem.id", "properties": { "startItem": { "$ref": "#/components/schemas/ItemConnectionCreationData" }, "endItem": { "$ref": "#/components/schemas/ItemConnectionCreationData" }, "shape": { "type": "string", "description": "The path type of the connector line, defines curvature. Default: curved.", "enum": ["straight", "elbowed", "curved"] }, "captions": { "type": "array", "description": "Blocks of text you want to display on the connector.", "items": { "$ref": "#/components/schemas/Caption" }, "maxItems": 20, "maxLength": 20, "minItems": 0 }, "style": { "$ref": "#/components/schemas/ConnectorStyle" } }, "required": ["endItem", "startItem"] }, "ConnectorStyle": { "type": "object", "description": "Contains information about the style of a connector, such as the color or caption font size", "properties": { "color": { "type": "string", "description": "Hex value representing the color for the captions on the connector. Default: `#1a1a1a`", "example": "#9510ac" }, "endStrokeCap": { "type": "string", "description": "The decoration cap of the connector end, like an arrow or circle. Default: stealth.", "enum": [ "none", "stealth", "rounded_stealth", "diamond", "filled_diamond", "oval", "filled_oval", "arrow", "triangle", "filled_triangle", "erd_one", "erd_many", "erd_only_one", "erd_zero_or_one", "erd_one_or_many", "erd_zero_or_many", "unknown" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the captions on the connector. Default: 14", "example": "15", "maximum": 288, "minimum": 10 }, "startStrokeCap": { "type": "string", "description": "The decoration cap of the connector end, like an arrow or circle. Default: none.", "enum": [ "none", "stealth", "rounded_stealth", "diamond", "filled_diamond", "oval", "filled_oval", "arrow", "triangle", "filled_triangle", "erd_one", "erd_many", "erd_only_one", "erd_zero_or_one", "erd_one_or_many", "erd_zero_or_many", "unknown" ] }, "strokeColor": { "type": "string", "description": "Hex value of the color of the connector line. Default: #000000.", "example": "#2d9bf0" }, "strokeStyle": { "type": "string", "description": "The stroke pattern of the connector line. Default: normal.", "enum": ["normal", "dotted", "dashed"] }, "strokeWidth": { "type": "string", "description": "The thickness of the connector line, in dp. Default: 1.0.", "example": "2.0", "maximum": 24, "minimum": 1 }, "textOrientation": { "type": "string", "description": "The captions orientation relatively to the connector line curvature. Default: aligned.", "enum": ["horizontal", "aligned"] } } }, "UpdateConnectorStyle": { "type": "object", "description": "Contains information about the style of a connector, such as the color or caption font size", "properties": { "color": { "type": "string", "description": "Hex value representing the color for the captions on the connector.", "example": "#9510ac" }, "endStrokeCap": { "type": "string", "description": "The decoration cap of the connector end, like an arrow or circle.", "enum": [ "none", "stealth", "rounded_stealth", "diamond", "filled_diamond", "oval", "filled_oval", "arrow", "triangle", "filled_triangle", "erd_one", "erd_many", "erd_only_one", "erd_zero_or_one", "erd_one_or_many", "erd_zero_or_many", "unknown" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the captions on the connector.", "example": "15", "maximum": 288, "minimum": 10 }, "startStrokeCap": { "type": "string", "description": "The decoration cap of the connector end, like an arrow or circle.", "enum": [ "none", "stealth", "rounded_stealth", "diamond", "filled_diamond", "oval", "filled_oval", "arrow", "triangle", "filled_triangle", "erd_one", "erd_many", "erd_only_one", "erd_zero_or_one", "erd_one_or_many", "erd_zero_or_many", "unknown" ] }, "strokeColor": { "type": "string", "description": "Hex value of the color of the connector line.", "example": "#2d9bf0" }, "strokeStyle": { "type": "string", "description": "The stroke pattern of the connector line.", "enum": ["normal", "dotted", "dashed"] }, "strokeWidth": { "type": "string", "description": "The thickness of the connector line, in dp.", "example": "2.0", "maximum": 24, "minimum": 1 }, "textOrientation": { "type": "string", "description": "The captions orientation relatively to the connector line curvature.", "enum": ["horizontal", "aligned"] } } }, "ConnectorWithLinks": { "type": "object", "description": "Contains the result data.", "properties": { "captions": { "type": "array", "description": "Blocks of text you want to display on the connector.", "items": { "$ref": "#/components/schemas/Caption" } }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the connector was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "endItem": { "$ref": "#/components/schemas/ItemConnectionWithLinks" }, "id": { "type": "string", "description": "Unique identifier (ID) of a connector.", "example": "3458764517517818867" }, "isSupported": { "type": "boolean", "description": "Indicates whether the connector is supported at the moment. If this parameter returns `false`, we do not support the connector at the moment. We do not allow updates for unsupported connectors and we might not return all data about the connector, such as intermediate points and connection points to the canvas." }, "links": { "$ref": "#/components/schemas/SelfLink" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the connector was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "shape": { "type": "string", "default": "curved", "description": "The path type of the connector line, defines curvature. Default: curved.", "enum": ["straight", "elbowed", "curved"] }, "startItem": { "$ref": "#/components/schemas/ItemConnectionWithLinks" }, "style": { "$ref": "#/components/schemas/ConnectorStyle" }, "type": { "type": "string", "description": "Type of board object that is returned." } }, "required": ["id"] }, "ConnectorsCursorPaged": { "type": "object", "properties": { "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.", "example": "MzQ1ODc2NDUyMjQ5MDA4Mjg5NX4=" }, "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/ConnectorWithLinks" } }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.", "example": 1 }, "total": { "type": "integer", "format": "int64" } } }, "DocFormatCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DocFormatMarkdownData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "DocFormatDataPlatform": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/DocFormatHtmlData" }, { "$ref": "#/components/schemas/DocFormatMarkdownData" } ], "discriminator": { "propertyName": "contentType", "mapping": { "html": "#/components/schemas/DocFormatHtmlData", "markdown": "#/components/schemas/DocFormatMarkdownData" } } }, "DocFormatMarkdownData": { "type": "object", "properties": { "contentType": { "type": "string", "enum": ["markdown"] }, "content": { "type": "string", "description": "a string of markdown text" }, "contentVersion": { "type": "number" } }, "required": ["contentType", "content"] }, "DocFormatHtmlData": { "type": "object", "properties": { "contentType": { "type": "string", "enum": ["html"] }, "content": { "type": "string", "description": "a string of html text" }, "contentVersion": { "type": "number" } }, "required": ["contentType", "content"] }, "DocFormatItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/DocFormatData" }, "position": { "$ref": "#/components/schemas/Position" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "doc_format" } }, "required": ["id", "type"] }, "DocumentCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DocumentUrlData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "DocumentUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DocumentUrlDataChanges" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "DocumentUrlDataChanges": { "type": "object", "description": "Contains information about the document URL.", "properties": { "title": { "type": "string", "description": "A short text header to identify the document." }, "url": { "type": "string", "description": "URL where the document is hosted.", "example": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" } } }, "EmbedCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/EmbedUrlData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioNoRotationGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "EmbedItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/EmbedData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "embed" } }, "required": ["id", "type"] }, "EmbedUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/EmbedUrlDataChanges" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioNoRotationGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "EmbedUrlDataChanges": { "type": "object", "description": "Contains information about the embed URL.", "properties": { "mode": { "type": "string", "description": "Defines how the content in the embed item is displayed on the board.\n`inline`: The embedded content is displayed directly on the board.\n`modal`: The embedded content is displayed inside a modal overlay on the board.", "enum": ["inline", "modal"] }, "previewUrl": { "type": "string", "description": "URL of the image to be used as the preview image for the embedded item." }, "url": { "type": "string", "description": "A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS.", "example": "https://www.youtube.com/watch?v=HlVSNEiFCBk" } } }, "FixedRatioNoRotationGeometry": { "type": "object", "description": "Contains geometrical information about the item. You can set either the width or height. You cannot set both the width and height at the same time.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels." } } }, "GenericItemUpdate": { "type": "object", "properties": { "parent": { "$ref": "#/components/schemas/Parent" }, "position": { "$ref": "#/components/schemas/PositionChange" } } }, "ImageCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ImageUrlData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "ImageUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ImageUrlDataChanges" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "InvitationError": { "type": "object", "description": "Contains information about the invites that failed.", "properties": { "email": { "type": "string", "description": "Email ID for which the invitation failed.", "example": "john.smith.demo@miro.com" }, "reason": { "type": "string", "description": "Reason why the invitation failed.", "example": "INVITATION_FAILED" } } }, "InvitationResult": { "type": "object", "properties": { "failed": { "type": "array", "description": "Contains information about the invites that failed.", "items": { "$ref": "#/components/schemas/InvitationError" } }, "successful": { "type": "array", "description": "Contains information about the invites that were successfully sent.", "example": 3074457350804038700, "items": { "type": "integer", "format": "int64", "description": "Contains information about the invites that were successfully sent.", "example": 3074457350804038700 } } } }, "ItemConnectionChangesData": { "type": "object", "description": "The ending point of the connector. If startItem is also provided, endItem.id must be different from startItem.id", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the item to which you want to attach the connector. Note that Frames are not supported at the moment.", "example": "3458764517517818867" }, "position": { "$ref": "#/components/schemas/RelativeOffset" }, "snapTo": { "type": "string", "description": "The side of the item connector should be attached to, the connection point will be placed in the middle of that side. Option `auto` allows to pick a connection point automatically. Only either `position` or `snapTo` parameter is allowed to be set, if neither provided `snapTo: auto` will be used by default.", "enum": ["auto", "top", "right", "bottom", "left"] } } }, "ItemConnectionCreationData": { "type": "object", "description": "The end point of the connector. endItem.id must be different from startItem.id", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the item to which you want to attach the connector. Note that Frames are not supported at the moment.", "example": "3458764517517818867" }, "position": { "$ref": "#/components/schemas/RelativeOffset" }, "snapTo": { "type": "string", "description": "The side of the item connector should be attached to, the connection point will be placed in the middle of that side. Option `auto` allows to pick a connection point automatically. Only either `position` or `snapTo` parameter is allowed to be set, if neither provided `snapTo: auto` will be used by default.", "enum": ["auto", "top", "right", "bottom", "left"] } } }, "ItemConnectionWithLinks": { "type": "object", "description": "The starting point of the connector.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the item the connector is attached to.", "example": "3458764517517818867" }, "links": { "$ref": "#/components/schemas/SelfLink" }, "position": { "$ref": "#/components/schemas/RelativeOffset" } } }, "BoardProject": { "type": "object", "description": "Contains information about the project with which the board is associated.", "properties": { "id": { "type": "string", "format": "int64", "description": "Unique identifier (ID) of the project.", "example": "3088887345710756000" } } }, "RelativeOffset": { "type": "object", "description": "The relative position of the point on an item where the connector is attached. Position with x=0% and y=0% correspond to the top-left corner of the item, x=100% and y=100% correspond to the right-bottom corner.", "properties": { "x": { "type": "string", "description": "X-axis relative coordinate of the location where the connector connects with an item, in percentage, minimum 0%, maximum 100%.", "example": "50%" }, "y": { "type": "string", "description": "Y-axis relative coordinate of the location where the connector connects with an item, in percentage, minimum 0%, maximum 100%.", "example": "0%" } } }, "UpdateShapeStyle": { "type": "object", "description": "Contains information about the shape style, such as the border color or opacity.", "properties": { "borderColor": { "type": "string", "description": "Defines the color of the border of the shape." }, "borderOpacity": { "type": "string", "description": "Defines the opacity level of the shape border.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid", "maximum": 1, "minimum": 0 }, "borderStyle": { "type": "string", "description": "Defines the style used to represent the border of the shape.", "enum": ["normal", "dotted", "dashed"] }, "borderWidth": { "type": "string", "description": "Defines the thickness of the shape border, in dp.", "maximum": 24, "minimum": 1 }, "color": { "type": "string", "description": "Hex value representing the color for the text within the shape item.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Fill color for the shape.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`", "example": "#8fd14f" }, "fillOpacity": { "type": "string", "description": "Opacity level of the fill color.\nPossible values: any number between `0` and `1`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid\n", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Defines the font type for the text in the shape item.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the text on the shape.", "maximum": 288, "minimum": 10 }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.", "enum": ["top", "middle", "bottom"] } } }, "StickyNoteCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/StickyNoteData" }, "style": { "$ref": "#/components/schemas/StickyNoteStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioNoRotationGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "StickyNoteItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/StickyNoteData" }, "style": { "$ref": "#/components/schemas/StickyNoteStyle" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "sticky_note" } }, "required": ["id", "type"] }, "UpdateStickyNoteStyle": { "type": "object", "description": "Contains information about the style of a sticky note item, such as the fill color or text alignment.", "properties": { "fillColor": { "type": "string", "description": "Fill color for the sticky note.", "enum": [ "gray", "light_yellow", "yellow", "orange", "light_green", "green", "dark_green", "cyan", "light_pink", "pink", "violet", "red", "light_blue", "blue", "dark_blue", "black" ] }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.", "enum": ["top", "middle", "bottom"] } } }, "StickyNoteUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/StickyNoteData" }, "style": { "$ref": "#/components/schemas/UpdateStickyNoteStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioNoRotationGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "TextCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TextData" }, "style": { "$ref": "#/components/schemas/TextStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/WidthOnlyAdjustableGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "TextItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/TextData" }, "style": { "$ref": "#/components/schemas/TextStyle" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "text" } }, "required": ["id", "type"] }, "UpdateTextStyle": { "type": "object", "description": "Contains information about the style of a text item, such as the fill color or font family.", "properties": { "color": { "type": "string", "description": "Hex value representing the color for the text within the text item.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Background color of the text item.", "example": "#e6e6e6" }, "fillOpacity": { "type": "string", "description": "Opacity level of the background color.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Font type for the text in the text item.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Font size, in dp.", "minimum": 1 }, "textAlign": { "type": "string", "description": "Horizontal alignment for the item's content.", "enum": ["left", "right", "center"] } } }, "TextUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/TextData" }, "style": { "$ref": "#/components/schemas/UpdateTextStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/WidthOnlyAdjustableGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "UserInfoShort": { "type": "object", "description": "Contains information about the user who created the board.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3074457353169356300" }, "name": { "type": "string", "description": "Name of the user.", "example": "John Smith" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } }, "required": ["id", "name", "type"] }, "UserInfoLastOpenedBy": { "type": "object", "description": "Contains information about the user who opened the board last.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3074457353169356300" }, "name": { "type": "string", "description": "Name of the user.", "example": "John Smith" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "GetBoardUserInfoLastOpenedBy": { "type": "object", "description": "Contains information about the user who last opened the board.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3074457353169356300" }, "name": { "type": "string", "description": "Name of the user.", "example": "John Smith" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } }, "required": ["id", "name", "type"] }, "WidthOnlyAdjustableGeometry": { "type": "object", "description": "Contains geometrical information about the item, such as its width or rotation. You can only specify the width of the text item as the height is dynamically updated based on the content.", "properties": { "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.\nThe minimum `width` of a `text` widget is relative to the font size of the `text` widget. The width must be at least 1.7 times wider than the font size.\nFor example, if the font size of the `text` item is `14`, the minimum `width` is `24`." } } }, "DocFormatData": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/DocFormatHtmlData" }, { "$ref": "#/components/schemas/DocFormatMarkdownData" } ], "discriminator": { "propertyName": "contentType", "mapping": { "html": "#/components/schemas/DocFormatHtmlData", "markdown": "#/components/schemas/DocFormatMarkdownData" } } }, "AppCardDataResponse": { "type": "object", "description": "Contains app card item data, such as the title, description, or fields.", "properties": { "description": { "type": "string", "description": "A short text description to add context about the app card.", "example": "Sample app card description" }, "fields": { "type": "array", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "items": { "$ref": "#/components/schemas/CustomField" } }, "owned": { "type": "boolean", "description": "Defines whether the card is owned by the application making the call." }, "status": { "type": "string", "description": "Status indicating whether an app card is connected and in sync with the source. When the source for the app card is deleted, the status returns `disabled`.", "enum": ["disconnected", "connected", "disabled"] }, "title": { "type": "string", "description": "A short text header to identify the app card.", "example": "sample app card item" } } }, "AppCardStylePlatformbulkcreateoperation": { "type": "object", "description": "Contains information about the style of an app card item, such as the fill color.", "properties": { "fillColor": { "type": "string", "description": "Hex value of the border color of the app card.\nDefault: `#2d9bf0`.", "example": "#2d9bf0" } } }, "CardDataPlatformbulkcreateoperation": { "type": "object", "description": "Contains card item data, such as the title, description, due date, or assignee ID.", "properties": { "assigneeId": { "type": "string", "format": "int64", "description": "Unique user identifier. In the GUI, the user ID is mapped to the name of the user who is assigned as the owner of the task or activity described in the card. The identifier is a string containing numbers, and it is automatically assigned to a user when they first sign up.", "example": "3074457362577955300" }, "description": { "type": "string", "description": "A short text description to add context about the card.", "example": "sample card description" }, "dueDate": { "type": "string", "format": "date-time", "description": "The date when the task or activity described in the card is due to be completed. In the GUI, users can select the due date from a calendar. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2023-10-12T22:00:55.000Z" }, "title": { "type": "string", "default": "sample card item", "description": "A short text header for the card.", "example": "sample card item" } } }, "CardStylePlatformbulkcreateoperation": { "type": "object", "description": "Contains information about the style of a card item, such as the card theme.", "properties": { "cardTheme": { "type": "string", "description": "Hex value of the border color of the card.\nDefault: `#2d9bf0`.", "example": "#2d9bf0" } } }, "DocumentUrlDataPlatformbulkcreateoperation": { "type": "object", "description": "Contains information about the document URL.", "properties": { "title": { "type": "string", "description": "A short text header to identify the document.", "example": "Sample document title" }, "url": { "type": "string", "default": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "description": "URL where the document is hosted.", "example": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" } }, "required": ["url"] }, "EmbedUrlDataPlatformbulkcreateoperation": { "type": "object", "description": "Contains information about the embed URL.", "properties": { "mode": { "type": "string", "description": "Defines how the content in the embed item is displayed on the board.\n`inline`: The embedded content is displayed directly on the board.\n`modal`: The embedded content is displayed inside a modal overlay on the board.", "enum": ["inline", "modal"] }, "previewUrl": { "type": "string", "description": "URL of the image to be used as the preview image for the embedded item." }, "url": { "type": "string", "default": "https://www.youtube.com/watch?v=HlVSNEiFCBk", "description": "A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS." } }, "required": ["url"] }, "EmbedDataResponse": { "type": "object", "properties": { "contentType": { "type": "string", "description": "Type of the embedded item's content.", "example": "video" }, "description": { "type": "string", "description": "Short description of the embedded item.", "example": "So this is how to organize your life with Miro (a virtual whiteboard) for collaboration, brainstorming, and project management. Students, designers, agile en..." }, "html": { "type": "string", "description": "HTML code of the embedded item.", "example": "" }, "mode": { "type": "string", "description": "Defines how the content in the embed item is displayed on the board.\n`inline`: The embedded content is displayed directly on the board.\n`modal`: The embedded content is displayed inside a modal overlay on the board.", "enum": ["inline", "modal"] }, "previewUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL.\nThe URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters:\n`format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, 'image/svg', or 'image/jpg', depending on the original image type.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false" }, "providerName": { "type": "string", "description": "Name of the content's provider.", "example": "YouTube" }, "providerUrl": { "type": "string", "description": "Url of the content's provider.", "example": "https://www.youtube.com/" }, "title": { "type": "string", "description": "Title of the embedded item.", "example": "HOW TO ORGANIZE YOUR LIFE WITH MIRO! ?? Virtual Whiteboard Tour" }, "url": { "type": "string", "description": "A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS.", "example": "https://www.youtube.com/watch?v=HlVSNEiFCBk" } } }, "ShapeStyle": { "type": "object", "description": "Contains information about the shape style, such as the border color or opacity.", "properties": { "borderColor": { "type": "string", "description": "Defines the color of the border of the shape.\nDefault: `#1a1a1a` (dark gray)." }, "borderOpacity": { "type": "string", "description": "Defines the opacity level of the shape border.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid\nDefault: `1.0` (solid color).", "maximum": 1, "minimum": 0 }, "borderStyle": { "type": "string", "description": "Defines the style used to represent the border of the shape.\nDefault: `normal`.", "enum": ["normal", "dotted", "dashed"] }, "borderWidth": { "type": "string", "description": "Defines the thickness of the shape border, in dp.\nDefault: `2.0`.", "maximum": 24, "minimum": 1 }, "color": { "type": "string", "description": "Hex value representing the color for the text within the shape item.\nDefault: `#1a1a1a`.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Fill color for the shape.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`\nDefault: #ffffff.", "example": "#8fd14f" }, "fillOpacity": { "type": "string", "description": "Opacity level of the fill color.\nPossible values: any number between `0` and `1`, where:\n`0.0`: the background color is completely transparent or invisible.\n`1.0`: the background color is completely opaque or solid.\n\n Default: `1.0` if `fillColor` is provided, `0.0` if `fillColor` is not provided.\n", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Defines the font type for the text in the shape item.\nDefault: `arial`.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the text on the shape.\nDefault: `14`.", "maximum": 288, "minimum": 10 }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.\nDefault: `center`.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.\nDefault: `top`.", "enum": ["top", "middle", "bottom"] } } }, "StickyNoteDataPlatformbulkcreateoperation": { "type": "object", "description": "Contains sticky note item data, such as the content or shape of the sticky note.", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the sticky note item.", "example": "Hello" }, "shape": { "type": "string", "default": "square", "description": "Defines the geometric shape of the sticky note and aspect ratio for its dimensions.", "enum": ["square", "rectangle"] } } }, "StickyNoteStylePlatformbulkcreateoperation": { "type": "object", "description": "Contains information about the style of a sticky note item, such as the fill color or text alignment.", "properties": { "fillColor": { "type": "string", "description": "Fill color for the sticky note.\nDefault: `light_yellow`.", "enum": [ "gray", "light_yellow", "yellow", "orange", "light_green", "green", "dark_green", "cyan", "light_pink", "pink", "violet", "red", "light_blue", "blue", "dark_blue", "black" ] }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.\nDefault: `center`.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.\nDefault: `top`.", "enum": ["top", "middle", "bottom"] } } }, "TextDataPlatformbulkcreateoperation": { "type": "object", "description": "Contains text item data, such as the title, content, or description. For more information on the JSON properties, see [Data](https://developers.miro.com/reference/data).", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the text item.", "example": "Hello" } }, "required": ["content"] }, "TextStyle": { "type": "object", "description": "Contains information about the style of a text item, such as the fill color or font family.", "properties": { "color": { "type": "string", "description": "Hex value representing the color for the text within the text item.\nDefault: `#1a1a1a`.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Background color of the text item.\nDefault: `#ffffff`.", "example": "#e6e6e6" }, "fillOpacity": { "type": "string", "description": "Opacity level of the background color.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible.\n`1.0`: the background color is completely opaque or solid.\nDefault: `1.0` if `fillColor` is provided, `0.0` if `fillColor` is not provided.", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Font type for the text in the text item.\nDefault: `arial`.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Font size, in dp.\nDefault: `14`.", "minimum": 1 }, "textAlign": { "type": "string", "description": "Horizontal alignment for the item's content.\nDefault: `center.`", "enum": ["left", "right", "center"] } } }, "CustomFieldPlatformbulkcreateoperation": { "type": "object", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "properties": { "fillColor": { "type": "string", "description": "Hex value representing the color that fills the background area of the preview field, when it's displayed on the app card.", "example": "#2fa9e3" }, "iconShape": { "type": "string", "default": "round", "description": "The shape of the icon on the preview field.", "enum": ["round", "square"] }, "iconUrl": { "type": "string", "description": "A valid URL pointing to an image available online.\nThe transport protocol must be HTTPS.\nPossible image file formats: JPG/JPEG, PNG, SVG.", "example": "https://cdn-icons-png.flaticon.com/512/5695/5695864.png" }, "textColor": { "type": "string", "description": "Hex value representing the color of the text string assigned to `value`.", "example": "#1a1a1a" }, "tooltip": { "type": "string", "description": "A short text displayed in a tooltip when clicking or hovering over the preview field.", "example": "Completion status indicator" }, "value": { "type": "string", "description": "The actual data value of the custom field.\nIt can be any type of information that you want to convey.", "example": "Status: in progress" } } }, "GeometryPlatformbulkcreateoperation": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "ItemChanges": { "type": "object", "description": "Updates one or more items in one request. You can update up to 20 items per request.", "properties": { "id": { "$ref": "#/components/schemas/ItemId" }, "type": { "$ref": "#/components/schemas/ItemTypeChange" }, "data": { "$ref": "#/components/schemas/ItemDataChanges" }, "style": { "$ref": "#/components/schemas/ItemStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "ItemCreate": { "type": "object", "description": "Creates one or more items in one request. You can create up to 20 items per request.", "properties": { "type": { "$ref": "#/components/schemas/ItemTypeChange" }, "data": { "$ref": "#/components/schemas/ItemDataCreate" }, "style": { "$ref": "#/components/schemas/ItemStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["type"] }, "ItemDataChanges": { "type": "object", "description": "Provides information about item-specific fields for update request.", "oneOf": [ { "$ref": "#/components/schemas/AppCardData" }, { "$ref": "#/components/schemas/ImageUrlDataChanges" } ] }, "ItemDataCreate": { "type": "object", "description": "Contains data information applicable for each item type.", "oneOf": [ { "$ref": "#/components/schemas/AppCardData" }, { "$ref": "#/components/schemas/CardData" }, { "$ref": "#/components/schemas/DocumentUrlData" }, { "$ref": "#/components/schemas/EmbedUrlData" }, { "$ref": "#/components/schemas/ImageUrlData" }, { "$ref": "#/components/schemas/ShapeData" }, { "$ref": "#/components/schemas/StickyNoteData" }, { "$ref": "#/components/schemas/TextData" } ] }, "ItemsPage": { "type": "object", "description": "Contains cursor-based items page information.", "properties": { "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.", "example": 1 }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.", "example": 10 }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available for the given request.", "example": 11 }, "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/Item" } }, "links": { "$ref": "#/components/schemas/PageLinks" }, "type": { "type": "string", "description": "Type of the object.", "example": "cursor-list" } }, "required": ["type", "size", "limit", "total", "data", "links"] }, "ItemStyle": { "type": "object", "description": "Contains information about item-specific styles.", "oneOf": [ { "$ref": "#/components/schemas/AppCardStyle" }, { "$ref": "#/components/schemas/CardStyle" }, { "$ref": "#/components/schemas/ShapeStyle" }, { "$ref": "#/components/schemas/StickyNoteStyle" }, { "$ref": "#/components/schemas/TextStyle" } ] }, "ItemTypeChange": { "type": "string", "description": "Type of item that you want to create.", "enum": ["app_card", "text", "shape", "sticky_note", "image", "document", "card", "frame", "embed"], "example": "text" }, "ImageUrlData": { "type": "object", "description": "Contains information about the image URL.", "properties": { "title": { "type": "string", "description": "A short text header to identify the image.", "example": "Sample image title" }, "url": { "type": "string", "default": "https://miro.com/static/images/page/mr-index/localization/en/slider/ideation_brainstorming.png", "description": "URL of the image.", "example": "https://miro.com/static/images/page/mr-index/localization/en/slider/ideation_brainstorming.png" } }, "required": ["url"] }, "ImageUrlDataChanges": { "type": "object", "description": "Contains information about the image URL.", "properties": { "title": { "type": "string", "description": "A short text header to identify the image.", "example": "Test image title" }, "url": { "type": "string", "description": "URL of the image.", "example": "https://miro.com/static/images/page/mr-index/localization/en/slider/ideation_brainstorming.png" } } }, "Error": { "type": "object", "description": "Error information", "properties": { "code": { "type": "string", "description": "Code of the error", "example": 2.074 }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "context": { "type": "object" }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 }, "type": { "type": "string", "description": "Type of entity that is returned.", "example": "error" } }, "required": ["message", "type"] }, "BulkOperationError": { "type": "object", "description": "Error information with details about operation failure", "properties": { "type": { "type": "string", "description": "Type of the error", "example": "error" }, "code": { "type": "string", "description": "Code of the error", "example": 2.074 }, "message": { "type": "string", "description": "Description of the error", "example": "Error message" }, "context": { "type": "object", "properties": { "fields": { "type": "array", "items": { "$ref": "#/components/schemas/BulkSubOperationError" } } } }, "status": { "type": "integer", "format": "int32", "description": "Status code of the error", "example": 400 } }, "required": ["message"] }, "BulkSubOperationError": { "type": "object", "properties": { "field": { "type": "string", "description": "0-based index indicating a sub-operations from the input that caused a failure followed by parameter name" }, "message": { "type": "string", "description": "Description of the sub-operation related error", "example": "Invalid parameters" }, "context": { "type": "object" } }, "required": ["field", "message"] }, "AppCardStyle": { "type": "object", "description": "Contains information about the style of an app card item, such as the fill color.", "properties": { "fillColor": { "type": "string", "description": "Hex value of the border color of the app card.\nDefault: `#2d9bf0`.", "example": "#2d9bf0" } } }, "CardStyle": { "type": "object", "description": "Contains information about the style of a card item, such as the card theme.", "properties": { "cardTheme": { "type": "string", "description": "Hex value of the border color of the card.\nDefault: `#2d9bf0`.", "example": "#2d9bf0" } } }, "DocumentUrlData": { "type": "object", "description": "Contains information about the document URL.", "properties": { "title": { "type": "string", "description": "A short text header to identify the document.", "example": "Sample document title" }, "url": { "type": "string", "default": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", "description": "URL where the document is hosted.", "example": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" } }, "required": ["url"] }, "EmbedUrlData": { "type": "object", "description": "Contains information about the embed URL.", "properties": { "mode": { "type": "string", "description": "Defines how the content in the embed item is displayed on the board.\n`inline`: The embedded content is displayed directly on the board.\n`modal`: The embedded content is displayed inside a modal overlay on the board.", "enum": ["inline", "modal"] }, "previewUrl": { "type": "string", "description": "URL of the image to be used as the preview image for the embedded item." }, "url": { "type": "string", "default": "https://www.youtube.com/watch?v=HlVSNEiFCBk", "description": "A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS." } }, "required": ["url"] }, "StickyNoteStyle": { "type": "object", "description": "Contains information about the style of a sticky note item, such as the fill color or text alignment.", "properties": { "fillColor": { "type": "string", "description": "Fill color for the sticky note.\nDefault: `light_yellow`.", "enum": [ "gray", "light_yellow", "yellow", "orange", "light_green", "green", "dark_green", "cyan", "light_pink", "pink", "violet", "red", "light_blue", "blue", "dark_blue", "black" ] }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.\nDefault: `center`.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.\nDefault: `top`.", "enum": ["top", "middle", "bottom"] } } }, "FrameChanges": { "type": "object", "description": "Contains frame item data, such as the title, frame type, or frame format.", "properties": { "format": { "type": "string", "default": "custom", "description": "Only custom frames are supported at the moment.", "enum": ["custom"] }, "title": { "type": "string", "default": "Sample frame title", "description": "Title of the frame. This title appears at the top of the frame." }, "type": { "type": "string", "default": "freeform", "description": "Only free form frames are supported at the moment.", "enum": ["freeform"] }, "showContent": { "type": "boolean", "default": true, "description": "Hide or reveal the content inside a frame (Enterprise plan only)." } } }, "FrameCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/FrameChanges" }, "style": { "$ref": "#/components/schemas/FrameStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/GeometryNoRotation" } }, "required": ["data"] }, "FrameDataPlatformContainers": { "type": "object", "description": "Contains frame item data, such as the title, frame type, or frame format.", "properties": { "format": { "type": "string", "default": "custom", "description": "Only custom frames are supported at the moment.", "enum": ["custom", "desktop", "phone", "tablet", "a4", "letter", "ratio_1x1", "ratio_4x3", "ratio_16x9"] }, "title": { "type": "string", "description": "Title of the frame. This title appears at the top of the frame.", "example": "Sample frame title" }, "type": { "type": "string", "default": "freeform", "description": "Only free form frames are supported at the moment.", "enum": ["freeform", "heap", "grid", "rows", "columns", "unknown"] }, "showContent": { "type": "boolean", "default": true, "description": "Hide or reveal the content inside a frame (Enterprise plan only)." } } }, "FrameItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/FrameData" }, "style": { "$ref": "#/components/schemas/FrameStyle" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "frame" } }, "required": ["id", "type"] }, "FrameStyle": { "type": "object", "description": "Contains information about the style of a frame item, such as the fill color.", "properties": { "fillColor": { "type": "string", "description": "Fill color for the frame.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`\nDefault: #ffffffff (transparent).", "example": "#ffffffff" } } }, "UpdateFrameStyle": { "type": "object", "description": "Contains information about the style of a frame item, such as the fill color.", "properties": { "fillColor": { "type": "string", "description": "Fill color for the frame.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`", "example": "#ffffffff" } } }, "FrameUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/FrameChanges" }, "style": { "$ref": "#/components/schemas/UpdateFrameStyle" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/GeometryNoRotation" } } }, "GenericItemCursorPagedPlatformContainers": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/GenericItem" } }, "total": { "type": "integer", "format": "int64" }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.", "example": 1 }, "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.", "example": "MzQ1ODc2NDUyMjQ5MDA4Mjg5NX4=" }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" } } }, "GeometryPlatformContainers": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "GeometryNoRotation": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels." } } }, "OpaqueData": { "type": "object" }, "ParentLinksEnvelopePlatformContainers": { "type": "object", "description": "Contains information about the parent frame for the item.", "properties": { "id": { "type": "string", "format": "int64", "description": "Unique identifier (ID) of the parent frame for the item.", "example": "3074457362577955300" }, "links": { "$ref": "#/components/schemas/SelfLink" } } }, "WidgetLinksPlatformContainers": { "type": "object", "description": "Contains applicable links for the item.", "properties": { "related": { "type": "string", "description": "Link to obtain information about the child items related to the frame.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/items?parent_item_id=307445734914369434&limit=10&cursor=" }, "self": { "type": "string", "description": "Link to obtain information about the current item.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/item/3074457349143649487" } } }, "createdByPlatformContainers": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "modifiedByPlatformContainers": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "DocumentDataResponsePlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "properties": { "documentUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter to control the request execution.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned is `application/octet-stream`.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the document.", "example": "Sample document title" } } }, "GeometryPlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "Item": { "type": "object", "description": "Contains information about an item.", "properties": { "id": { "$ref": "#/components/schemas/ItemId" }, "type": { "type": "string", "description": "Type of item.", "example": "document" }, "data": { "$ref": "#/components/schemas/ItemData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/ParentWithLinks" }, "createdBy": { "$ref": "#/components/schemas/CreatedBy" }, "createdAt": { "$ref": "#/components/schemas/CreationTime" }, "modifiedBy": { "$ref": "#/components/schemas/ModifiedBy" }, "modifiedAt": { "$ref": "#/components/schemas/ModificationTime" }, "links": { "$ref": "#/components/schemas/SelfLink" } }, "required": ["id", "type", "links"] }, "ItemData": { "type": "object", "description": "Contains information about item-specific data.", "oneOf": [ { "$ref": "#/components/schemas/DocumentDataResponse" }, { "$ref": "#/components/schemas/ImageDataResponse" } ] }, "ItemIdPlatformcreateitemsinbulkusingfilefromdevice": { "type": "string", "description": "Unique identifier (ID) of an item.", "format": "int64", "example": "3458764517517819000" }, "Items": { "type": "object", "description": "Contains items resulting from a bulk create or update operation.", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/Item" } }, "type": { "type": "string", "description": "Type of the object.", "example": "bulk-list" } }, "required": ["type", "data"] }, "ImageDataResponsePlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "properties": { "imageUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters: `format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`. `redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file. If the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, 'image/svg', or 'image/jpg', depending on the original image type.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the image.", "example": "Sample image title" } } }, "CreationTimePlatformcreateitemsinbulkusingfilefromdevice": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "ModificationTimePlatformcreateitemsinbulkusingfilefromdevice": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "CreatedByPlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "ModifiedByPlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "ParentWithLinksPlatformcreateitemsinbulkusingfilefromdevice": { "type": "object", "description": "Contains information about the parent this item attached to.", "properties": { "id": { "type": "string", "format": "int64", "example": "3458764517517819001", "description": "Unique identifier (ID) of a container item." }, "links": { "$ref": "#/components/schemas/SelfLink" } } }, "XCoordinatePlatformcreateitemsinbulkusingfilefromdevice": { "type": "number", "format": "double", "description": "X-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 }, "YCoordinatePlatformcreateitemsinbulkusingfilefromdevice": { "type": "number", "format": "double", "description": "Y-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 }, "DocumentDataResponse": { "type": "object", "properties": { "documentUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter to control the request execution.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned is `application/octet-stream`.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the document.", "example": "Sample document title" } } }, "ItemId": { "type": "string", "description": "Unique identifier (ID) of an item.", "format": "int64", "example": "3458764517517819000" }, "ImageDataResponse": { "type": "object", "properties": { "imageUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters: `format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`. `redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file. If the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, 'image/svg', or 'image/jpg', depending on the original image type.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the image.", "example": "Sample image title" } } }, "CreationTime": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "ModificationTime": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "ParentWithLinks": { "type": "object", "description": "Contains information about the parent this item attached to.", "properties": { "id": { "type": "string", "format": "int64", "example": "3458764517517819001", "description": "Unique identifier (ID) of a container item." }, "links": { "$ref": "#/components/schemas/SelfLink" } } }, "XCoordinate": { "type": "number", "format": "double", "description": "X-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 }, "YCoordinate": { "type": "number", "format": "double", "description": "Y-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 }, "BoardSubscription": { "type": "object", "properties": { "callbackUrl": { "type": "string", "description": "Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.", "example": "https://api.asana.com/v2/webhooks_endpoint" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the webhook subscription was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "data": { "$ref": "#/components/schemas/BoardSubscriptionData" }, "id": { "type": "string", "description": "Unique identifier (ID) of a webhook subscription.", "example": "99c152bb-8259-4c7a-96d8-ad8eef47ecd4" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the webhook subscription was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "status": { "type": "string", "default": "enabled", "description": "Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board.\n`disabled`: Miro does not send a webhook even when an event occurs in the associated board.\n`lost_access`: The user with which the webhook subscription is associated has lost access to the board.\nThe user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.", "enum": ["enabled", "disabled", "lost_access"] }, "type": { "type": "string", "description": "The type of object associated with the webhook subscription.", "example": "board_subscription" } } }, "BoardSubscriptionData": { "type": "object", "description": "Contains information about a webhook subscription, such as the board ID associated with the webhook subscription, the date and time when the webhook subscription was last updated, and the type of board item that the subscription is associated with.", "properties": { "boardId": { "type": "string", "description": "[Unique identifier (ID) of the board](https://developers.miro.com/reference/board-model) with which the webhook subscription is associated.", "example": "uXjVOfjmfkE=" } } }, "CreateBoardSubscriptionRequest": { "type": "object", "description": "Contains the board ID associated with the webhook subscription, the webhook callback URL, and the status of the webhook subscription.", "properties": { "boardId": { "type": "string", "description": "[Unique identifier (ID) of the board](https://developers.miro.com/reference/board-model) that you want to associate with the webhook subscription." }, "callbackUrl": { "type": "string", "description": "Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.", "example": "https://yourwebhooklistener.com/v2/webhooks_endpoint", "maxLength": 256, "minLength": 8, "pattern": "^https:\\/\\/(.*)" }, "status": { "type": "string", "default": "enabled", "description": "Indicates whether the status of the webhook subscription.`enabled`: Miro sends a webhook when an event occurs in the associated board.\n`disabled`: Miro does not send a webhook even when an event occurs in the associated board.\n`lost_access`: The user with which the webhook subscription is associated has lost access to the board.\nThe user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.", "enum": ["enabled", "disabled"] } } }, "GenericSubscription": { "type": "object", "properties": { "callbackUrl": { "type": "string", "description": "Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.", "example": "https://api.asana.com/v2/webhooks_endpoint" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the webhook subscription was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "data": { "$ref": "#/components/schemas/SubscriptionData" }, "id": { "type": "string", "description": "Unique identifier (ID) of a webhook subscription.", "example": "99c152bb-8259-4c7a-96d8-ad8eef47ecd4" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the webhook subscription was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "status": { "type": "string", "default": "enabled", "description": "Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board.\n`disabled`: Miro does not send a webhook even when an event occurs in the associated board.\n`lost_access`: The user with which the webhook subscription is associated has lost access to the board.\nThe user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.", "enum": ["enabled", "disabled", "lost_access"] }, "type": { "type": "string", "description": "The type of object associated with the webhook subscription.", "example": "board_subscription" } } }, "GenericSubscriptionsCursorPaged": { "type": "object", "properties": { "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.", "example": "MzQ1ODc2NDUyMjQ5MDA4Mjg5NX4=" }, "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/GenericSubscription" } }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.", "example": 20 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.", "example": 1 }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based)." } } }, "SubscriptionData": { "type": "object", "description": "Contains information about a webhook subscription, such as the board ID that the webhook subscription is associated with.", "oneOf": [ { "$ref": "#/components/schemas/BoardSubscriptionData" } ] }, "UpdateBoardSubscriptionRequest": { "type": "object", "description": "Contains updated information about a subscription.", "properties": { "callbackUrl": { "type": "string", "description": "Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.", "example": "https://yourwebhooklistener.com/v2/webhooks_endpoint", "maxLength": 256, "minLength": 8, "pattern": "^https:\\/\\/(.*)" }, "status": { "type": "string", "default": "enabled", "description": "Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board.\n`disabled`: Miro does not send a webhook even when an event occurs in the associated board.\n`lost_access`: The user with which the webhook subscription is associated has lost access to the board.\nThe user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.", "enum": ["enabled", "disabled"] } } }, "MindmapCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/MindmapDataForCreate" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/MindMapNodeGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } }, "required": ["data"] }, "MindmapDataForCreate": { "type": "object", "description": "Contains mind map node data, such as the title, content, or description.", "properties": { "nodeView": { "$ref": "#/components/schemas/MindmapNode" } }, "required": ["nodeView"] }, "MindmapNode": { "type": "object", "description": "Contains information like data about the mind map node.", "properties": { "data": { "$ref": "#/components/schemas/MindmapNodeTextData" } } }, "MindmapNodeTextData": { "type": "object", "description": "Contains the information about the mind map text.", "properties": { "type": { "type": "string", "description": "Type of item used as mind map node. Currently, `type` can only be equal to `text`.", "example": "text" }, "content": { "type": "string", "description": "The actual text (content) that appears in the mind map node.", "example": "Sample text" } }, "required": ["type"] }, "MindmapData": { "type": "object", "description": "Contains mind map node data, such as `nodeView` or `isRoot`.", "properties": { "nodeView": { "$ref": "#/components/schemas/MindmapNodeView" }, "isRoot": { "type": "boolean", "description": "Indicates whether this node is the root of the mind map." }, "direction": { "type": "string", "description": "Indicates where this node is positioned relative to the root node. `start` indicates that this node must be positioned at the start of the root node, which is either the left or top of the root node. `end` indicates that this node must be positioned at the emd of the root node, which is either the right or bottom of the root node.", "enum": ["start", "end"] } } }, "MindmapNodeView": { "type": "object", "description": "Contains the information about the mind map node.", "properties": { "type": { "type": "string", "description": "Type of item used as mind map node. Currently, `type` can only be equal to `text`.", "example": "text" }, "data": { "$ref": "#/components/schemas/MindmapWidgetDataOutput" }, "style": { "$ref": "#/components/schemas/MindmapNodeStyle" } } }, "MindmapItem": { "type": "object", "properties": { "id": { "type": "string", "format": "int64", "description": "Unique identifier (ID) of an item.", "example": "3074457362577955300" }, "data": { "$ref": "#/components/schemas/MindmapData" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "createdBy": { "$ref": "#/components/schemas/CreatedBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC))." }, "modifiedBy": { "$ref": "#/components/schemas/ModifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned." }, "style": { "$ref": "#/components/schemas/MindmapStyle" } }, "required": ["id", "type"] }, "MindmapCursorPaged": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/MindmapItem" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based)." }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.'" }, "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.'" }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.'" }, "links": { "$ref": "#/components/schemas/PageLinks" } } }, "CreatedByPlatformExperimentalFeatures": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "ModifiedByPlatformExperimentalFeatures": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "GenericItemCursorPaged": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/GenericItem" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based)." }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request. For example, if there are `20` results, the request does not have a `cursor` value, and the `limit` set to `10`, the `size` of the results will be `10`.
In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection.", "example": 1 }, "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.", "example": "MzQ1ODc2NDUyMjQ5MDA4Mjg5NX4=" }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `20` results, the request has no `cursor` value, and the `limit` is set to `20`,the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the `cursor` parameter value that you obtained from the response.", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" } } }, "PageLinksPlatformExperimentalFeatures": { "type": "object", "description": "Contains pagination links for the collection.", "properties": { "first": { "type": "string", "description": "Link to retrieve information in the first page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NaSDN&#RDMDA3MzYyOX==" }, "last": { "type": "string", "description": "Link to the retrieve information in the last page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NDUyNDUyMDA3MzYyOX==" }, "next": { "type": "string", "description": "Link to retrieve information in the next page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NDUyNDsdgsFEwfFJCw==" }, "prev": { "type": "string", "description": "Link to retrieve information in the previous page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=" }, "self": { "type": "string", "description": "Link to retrieve information in the current page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1OD1245643FWUyMDA3MzYyOX==" } } }, "MindmapWidgetDataOutput": { "oneOf": [ { "$ref": "#/components/schemas/TextData" } ], "description": "Contains the mind map node data, such as the item title, content, or description." }, "ShapeCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ShapeDataForCreate" }, "style": { "$ref": "#/components/schemas/ShapeStyleForCreate" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "ShapeDataForCreate": { "type": "object", "description": "Contains shape item data, such as the content or the type of the shape.", "properties": { "content": { "type": "string", "description": "The text you want to display on the shape.\n
**Not supported for shapes:**\n
    \n
  • flow_chart_or
  • \n
  • flow_chart_summing_junction
  • \n
", "example": "Hello" }, "shape": { "type": "string", "default": "rectangle", "description": "Defines the geometric shape of the item when it is rendered on the board.
\n Basic shapes\n
    \n
  • rectangle
  • \n
  • round_rectangle
  • \n
  • circle
  • \n
  • triangle
  • \n
  • rhombus
  • \n
  • parallelogram
  • \n
  • trapezoid
  • \n
  • pentagon
  • \n
  • hexagon
  • \n
  • octagon
  • \n
  • wedge_round_rectangle_callout
  • \n
  • star
  • \n
  • flow_chart_predefined_process
  • \n
  • cloud
  • \n
  • cross
  • \n
  • can
  • \n
  • right_arrow
  • \n
  • left_arrow
  • \n
  • left_right_arrow
  • \n
  • left_brace
  • \n
  • right_brace
  • \n
\n
\n
\n Flowchart shapes\n
    \n
  • flow_chart_connector
  • \n
  • flow_chart_magnetic_disk
  • \n
  • flow_chart_input_output
  • \n
  • flow_chart_decision
  • \n
  • flow_chart_delay
  • \n
  • flow_chart_display
  • \n
  • flow_chart_document
  • \n
  • flow_chart_magnetic_drum
  • \n
  • flow_chart_internal_storage
  • \n
  • flow_chart_manual_input
  • \n
  • flow_chart_manual_operation
  • \n
  • flow_chart_merge
  • \n
  • flow_chart_multidocuments
  • \n
  • flow_chart_note_curly_left
  • \n
  • flow_chart_note_curly_right
  • \n
  • flow_chart_note_square
  • \n
  • flow_chart_offpage_connector
  • \n
  • flow_chart_or
  • \n
  • flow_chart_predefined_process_2
  • \n
  • flow_chart_preparation
  • \n
  • flow_chart_process
  • \n
  • flow_chart_online_storage
  • \n
  • flow_chart_summing_junction
  • \n
  • flow_chart_terminator
  • \n
\n
" } } }, "ShapeDataForUpdate": { "type": "object", "description": "Contains shape item data, such as the content or the type of the shape.", "properties": { "content": { "type": "string", "description": "The text you want to display on the shape.\n**Note: When updating a shape type to one of the types below, existing `content` will be lost.**\n
**Not supported for shapes:**\n
    \n
  • flow_chart_or
  • \n
  • flow_chart_summing_junction
  • \n
", "example": "Hello" }, "shape": { "type": "string", "default": "rectangle", "description": "Defines the geometric shape of the item when it is rendered on the board.
\n Basic shapes\n
    \n
  • rectangle
  • \n
  • round_rectangle
  • \n
  • circle
  • \n
  • triangle
  • \n
  • rhombus
  • \n
  • parallelogram
  • \n
  • trapezoid
  • \n
  • pentagon
  • \n
  • hexagon
  • \n
  • octagon
  • \n
  • wedge_round_rectangle_callout
  • \n
  • star
  • \n
  • flow_chart_predefined_process
  • \n
  • cloud
  • \n
  • cross
  • \n
  • can
  • \n
  • right_arrow
  • \n
  • left_arrow
  • \n
  • left_right_arrow
  • \n
  • left_brace
  • \n
  • right_brace
  • \n
\n
\n
\n Flowchart shapes\n
    \n
  • flow_chart_connector
  • \n
  • flow_chart_magnetic_disk
  • \n
  • flow_chart_input_output
  • \n
  • flow_chart_decision
  • \n
  • flow_chart_delay
  • \n
  • flow_chart_display
  • \n
  • flow_chart_document
  • \n
  • flow_chart_magnetic_drum
  • \n
  • flow_chart_internal_storage
  • \n
  • flow_chart_manual_input
  • \n
  • flow_chart_manual_operation
  • \n
  • flow_chart_merge
  • \n
  • flow_chart_multidocuments
  • \n
  • flow_chart_note_curly_left
  • \n
  • flow_chart_note_curly_right
  • \n
  • flow_chart_note_square
  • \n
  • flow_chart_offpage_connector
  • \n
  • flow_chart_or
  • \n
  • flow_chart_predefined_process_2
  • \n
  • flow_chart_preparation
  • \n
  • flow_chart_process
  • \n
  • flow_chart_online_storage
  • \n
  • flow_chart_summing_junction
  • \n
  • flow_chart_terminator
  • \n
\n
" } } }, "ShapeItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/ShapeDataForCreate" }, "style": { "$ref": "#/components/schemas/ShapeStyleForCreate" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/CreatedBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/ModifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "shape" } }, "required": ["id", "type"] }, "ShapeStyleForCreate": { "type": "object", "description": "Contains information about the shape style, such as the border color or opacity.
All properties in style object are supported for shape types aren't listed below.
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Shape typeUnsupported properties
flow_chart_orfontSize, fontFamily, color, textAlign, textAlignVertical
flow_chart_summing_junctionfontSize, fontFamily, color, textAlign, textAlignVertical
flow_chart_note_curly_leftfillColor, fillOpacity
flow_chart_note_curly_rightfillColor, fillOpacity
flow_chart_note_squarefillColor, fillOpacity
", "properties": { "borderColor": { "type": "string", "description": "Defines the color of the border of the shape.\nDefault: `#1a1a1a` (dark gray)." }, "borderOpacity": { "type": "string", "description": "Defines the opacity level of the shape border.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid\nDefault: `1.0` (solid color).", "maximum": 1, "minimum": 0 }, "borderStyle": { "type": "string", "description": "Defines the style used to represent the border of the shape.\nDefault: `normal`.", "enum": ["normal", "dotted", "dashed"] }, "borderWidth": { "type": "string", "description": "Defines the thickness of the shape border, in dp.\nDefault: `2.0`.", "maximum": 24, "minimum": 1 }, "color": { "type": "string", "description": "Hex value representing the color for the text within the shape item.\nDefault: `#1a1a1a`.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Fill color for the shape.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`\nDefault: #ffffff.", "example": "#8fd14f" }, "fillOpacity": { "type": "string", "description": "Opacity level of the fill color.\nPossible values: any number between `0` and `1`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid\nDefault: `Flowchart` shapes: `1.0`. `Basic` shapes: `1.0` if `fillColor` provided, `0.0` if no `fillColor` provided.\n", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Defines the font type for the text in the shape item.\nDefault: `arial`.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the text on the shape.\nDefault: `14`.", "maximum": 288, "minimum": 10 }, "textAlign": { "type": "string", "description": "Defines how the shape text is horizontally aligned.\nDefault:\nFlowchart shapes: `center`.\nBasic shapes: `left`.\n\n`unknown` is returned for unsupported shapes.", "enum": ["left", "right", "center", "unknown"] }, "textAlignVertical": { "type": "string", "description": "Defines how the shape text is vertically aligned.\nDefault:\nFlowchart shapes: `middle`.\nBasic shapes: `top`.\n\n`unknown` is returned for unsupported shapes.", "enum": ["top", "middle", "bottom", "unknown"] } } }, "ShapeStyleForUpdate": { "type": "object", "description": "Contains information about the shape style, such as the border color or opacity.
All properties in style object are supported for shape types aren't listed below.
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Shape typeUnsupported properties
flow_chart_orfontSize, fontFamily, color, textAlign, textAlignVertical
flow_chart_summing_junctionfontSize, fontFamily, color, textAlign, textAlignVertical
flow_chart_note_curly_leftfillColor, fillOpacity
flow_chart_note_curly_rightfillColor, fillOpacity
flow_chart_note_squarefillColor, fillOpacity
", "properties": { "borderColor": { "type": "string", "description": "Defines the color of the border of the shape." }, "borderOpacity": { "type": "string", "description": "Defines the opacity level of the shape border.\nPossible values: any number between `0.0` and `1.0`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid", "maximum": 1, "minimum": 0 }, "borderStyle": { "type": "string", "description": "Defines the style used to represent the border of the shape.", "enum": ["normal", "dotted", "dashed"] }, "borderWidth": { "type": "string", "description": "Defines the thickness of the shape border, in dp.", "maximum": 24, "minimum": 1 }, "color": { "type": "string", "description": "Hex value representing the color for the text within the shape item.", "example": "#1a1a1a" }, "fillColor": { "type": "string", "description": "Fill color for the shape.\nHex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000`", "example": "#8fd14f" }, "fillOpacity": { "type": "string", "description": "Opacity level of the fill color.\nPossible values: any number between `0` and `1`, where:\n`0.0`: the background color is completely transparent or invisible\n`1.0`: the background color is completely opaque or solid\n", "maximum": 1, "minimum": 0 }, "fontFamily": { "type": "string", "description": "Defines the font type for the text in the shape item.", "enum": [ "arial", "abril_fatface", "bangers", "eb_garamond", "georgia", "graduate", "gravitas_one", "fredoka_one", "nixie_one", "open_sans", "permanent_marker", "pt_sans", "pt_sans_narrow", "pt_serif", "rammetto_one", "roboto", "roboto_condensed", "roboto_slab", "caveat", "times_new_roman", "titan_one", "lemon_tuesday", "roboto_mono", "noto_sans", "plex_sans", "plex_serif", "plex_mono", "spoof", "tiempos_text", "formular" ] }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the text on the shape.", "maximum": 288, "minimum": 10 }, "textAlign": { "type": "string", "description": "Defines how the sticky note text is horizontally aligned.", "enum": ["left", "right", "center"] }, "textAlignVertical": { "type": "string", "description": "Defines how the sticky note text is vertically aligned.", "enum": ["top", "middle", "bottom"] } } }, "ShapeUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ShapeDataForUpdate" }, "style": { "$ref": "#/components/schemas/ShapeStyleForUpdate" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "WidgetLinksPlatformExperimentalFeatures": { "type": "object", "description": "Contains applicable links for the item.", "properties": { "related": { "type": "string", "description": "Link to obtain information about the child items related to the frame.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/items?parent_item_id=307445734914369434&limit=10&cursor=" }, "self": { "type": "string", "description": "Link to obtain information about the current item.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/item/3074457349143649487" } } }, "GeometryPlatformExperimentalFeatures": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "MindMapNodeGeometry": { "type": "object", "description": "Contains width of the item.", "properties": { "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "MindmapNodeStyle": { "type": "object", "description": "Contains information about the node style, such as the node color or fillOpacity.", "properties": { "color": { "type": "string", "description": "Hex value representing the color for the text within the node.", "example": "#1a1a1a" }, "fillOpacity": { "type": "string", "description": "It sets the opacity level of the background fill color.\n\nAllowed values: any number between 0.0 and 1.0 included.\n\nIf the value is 0.0, the background fill color is completely transparent or invisible.\nIf the value is 1.0, the background fill color is completely opaque or solid.\nDefault: 0 (transparent)" }, "fontSize": { "type": "string", "description": "Defines the font size, in dp, for the text on the node.\nDefault: `14`.", "maximum": 288, "minimum": 10 } } }, "MindmapStyle": { "type": "object", "description": "Contains information about the node style, such as the widget's border color or shape type.", "properties": { "nodeColor": { "type": "string", "description": "Hex value representing the color of the widget's border.", "example": "#1a1a1a" }, "shape": { "type": "string", "description": "Shape type of the widget.", "enum": ["pill", "rectangle", "rounded_rectangle", "none"] }, "fontSize": { "type": "string", "description": "The same font size as in MindmapNodeStyle.", "maximum": 288, "minimum": 10 } } }, "CodeWidgetData": { "type": "object", "description": "Contains the data properties of a code widget item, such as the code content, programming language, and display settings.", "properties": { "code": { "type": "string", "description": "The code content of the widget.", "maxLength": 6000, "example": "console.log(\"Hello, World!\");" }, "language": { "type": "string", "description": "The programming language of the code content. Used for syntax highlighting.", "example": "javascript" }, "lineNumbersVisible": { "type": "boolean", "description": "Indicates whether line numbers are visible in the code widget.", "example": true }, "title": { "type": "string", "description": "The title of the code widget.", "maxLength": 100, "example": "My Code Snippet" } } }, "CodeWidgetItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/CodeWidgetData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/CreatedBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/ModifiedBy" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "code" } }, "required": ["id", "type"] }, "CodeWidgetCreateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CodeWidgetData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "CodeWidgetUpdateRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CodeWidgetData" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "CodeWidgetCursorPaged": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/CodeWidgetItem" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly." }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response considering the `cursor` and the `limit` values sent in the request.", "example": 1 }, "cursor": { "type": "string", "description": "A cursor-paginated method returns a portion of the total set of results based on the `limit` specified and a `cursor` that points to the next portion of the results. To retrieve the next set of results of the collection, set the `cursor` parameter in your next request to the value returned in this parameter.", "example": "MzQ1ODc2NDUyMjQ5MDA4Mjg5NX4=" }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request.", "example": 10 }, "links": { "$ref": "#/components/schemas/PageLinks" } } }, "CreatedBy": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "ModifiedBy": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "DocumentItemPlatformFileUpload": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/DocumentData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "document" } }, "required": ["id", "type"] }, "FixedRatioGeometryPlatformFileUpload": { "type": "object", "description": "Contains geometrical information about the item, such as its width or rotation. You can set either the width or height, you cannot set both the width and height at the same time.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels." }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." } } }, "GeometryPlatformFileUpload": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "ImageItemPlatformFileUpload": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/ImageData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "image" } }, "required": ["id", "type"] }, "ParentLinksEnvelope": { "type": "object", "description": "Contains information about the parent frame for the item.", "properties": { "id": { "type": "string", "format": "int64", "description": "Unique identifier (ID) of the parent frame for the item.", "example": "3074457362577955300" }, "links": { "$ref": "#/components/schemas/SelfLink" } } }, "PositionChange": { "type": "object", "description": "Contains information about the item's position on the board, such as its `x` coordinate, `y` coordinate, and the origin of the `x` and `y` coordinates.", "properties": { "x": { "type": "number", "format": "double", "description": "X-axis coordinate of the location of the item on the board.\nBy default, all items have absolute positioning to the board, not the current viewport. Default: `0`.\nThe center point of the board has `x: 0` and `y: 0` coordinates.", "default": 0, "example": 100 }, "y": { "type": "number", "format": "double", "description": "Y-axis coordinate of the location of the item on the board.\nBy default, all items have absolute positioning to the board, not the current viewport. Default: `0`.\nThe center point of the board has `x: 0` and `y: 0` coordinates.", "default": 0, "example": 100 } } }, "SelfLinkPlatformFileUpload": { "type": "object", "description": "Contains applicable links for the current object.", "properties": { "self": { "type": "string", "description": "Link to obtain more information about the current object.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/object_type/3074457349143649487" } } }, "WidgetLinksPlatformFileUpload": { "type": "object", "description": "Contains applicable links for the item.", "properties": { "related": { "type": "string", "description": "Link to obtain information about the child items related to the frame.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/items?parent_item_id=307445734914369434&limit=10&cursor=" }, "self": { "type": "string", "description": "Link to obtain information about the current item.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/item/3074457349143649487" } } }, "createdByPlatformFileUpload": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "modifiedByPlatformFileUpload": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "UploadFileFromDevice": { "type": "object", "properties": { "data": { "type": "object", "properties": { "title": { "type": "string", "description": "Title for the document.", "example": "foo.png" }, "altText": { "type": "string", "description": "A description (alt-text) to help people understand what is depicted here.", "example": "Sample image alt text" }, "position": { "$ref": "#/components/schemas/PositionChange" }, "geometry": { "$ref": "#/components/schemas/FixedRatioGeometry" }, "parent": { "$ref": "#/components/schemas/Parent" } } }, "resource": { "type": "string", "format": "binary", "description": "Select a file to upload. Maximum file size is 6 MB." } }, "required": ["resource"] }, "DocumentItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/DocumentData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "document" } }, "required": ["id", "type"] }, "FixedRatioGeometry": { "type": "object", "description": "Contains geometrical information about the item, such as its width or rotation. You can set either the width or height, you cannot set both the width and height at the same time.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels." }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." } } }, "ImageItem": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "data": { "$ref": "#/components/schemas/ImageData" }, "position": { "$ref": "#/components/schemas/Position" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/ParentLinksEnvelope" }, "links": { "$ref": "#/components/schemas/WidgetLinks" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "image" } }, "required": ["id", "type"] }, "WidgetLinks": { "type": "object", "description": "Contains applicable links for the item.", "properties": { "related": { "type": "string", "description": "Link to obtain information about the child items related to the frame.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/items?parent_item_id=307445734914369434&limit=10&cursor=" }, "self": { "type": "string", "description": "Link to obtain information about the current item.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/item/3074457349143649487" } } }, "BoardId": { "type": "string", "description": "[Unique identifier (ID) of the board](https://developers.miro.com/reference/board-model)", "example": "uXjVOfjmfkE=" }, "WidgetId": { "type": "string", "description": "Unique identifier (ID) of the item on board", "example": 3458764584681774600 }, "GroupId": { "type": "string", "description": "Unique identifier (ID) of the Group", "example": 3858764584681774600 }, "GeometryPlatformgroups": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "createdByPlatformgroups": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "modifiedByPlatformgroups": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "GroupResponseShort": { "type": "object", "description": "Contains the result data.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the group.", "example": "3258764517517852419" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `group`.", "example": "group" }, "data": { "$ref": "#/components/schemas/Group" }, "links": { "$ref": "#/components/schemas/PageLinks" } } }, "RevokeTokenRequest": { "type": "object", "properties": { "accessToken": { "type": "string", "description": "The access token to be revoked." }, "clientId": { "type": "string", "description": "The client ID associated with the access token." }, "clientSecret": { "type": "string", "description": "The client secret associated with the access token." } }, "required": ["accessToken", "clientId", "clientSecret"] }, "ErrorResponse": { "type": "object", "properties": { "status": { "type": "integer", "description": "HTTP status code." }, "code": { "type": "string", "description": "Description of the status code." }, "message": { "type": "string", "description": "Explanation for the error." }, "type": { "type": "string", "description": "Type of the object returned.", "default": "error" } } }, "AppCardData": { "type": "object", "description": "Contains app card item data, such as the title, description, or fields.", "properties": { "description": { "type": "string", "description": "A short text description to add context about the app card.", "example": "Sample app card description" }, "fields": { "type": "array", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "items": { "$ref": "#/components/schemas/CustomField" } }, "owned": { "type": "boolean", "description": "Defines whether the card is owned by the application making the call." }, "status": { "type": "string", "description": "Status indicating whether an app card is connected and in sync with the source. When the source for the app card is deleted, the status returns `disabled`.", "enum": ["disconnected", "connected", "disabled"] }, "title": { "type": "string", "description": "A short text header to identify the app card.", "example": "sample app card item" } } }, "CardData": { "type": "object", "description": "Contains card item data, such as the title, description, due date, or assignee ID.", "properties": { "assigneeId": { "type": "string", "format": "int64", "description": "Unique user identifier. In the GUI, the user ID is mapped to the name of the user who is assigned as the owner of the task or activity described in the card. The identifier is numeric, and it is automatically assigned to a user when they first sign up.", "example": "3074457362577955300" }, "description": { "type": "string", "description": "A short text description to add context about the card.", "example": "sample card description" }, "dueDate": { "type": "string", "format": "date-time", "description": "The date when the task or activity described in the card is due to be completed. In the GUI, users can select the due date from a calendar. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2023-10-12T22:00:55.000Z" }, "title": { "type": "string", "description": "A short text header for the card.", "example": "sample card item" } } }, "CustomFieldPlatformTags": { "type": "object", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "properties": { "fillColor": { "type": "string", "description": "Hex value representing the color that fills the background area of the preview field, when it's displayed on the app card.", "example": "#2fa9e3" }, "iconShape": { "type": "string", "default": "round", "description": "The shape of the icon on the preview field.", "enum": ["round", "square"] }, "iconUrl": { "type": "string", "description": "A valid URL pointing to an image available online.\nThe transport protocol must be HTTPS.\nPossible image file formats: JPG/JPEG, PNG, SVG.", "example": "https://cdn-icons-png.flaticon.com/512/5695/5695864.png" }, "textColor": { "type": "string", "description": "Hex value representing the color of the text string assigned to `value`.", "example": "#1a1a1a" }, "tooltip": { "type": "string", "description": "A short text displayed in a tooltip when clicking or hovering over the preview field.", "example": "Completion status indicator" }, "value": { "type": "string", "description": "The actual data value of the custom field.\nIt can be any type of information that you want to convey.", "example": "Status: in progress" } } }, "DocumentData": { "type": "object", "properties": { "documentUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter to control the request execution.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned is `application/octet-stream`.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the document.", "example": "Sample document title" } } }, "EmbedData": { "type": "object", "properties": { "contentType": { "type": "string", "description": "Type of the embedded item's content.", "example": "video" }, "description": { "type": "string", "description": "Short description of the embedded item.", "example": "So this is how to organize your life with Miro (a virtual whiteboard) for collaboration, brainstorming, and project management. Students, designers, agile en..." }, "html": { "type": "string", "description": "Html code of the embedded item.", "example": "" }, "mode": { "type": "string", "description": "Defines how the content in the embed item is displayed on the board.\n`inline`: The embedded content is displayed directly on the board.\n`modal`: The embedded content is displayed inside a modal overlay on the board.", "enum": ["inline", "modal"] }, "previewUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL.\nThe URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters:\n`format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, 'image/svg', or 'image/jpg', depending on the original image type.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false" }, "providerName": { "type": "string", "description": "Name of the content's provider.", "example": "YouTube" }, "providerUrl": { "type": "string", "description": "Url of the content's provider.", "example": "https://www.youtube.com/" }, "title": { "type": "string", "description": "Title of the embedded item.", "example": "HOW TO ORGANIZE YOUR LIFE WITH MIRO! ✏ Virtual Whiteboard Tour" }, "url": { "type": "string", "description": "A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS.", "example": "https://www.youtube.com/watch?v=HlVSNEiFCBk" } } }, "EmptyStyle": { "type": "object", "description": "Contains information about the style of an item, such as the color, font, or border style." }, "FrameData": { "type": "object", "description": "Contains frame item data, such as the title, frame type, or frame format.", "properties": { "format": { "type": "string", "default": "custom", "description": "Only custom frames are supported at the moment.", "enum": ["custom", "desktop", "phone", "tablet", "a4", "letter", "ratio_1x1", "ratio_4x3", "ratio_16x9"] }, "title": { "type": "string", "description": "Title of the frame. This title appears at the top of the frame.", "example": "Sample frame title" }, "type": { "type": "string", "default": "freeform", "description": "Only free form frames are supported at the moment.", "enum": ["freeform", "heap", "grid", "rows", "columns"] } } }, "GenericItemPlatformTags": { "type": "object", "description": "Contains the result data.", "properties": { "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "data": { "$ref": "#/components/schemas/WidgetDataOutput" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/Parent" }, "position": { "$ref": "#/components/schemas/Position" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "sticky_note" } }, "required": ["id", "type"] }, "GeometryPlatformTags": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "GetTagsResponse": { "type": "object", "properties": { "tags": { "type": "array", "items": { "$ref": "#/components/schemas/Tag" } } } }, "ImageData": { "type": "object", "properties": { "imageUrl": { "type": "string", "description": "The URL to download the resource. You must use your access token to access the URL.\nThe URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters:\n`format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`.\n`redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file.\nIf the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, 'image/svg', or 'image/jpg', depending on the original image type.", "example": "https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false" }, "title": { "type": "string", "description": "A short text header to identify the image.", "example": "Sample image title" } } }, "ItemPagedResponsePlatformTags": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/GenericItem" } }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the offset parameter. In this example, you will set the offset parameter to 20 as the offset is zero-based.\n", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "offset": { "type": "integer", "format": "int32", "description": "Zero-based index of the first item in the collection. For example, If there are `30` results, and the request has the offset set to `28`, the response will return `2` results.", "example": 0 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response. The `size` is the number of results returned considering the `offset` and the `limit` values sent in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`.
If there are `10` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `10`.
If there are `30` results, and the request has the offset set to `28` and the `limit` set to `20`, the `size` of the results will be `2` as the `offset` is the zero-based offset of the first item in the collection.", "example": 1 }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based).", "example": 1 }, "type": { "type": "string" } } }, "PageLinks": { "type": "object", "description": "Contains pagination links for the collection.", "properties": { "first": { "type": "string", "description": "Link to retrieve information in the first page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NaSDN&#RDMDA3MzYyOX==" }, "last": { "type": "string", "description": "Link to the retrieve information in the last page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NDUyNDUyMDA3MzYyOX==" }, "next": { "type": "string", "description": "Link to retrieve information in the next page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1ODc2NDUyNDsdgsFEwfFJCw==" }, "prev": { "type": "string", "description": "Link to retrieve information in the previous page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=" }, "self": { "type": "string", "description": "Link to retrieve information in the current page of the collection.", "example": "http://api.miro.com/v2/boards/o9J_lJWSHdg=/items?limit=10&cursor=MzQ1OD1245643FWUyMDA3MzYyOX==" } } }, "Parent": { "type": "object", "description": "Contains information about the parent frame for the item.", "properties": { "id": { "type": "string", "format": "int64", "description": "Unique identifier (ID) of the parent frame for the item.", "example": "3074457362577955300" } } }, "Position": { "type": "object", "description": "Contains location information about the item, such as its x coordinate, y coordinate, and the origin of the x and y coordinates.", "properties": { "origin": { "type": "string", "default": "center", "description": "Area of the item that is referenced by its x and y coordinates. For example, an item with a center origin will have its x and y coordinates point to its center. The center point of the board has x: 0 and y: 0 coordinates.\nCurrently, only one option is supported.", "enum": ["center"] }, "relativeTo": { "type": "string", "enum": ["canvas_center", "parent_top_left"] }, "x": { "type": "number", "format": "double", "description": "X-axis coordinate of the location of the item on the board.\nBy default, all items have absolute positioning to the board, not the current viewport. Default: 0.\nThe center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 }, "y": { "type": "number", "format": "double", "description": "Y-axis coordinate of the location of the item on the board.\nBy default, all items have absolute positioning to the board, not the current viewport. Default: 0.\nThe center point of the board has `x: 0` and `y: 0` coordinates.", "example": 100 } } }, "SelfLinkPlatformTags": { "type": "object", "description": "Contains applicable links for the current object.", "properties": { "self": { "type": "string", "description": "Link to obtain more information about the current object.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/object_type/3074457349143649487" } } }, "ShapeDataPlatformTags": { "type": "object", "description": "Contains shape item data, such as the content or shape type of the shape.", "properties": { "content": { "type": "string", "description": "The text you want to display on the shape.", "example": "Hello" }, "shape": { "type": "string", "default": "rectangle", "description": "Defines the geometric shape of the item when it is rendered on the board.", "enum": [ "rectangle", "round_rectangle", "circle", "triangle", "rhombus", "parallelogram", "trapezoid", "pentagon", "hexagon", "octagon", "wedge_round_rectangle_callout", "star", "flow_chart_predefined_process", "cloud", "cross", "can", "right_arrow", "left_arrow", "left_right_arrow", "left_brace", "right_brace" ] } } }, "StickyNoteDataPlatformTags": { "type": "object", "description": "Contains sticky note item data, such as the content or shape of the sticky note.", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the sticky note item.", "example": "Hello" }, "shape": { "type": "string", "default": "square", "description": "Defines the geometric shape of the sticky note and aspect ratio for its dimensions.", "enum": ["square", "rectangle"] } } }, "Tag": { "type": "object", "properties": { "fillColor": { "type": "string", "description": "Background color of the tag.", "enum": [ "red", "light_green", "cyan", "yellow", "magenta", "green", "blue", "gray", "violet", "dark_green", "dark_blue", "black" ], "example": "red" }, "id": { "type": "string", "description": "Unique identifier of the tag.", "example": "3074457363306854000" }, "title": { "type": "string", "description": "Text of the tag.", "example": "delayed" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `tag`." } }, "required": ["fillColor", "id", "title", "type"] }, "TagCreateRequest": { "type": "object", "properties": { "fillColor": { "type": "string", "default": "red", "description": "Fill color for the tag.", "enum": [ "red", "light_green", "cyan", "yellow", "magenta", "green", "blue", "gray", "violet", "dark_green", "dark_blue", "black" ] }, "title": { "type": "string", "description": "Text of the tag. Case-sensitive. Must be unique.", "example": "to do", "maxLength": 120, "minLength": 0 } }, "required": ["title"] }, "TagUpdateRequest": { "type": "object", "properties": { "fillColor": { "type": "string", "description": "Fill color for the tag.", "enum": [ "red", "light_green", "cyan", "yellow", "magenta", "green", "blue", "gray", "violet", "dark_green", "dark_blue", "black" ] }, "title": { "type": "string", "description": "Text of the tag. Case-sensitive. Must be unique.", "example": "done", "maxLength": 120, "minLength": 0 } } }, "TagWithLinks": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the tag.", "example": "3074457363306854000" }, "title": { "type": "string", "description": "Text of the tag", "example": "delayed" }, "fillColor": { "type": "string", "description": "Background color of the tag.", "enum": [ "red", "light_green", "cyan", "yellow", "magenta", "green", "blue", "gray", "violet", "dark_green", "dark_blue", "black" ], "example": "red" }, "links": { "$ref": "#/components/schemas/SelfLink" }, "type": { "type": "string", "description": "Type of the object that is returned. In this case, type returns `tag`." } }, "required": ["fillColor", "id", "title", "type"] }, "TagsPagedResponse": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/Tag" } }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based).", "example": 1 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response. The `size` is the number of results returned considering the `offset` and the `limit` values sent in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`.
If there are `10` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `10`.
If there are `30` results, and the request has the offset set to `28` and the `limit` set to `20`, the `size` of the results will be `2` as the `offset` is the zero-based offset of the first item in the collection.", "example": 1 }, "offset": { "type": "integer", "format": "int32", "description": "Zero-based index of the first item in the collection. For example, If there are `30` results, and the request has the offset set to `28`, the response will return `2` results.", "example": 0 }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the offset parameter. In this example, you will set the offset parameter to 20 as the offset is zero-based.\n", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "type": { "type": "string" } } }, "TextDataPlatformTags": { "type": "object", "description": "Contains text item data, such as the title, content, or description. For more information on the JSON properties, see [Data](https://developers.miro.com/reference/data).", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the text item.", "example": "Hello" } }, "required": ["content"] }, "WidgetDataOutput": { "type": "object", "description": "Contains the item data, such as the item title, content, or description.", "oneOf": [ { "$ref": "#/components/schemas/TextData" }, { "$ref": "#/components/schemas/EmbedData" }, { "$ref": "#/components/schemas/CardData" }, { "$ref": "#/components/schemas/AppCardData" }, { "$ref": "#/components/schemas/ImageData" }, { "$ref": "#/components/schemas/DocumentData" }, { "$ref": "#/components/schemas/ShapeData" }, { "$ref": "#/components/schemas/FrameData" }, { "$ref": "#/components/schemas/StickyNoteData" } ] }, "createdByPlatformTags": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "modifiedByPlatformTags": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "CustomField": { "type": "object", "description": "Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view.", "properties": { "fillColor": { "type": "string", "description": "Hex value representing the color that fills the background area of the preview field, when it's displayed on the app card.", "example": "#2fa9e3" }, "iconShape": { "type": "string", "default": "round", "description": "The shape of the icon on the preview field.", "enum": ["round", "square"] }, "iconUrl": { "type": "string", "description": "A valid URL pointing to an image available online.\nThe transport protocol must be HTTPS.\nPossible image file formats: JPG/JPEG, PNG, SVG.", "example": "https://cdn-icons-png.flaticon.com/512/5695/5695864.png" }, "textColor": { "type": "string", "description": "Hex value representing the color of the text string assigned to `value`.", "example": "#1a1a1a" }, "tooltip": { "type": "string", "description": "A short text displayed in a tooltip when clicking or hovering over the preview field.", "example": "Completion status indicator" }, "value": { "type": "string", "description": "The actual data value of the custom field.\nIt can be any type of information that you want to convey.", "example": "Status: in progress" } } }, "GenericItem": { "type": "object", "description": "Contains the result data.", "properties": { "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was created.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "createdBy": { "$ref": "#/components/schemas/createdBy" }, "data": { "$ref": "#/components/schemas/WidgetDataOutput" }, "geometry": { "$ref": "#/components/schemas/Geometry" }, "id": { "type": "string", "description": "Unique identifier (ID) of an item.", "example": "3458764517517819000" }, "modifiedAt": { "type": "string", "format": "date-time", "description": "Date and time when the item was last modified.
Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).", "example": "2022-03-30T17:26:50.000Z" }, "modifiedBy": { "$ref": "#/components/schemas/modifiedBy" }, "parent": { "$ref": "#/components/schemas/Parent" }, "position": { "$ref": "#/components/schemas/Position" }, "type": { "type": "string", "description": "Type of item that is returned.", "example": "sticky_note" } }, "required": ["id", "type"] }, "Geometry": { "type": "object", "description": "Contains geometrical information about the item, such as its width or height.", "properties": { "height": { "type": "number", "format": "double", "description": "Height of the item, in pixels.", "example": 60 }, "rotation": { "type": "number", "format": "double", "description": "Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively." }, "width": { "type": "number", "format": "double", "description": "Width of the item, in pixels.", "example": 320 } } }, "ItemPagedResponse": { "type": "object", "properties": { "data": { "type": "array", "description": "Contains the result data.", "items": { "$ref": "#/components/schemas/GenericItem" } }, "limit": { "type": "integer", "format": "int32", "description": "Maximum number of results returned based on the `limit` specified in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`. The rest of the results will not be returned. To retrieve the rest of the results, you must make another request and set the appropriate value for the offset parameter. In this example, you will set the offset parameter to 20 as the offset is zero-based.\n", "example": 20 }, "links": { "$ref": "#/components/schemas/PageLinks" }, "offset": { "type": "integer", "format": "int32", "description": "Zero-based index of the first item in the collection. For example, If there are `30` results, and the request has the offset set to `28`, the response will return `2` results.", "example": 0 }, "size": { "type": "integer", "format": "int32", "description": "Number of results returned in the response. The `size` is the number of results returned considering the `offset` and the `limit` values sent in the request. For example, if there are `30` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `20`.
If there are `10` results, and the request has the offset set to `0` and the `limit` set to `20`, the `size` of the results will be `10`.
If there are `30` results, and the request has the offset set to `28` and the `limit` set to `20`, the `size` of the results will be `2` as the `offset` is the zero-based offset of the first item in the collection.", "example": 1 }, "total": { "type": "integer", "format": "int64", "description": "Total number of results available. If the value of the `total` parameter is higher than the value of the `size` parameter, this means that there are more results that you can retrieve. To retrieve more results, you can make another request and set the `offset` value accordingly. For example, if there are `30` results, and the request has the `offset` set to `0` and the `limit` set to `20`, the `size` parameter will return `20` and the `total` parameter will return `30`. This means that there are 9 more results to retrieve (as the offset is zero-based).", "example": 1 }, "type": { "type": "string" } } }, "SelfLink": { "type": "object", "description": "Contains applicable links for the current object.", "properties": { "self": { "type": "string", "description": "Link to obtain more information about the current object.", "example": "http://api.miro.com/v2/boards/o9J_koQspF4=/object_type/3074457349143649487" } } }, "ShapeData": { "type": "object", "description": "Contains shape item data, such as the content or shape type of the shape.", "properties": { "content": { "type": "string", "description": "The text you want to display on the shape.", "example": "Hello" }, "shape": { "type": "string", "default": "rectangle", "description": "Defines the geometric shape of the item when it is rendered on the board.", "enum": [ "rectangle", "round_rectangle", "circle", "triangle", "rhombus", "parallelogram", "trapezoid", "pentagon", "hexagon", "octagon", "wedge_round_rectangle_callout", "star", "flow_chart_predefined_process", "cloud", "cross", "can", "right_arrow", "left_arrow", "left_right_arrow", "left_brace", "right_brace" ] } } }, "StickyNoteData": { "type": "object", "description": "Contains sticky note item data, such as the content or shape of the sticky note.", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the sticky note item.", "example": "Hello" }, "shape": { "type": "string", "default": "square", "description": "Defines the geometric shape of the sticky note and aspect ratio for its dimensions.", "enum": ["square", "rectangle"] } } }, "TextData": { "type": "object", "description": "Contains text item data, such as the title, content, or description. For more information on the JSON properties, see [Data](https://developers.miro.com/reference/data).", "properties": { "content": { "type": "string", "description": "The actual text (content) that appears in the text item.", "example": "Hello" } }, "required": ["content"] }, "createdBy": { "type": "object", "description": "Contains information about the user who created the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "modifiedBy": { "type": "object", "description": "Contains information about the user who last modified the item.", "properties": { "id": { "type": "string", "description": "Unique identifier (ID) of the user.", "example": "3458764517517852417" }, "type": { "type": "string", "description": "Indicates the type of object returned. In this case, `type` returns `user`.", "example": "user" } } }, "ProjectPage": { "type": "object", "required": ["limit", "size", "data"], "properties": { "limit": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100, "example": 100, "description": "The maximum number of results to return per call. If the number of project in the response is greater than the limit specified, the response returns the cursor parameter with a value." }, "size": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "default": 100, "example": 87, "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Project" }, "description": "Contains the result data." }, "cursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.", "example": "3074457345821140946" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } } }, "Project": { "type": "object", "required": ["id", "name", "type"], "properties": { "id": { "type": "string", "description": "Project ID.", "example": "3074457345618265000" }, "name": { "type": "string", "description": "Name of the project.", "example": "Product Guild project" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "project" } } }, "CreateProjectRequest": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "Project name.", "maxLength": 60, "minLength": 1, "example": "My project" } } }, "UpdateProjectRequest": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "New name of the project.", "maxLength": 60, "minLength": 1, "example": "My project" } } }, "UpdateProjectSettingsRequest": { "type": "object", "properties": { "sharingPolicySettings": { "$ref": "#/components/schemas/SharingPolicySettings" } } }, "ProjectSettings": { "type": "object", "required": ["sharingPolicySettings", "type"], "properties": { "sharingPolicySettings": { "$ref": "#/components/schemas/SharingPolicySettings" }, "type": { "type": "string", "description": "Type of the object", "default": "project_settings" } } }, "ProjectMemberPage": { "type": "object", "required": ["limit", "size", "data"], "properties": { "limit": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100, "example": 100, "description": "The maximum number of results to return per call. If the number of project member in the response is greater than the limit specified, the response returns the cursor parameter with a value." }, "size": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "default": 100, "example": 87, "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ProjectMember" }, "description": "Contains the result data." }, "cursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.", "example": "3074457345821140946" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } } }, "ProjectMember": { "type": "object", "required": ["id", "email", "role", "type"], "properties": { "id": { "type": "string", "description": "ID of the project member.", "example": "3074457345618265000" }, "email": { "type": "string", "description": "Email ID of the project member.", "example": "someone@domain.com" }, "role": { "$ref": "#/components/schemas/ProjectRole" }, "type": { "type": "string", "description": "Type of the object", "default": "project_member" } } }, "AddProjectMemberRequest": { "type": "object", "required": ["email", "role"], "properties": { "email": { "type": "string", "description": "Email ID of the user.", "example": "someone@domain.com" }, "role": { "$ref": "#/components/schemas/ProjectRole" } } }, "UpdateProjectMemberRequest": { "type": "object", "properties": { "role": { "$ref": "#/components/schemas/ProjectRole" } } }, "SharingPolicySettings": { "type": "object", "properties": { "teamAccess": { "$ref": "#/components/schemas/TeamAccess" } } }, "TeamAccess": { "type": "string", "description": "Team access\n* \"private\": Only the members of the project can access the information within the project.\n* \"view\": Anyone in the team can view the information in within the project.\n", "enum": ["private", "view"], "default": "private", "example": "private" }, "ProjectRole": { "type": "string", "description": "Role of the project member.", "enum": ["owner", "editor", "viewer", "commentator", "coowner"], "example": "viewer" }, "ProjectRoleToAdd": { "type": "string", "description": "Role of the project member.", "enum": ["editor", "viewer", "commentator", "coowner"], "example": "viewer" }, "Error400": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 400 }, "code": { "type": "string", "description": "Description of the status code.", "default": "invalidParameters" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Error401": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 401 }, "code": { "type": "string", "description": "Description of the status code.", "default": "tokenNotProvided" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Error403": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 403 }, "code": { "type": "string", "description": "Description of the status code.", "example": "forbiddenAccess" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Error404": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 404 }, "code": { "type": "string", "description": "Description of the status code.", "example": "notFound" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Error409": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 409 }, "code": { "type": "string", "description": "Description of the status code.", "example": "conflict" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Error429": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code.", "default": 429 }, "code": { "type": "string", "description": "Description of the status code.", "example": "tooManyRequests" }, "message": { "type": "string", "description": "Explanation of the error." }, "type": { "type": "string", "default": "error" } } }, "Picture": { "type": "object", "properties": { "id": { "type": "number", "format": "int64", "description": "Id of the picture", "example": 3074457345618261500 }, "imageURL": { "type": "string", "description": "Url of the picture", "example": "https://miro.images/5252525252/125252/266/144/1/size210.jpg" }, "originalUrl": { "type": "string", "description": "Original team picture url for icon generation", "example": "https://miro.com/original-image.jpg" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "picture" } } }, "Team": { "required": ["id", "name"], "type": "object", "properties": { "id": { "type": "string", "description": "Team id", "example": "3074457345618265000" }, "name": { "type": "string", "description": "Team name", "example": "My Team" }, "picture": { "$ref": "#/components/schemas/Picture" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "team" } } }, "CreateTeamRequest": { "required": ["name"], "type": "object", "properties": { "name": { "type": "string", "description": "Team name.", "maxLength": 60, "minLength": 1, "example": "My Team" } } }, "TeamAccountDiscoverySettings": { "type": "object", "properties": { "accountDiscovery": { "type": "string", "description": "\n* \"hidden\": Only invited users can see and access the team.\n* \"request\": Members of organization can find and request to join with admin approval.\n* \"join\": Members of organization can find and join.\n", "enum": ["hidden", "request", "join"] } }, "description": "Team account discovery settings" }, "TeamAccountDiscoverySettingsChanges": { "type": "object", "properties": { "accountDiscovery": { "type": "string", "description": "\n* \"hidden\": Only invited users can see and access the team.\n* \"request\": Members of organization can find and request to join with admin approval.\n* \"join\": Members of organization can find and join.\n", "enum": ["hidden", "request", "join"] } }, "description": "Team account discovery settings" }, "TeamChanges": { "type": "object", "properties": { "name": { "type": "string", "description": "New name for the team.", "maxLength": 60, "minLength": 1, "example": "My Team" } } }, "TeamCollaborationSettings": { "type": "object", "properties": { "coOwnerRole": { "type": "string", "description": "\n* \"enabled\": Enable Co-owner role on boards and projects\n* \"disabled\": Disabled Co-owner role on boards and projects\n", "enum": ["enabled", "disabled"] } }, "description": "Team collaboration settings" }, "TeamCollaborationSettingsChanges": { "type": "object", "properties": { "coOwnerRole": { "type": "string", "description": "\n* \"enabled\": Enable Co-owner role on boards and projects\n* \"disabled\": Disabled Co-owner role on boards and projects\n", "enum": ["enabled", "disabled"] } }, "description": "Team collaboration settings" }, "TeamCopyAccessLevelSettings": { "type": "object", "properties": { "copyAccessLevel": { "type": "string", "description": "\n* \"anyone\": Anyone with the board access can copy board content on newly created boards.\n* \"team_members\": Team members can copy board content on newly created boards.\n* \"team_editors\": Team members with editing rights can copy board content on newly created boards.\n* \"board_owner\": Board owners only can copy board content on newly created boards.\n", "enum": ["anyone", "team_members", "team_editors", "board_owner -"] }, "copyAccessLevelLimitation": { "type": "string", "description": "\n* \"anyone\": Team members and users outside team can be given permission to copy board content.\n* \"team_members\": Only team members can be given permission to copy board content.\n", "enum": ["anyone", "team_members"] } }, "description": "Team copy access settings" }, "TeamCopyAccessLevelSettingsChanges": { "type": "object", "properties": { "copyAccessLevel": { "type": "string", "description": "\n* \"anyone\": Anyone with the board access can copy board content on newly created boards.\n* \"team_members\": Team members can copy board content on newly created boards.\n* \"team_editors\": Team members with editing rights can copy board content on newly created boards.\n* \"board_owner\": Board owners only can copy board content on newly created boards.\n", "enum": ["anyone", "team_members", "team_editors", "board_owner"] }, "copyAccessLevelLimitation": { "type": "string", "description": "\n* \"anyone\": Team members and users outside team can be given permission to copy board content.\n* \"team_members\": Only team members can be given permission to copy board content.\n", "enum": ["anyone", "team_members"] } }, "description": "Team copy access settings" }, "TeamInvitationSettings": { "type": "object", "properties": { "inviteExternalUsers": { "type": "string", "description": "\n* \"allowed\": Allow non-team collaborators for team\n* \"not_allowed\": Not Allow non-team collaborators for team\n", "enum": ["allowed", "not_allowed"] }, "whoCanInvite": { "type": "string", "description": "\n* \"only_org_admins\": Company admins only can invite\n* \"admins\": Company admins and team admins can invite\n* \"all_members\": All team members can invite\n", "enum": ["only_org_admins", "admins", "all_members"] } }, "description": "Team invitation settings" }, "TeamInvitationSettingsChanges": { "type": "object", "properties": { "inviteExternalUsers": { "type": "string", "description": "\n* \"allowed\": Allow non-team collaborators for team\n* \"not_allowed\": Not Allow non-team collaborators for team\n", "enum": ["allowed", "not_allowed"] }, "whoCanInvite": { "type": "string", "description": "\n* \"only_org_admins\": Company admins only can invite\n* \"admins\": Company admins and team admins can invite\n* \"all_members\": All team members can invite\n", "enum": ["only_org_admins", "admins", "all_members"] } }, "description": "Team invitation settings" }, "TeamMember": { "required": ["id", "teamId", "role"], "type": "object", "properties": { "id": { "type": "string", "description": "Team member id.", "example": "3074457345618264000" }, "role": { "type": "string", "description": "\nRole of the team member.\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n* \"non_team\": External user, non-team user.\n* \"team_guest\": (Deprecated) Team-guest user, user with access only to a team without access to organization.\n", "enum": ["non_team", "member", "admin"] }, "createdAt": { "type": "string", "description": "Date and time when member was invited to the team.", "format": "date-time" }, "createdBy": { "type": "string", "description": "Id of the user who invited the team member.", "example": "3074457345618264000" }, "modifiedAt": { "type": "string", "description": "Date and time when the user's membership was last updated.", "format": "date-time" }, "modifiedBy": { "type": "string", "description": "Id of the user who last updated the user's membership.", "example": "3074457345618264000" }, "teamId": { "type": "string", "description": "Team id", "example": "3074457345618265000" }, "type": { "description": "Type of the object returned.", "type": "string", "default": "team-member" } } }, "TeamMemberChanges": { "type": "object", "properties": { "role": { "type": "string", "example": "member", "description": "\nRole of the team member.\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n", "enum": ["member", "admin"] } } }, "TeamMemberInvite": { "type": "object", "required": ["email"], "properties": { "email": { "type": "string", "description": "User email to add to a team", "example": "user@miro.com" }, "role": { "type": "string", "example": "member", "description": "\nRole of the team member.\n* \"member\": Team member with full member permissions.\n* \"admin\": Admin of a team. Team member with permission to manage team.\n", "enum": ["member", "admin"] } } }, "TeamSettings": { "type": "object", "properties": { "organizationId": { "type": "string", "description": "Organization id", "example": "3074457345618265000" }, "teamAccountDiscoverySettings": { "$ref": "#/components/schemas/TeamAccountDiscoverySettings" }, "teamCollaborationSettings": { "$ref": "#/components/schemas/TeamCollaborationSettings" }, "teamCopyAccessLevelSettings": { "$ref": "#/components/schemas/TeamCopyAccessLevelSettings" }, "teamId": { "type": "string", "description": "Team id", "example": "3074457345618265000" }, "teamInvitationSettings": { "$ref": "#/components/schemas/TeamInvitationSettings" }, "teamSharingPolicySettings": { "$ref": "#/components/schemas/TeamSharingPolicySettings" }, "type": { "type": "string", "description": "Type of the object returned.", "default": "team-settings" } } }, "TeamSettingsChanges": { "type": "object", "properties": { "teamAccountDiscoverySettings": { "$ref": "#/components/schemas/TeamAccountDiscoverySettingsChanges" }, "teamCollaborationSettings": { "$ref": "#/components/schemas/TeamCollaborationSettingsChanges" }, "teamCopyAccessLevelSettings": { "$ref": "#/components/schemas/TeamCopyAccessLevelSettingsChanges" }, "teamInvitationSettings": { "$ref": "#/components/schemas/TeamInvitationSettingsChanges" }, "teamSharingPolicySettings": { "$ref": "#/components/schemas/TeamSharingPolicySettingsChanges" } } }, "TeamSharingPolicySettings": { "type": "object", "properties": { "allowListedDomains": { "type": "array", "description": "Allow listed domains", "items": { "type": "string", "description": "Allow listed domains" } }, "createAssetAccessLevel": { "type": "string", "description": "\n* \"company_admins\": Only company admins can create assets in a team\n* \"admins\": Both team and company admins can create assets in a team.\n* \"all_members\": all_members\n", "enum": ["company_admins", "admins", "all_members"] }, "defaultBoardAccess": { "type": "string", "description": "\nDefault board access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n* \"comment\": Anyone in the team can comment\n* \"edit\": Anyone in the team can edit\n", "enum": ["private", "view", "comment", "edit"] }, "defaultBoardSharingAccess": { "type": "string", "description": "\nIndicates who can change board access and invite users to boards in this team, by default.\n* \"team_members_with_editing_rights\": Any team member with editing rights on the board.\n* \"owner_and_coowners\": Only the owner and co-owners of the board.\n", "enum": ["team_members_with_editing_rights", "owner_and_coowners"] }, "defaultOrganizationAccess": { "type": "string", "description": "\nDefault organization access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n* \"comment\": Anyone in the team can comment\n* \"edit\": Anyone in the team can edit\n", "enum": ["private", "view", "comment", "edit"] }, "defaultProjectAccess": { "type": "string", "description": "\nDefault project access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n", "enum": ["private", "view"] }, "moveBoardToAccount": { "type": "string", "description": "\n* \"allowed\": Allow move board to team\n* \"not_allowed\": Not allow move board to team\n", "enum": ["allowed", "not_allowed"] }, "restrictAllowedDomains": { "type": "string", "description": "\n* \"enabled\": Enabled. Restrict to listed domain.\n* \"disabled\": Disabled. No domain restriction.\n* \"enabled_with_external_user_access\": Enabled. Restrict to listed domain but allows external users to access.\n", "enum": ["enabled", "enabled_with_external_user_access", "disabled"] }, "sharingOnAccount": { "type": "string", "description": "\n* \"allowed\": Allow sharing on team\n* \"not_allowed\": Not allow sharing on team\n", "enum": ["allowed", "not_allowed"] }, "sharingOnOrganization": { "type": "string", "description": "\n* \"allowed\": Allow sharing on organization\n* \"allowed_with_editing\": Allow sharing with editing on organization\n* \"not_allowed\": Not allow sharing on organization\n", "enum": ["allowed", "allowed_with_editing", "not_allowed"] }, "sharingViaPublicLink": { "type": "string", "description": "\n* \"allowed\": Allow sharing via public link\n* \"allowed_with_editing\": Allow sharing with editing via public link\n* \"not_allowed\": Not allow sharing via public link\n", "enum": ["allowed", "allowed_with_editing", "not_allowed"] } }, "description": "Team sharing policy settings" }, "TeamSharingPolicySettingsChanges": { "type": "object", "properties": { "allowListedDomains": { "type": "array", "description": "Allow listed domains", "items": { "type": "string", "description": "Allow listed domains" } }, "createAssetAccessLevel": { "type": "string", "description": "\n* \"company_admins\": Only company admins can create assets in a team\n* \"admins\": Both team and company admins can create assets in a team.\n* \"all_members\": all_members\n", "enum": ["company_admins", "admins", "all_members"] }, "defaultBoardAccess": { "type": "string", "description": "\nDefault board access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n* \"comment\": Anyone in the team can comment\n* \"edit\": Anyone in the team can edit\n", "enum": ["private", "view", "comment", "edit"] }, "defaultBoardSharingAccess": { "type": "string", "default": "team_members_with_editing_rights", "description": "\nIndicates who can change board access and invite users to boards in this team, by default.\n* \"team_members_with_editing_rights\": Any team member with editing rights on the board.\n* \"owner_and_coowners\": Only the owner and co-owners of the board.\n", "enum": ["team_members_with_editing_rights", "owner_and_coowners"] }, "defaultOrganizationAccess": { "type": "string", "description": "\nDefault organization access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n* \"comment\": Anyone in the team can comment\n* \"edit\": Anyone in the team can edit\n", "enum": ["private", "view", "comment", "edit"] }, "defaultProjectAccess": { "type": "string", "description": "\nDefault project access\n* \"private\": Only board owners can access\n* \"view\": Anyone in the team can view\n", "enum": ["private", "view"] }, "moveBoardToAccount": { "type": "string", "description": "\n* \"allowed\": Allow move board to team\n* \"not_allowed\": Not allow move board to team\n", "enum": ["allowed", "not_allowed"] }, "restrictAllowedDomains": { "type": "string", "description": "\n* \"enabled\": Enabled. Restrict to listed domain.\n* \"disabled\": Disabled. No domain restriction.\n* \"enabled_with_external_user_access\": Enabled. Restrict to listed domain but allows external users to access.\n", "enum": ["enabled", "enabled_with_external_user_access", "disabled"] }, "sharingOnAccount": { "type": "string", "description": "\n* \"allowed\": Allow sharing on team\n* \"not_allowed\": Not allow sharing on team\n", "enum": ["allowed", "not_allowed"] }, "sharingOnOrganization": { "type": "string", "description": "\n* \"allowed\": Allow sharing on organization\n* \"allowed_with_editing\": Allow sharing with editing on organization\n* \"not_allowed\": Not allow sharing on organization\n", "enum": ["allowed", "allowed_with_editing", "not_allowed"] }, "sharingViaPublicLink": { "type": "string", "description": "\n* \"allowed\": Allow sharing via public link\n* \"allowed_with_editing\": Allow sharing with editing via public link\n* \"not_allowed\": Not allow sharing via public link\n", "enum": ["allowed", "allowed_with_editing", "not_allowed"] } }, "description": "Team sharing policy settings" }, "TeamsPage": { "type": "object", "description": "Page of teams that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of teams", "items": { "$ref": "#/components/schemas/Team" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "TeamMembersPage": { "type": "object", "description": "Page of team members that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of team members", "items": { "$ref": "#/components/schemas/TeamMember" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "QueryCursor": { "type": "string", "example": "3055557345821140500" }, "QueryCursorBoardUserGroups": { "type": "string", "example": "MlR5YnRrRUJBV0N2OUxnbWxTNnJ5THwzNDU4NzY0NjEzMTE0Nzk4ODA1fEdST1VQ" }, "QueryCursorProjectUserGroups": { "type": "string", "example": "MlR5YnRrRUJBV0N2OUxnbWxTNnJ5THwzNDU4NzY0NjEzMTE0Nzk4ODA1fEdST1VQ" }, "QueryLimit": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100, "example": 100 }, "PageLimitUserGroupsEnterprisePlan": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100, "example": 100, "description": "The maximum number of results to return per call. If the number of project in the response is greater than the limit specified, the response returns the cursor parameter with a value." }, "PageSizeUserGroupsEnterprisePlan": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "default": 100, "example": 87, "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection." }, "PageCursorUserGroupsEnterprisePlan": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.", "example": "3074457345821140946" }, "PageTypeUserGroupsEnterprisePlan": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" }, "GroupsPage": { "type": "object", "description": "Page of groups that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of groups.", "items": { "$ref": "#/components/schemas/Group" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "Group": { "type": "object", "required": ["id", "name", "type"], "properties": { "id": { "type": "string", "description": "User group ID", "example": "3074457345618265000" }, "name": { "type": "string", "description": "User group name", "example": "My group" }, "description": { "type": "string", "description": "User group description", "example": "Info about group" }, "type": { "type": "string", "description": "Object type", "default": "user-group" } } }, "CreateGroupRequest": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "User group name.", "maxLength": 60, "minLength": 1, "example": "My user group" }, "description": { "type": "string", "description": "Description of the user group being created.", "maxLength": 300, "minLength": 0, "example": "This user group consists of users from the product team." } } }, "UpdateGroupRequest": { "type": "object", "properties": { "name": { "type": "string", "description": "New name for the user group being updated.", "maxLength": 60, "minLength": 1, "example": "Product user group" }, "description": { "type": "string", "description": "New description of the user group.", "maxLength": 300, "minLength": 0, "example": "This group contains users that belong to the product team." } } }, "GroupMembersPage": { "type": "object", "description": "Page of members that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of group members.", "items": { "$ref": "#/components/schemas/GroupMember" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "GroupMember": { "type": "object", "required": ["id", "email", "type"], "properties": { "id": { "type": "string", "description": "User ID", "example": "3074457345618265000" }, "email": { "type": "string", "description": "User email", "example": "user@mail.com" }, "type": { "type": "string", "description": "Object type", "default": "user-group-member" } } }, "CreateGroupMemberRequest": { "type": "object", "required": ["email"], "properties": { "email": { "type": "string", "description": "User email", "example": "user@mail.com" } } }, "UpdateUserGroupMembersRequest": { "type": "object", "properties": { "membersToAdd": { "type": "array", "description": "List of user identifiers (can be email or ID) to add to the user group.", "items": { "type": "string", "description": "User ID or user email." }, "example": ["3074457345618265000", "user0@example.com"] }, "membersToRemove": { "type": "array", "description": "List of user identifiers (can be email or ID) to remove from the user group.", "items": { "type": "string", "description": "User ID or user email." }, "example": ["3074457345618265001", "user1@example.com"] } } }, "UpdateUserGroupMembersResult": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/UpdateUserGroupMembersResultSuccess" }, { "$ref": "#/components/schemas/UpdateUserGroupMembersResultError" } ] } }, "UpdateUserGroupMembersResultSuccess": { "type": "object", "properties": { "operation": { "$ref": "#/components/schemas/UpdateUserGroupMembersResultOperation" }, "status": { "type": "integer", "description": "The HTTP status code for a successful operation.", "example": 200 }, "affectedUsers": { "type": "array", "items": { "$ref": "#/components/schemas/GroupMember" } } } }, "UpdateUserGroupMembersResultError": { "type": "object", "properties": { "operation": { "$ref": "#/components/schemas/UpdateUserGroupMembersResultOperation" }, "status": { "type": "integer", "description": "The HTTP status code for an unsuccessful operation.", "example": 400 }, "error": { "allOf": [ { "$ref": "#/components/schemas/BasicError" }, { "type": "object", "properties": { "status": { "default": 400 }, "code": { "default": "invalidParameters" } } } ] } } }, "UpdateUserGroupMembersResultOperation": { "type": "string", "description": "The name of the operation that was performed.", "enum": ["addMembers", "removeMembers"] }, "GroupTeamsPage": { "type": "object", "description": "Page of teams that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of teams.", "items": { "$ref": "#/components/schemas/GroupTeam" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "GroupTeam": { "type": "object", "required": ["id", "role"], "properties": { "id": { "type": "string", "description": "Team ID", "example": "3074457345618265000" }, "role": { "type": "string", "description": "Role of the user group in the team", "enum": ["member"], "default": "member", "example": "member" }, "type": { "type": "string", "description": "Object type", "default": "user-group-team" } } }, "TeamGroupsPage": { "type": "object", "description": "Page of groups that match the search query.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of groups.", "items": { "$ref": "#/components/schemas/TeamGroup" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "TeamGroup": { "type": "object", "required": ["id", "role"], "properties": { "id": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" }, "role": { "type": "string", "description": "Role of the user group in the team.", "enum": ["member"], "default": "member", "example": "member" }, "type": { "type": "string", "description": "Object type", "default": "team-user-group" } } }, "BoardUserGroup": { "type": "object", "required": ["id", "role"], "properties": { "id": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" }, "role": { "description": "Role of the user group on the board.", "enum": ["VIEWER", "COMMENTER", "EDITOR"], "default": "VIEWER", "example": "VIEWER" }, "type": { "description": "Object type", "default": "board-user-group" } } }, "BoardUserGroupsPage": { "type": "object", "description": "Page of user groups that with access to the board.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of user groups.", "items": { "$ref": "#/components/schemas/BoardUserGroup" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "CreateBoardUserGroupsRequest": { "type": "object", "required": ["userGroupIds", "role"], "properties": { "userGroupIds": { "type": "array", "description": "List of user group ids.", "items": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" } }, "role": { "type": "string", "description": "Role of the user group on the board.", "enum": ["VIEWER", "COMMENTER", "EDITOR"], "default": "VIEWER", "example": "VIEWER" } } }, "ProjectUserGroup": { "type": "object", "required": ["id", "role"], "properties": { "id": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" }, "role": { "description": "Role of the user group on the project.", "enum": ["VIEWER", "COMMENTER", "EDITOR"], "default": "VIEWER", "example": "VIEWER" }, "type": { "description": "Object type", "default": "project-user-group" } } }, "ProjectUserGroupsPage": { "type": "object", "description": "Page of user groups that with access to the project.", "required": ["limit", "size", "data"], "properties": { "limit": { "$ref": "#/components/schemas/PageLimit" }, "size": { "$ref": "#/components/schemas/PageSize" }, "data": { "type": "array", "description": "List of user groups.", "items": { "$ref": "#/components/schemas/ProjectUserGroup" } }, "cursor": { "$ref": "#/components/schemas/PageCursor" }, "type": { "$ref": "#/components/schemas/PageType" } } }, "CreateProjectUserGroupsRequest": { "type": "object", "required": ["userGroupIds", "role"], "properties": { "userGroupIds": { "type": "array", "description": "List of user group ids.", "items": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" } }, "role": { "type": "string", "description": "Role of the user group on the project.", "enum": ["VIEWER", "COMMENTER", "EDITOR"], "default": "VIEWER", "example": "VIEWER" } } }, "CreateTeamGroupRequest": { "type": "object", "required": ["userGroupId", "role"], "properties": { "userGroupId": { "type": "string", "description": "User group ID.", "example": "3074457345618265000" }, "role": { "type": "string", "enum": ["member"], "description": "Role of user group in the team.", "example": "member" } } }, "BasicError": { "type": "object", "properties": { "status": { "type": "number", "description": "HTTP status code." }, "code": { "type": "string", "description": "Description of the status code." }, "message": { "type": "string", "description": "Explanation for the error." }, "type": { "type": "string", "default": "error" } } }, "PageLimit": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 100, "example": 100, "description": "The maximum number of results to return per call. If the number of project in the response is greater than the limit specified, the response returns the cursor parameter with a value." }, "PageSize": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "default": 100, "example": 87, "description": "Number of results returned in the response considering the cursor and the limit values sent in the request. For example, if there are 20 results, the request does not have a cursor value, and the limit set to 10, the size of the results will be 10. In this example, the response will also return a cursor value that can be used to retrieve the next set of 10 remaining results in the collection." }, "PageCursor": { "type": "string", "description": "Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch.", "example": "3074457345821140946" }, "PageType": { "type": "string", "description": "Type of the object returned.", "default": "cursor-list" } }, "parameters": { "queryPageLimit": { "in": "query", "name": "limit", "description": "The maximum number of items in the result list.", "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 100, "format": "int32" }, "example": 10 }, "queryPageCursor": { "in": "query", "name": "cursor", "description": "An indicator of the position of a page in the full set of results. To obtain the first page leave it empty. To obtain subsequent pages set it to the value returned in the cursor field of the previous request.\n", "schema": { "type": "string" }, "example": "MTY2OTg4NTIwMDAwMHwxMjM=" }, "boardIdPlatformcreateitemsinbulkusingfilefromdevice": { "description": "Unique identifier (ID) of the board where you want to create the item.", "required": true, "in": "path", "name": "board_id", "schema": { "type": "string" } }, "boardId": { "description": "Unique identifier (ID) of the board where you want to create the item.", "required": true, "in": "path", "name": "board_id", "schema": { "type": "string" } }, "pathTeamMemberId": { "name": "member_id", "description": "The id of the Team Member", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "pathOrgId": { "name": "org_id", "description": "The ID of an organization.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "pathGroupId": { "name": "group_id", "description": "The ID of a user group.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "pathGroupMemberId": { "name": "member_id", "description": "The ID of a group member.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "pathTeamId": { "name": "team_id", "description": "The ID of a team.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "pathBoardId": { "name": "board_id", "description": "The ID of the board.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "uXjVOfjm6tI=" }, "pathProjectId": { "name": "project_id", "description": "The ID of the project.", "in": "path", "required": true, "schema": { "type": "string" }, "example": "3074457345618265000" }, "queryCursor": { "name": "cursor", "description": "A representation of the position of an item in the full set of results. The cursor is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "type": "string" }, "example": "3055557345821140500" }, "queryLimitGroups": { "name": "limit", "description": "The maximum number of user groups in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryLimitGroupMembers": { "name": "limit", "description": "The maximum number of members in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryLimitGroupTeams": { "name": "limit", "description": "The maximum number of teams in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryLimitTeamGroups": { "name": "limit", "description": "The maximum number of user groups in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryCursorGroups": { "name": "cursor", "description": "A representation of the position of a user group in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursor" } }, "queryCursorGroupMembers": { "name": "cursor", "description": "A representation of the position of a member in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursor" } }, "queryCursorGroupTeams": { "name": "cursor", "description": "A representation of the position of a team in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursor" } }, "queryCursorTeamGroups": { "name": "cursor", "description": "A representation of the position of a user group in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursor" } }, "queryLimitBoardUserGroups": { "name": "limit", "description": "The maximum number of user groups in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryCursorBoardUserGroups": { "name": "cursor", "description": "A representation of the position of a user group in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursorBoardUserGroups" } }, "queryLimitProjectUserGroups": { "name": "limit", "description": "The maximum number of user groups in the result list.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryLimit" } }, "queryCursorProjectUserGroups": { "name": "cursor", "description": "A representation of the position of a user group in the full set of results. It is used to determine the first item of the resulting set. Leave empty to retrieve items from the beginning.", "in": "query", "schema": { "$ref": "#/components/schemas/QueryCursorProjectUserGroups" } } }, "securitySchemes": { "oAuth2AuthCode": { "type": "oauth2", "description": "For more information, see https://developers.miro.com/reference/authorization-flow-for-expiring-tokens", "flows": { "authorizationCode": { "authorizationUrl": "https://miro.com/oauth/authorize", "tokenUrl": "https://api.miro.com/v1/oauth/token", "scopes": { "boards:read": "Retrieve information about boards, board members, or items", "boards:write": "Create, update, or delete boards, board members, or items", "microphone:listen": "Access a user's microphone to record audio in an iFrame", "screen:record": "Access a user's screen to record it in an iFrame", "webcam:record": "Allows an iFrame to access a user's camera to record video", "organizations:read": "Read information about the organization, such as name, plan, number of licenses, organization settings, or organization members.", "organizations:teams:read": "Read team information, such as the list of teams, team settings, team members, for an organization.", "organizations:teams:write": "Create or delete teams, update team information, team settings, team members, for an organization." } } } } } } }