Miro Group API

The Group API from Miro — 2 operation(s) for group.

OpenAPI Specification

miro-group-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Miro Developer Platform AI Interaction Logs Group API
  version: v2.0
  description: '<img src="https://content.pstmn.io/47449ea6-0ef7-4af2-bac1-e58a70e61c58/aW1hZ2UucG5n" width="1685" height="593">


    ### 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: Group
paths:
  /Groups:
    get:
      tags:
      - Group
      description: 'Retrieves the list of groups (teams) in the organization.<br><br> 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. <br><br> Example attributes: id,displayName <br> Note</b>: 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. <br>eq = equal<br> ne = not equal<br> co = contains<br> sw = starts with<br> ew = ends with<br> pr = preset (has value)<br> gt = greater than<br> ge = greater than or equal to<br> lt = less than<br> le = less than or equal to<br> and = Logical "and"<br> or = Logical "or"<br> not = "Not" function<br> () = Precedence grouping <br>The value must be passed within parenthesis. <br><br>For Example: displayName eq "Product Team" will fetch information related to team matching the display name "Product Team". <br>Note</b>: 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. <br><br> start index is 1-based. <br><br> Example: startIndex=1'
        schema:
          type: integer
      - name: count
        in: query
        required: false
        description: 'Specifies the maximum number of query results per page. <br><br> Use count in combination with startIndex query parameters to receive paginated results. <br><br> The count query parameter is set to 100 by default and the maximum value allowed for this parameter is 1000. <br><br> 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 <token>' \\\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 <token>',\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.<br><b> Note</b>: 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. <br><br> Example attributes: id,displayName <br> Note</b>: 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 <token>' \\\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 <token>',\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). <br><br> To add a user to the group (team), use add operation. <br> To remove a user from a group (team), use remove operation. <br> To update a user resource, use the replace operation. <br> The last team admin cannot be removed from the team. <br><br> Note: Attributes that are not provided will remain unchanged. PATCH operation only updates the fields provided. <br><br> Team members removal specifics: <br> 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. <br><br> Add team members specifics: <br> All added team members are reactivated or recreated if they were deactivated or deleted earlier. <br><br> External users specifics: <br> 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. <br><br> Example attributes: id,displayName <br> 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). <br><br> 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 <br><br> 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 <token>' \\\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\": \"<userId>\"\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 <token>',\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\": \"<userId>\"\n        }\n      ]\n    }\n  ]\n})\n  }\n);\nconst data = await res.json();\nconsole.log(data);"
components:
  schemas:
    GroupListResponse:
      type: object
      properties:
        schemas:
          type: array
          description: An array of URNs that identify the schema(s) that define the structure of this response. <br><br> 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)
    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. <br><br> Multiple users can be added or removed from the group (team) in one request. use the array to add or remove multiple users.<br><br> For updating security group name: <br> "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. <br><br> '
                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
  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