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