openapi: 3.0.1 info: title: Miro Developer Platform AI Interaction Logs User API version: v2.0 description: ' ### Miro Developer Platform concepts - New to the Miro Developer Platform? Interested in learning more about platform concepts?? [Read our introduction page](https://beta.developers.miro.com/docs/introduction) and familiarize yourself with the Miro Developer Platform capabilities in a few minutes. ### Getting started with the Miro REST API - [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. - [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. ### Miro REST API tutorials Check out our how-to articles with step-by-step instructions and code examples so you can: - [Get started with OAuth 2.0 and Miro](https://beta.developers.miro.com/docs/getting-started-with-oauth) ### Miro App Examples Clone 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. ' servers: - url: https://api.miro.com/ tags: - name: User paths: /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' components: schemas: CreateUserResponse: $ref: '#/components/schemas/UserResource' 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.

Updating 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 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. 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' 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. 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. x-settings: publish: true