openapi: 3.0.3
info:
  title: API Reference
  version: '1.0'
externalDocs:
  description: Find out more about the Catenda API
  url: 'https://developers.catenda.com/'
servers:
  - url: 'https://api.catenda.com'
tags:
  - name: Library
  - name: Library Item
  - name: Library Item Revision
  - name: Library Item Association
  - name: Collection
  - name: Collection Item
  - name: Collection Followers
security:
  - Bearer: []
paths:
  '/v2/projects/{project-id}/libraries':
    get:
      tags:
        - Library
      summary: List libraries
      operationId: getLibraries
      description: |
        List all libraries.

        Supported library types are **document**, **link**, **embedded_value** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-page'
        - $ref: '#/components/parameters/library-page-size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/library'
    post:
      tags:
        - Library
      summary: Create library
      operationId: createLibrary
      description: |
        Add a new library.

        Supported library types are **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - type
              properties:
                name:
                  type: string
                  description: The name of the library
                  example: Library 1
                type:
                  type: string
                  description: |
                    The library type, valid values are:
                     - classification.
                  enum:
                    - classification
                  example: classification
                classification:
                  type: object
                  description: Fields specific to classification libraries
                  properties:
                    source:
                      type: string
                      description: Source (or publisher) for this classification
                    edition:
                      type: string
                      description: The edition or version of the classification system from which the classification notation is derived
                    editionDate:
                      type: string
                      description: 'The date on which the edition of the classification used became valid, the format should be yyyy-mm-dd'
                      example: '2016-09-23'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library'
  '/v2/projects/{project-id}/libraries/{library-id}':
    get:
      tags:
        - Library
      summary: Get library
      operationId: getLibrary
      description: |
        Get a single library.

        Supported library types are **document**, **link**, **embedded_value** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library'
    patch:
      tags:
        - Library
      summary: Update library
      operationId: updateLibrary
      description: |
        Update a library.

        Supported library types are **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: The name of the library
                  example: Library 1
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library'
    delete:
      tags:
        - Library
      summary: Delete library
      operationId: deleteLibrary
      description: |
        Delete a library.

        Supported library types are **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library'
  '/v2/projects/{project-id}/libraries/{library-id}/items':
    get:
      tags:
        - Library Item
      summary: List items
      operationId: getLibraryItems
      description: |
        List all library items.

        If the library supports revisions then the latest revision for each item will be returned.

        Supported library types are **document**, **link**, **embedded_value** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-parent-id'
        - $ref: '#/components/parameters/library-item-associations'
        - $ref: '#/components/parameters/library-item-labels'
        - $ref: '#/components/parameters/library-item-search'
        - $ref: '#/components/parameters/library-item-created-at-from'
        - $ref: '#/components/parameters/library-item-created-at-to'
        - $ref: '#/components/parameters/library-items-revision-created-at-from'
        - $ref: '#/components/parameters/library-items-revision-created-at-to'
        - $ref: '#/components/parameters/library-item-include'
        - $ref: '#/components/parameters/library-item-sub-folders'
        - $ref: '#/components/parameters/library-items-scope'
        - $ref: '#/components/parameters/library-page'
        - $ref: '#/components/parameters/library-page-size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-document'
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-link'
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-embedded_value'
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-classification'
    post:
      tags:
        - Library Item
      summary: Create item
      operationId: createLibraryItem
      description: |
        Add a new library item.

        Supported library types are **document**, **link** and **classification**.

        For file upload, only **document** library type is supported.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - in: header
          name: Bimsync-Params
          schema:
            type: object
            required:
              - name
            properties:
              name:
                type: string
                description: Name of the document
                example: Document Name
              parentId:
                type: string
                description: |
                  A unique identifier for the parent of the library item represented as compacted UUID using 32 hexadecimal characters.

                  If no parent is present, the parent is the root of the library.
                example: 924809076a694255b589d236517a55da
              document:
                type: object
                description: Fields specific for document library items.
                properties:
                  type:
                    type: string
                    description: Value must be "file".
                    example: file
                    enum:
                      - file
                  filename:
                    type: string
                    description: Name of the document revision.
                    example: Document Revision Name
              failOnDocumentExists:
                type: boolean
                description: |
                  Supported in libraries of type document.

                  Default value is **true** which means when a file with the same name already exists in the folder the response will be 25 CONFLICT and upload will fail. When set to false a new revision will be created.
                example: true
          required: true
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/library-item-document-create'
                - $ref: '#/components/schemas/library-item-link-create'
                - $ref: '#/components/schemas/library-item-classification-create'
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-document'
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-link'
                  - type: array
                    items:
                      $ref: '#/components/schemas/library-item-classification'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}':
    get:
      tags:
        - Library Item
      summary: Get item
      operationId: getLibraryItem
      description: |
        Get a single library item.

        If the library supports revisions then the latest revision will be returned.

        By default returns the library item details as JSON.

        To download the library item use **Content-Type: application/octet-stream** in request headers.

        Supported library types are **document**, **link**, **embedded_value** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-format'
        - $ref: '#/components/parameters/library-item-include'
        - $ref: '#/components/parameters/library-item-scope'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/library-item-document'
                  - $ref: '#/components/schemas/library-item-link'
                  - $ref: '#/components/schemas/library-item-embedded_value'
                  - $ref: '#/components/schemas/library-item-classification'
            application/octet-stream:
              schema:
                type: string
                format: binary
    patch:
      tags:
        - Library Item
      summary: Update item
      operationId: updateLibraryItem
      description: |
        Update a library item.

        Supported library types are **document**, and **link**.

        In the case of document libraries updating **labels**, **name** or **parentId** at the same time is not supported.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the library item.
                  example: Name
                parentId:
                  type: string
                  description: |
                    A unique identifier for the parent of the library item represented as compacted UUID using 32 hexadecimal characters.

                    If no parent is present the item will keep its parent and not be modified.
                  example: 924809076a694255b589d236517a55da
                labelsToAdd:
                  type: array
                  description: List of labels to add to the library item.
                  items:
                    type: object
                    description: Id or name of the label to add
                    properties:
                      id:
                        type: string
                        description: Id of an existing label
                      name:
                        type: string
                        description: Name of an existing label otherwise a new label is created with this name
                labelsToRemove:
                  type: array
                  description: List of labels to add to the library item.
                  items:
                    type: object
                    description: Id or name of the label to add
                    properties:
                      id:
                        type: string
                        description: Id of an existing label
                      name:
                        type: string
                        description: Name of an existing label otherwise a new label is created with this name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/library-item-document'
                  - $ref: '#/components/schemas/library-item-link'
    delete:
      tags:
        - Library Item
      summary: Delete item
      operationId: deleteLibraryItem
      description: |
        Delete a library item

        Supported library types are **document**, **link** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/library-item-document'
                  - $ref: '#/components/schemas/library-item-link'
                  - $ref: '#/components/schemas/library-item-classification'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/token':
    post:
      tags:
        - Library Item
      summary: Create download token
      operationId: getLibraryItemToken
      description: |
        Create a signed download URL token to allow access to the latest revision of a document without requiring additional authentication.

        The token will expire in one hour.

        Supported library types are **document**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-format'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library-item-document-token'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/revisions':
    get:
      tags:
        - Library Item Revision
      summary: List revisions
      operationId: getLibraryItemRevisions
      description: |
        List all revisions for a library item.

        Supported library types are **document**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-revision-created-at-from'
        - $ref: '#/components/parameters/library-item-revision-created-at-to'
        - $ref: '#/components/parameters/library-item-revision-scope'
        - $ref: '#/components/parameters/library-page'
        - $ref: '#/components/parameters/library-page-size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/library-item-document-file-revision'
    post:
      tags:
        - Library Item Revision
      summary: Create revision
      operationId: createLibraryItemRevision
      description: |
        Create a new library item revision.

        Attach the file and set `Content-Type` header to `application/octet-stream`.

        Supported library types are **document**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - in: header
          name: Bimsync-Params
          schema:
            type: object
            required:
              - name
            properties:
              name:
                type: string
                description: Name of the document revision
                example: Document Revision Name
          required: true
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library-item-document-file-revision'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/revisions/{library-item-revision-id}':
    get:
      tags:
        - Library Item Revision
      summary: Download revision
      operationId: downloadLibraryItemRevision
      description: |
        Download a library item revision setting the `Accept` header to be `application/octet-stream`.

        Supported library types are **document**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-revision-id'
      responses:
        '200':
          description: OK
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/revisions/{library-item-revision-id}/details':
    get:
      tags:
        - Library Item Revision
      summary: Get revision
      operationId: getLibraryItemRevision
      description: Get a single library item revision.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-revision-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library-item-document-file-revision'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/revisions/{library-item-revision-id}/token':
    post:
      tags:
        - Library Item Revision
      summary: Create download token
      operationId: getLibraryItemRevisionToken
      description: |
        Create a signed download URL token to allow access to the document revision without requiring additional authentication.

        The token will expire in one hour.

        Supported library types are **document**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-item-revision-id'
        - $ref: '#/components/parameters/library-item-format'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/library-item-document-token'
  '/v2/projects/{project-id}/libraries/{library-id}/items/{library-item-id}/associations':
    get:
      tags:
        - Library Item Association
      summary: List associations
      operationId: getLibraryItemAssociations
      description: |
        List all associations between a library item and IFC products.

        IFC products are represented by their IfcGloballyUniqueId.

        Supported library types are **document**, **link**, **embedded_value** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - $ref: '#/components/parameters/library-page'
        - $ref: '#/components/parameters/library-page-size'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/library-item-association'
    post:
      tags:
        - Library Item Association
      summary: Add associations
      operationId: addLibraryItemAssociations
      description: |
        Associate a library item to IFC products.

        IFC products are represented by their IfcGloballyUniqueId.

        Supported library types are **document**, **link** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - in: query
          name: revision
          description: |
            Specify which revisions are used to resolve global id from objectId by providing a comma separated list. If not present, the latest revisions in all models in the project are used.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                description: Supported fields are globalId or objectId
                properties:
                  globalId:
                    type: string
                    description: A 22 character IfcGloballyUniqueId.
                    example: 2_TmT90tD0x9tJSTsyTb1J
                  objectId:
                    type: string
                    description: The object id of a product.
                    example: 192042324556
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/library-item-association'
    delete:
      tags:
        - Library Item Association
      summary: Remove associations
      operationId: removeLibraryItemAssociations
      description: |
        Remove associations between a library item and IFC products.

        Supported library types are **document**, **link** and **classification**.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-id'
        - $ref: '#/components/parameters/library-item-id'
        - in: query
          name: revision
          description: |
            Specify which revisions are used to resolve global id from objectId by providing a comma separated list. If not present, the latest revisions in all models in the project are used.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                description: Supported fields are globalId or objectId
                properties:
                  globalId:
                    type: string
                    description: A 22 character IfcGloballyUniqueId.
                    example: 2_TmT90tD0x9tJSTsyTb1J
                  objectId:
                    type: string
                    description: The object id of a product.
                    example: 192042324556
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/library-item-association'
  '/v2/projects/{project-id}/libraries/collections':
    get:
      tags:
        - Collection
      summary: List collections
      operationId: getCollections
      description: List all document library item collections.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/library-page'
        - $ref: '#/components/parameters/library-page-size'
        - $ref: '#/components/parameters/library-item-created-at-from'
        - $ref: '#/components/parameters/library-item-created-at-to'
        - $ref: '#/components/parameters/collection-created-by'
        - $ref: '#/components/parameters/collection-fields'
        - $ref: '#/components/parameters/collection-files'
        - $ref: '#/components/parameters/collection-finalized'
        - $ref: '#/components/parameters/collection-follow-latest-revision'
        - $ref: '#/components/parameters/collection-followers'
        - $ref: '#/components/parameters/collection-library-items'
        - $ref: '#/components/parameters/collection-search'
        - $ref: '#/components/parameters/collection-shared-by'
        - $ref: '#/components/parameters/collection-visibility'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/collection'
    post:
      tags:
        - Collection
      summary: Create collection
      operationId: createCollection
      description: |
        Add a new document library item collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: The name of the library item collection.
                  example: Collection 1
                description:
                  type: string
                  description: The description of the library item collection.
                  example: Collection description
                items:
                  type: array
                  description: List of items to add to the colleciton.
                  items:
                    type: object
                    required:
                      - libraryId
                      - libraryItemId
                      - fileId
                    properties:
                      libraryId:
                        type: string
                        description: The library id of the library item.
                        example: ead9b194e6024e6b92cae1d791797b68
                      libraryItemId:
                        type: string
                        description: The id of the library item.
                        example: 5badf33213ae420ebf81e727d5281850
                      fileId:
                        type: string
                        description: 'The id of the library item revision, defaults to the latest document revision id.'
                        example: 5dc75452-29a4-4c4a-8415-991b92a92001
                followLatestRevision:
                  type: boolean
                  description: Set whether the collection uses the latest revision of all items or the revision when added to the collection.
                  example: true
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/collection'
  '/v2/projects/{project-id}/libraries/collections/{collection-id}':
    get:
      tags:
        - Collection
      summary: Get collection
      operationId: getCollection
      description: Get a single document library item collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/collection'
    patch:
      tags:
        - Collection
      summary: Update collection
      operationId: updateCollection
      description: Update a document library item collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the library item collection.
                  example: Collection 1
                description:
                  type: string
                  description: The description of the library item collection.
                  example: Collection description
                finalized:
                  type: boolean
                  description: Whether the collection is finalized and no longer editable.
                  example: false
                visibility:
                  type: string
                  description: Determines whether the collection is shared at the project level. Valid values are "private" and "project-members".
                  enum:
                    - private
                    - project-members
                  example: private
                followLatestRevision:
                  type: boolean
                  description: Set whether the collection uses the latest revision of all items or the revision when added to the collection.
                  example: true
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/collection'
  '/v2/projects/{project-id}/libraries/collections/{collection-id}/items':
    get:
      tags:
        - Collection Item
      summary: List items
      operationId: getCollectionItems
      description: List all document library item collection items.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
        - $ref: '#/components/parameters/collection-fields'
        - $ref: '#/components/parameters/collection-include'
        - $ref: '#/components/parameters/collection-library-item-include'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/collection-item'
    post:
      tags:
        - Collection Item
      summary: Add items
      operationId: createCollectionItems
      description: Add items to a document library item collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - libraryId
                      - libraryItemId
                      - fileId
                    properties:
                      libraryId:
                        type: string
                        description: The library id of the library item.
                        example: ead9b194e6024e6b92cae1d791797b68
                      libraryItemId:
                        type: string
                        description: Id of the library item.
                        example: 5badf33213ae420ebf81e727d5281850
                      fileId:
                        type: string
                        description: Id of the library item revision.
                        example: 5dc75452-29a4-4c4a-8415-991b92a92001
                options:
                  type: object
                  properties:
                    duplicateItemOption:
                      type: string
                      description: Determines the behaviour when attempting to add a library item with the same library item id as a library item already in the collection. In this case the request will fail by default. There are 3 options you can choose from to deal with this situation. **overwrite-different-version** will override the existing library items with the new ones. **skip-duplicate-with-different-version** will ignore provided library items that are already in the collection. **skip-duplicate-with-same-version** will fail the request if any library item is already in the collection with a different revision.
                      example: overwrite-different-version
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/collection-item'
    delete:
      tags:
        - Collection Item
      summary: Remove item
      operationId: deleteCollectionItem
      description: Remove a document library item collection item from the collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  description: List of library items ids of the items to remove from the collection.
                  items:
                    type: string
                    description: Id of the document library item
                    example: f9f534a6d26441gc85ffc686bacbc9e3
      responses:
        '204':
          $ref: '#/components/responses/204'
  '/v2/projects/{project-id}/libraries/collections/{collection-id}/followers':
    get:
      tags:
        - Collection Followers
      summary: List followers
      operationId: getCollectionFollowers
      description: List all the followers of a document library item collection.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/user'
    post:
      tags:
        - Collection Followers
      summary: Add follower
      operationId: createCollectionFollower
      description: |
        Add a new follower to a document library item collection.

        Private collections can only have collection owner as a follower. If the collection is shared at the project level users can add themselves as a follower. Collection owners and administrators can add any user as a follower.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - userId
              properties:
                userId:
                  type: string
                  description: Id of the user to follow the collection.
                  example: 524809076a694255b989d236517a55da
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user'
  '/v2/projects/{project-id}/libraries/collections/{collection-id}/followers/batch':
    patch:
      tags:
        - Collection Followers
      summary: Update followers
      operationId: updateCollectionFollowers
      description: |
        Update multiple followers on a document library item collection.

        This resource is only available to project administrators and collection owners.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                followersToAdd:
                  type: array
                  description: List of user ids of users to add as followers of the document library item collection.
                  items:
                    type: string
                    example: 524809076a694255b989d236517a55da
                followersToRemove:
                  type: array
                  description: List of user ids of users to remove as followers of the document library item collection.
                  items:
                    type: string
                    example: 524809076a694255b989d236517a55da
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/user'
  '/v2/projects/{project-id}/libraries/collections/{collection-id}/followers/{user-id}':
    delete:
      tags:
        - Collection Followers
      summary: Remove follower
      operationId: deleteCollectionFollower
      description: |
        Remove a follower from a document library item collection.

        If the collection is private only the collection owner can remove themselves as a follower. If the collection is shared at the project level users can remove themselves as a follower. Collection owners and administrators can remove any user as a follower.
      parameters:
        - $ref: '#/components/parameters/project-id'
        - $ref: '#/components/parameters/collection-id'
        - $ref: '#/components/parameters/user-id'
      responses:
        '204':
          $ref: '#/components/responses/204'
components:
  parameters:
    classification-id:
      name: object-id
      in: path
      required: true
      description: Object id of the classification
      schema:
        type: integer
        format: int64
    classification-reference-id:
      name: object-id
      in: path
      required: true
      description: Object id of the classification reference
      schema:
        type: integer
        format: int64
    collection-id:
      name: collection-id
      in: path
      required: true
      description: Id of the document library item collection
      schema:
        type: string
    comment-id:
      name: comment-id
      in: path
      required: true
      description: Comment id
      schema:
        type: string
        example: b53a16c8-9ce7-4289-8b27-375e8810d360
    custom-field-id:
      name: custom-field-id
      in: path
      required: true
      description: Id of the custom field
      schema:
        type: string
    document-id:
      name: document-id
      in: path
      required: true
      description: Id of a document
      schema:
        type: string
        example: bd266fbe78bd493c87513c8925e7fbc2
    document-reference-id:
      name: document-reference-id
      in: path
      required: true
      description: Document reference id
      schema:
        type: string
        example: cd8daaee-1775-4b9d-a1c4-01bf503658f4
    export-id:
      name: export-id
      in: path
      required: true
      description: Id of topics export
      schema:
        type: string
        example: f4ba7d63-54a8-44a9-93f5-83f4697af216
    group-id:
      name: object-id
      in: path
      required: true
      description: Object id of the group
      schema:
        type: integer
        format: int64
    import-id:
      name: import-id
      in: path
      required: true
      description: Id of topics import
      schema:
        type: string
        example: f4ba7d63-54a8-44a9-93f5-83f4697af216
    label-group-id:
      name: label-group-id
      in: path
      required: true
      description: Id of the label group
      schema:
        type: string
    label-id:
      name: label-id
      in: path
      required: true
      description: Id of the label
      schema:
        type: string
    layer-id:
      name: object-id
      in: path
      required: true
      description: Object id of the layer
      schema:
        type: integer
        format: int64
    library-id:
      name: library-id
      in: path
      required: true
      description: Id of the library
      schema:
        type: string
    library-item-id:
      name: library-item-id
      in: path
      required: true
      description: Id of the library item
      schema:
        type: string
    library-item-revision-id:
      name: library-item-revision-id
      in: path
      required: true
      description: Id of the library item revision
      schema:
        type: string
    model-id:
      name: model-id
      in: path
      required: true
      description: Id of the model
      schema:
        type: string
    model-revision-id:
      name: model-revision-id
      in: path
      required: true
      description: Id of the model revision
      schema:
        type: string
    model-revision-status-id:
      name: model-revision-status-id
      in: path
      required: true
      description: Id of the model revision status
      schema:
        type: string
    organization-id:
      name: organization-id
      in: path
      required: true
      description: Id of the organization
      schema:
        type: string
    owner-history-id:
      name: object-id
      in: path
      required: true
      description: Object id of the owner history
      schema:
        type: integer
        format: int64
    product-id:
      name: object-id
      in: path
      required: true
      description: Object id of the product
      schema:
        type: integer
        format: int64
    project-id:
      name: project-id
      in: path
      required: true
      description: Catenda project id
      schema:
        type: string
        example: af2d8af0fa54465b89bf26dd3d92cfd0
    related-topic-id:
      name: related-topic-id
      in: path
      required: true
      description: Topic id
      schema:
        type: string
        example: 18d0273d-e15c-4924-97b3-6f47b233eebe
    schema-uri:
      name: schema-uri
      in: path
      required: true
      description: Schema uri
      schema:
        type: string
        example: 'urn:ietf:params:scim:schemas:core:2.0:User'
    team-id:
      name: team-id
      in: path
      required: true
      description: Id of the team
      schema:
        type: string
    topic-id:
      name: topic-id
      in: path
      required: true
      description: Topic id
      schema:
        type: string
        example: 18d0273d-e15c-4924-97b3-6f47b233eebe
    topic-board-id:
      name: topic-board-id
      in: path
      required: true
      description: Id of the topic board
      schema:
        type: string
        example: e18a2d10-1595-4e52-a941-22d43bf8d7ad
    type-id:
      name: object-id
      in: path
      required: true
      description: Object id of the type
      schema:
        type: integer
        format: int64
    user-id:
      name: user-id
      in: path
      required: true
      description: Id of the user
      schema:
        type: string
    viewpoint-id:
      name: viewpoint-id
      in: path
      required: true
      description: Id of viewpoint
      schema:
        type: string
        example: 52959166-dbd2-44eb-81bb-74f955f30e0f
    webhook-id:
      name: webhook-id
      in: path
      required: true
      description: Id of the webhook
      schema:
        type: string
    bimsync-archived:
      name: bimsync_archived
      in: query
      description: 'Limit to topic boards based on archived status, valid values are "archived", "not-archived" and "all".'
      schema:
        type: string
    bimsync-image-size:
      name: bimsync-image-size
      in: query
      description: 'Resize the image, valid values are "xs" (130px), "s" (220px), "m" (400px), "l" (600px), "xl" (1200px), "full" (original)'
      schema:
        type: string
    bimsync-project-id:
      name: bimsync_project_id
      in: query
      description: Limit to topic boards that belong to the specified Catenda project id
      schema:
        type: string
    collection-created-by:
      name: createdBy
      in: query
      description: Limit result to only contain collections created by the specified users. Provide a comma separated list of user ids.
      schema:
        type: string
    collection-fields:
      name: fields
      in: query
      description: Specify which fields to include in the response. Provide a comma separated list of valid values. Valid values are **id**.
      schema:
        type: string
    collection-files:
      name: files
      in: query
      description: Limit result to only contain collections containing the specified library item revisions. Provide a comma separated list of library item revision ids.
      schema:
        type: string
    collection-finalized:
      name: finalized
      in: query
      description: Limit result to only contain finalized collections.
      schema:
        type: boolean
    collection-follow-latest-revision:
      name: followLatestRevision
      in: query
      description: Limit result to only contain collections that follow the latest revision of all items.
      schema:
        type: boolean
    collection-followers:
      name: followers
      in: query
      description: Limit result to only contain collections followed by the specified users. Provide a comma separated list of user ids.
      schema:
        type: string
    collection-include:
      name: include
      in: query
      description: Specify which additional fields to include in the response. Provide a comma separated list of valid values. Valid values are **libraryItem**.
      schema:
        type: string
    collection-library-item-include:
      name: libraryItemInclude
      in: query
      description: Specify which additional library item fields to include in the response. Combine with include parameter and provide a comma separated list of valid values. Valid values are **path**.
      schema:
        type: string
    collection-library-items:
      name: libraryItems
      in: query
      description: Limit result to only contain collections containing the specified library items. Provide a comma separated list of library item ids.
      schema:
        type: string
    collection-search:
      name: search
      in: query
      description: Limit result to only contain collections with names that match the search term.
      schema:
        type: string
    collection-shared-by:
      name: sharedBy
      in: query
      description: 'Limit result to only contain collections with the specified shared methods. Provide a comma separated list of valid values. Valid values are **link**, **email** or **not-shared**.'
      schema:
        type: string
    collection-visibility:
      name: visibility
      in: query
      description: Limit result to only contain collections with the specified visibility. Provide a comma separated list of valid values. Valid values are **private** or **project-members**.
      schema:
        type: string
    document-upload-id:
      name: guid
      in: query
      description: Id to give uploaded document
      schema:
        type: string
    export-format:
      name: format
      in: query
      description: 'Format of export, default is BCF 3.0, valid values are "bcf", "excel" or "pdf"'
      schema:
        type: string
    include-authorization:
      name: includeAuthorization
      in: query
      description: Include authorization field in response
      schema:
        type: boolean
    include-bimsync-project-topics:
      name: includeBimsyncProjectTopics
      in: query
      description: Include topics from other topic boards that belong to the same Catenda project
      schema:
        type: boolean
    ifc-model:
      name: model
      in: query
      description: Filter by latest revision of model id
      schema:
        type: string
    ifc-page:
      name: page
      in: query
      description: Default value is 1
      schema:
        type: integer
    ifc-page-size:
      name: pageSize
      in: query
      description: 'Default 100, max 1000'
      schema:
        type: integer
    ifc-revision:
      name: revision
      in: query
      description: Filter by revision id
      schema:
        type: string
    ifc-type:
      name: ifcType
      in: query
      description: Filter by IFC type
      schema:
        type: string
    label-include:
      name: include
      in: query
      description: |
        Use value `group` to include associated label group in the result
      schema:
        type: string
    library-item-associations:
      name: associations
      in: query
      description: Limit result to only contain library items linked to the specified IFC guids. Provide a comma separated list of IFC guids.
      schema:
        type: string
    library-item-created-at-from:
      name: createdAtFrom
      in: query
      description: |
        Filter the result by providing a date in ISO 8601 format.

        Result will only contain items created after this date.
      schema:
        type: string
    library-item-created-at-to:
      name: createdAtTo
      in: query
      description: |
        Filter the result by providing a date in ISO 8601 format.

        Result will only contain items created before this date.
      schema:
        type: string
    library-item-format:
      name: format
      in: query
      description: Optionally specify an alternative format when download a library item.
      schema:
        type: string
    library-item-include:
      name: include
      in: query
      description: |
        Comma separated list of referenced properties that will be added to the items of the result. Valid values are **labels**, **labelGroups** and **path**.
      schema:
        type: string
    library-item-labels:
      name: labels
      in: query
      description: Filter the result by providing a comma separated list of label ids.
      schema:
        type: string
    library-item-revision-created-at-from:
      name: createdAtFrom
      in: query
      description: |
        Limit the result by providing a date in ISO 8601 format.

        Result will only contain items created after this date.
      schema:
        type: string
    library-item-revision-created-at-to:
      name: createdAtTo
      in: query
      description: |
        Limit the result by providing a date in ISO 8601 format.

        Result will only contain items created before this date.
      schema:
        type: string
    library-item-scope:
      name: scope
      in: query
      description: |
        Determine which revision of the library item to return.

        - `all`: Return latest revision.
        - `published`: Return latest published revision.
      schema:
        type: string
        enum:
          - all
          - published
    library-item-parent-id:
      name: parentId
      in: query
      description: |
        Parent item of the library items, represented as compacted UUID using 32 hexadecimal characters. Setting this will only list the items with this parentId, to specify the root items, set parentId to **root**.
      schema:
        type: string
    library-items-revision-created-at-from:
      name: revisionCreatedAtFrom
      in: query
      description: |
        Filter the result by providing a date in ISO 8601 format.

        Result will only contain items with the last revision being created after this date.
      schema:
        type: string
    library-items-revision-created-at-to:
      name: revisionCreatedAtTo
      in: query
      description: |
        Filter the result by providing a date in ISO 8601 format.

        Result will only contain items with the last revision being created before this date.
      schema:
        type: string
    library-item-revision-scope:
      name: scope
      in: query
      description: |
        Limit the result by revision publication status.

        - `all`: Return all revisions.
        - `published`: Return only published revisions.
      schema:
        type: string
        enum:
          - all
          - published
    library-item-search:
      name: search
      in: query
      description: Filter the result by search text.
      schema:
        type: string
    library-item-sub-folders:
      name: subFolders
      in: query
      description: 'Include library items within folders in result, recursive search.'
      schema:
        type: boolean
    library-items-scope:
      name: scope
      in: query
      description: |
        Determine which library items to return.

        - `all`: Return all library items.
        - `published`: Return all library items with published revisions.
      schema:
        type: string
        enum:
          - all
          - published
    library-page:
      name: page
      in: query
      description: Default value is 1
      schema:
        type: integer
    library-page-size:
      name: pageSize
      in: query
      description: 'Default 100, max 1000'
      schema:
        type: integer
    model-normalize:
      name: normalize
      in: query
      description: |
        Applies to IFC downloads. By default, STEP instance names correspond to their Catenda object id, by setting `true` the STEP instance names will instead start at #1.
      schema:
        type: string
    model-revision-scope:
      name: scope
      in: query
      description: |
        Limit the result based on the document revision that originates the model revision.

        - `all`: Return all model revisions.
        - `published`: Return all model revisions originating from published document revisions.
      schema:
        type: string
        enum:
          - all
          - published
    model-revision-model:
      name: model
      in: query
      description: Filter by model id
      schema:
        type: string
    model-revision-product:
      name: product
      in: query
      description: Filter by the object id of an IFC product
      schema:
        type: string
    model-scope:
      name: scope
      in: query
      description: |
        Limit the result based on the document that originates the model.

        - `all`: Return all models.
        - `published`: Return models with revisions originating from published document revisions.
      schema:
        type: string
        enum:
          - all
          - published
    odata-filter:
      name: $filter
      in: query
      description: Filter topics with OData
      schema:
        type: string
    odata-search:
      name: $search
      in: query
      description: Search topic title and description
      schema:
        type: string
    odata-select:
      name: $select
      in: query
      description: Limit topic fields with OData
      schema:
        type: string
    odata-skip:
      name: $skip
      in: query
      description: |
        Position of topic cursor. Example: With `$top` value of 50, set `$skip` to 50 to retrieve page 2, to 100 for page 3, etc...
      schema:
        type: string
    odata-sort:
      name: $orderby
      in: query
      description: Sort topics with OData
      schema:
        type: string
    odata-top:
      name: $top
      in: query
      description: 'Number of topics in result (page size). Default 100, max 500.'
      schema:
        type: string
    scim-count:
      name: count
      in: query
      description: 'Page size, default value is 100'
      schema:
        type: integer
    scim-start-index:
      name: startIndex
      in: query
      description: 'Page number, default value is 1'
      schema:
        type: integer
    status-include-unlinked:
      name: include-unlinked
      in: query
      description: Include unlinked statuses
      schema:
        type: boolean
    topic-board-include:
      name: include
      in: query
      description: Comma separated list of referenced properties that will be added to the result. Valid values are **customFields**.
      schema:
        type: string
    type-include-unlinked:
      name: include-unlinked
      in: query
      description: Include unlinked types
      schema:
        type: boolean
    user-include-unlinked:
      name: include-unlinked
      in: query
      description: Include unlinked users
      schema:
        type: boolean
  responses:
    '204':
      description: No Content
  schemas:
    api-versions:
      type: object
      properties:
        versions:
          type: array
          items:
            type: object
            properties:
              api_id:
                type: string
                description: Type of API
                example: bcf
              version_id:
                type: string
                description: The API version
                example: '3.0'
              detailed_version:
                type: string
                description: Description of the API
                example: Catenda OpenCDE BCF 3.0
              api_base_url:
                type: string
                description: Base URL of all endpoints for this API version
                example: 'https://api.catenda.com/opencde/bcf/3.0'
    bcf-topic-board:
      type: object
      properties:
        project_id:
          type: string
          description: The topic board id
          example: e18a2d10-1595-4e52-a941-22d43bf8d7ad
        name:
          type: string
          description: The topic board name
          example: Issues
        bimsync_project_id:
          type: string
          description: Id of the Catenda project the topic board belongs to
          example: 2439e0a3-a21e-4135-8c09-9ae57ee12681
        bimsync_issue_board_name:
          type: string
          description: The topic board name on Catenda Hub
          example: Issues
        bimsync_project_name:
          type: string
          description: Name of the Catenda project the topic board belongs to
          example: Site A
        bimsync_extension_acl:
          type: object
          description: Map of access control features to access value for the current user
          properties:
            canCloseIssues:
              type: string
              description: 'Whether the current user can close topics, valid values are "all", "own" and "none".'
              enum:
                - all
                - own
                - none
              example: all
    collection:
      type: object
      properties:
        id:
          type: string
          description: 'Id of the collection, represented as compacted UUID using 32 hexadecimal characters.'
          example: 924809076a694255b589d236517a55da
        name:
          type: string
          description: The name of the collection.
          example: Collection name
        description:
          type: string
          description: The description of the collection.
          example: Collection description
        finalized:
          type: boolean
          description: |
            Indicates whether the collection is finalized.

            Finalized collections can no longer be edited.
          example: false
        followLatestRevision:
          type: boolean
          description: Determines whether collection items follow the latest revision of a library item or the revision when added to the collection.
          example: true
        visibility:
          type: string
          description: |
            Determines whether the collection is available to all project members.

            By default a collection becomes available to project members when it is finalized.

            Valid values are:
              - private
              - project-members
          enum:
            - private
            - project-members
          example: private
        createdAt:
          type: string
          description: The date and time the collection was created in ISO 8601 format.
          example: 2023-12-09T10:07:56.000Z
        createdBy:
          type: string
          description: The user id of the user who created the collection.
          example: 524809076a694255b989d236517a55da
    collection-item:
      type: object
      properties:
        id:
          type: string
          description: 'Id of the collection item, represented as compacted UUID using 32 hexadecimal characters.'
          example: 924809076a694255b589d236517a55da
        libraryId:
          type: string
          description: The library id of the library item.
          example: ead9b194e6024e6b92cae1d791797b68
        libraryItemId:
          type: string
          description: Id of the library item.
          example: 5badf33213ae420ebf81e727d5281850
        fileId:
          type: string
          description: Id of the library item revision.
          example: 5dc75452-29a4-4c4a-8415-991b92a92001
        createdAt:
          type: string
          description: The date and time the collection was created in ISO 8601 format.
          example: 2023-12-09T10:07:56.000Z
        createdBy:
          type: string
          description: The user id of the user who created the collection.
          example: 524809076a694255b989d236517a55da
    comment:
      type: object
      properties:
        guid:
          type: string
          description: Represented as compacted UUID using 32 hexadecimal characters
          example: b53a16c8-9ce7-4289-8b27-375e8810d360
        date:
          type: string
          description: Creation date of comment
          example: '2024-05-08T14:29:08.000+0000'
        author:
          type: string
          description: User name of comment author
          example: john@doe.com
        comment:
          type: string
          description: Text of the comment
          example: Comment text
        topic_guid:
          type: string
          description: Id of the topic comment belongs to
          example: 18d0273d-e15c-4924-97b3-6f47b233eebe
        modified_date:
          type: string
          description: Last modified date of the comment
          example: '2024-05-08T15:29:08.000+0000'
          nullable: true
        modified_author:
          type: string
          description: User name of last user to modify the comment
          example: john@doe.com
          nullable: true
        viewpoint_guid:
          type: string
          description: 'Id of the associated viewpoint, useful for attaching an image to a comment'
          example: e765db1f-d705-4d6e-955c-28bf1a897818
          nullable: true
        authorization:
          type: object
          description: Local variations from the global authorization defaults for this resource
          properties:
            comment_actions:
              type: array
              description: List of comment actions
              example:
                - update
                - delete
    custom-field:
      type: object
      description: Represents a single custom field.
      properties:
        id:
          type: string
          description: 'Id of the custom field, represented as compacted UUID using 32 hexadecimal characters.'
          example: 324409076a694255b589d236517a55da
        name:
          type: string
          description: The name of the custom field.
          example: Custom field name
        description:
          type: string
          description: Description of the custom field.
          example: Custom field description
        type:
          type: string
          description: 'Type of the custom field. Valid values are "text", "integer", "double", or "enumeration".'
          enum:
            - text
            - integer
            - double
            - enumeration
          example: text
        createdAt:
          type: string
          description: The date and time the custom field was created in ISO 8601 format.
          example: 2023-03-06T11:52:45.000Z
        createdBy:
          type: string
          description: Id of the user that created the custom field.
          example: 624809076a694255b989d236517a55da
        archived:
          type: boolean
          description: Whether the custom field is archived.
          example: false
        dropdownItems:
          type: array
          description: List of dropdown items for custom fields of type enumeration. Value is null for other custom field types.
          items:
            type: object
            properties:
              id:
                type: string
                description: 'Id of the custom field, represented as compacted UUID using 32 hexadecimal characters.'
              name:
                type: string
                description: Name of the dropdown item
                example: Dropdown item 1
              code:
                type: string
                description: 'The code of the enumeration item, value is unique for a custom field.'
                example: Item name
              disabled:
                type: boolean
                description: Whether the enumeration item is disabled.
                example: false
          nullable: true
    custom-field-enumeration:
      type: object
      description: Represents a single custom field enumeration item.
      properties:
        id:
          type: string
          description: 'Id of the enumeration item, represented as compacted UUID using 32 hexadecimal characters.'
          example: 324409076a694255b589d236517a55da
        name:
          type: string
          description: The name of the enumeration item.
          example: Custom field name
        code:
          type: string
          description: 'The code of the enumeration item, value is unique for a custom field.'
          example: Item name
        disabled:
          type: boolean
          description: Whether the enumeration item is disabled.
          example: false
    custom-field-instance:
      type: object
      description: Represents a single custom field.
      properties:
        id:
          type: string
          description: 'Id of the custom field, represented as compacted UUID using 32 hexadecimal characters.'
          example: 324809076a694255b589d236517a55da
        disabled:
          type: boolean
          description: Whether the instance is disabled.
          example: false
        required:
          type: boolean
          description: Whether the value of the instance is non nullable.
          example: false
        defaultValue:
          type: object
          description: 'Default value for the custom field instance, required if instance is non nullable.'
        itemBeforeId:
          type: string
          description: Id of the custom field that appears before the current one. Use null if the item should be the first one.
          nullable: true
    document:
      type: object
      properties:
        guid:
          type: string
          description: Id of the document
          example: bd266fbe-78bd-493c-8751-3c8925e7fbc2
        filename:
          type: string
          description: File name of the document
          example: document.pdf
    document-reference-document:
      type: object
      properties:
        guid:
          type: string
          description: Id of the document reference
          example: cd8daaee-1775-4b9d-a1c4-01bf503658f4
        document_guid:
          type: string
          description: Id of the referenced document
          example: bd266fbe-78bd-493c-8751-3c8925e7fbc2
        description:
          type: string
          description: Description of the document reference
          example: Document reference description
    document-reference-link:
      type: object
      properties:
        guid:
          type: string
          description: Id of the document reference
          example: cd8daaee-1775-4b9d-a1c4-01bf503658f4
        url:
          type: string
          description: URL content of the referenced link
        description:
          type: string
          description: Description of the document reference
          example: Document reference description
    error:
      type: object
      properties:
        code:
          type: integer
          description: The error code
        message:
          type: string
          description: The error message
    export-status:
      type: object
      properties:
        id:
          type: string
          description: Id of the export process
          example: c9549c4c4e214538a2b327815cfe99f3
        createdAt:
          type: string
          description: Timestamp of when export process was initiated
          example: '2024-05-30T15:08:00Z'
        status:
          type: string
          description: 'Current export processing status, valid values are "processing", "success" or "failed"'
          enum:
            - processing
            - success
            - failed
          example: processing
    file:
      type: object
      properties:
        type:
          type: string
          description: Value is file
          example: file
        createdAt:
          type: string
          description: The date and time the file was created in ISO 8601 format
          example: 2023-12-09T10:07:56.000Z
        owner:
          type: string
          description: User id of the file owner
          example: gh7fe246cea6442834052404eth08drj
        revision:
          $ref: '#/components/schemas/library-item-document-file-revision'
    folder:
      type: object
      properties:
        type:
          type: string
          description: Value is folder
          example: folder
        createdAt:
          type: string
          description: The date and time the folder was created in ISO 8601 format
          example: 2023-12-09T10:07:56.000Z
        owner:
          type: string
          description: User id of the folder owner
          example: gh7fe246cea6442834052404eth08drj
    foundation-authentication-urls:
      type: object
      properties:
        oauth2_auth_url:
          type: string
          description: The OAuth 2.0 authorization URL
          example: 'https://api.catenda.com/oauth2/authorize'
        oauth2_token_url:
          type: string
          description: The OAuth 2.0 token URL
          example: 'https://api.catenda.com/oauth2/token'
        http_basic_supported:
          type: boolean
          description: Whether basic auth is supported
          example: false
        supported_oauth2_flows:
          type: array
          description: List of support OAuth 2.0 flows
          items:
            type: string
            example: authorization_code_grant
    foundation-current-user:
      type: object
      properties:
        id:
          type: string
          description: The user id
          example: john@doe.com
        name:
          type: string
          description: The user name
          example: John Doe
    ifc-classification:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the classification
          example: 83749689
        ifcType:
          type: string
          description: The entity type of the classification
          example: IfcClassification
        attributes:
          type: object
          description: The attributes of the classification including the name and source
    ifc-classification-reference:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the classification reference
          example: 317636045083
        ifcType:
          type: string
          description: The entity type of the classification reference
          example: IfcClassificationReference
        attributes:
          type: object
          description: The attributes of the classification reference including the name and identitifier
    ifc-classification-reference-relation:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the classification reference
          example: 417236566151
        name:
          type: string
          description: The name of the classification reference
          example: Showers
        ifcType:
          type: string
          description: The entity type of the classification reference
          example: IfcClassificationReference
        attributes:
          type: object
          description: The attributes of the classification reference including the identifier
        products:
          description: The products related to the classification reference
          type: array
          items:
            type: object
            properties:
              url:
                type: string
                description: The product resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417236566121'
              objectId:
                type: integer
                format: int64
                description: The object id of the product
                example: 417236566121
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 2z$4$ZtGH92fufpaUQ_65c
              name:
                type: string
                description: The name of the product
                example: 'Strainers-Carbon_Steel_Flanged:80 mm:3589667'
              ifcType:
                type: string
                description: The entity type of the product
                example: IfcFlowController
        classification:
          type: object
          description: The classification related to the classification reference
          properties:
            url:
              type: string
              description: The classification resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/classifications/417236566342'
            objectId:
              type: integer
              format: int64
              description: The object id of the classification
              example: 417236566342
            name:
              type: string
              description: The name of the classification
              example: Uniformat
            ifcType:
              type: string
              description: The entity type of the classification
              example: IfcClassification
    ifc-classification-relations:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the classification
          example: 317236045075
        name:
          type: string
          description: The name of the classification
          example: Uniformat
        ifcType:
          type: string
          description: The entity type of the classification
          example: IfcClassification
        classificationReferences:
          type: array
          description: The classification references related to the classification
          items:
            type: object
            properties:
              url:
                type: string
                description: The classification reference resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/classification_references/317636045083'
              objectId:
                type: integer
                format: int64
                description: The object id of the classification reference
                example: 317636045083
              name:
                type: string
                description: The name of the classification reference
                example: Showers
              ifcType:
                type: string
                description: The entity type of the classification reference
                example: IfcClassificationReference
              attributes:
                type: object
                description: The attributes of the classification reference including the identifier
    ifc-field:
      type: object
      properties:
        field:
          type: string
          description: The name of the field
          example: objectId
        type:
          type: integer
          format: string
          description: The type of the field
          example: string
        measureType:
          type: string
          description: The measure type of the field
          example: length
          nullable: true
    ifc-group-relation:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the group
          example: 317236464192
        globalId:
          type: string
          description: A 22 character IfcGloballyUniqueId
          example: 5Db9ZjqSKLKf3kfFSB$pnK
        name:
          type: string
          description: The name of the group
          example: 'Model Group:bal 3:5053794'
        ifcType:
          type: string
          description: The entity type of the group
          example: IfcGroup
        products:
          type: array
          description: The products related to the group
          items:
            type: object
            properties:
              url:
                type: string
                description: The product resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
              objectId:
                type: integer
                format: int64
                description: The object id of the product
                example: 417235853289
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 9dYMac7Ar51vpH7fe7CB7F
              name:
                type: string
                description: The name of the product
                example: null
                nullable: true
              ifcType:
                type: string
                description: The entity type of the product
                example: IfcWall
        children:
          type: array
          description: The related child groups
          items:
            type: object
            properties:
              url:
                type: string
                description: The group resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
              objectId:
                type: integer
                format: int64
                description: The object id of the group
                example: 417235853289
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 9dYMac7Ar51vpH7fe7CB7F
              name:
                type: string
                description: The name of the group
                example: null
                nullable: true
              ifcType:
                type: string
                description: The entity type of the group
                example: IfcGroup
        ownerHistory:
          type: object
          description: The owner history related to the group
          properties:
            url:
              type: string
              description: The owner history resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/ownerhistory/217235853093'
            objectId:
              type: integer
              format: int64
              description: The object id of the owner history
              example: 217235853093
            name:
              type: string
              description: The name of the owner history
              example: null
              nullable: true
            ifcType:
              type: string
              description: The entity type of the owner history
              example: IfcOwnerHistory
        parent:
          type: object
          description: The related parent group
          properties:
            url:
              type: string
              description: The group resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
            objectId:
              type: integer
              format: int64
              description: The object id of the group
              example: 417235853289
            globalId:
              type: string
              description: A 22 character IfcGloballyUniqueId
              example: 9dYMac7Ar51vpH7fe7CB7F
            name:
              type: string
              description: The name of the group
              example: null
              nullable: true
            ifcType:
              type: string
              description: The entity type of the group
              example: IfcGroup
    ifc-group:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the group
          example: 417236464138
        ifcType:
          type: string
          description: The entity type of the group
          example: IfcGroup
        ifcSchema:
          type: string
          description: The IFC schema of the model revision
          example: IFC2X3
        attributes:
          type: object
          description: The attributes of the group including the name and global id
    ifc-layer-relation:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the layer
          example: 417236997413
        name:
          type: string
          description: The name of the layer
          example: S-STRS-____-OTLN
        ifcType:
          type: string
          description: The entity type of the layer
          example: IfcPresentationLayerAssignment
        products:
          type: array
          description: The products related to the layer
          items:
            type: object
            properties:
              url:
                type: string
                description: The product resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/617236039783'
              objectId:
                type: integer
                format: int64
                description: The object id of the product
                example: 617236039783
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 5YznyLUif7kPKJZOIB9Nkf
              name:
                type: string
                description: The name of the product
                example: 'Stair:Monobloc PMR:6036293'
              ifcType:
                type: string
                description: The entity type of the product
                example: IfcStair
    ifc-layer:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the layer
          example: 417236997303
        ifcType:
          type: string
          description: The entity type of the layer
          example: IfcPresentationLayerAssignment
        attributes:
          type: object
          description: The attributes of the layer including name
    ifc-material:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the material
          example: 217235939073
        attributes:
          type: object
          description: The attributes of the material including the name
        ifcSchema:
          type: string
          description: The IFC schema of the model revision
          example: IFC2X3
        ifcType:
          type: string
          description: The entity type of the material
          example: IfcMaterialLayerSet
    ifc-owner-history:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the owner history
          example: 217235853033
        ifcType:
          type: string
          description: The entity type of the owner history
          example: IfcOwnerHistory
        attributes:
          type: object
          description: The attributes of the owner history including creation date and user
    ifc-product-relation:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the product
          example: 317235853293
        globalId:
          type: string
          description: A 22 character IfcGloballyUniqueId
          example: 4qyyLM4ZzFQuLbRaVZ1xKE
        name:
          type: string
          description: The name of the product
          example: 'Basic Wall:0-LBA:1328157'
        ifcType:
          type: string
          description: The entity type of the product
          example: IfcWallStandardCase
        children:
          type: array
          description: The child products related to the product according to the containment hierarchy
          items:
            type: object
            properties:
              url:
                type: string
                description: The product resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/317235853294'
              objectId:
                type: integer
                format: int64
                description: The object id of the product
                example: 317235853294
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 3PhkPD2_j2ouX4hJTk7FKE
              name:
                type: string
                description: The name of the product
                example: 2F
              ifcType:
                type: string
                description: The entity type of the product
                example: IfcBuildingStorey
        parent:
          type: object
          description: The parent product related to the product according to the containment hierarchy
          properties:
            url:
              type: string
              description: The product resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/317235853294'
            objectId:
              type: integer
              format: int64
              description: The object id of the product
              example: 317235853294
            globalId:
              type: string
              description: A 22 character IfcGloballyUniqueId
              example: 3PhkPD2_j2ouX4hJTk7FKE
            name:
              type: string
              description: The name of the product
              example: 2F
            ifcType:
              type: string
              description: The entity type of the product
              example: IfcBuildingStorey
        type:
          type: object
          description: The type related to the product
          properties:
            url:
              type: string
              description: The type resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/types/317235940695'
            objectId:
              type: integer
              format: int64
              description: The object id of the type
              example: 317235940695
            globalId:
              type: string
              description: A 22 character IfcGloballyUniqueId
              example: 3qd5RL4ZTA7w3kEKe
            name:
              type: string
              description: The name of the type
              example: 'Basic Wall:0-LBA'
            ifcType:
              type: string
              description: The entity type of the type
              example: IfcWallType
        systems:
          type: array
          description: The system groups related to the product
          items:
            type: object
            properties:
              url:
                type: string
                description: The group resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
              objectId:
                type: integer
                format: int64
                description: The object id of the group
                example: 417235853289
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 9dYMac7Ar51vpH7fe7CB7F
              name:
                type: string
                description: The name of the group
                example: null
                nullable: true
              ifcType:
                type: string
                description: The entity type of the group
                example: IfcSystem
        zones:
          type: array
          description: The zone groups related to the product
          items:
            type: object
            properties:
              url:
                type: string
                description: The group resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
              objectId:
                type: integer
                format: int64
                description: The object id of the group
                example: 417235853289
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 9dYMac7Ar51vpH7fe7CB7F
              name:
                type: string
                description: The name of the group
                example: null
                nullable: true
              ifcType:
                type: string
                description: The entity type of the group
                example: IfcZone
        groups:
          type: array
          description: The groups related to the product
          items:
            type: object
            properties:
              url:
                type: string
                description: The group resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/417235853289'
              objectId:
                type: integer
                format: int64
                description: The object id of the group
                example: 417235853289
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 9dYMac7Ar51vpH7fe7CB7F
              name:
                type: string
                description: The name of the group
                example: null
                nullable: true
              ifcType:
                type: string
                description: The entity type of the group
                example: IfcGroup
        layers:
          type: array
          description: The layers related to the product
          items:
            type: object
            properties:
              url:
                type: string
                description: The layer resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/layers/'
              objectId:
                type: integer
                format: int64
                description: The object id of the layer
                example: 217236997495
              name:
                type: string
                description: The name of the layer
                example: A-WALL-____-OTLN
              ifcType:
                type: string
                description: The entity type of the layer
                example: IfcPresentationLayerAssignment
        classificationReferences:
          type: array
          description: The classification references related to the product
          items:
            type: object
            properties:
              url:
                type: string
                description: The classification reference resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/classification_references/317636045083'
              objectId:
                type: integer
                format: int64
                description: The object id of the classification reference
                example: 317636045083
              name:
                type: string
                description: The name of the classification reference
                example: Showers
              ifcType:
                type: string
                description: The entity type of the classification reference
                example: IfcClassificationReference
              attributes:
                type: object
                description: The attributes of the classification reference including the identifier
        ownerHistory:
          type: object
          description: The owner history related to the product
          properties:
            url:
              type: string
              description: The owner history resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/ownerhistory/617235853043'
            objectId:
              type: integer
              format: int64
              description: The object id of the owner history
              example: 617235853043
            name:
              type: string
              description: The name of the owner history
              example: null
              nullable: true
            ifcType:
              type: string
              description: The entity type of the owner history
              example: IfcOwnerHistory
    ifc-product:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the product
          example: 73749689
        ifcType:
          type: string
          description: The entity type of the product
          example: IfcWall
        attributes:
          type: object
          description: The attributes of the product
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        propertySets:
          type: object
          description: Map of property sets specific to this product ocurrence. The key is the name of the property set.
          additionalProperties:
            $ref: '#/components/schemas/ifc-property-set'
        quantitySets:
          type: object
          description: Map of quantity sets specific to this product ocurrence. The key is the name of the quantity set.
          additionalProperties:
            $ref: '#/components/schemas/ifc-quantity-set'
        materials:
          type: array
          items:
            $ref: '#/components/schemas/ifc-material'
        type:
          $ref: '#/components/schemas/ifc-type'
    ifc-property-set:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the property set
          example: 12345678
        ifcType:
          type: string
          description: The entity type of the property set
          example: IfcPropertySet
        ifcSchema:
          type: string
          description: The IFC schema of the model revision
          example: IFC2X3
        attributes:
          type: object
          description: The attributes of the property set including name and global id
        properties:
          type: object
          description: Set of named properties
          example:
            Width:
              ifcType: IfcPropertySingleValue
              nominalValue:
                ifcType: IfcLengthMeasure
                type: number
                value: '5'
                unit: m
    ifc-quantity-set:
      type: object
      description: ''
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the quantity set
          example: 12345678
        ifcType:
          type: string
          description: The entity type of the quantity set
          example: IfcQuantitySet
        ifcSchema:
          type: string
          description: The IFC schema of the model revision
          example: IFC2X3
        attributes:
          type: object
          description: The attributes of the quantity set including name and global id
        quantities:
          type: object
          description: Set of named quantities
          example:
            GrossArea:
              ifcType: IfcQuantityArea
              value:
                type: number
                ifcType: IfcAreaMeasure
                value: 15
                unit: m²
    ifc-type-relation:
      type: object
      properties:
        objectId:
          type: integer
          format: int64
          description: The object id of the type
          example: 317235939074
        globalId:
          type: string
          description: A 22 character IfcGloballyUniqueId
          example: 4bJZO1Wyv3kBqbZkwgAALf
        name:
          type: string
          description: The name of the type
          example: 'Basic Wall:0-LBA'
        ifcType:
          type: string
          description: The entity type of the type
          example: IfcWallType
        products:
          type: array
          description: The related products
          items:
            type: object
            properties:
              url:
                type: string
                description: The product resource URL
                example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/products/717235939038'
              objectId:
                type: integer
                format: int64
                description: The object id of the product
                example: 717235939038
              globalId:
                type: string
                description: A 22 character IfcGloballyUniqueId
                example: 6K4519Zt51AQBUMqG6OuG1
              name:
                type: string
                description: The name of the product
                example: 'Basic Wall:0-LBA:1328157'
              ifcType:
                type: string
                description: The entity type of the product
                example: IfcWall
        ownerHistory:
          type: object
          properties:
            url:
              type: string
              description: The owner history resource URL
              example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/ifc/ownerhistory/217235853093'
            objectId:
              type: integer
              format: int64
              description: The object id of the owner history
              example: 217235853093
            name:
              type: string
              description: The name of the owner history
              example: null
              nullable: true
            ifcType:
              type: string
              description: The entity type of the owner history
              example: IfcOwnerHistory
    ifc-type:
      type: object
      properties:
        revisionId:
          type: string
          description: The id of the model revision
          example: 924809076a694255c489d236517a55da
        objectId:
          type: integer
          format: int64
          description: The object id of the type
          example: 75749589
        ifcType:
          type: string
          description: The entity type of the type
          example: IfcWallType
        attributes:
          type: object
          description: The attributes of the type including name and predefined type
        propertySets:
          type: object
          description: Map of property sets common to all ocurrences of this type. The key is the name of the property set.
          additionalProperties:
            $ref: '#/components/schemas/ifc-property-set'
        quantitySets:
          type: object
          description: Map of quantity sets common to all ocurrences of this type. The key is the name of the quantity set.
          additionalProperties:
            $ref: '#/components/schemas/ifc-quantity-set'
        materials:
          type: array
          items:
            $ref: '#/components/schemas/ifc-material'
    ifc-value:
      type: object
      properties:
        ifcType:
          type: string
          description: The entity type of the value
          example: IfcInteger
        type:
          type: string
          example: integer
        unit:
          type: string
          example: m
        value:
          oneOf:
            - type: boolean
              example: true
            - type: number
              example: 1
            - type: integer
              example: 1
            - type: string
              example: value
            - type: array
              items:
                $ref: '#/components/schemas/ifc-product'
      example:
        ifcType: IfcInteger
        type: integer
        value: 1
        unit: m
    import-status:
      type: object
      properties:
        id:
          type: string
          description: Id of the import process
          example: c9549c4c4e214538a2b327815cfe99f3
        createdAt:
          type: string
          description: Timestamp of when import process was initiated
          example: '2024-05-30T15:08:00Z'
        status:
          type: string
          description: 'Current import processing status, valid values are "processing", "success" or "failed"'
          enum:
            - processing
            - success
            - failed
          example: processing
    label-group:
      type: object
      properties:
        id:
          type: string
          description: Id of the label group
          example: 357t0ccc8f74719096c734de18fc6512
        name:
          type: string
          description: Name of the label group
          example: Group name
    label:
      type: object
      properties:
        id:
          type: string
          description: Id of the label
          example: 397t0ccc8f74619096c738de15dc6512
        name:
          type: string
          description: Name of the label
          example: Label 1
        color:
          type: string
          description: Valid RGB hexadecimal color of the label
          example: '#6aa84f'
        group:
          $ref: '#/components/schemas/label-group'
        deleted:
          type: boolean
          description: Soft deletion state of the label
          example: false
    library:
      type: object
      description: |
        A library represents an object collection.

        Types of libraries that are supported contain either documents, links, embedded values or classifications.
      properties:
        id:
          type: string
          description: 'A unique identifier for a library, represented as compacted UUID using 32 hexadecimal characters'
          example: 954803076a694255b959d236517b55da
        name:
          type: string
          description: 'The name of the library, limited to 256 characters'
          example: Library Name
        type:
          type: string
          description: 'The type of the library, valid values are "document", "link", "embedded_value" or "classification"'
          enum:
            - document
            - link
            - embedded_value
            - classification
          example: document
        createdBy:
          $ref: '#/components/schemas/user'
    library-item-association:
      type: object
      properties:
        globalId:
          type: string
          description: A 22 character IfcGloballyUniqueId.
          example: 2_TmT90tD0x9tJSTsyTb1J
        createdAt:
          type: string
          description: The date and time the association was created.
          example: '2023-12-09T10:07:56Z'
        user:
          $ref: '#/components/schemas/user'
    library-item-classification:
      type: object
      properties:
        id:
          type: string
          description: 'A unique identifier for a library item, represented as compacted UUID using 32 hexadecimal characters.'
          example: tttbe1ce36ce4b4c37f7060c76d241e7
        libraryId:
          type: string
          description: Id of the library that the item belongs to
          example: 9f71c88b7d7942ffa316c7a450c89358
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: 'Type of the library item, valid values are "embedded_value"'
          enum:
            - embedded_value
          example: embedded_value
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        classification:
          type: object
          properties:
            identification:
              type: string
              description: Identification of the classification
              example: A1
            description:
              type: string
              description: Description of the classification
              example: Classification description
        deleted:
          type: boolean
          description: Deletion status of the library item
          example: false
    library-item-classification-create:
      type: object
      properties:
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: 'Type of the library item, value must be set to "classification"'
          example: classification
          enum:
            - classification
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        classification:
          type: object
          properties:
            identification:
              type: string
              description: Identification of the classification
              example: A1
            description:
              type: string
              description: Description of the classification
              example: Classification description
    library-item-document:
      type: object
      properties:
        id:
          type: string
          description: 'A unique identifier for a library item, represented as compacted UUID using 32 hexadecimal characters.'
          example: tttbe1ce36ce4b4c37f7060c76d241e7
        libraryId:
          type: string
          description: Id of the library that the item belongs to
          example: 9f71c88b7d7942ffa316c7a450c89358
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: |
            Type of the document library item, valid values are:
              - document
              - folder
          enum:
            - document
            - folder
          example: document
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        document:
          oneOf:
            - $ref: '#/components/schemas/file'
            - $ref: '#/components/schemas/folder'
        deleted:
          type: boolean
          description: Deletion status of the library item
          example: false
    library-item-document-create:
      type: object
      properties:
        name:
          type: string
          description: The name of the folder
          example: Folder name 1
        type:
          type: string
          description: 'The type of document, value must be set to "folder"'
          example: folder
          enum:
            - folder
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        document:
          properties:
            type:
              type: string
              description: Value is folder
              example: folder
    library-item-document-file-revision:
      type: object
      properties:
        id:
          type: string
          description: Id of the revision
          example: h4c21c0e89774c8e92f42959c73561yh
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          nullable: true
        version:
          type: number
          description: Version of the revision
          example: 9
        extendedVersion:
          type: object
          description: Extended version of the revision
          properties:
            major:
              type: number
              description: Major version of the revision
              example: 1
            minor:
              type: string
              description: Minor version of the revision
              example: 1
              nullable: true
        name:
          type: string
          description: File name of the revision
          example: File.txt
        createdAt:
          type: string
          description: The date and time the revision was created in ISO 8601 format
          example: 2023-03-01T11:52:45.000Z
        size:
          type: number
          description: Size of the file in bytes
          example: 3745
        createdBy:
          $ref: '#/components/schemas/user'
        additionalFormats:
          type: array
          description: Additional formats available for the file revision
          items:
            type: object
            properties:
              size:
                type: number
                description: Size of the file in bytes
                example: 7147
              mediaType:
                type: string
                description: Media type of the additional format file
                example: application/xod
        downloadFileName:
          type: string
          description: Filename on disk
          example: File-1.txt
    library-item-document-token:
      type: object
      properties:
        token:
          type: string
          description: 'The token value, valid for one hour.'
          example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpdGVtLWlkIjoiZTc3NjU5YjliZTQzNDhkZDg1NjZiMWU3YmIwYmZkZjgiLCJsaWJyYXJ5LWlkIjoiNzZhZDFhYThjNmNiNDE1YTgxZTE0ZGVkNGU2M2Y3ZmUiLCJ1c2VyLWlkIjoiMjU1NGJiZDctMDkxZC00ZWVjLWIzMTMtOTI5OGZlNDE4YjQ5IiwidHlwZSI6ImxpYnJhcnktaXRlbSIsInByb2plY3QtaWQiOiIyYTA4OGJjZC0wOGZhLTQzOGEtODI1MS0yZDkxYjlhNTk3YTIiLCJjbGllbnQtaWQiOiI1bVBESFh6NFNJRHJ3VmYiLCJleHAiOjF3MTM5NzQ3NDF9.MJ67ENsOItZJybEYt7Yjes7AkWRuUXrT8_eWvQk5w98
        url:
          type: string
          description: A time limited URL to download the document.
          example: 'https://api.catenda.com/v2/download?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpdGVtLWlkIjoiZTc3NjU5YjliZTQzNDhkZDg1NjZiMWU3YmIwYmZkZjgiLCJsaWJyYXJ5LWlkIjoiNzZhZDFhYThjNkNiNDE1YTgxZTE0ZGVkNGU2M2Y3ZmUiLCJ1c2VyLWlkIjoiMjU1NGJiZDctMDkxZC00ZWVjLWIzMTMtOTI5OGZlNDE4YjQ5IiwidHlwZSI6ImxpYnJhcnktaXRlbSIsInByb2plY3QtaWQiOiIyYTA4OGJjZC0wOGZhLTQzOGEtODI1MS0yZDkxYjlhNTk3YTIiLCJjbGllbnQtaWQiOiI1bVBESFh6NFNJRHJ3VmYiLCJleHAiOjE3MTM5NzQ3NDF9.MJ67ENsOItZJybEYt7Yjes7AkWRuUXrT8_eWvQk5w98'
    library-item-embedded_value:
      type: object
      properties:
        id:
          type: string
          description: 'A unique identifier for a library item, represented as compacted UUID using 32 hexadecimal characters.'
          example: tttbe1ce36ce4b4c37f7060c76d241e7
        libraryId:
          type: string
          description: Id of the library that the item belongs to
          example: 9f71c88b7d7942ffa316c7a450c89358
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: 'Type of the library item, valid values are "embedded_value"'
          enum:
            - embedded_value
          example: embedded_value
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        deleted:
          type: boolean
          description: Deletion status of the library item
          example: false
    library-item-link:
      type: object
      properties:
        id:
          type: string
          description: 'A unique identifier for a library item, represented as compacted UUID using 32 hexadecimal characters.'
          example: tttbe1ce36ce4b4c37f7060c76d241e7
        libraryId:
          type: string
          description: Id of the library that the item belongs to
          example: 9f71c88b7d7942ffa316c7a450c89358
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: 'Type of the library item, valid values are "link"'
          enum:
            - link
          example: link
        parentId:
          type: string
          description: |
            A unique identifier for the parent of the library item. 

            Represented as compacted UUID using 32 hexadecimal characters.

            If no parent is present, the value is null.
          example: 502b06247f744b7492fd1a44e386f21e
          nullable: true
        link:
          type: object
          properties:
            url:
              type: string
              description: The URL of the link
              example: 'https://www.example.com'
        deleted:
          type: boolean
          description: Deletion status of the library item
          example: false
    library-item-link-create:
      type: object
      properties:
        name:
          type: string
          description: The name of the library item
          example: Library item 1
        type:
          type: string
          description: 'Type of the library item, value must be set to "link"'
          example: link
          enum:
            - link
        link:
          type: object
          properties:
            url:
              type: string
              description: The URL of the link
              example: 'https://www.example.com'
    latitude-longitude:
      type: object
      description: Latitude and longitude
      properties:
        latitude:
          type: number
          description: 'Latitude, in degrees'
          example: 59.913600296798755
        longitude:
          type: number
          description: 'Longitude, in degrees'
          example: 10.644988059866593
      required:
        - latitude
        - longitude
    member:
      type: object
      properties:
        role:
          type: string
          description: |
            Valid values are:
              - owner
              - administrator
              - member
          enum:
            - owner
            - administrator
            - member
          example: member
        user:
          $ref: '#/components/schemas/user'
    model-revision-status:
      type: object
      properties:
        callbackUri:
          type: string
          description: The callback URI specified when uploading the revision
          example: 'https://example.com'
        filename:
          type: string
          description: The filename specified when uploading the revision
          example: ARC.ifc
        id:
          type: string
          description: 'A unique identifier for the status, represented as compacted UUID using 32 hexadecimal characters'
          example: fcbb72736862483f89d44890d47ec112
        model:
          $ref: '#/components/schemas/model'
        processing:
          type: object
          description: Represents the processing status of a pending revision
          properties:
            progress:
              type: number
              description: Processing progress as a number between 0.0 and 1.0
              example: 0
            status:
              type: string
              description: 'Valid values are "waiting", "processing", "success" or "failure"'
              enum:
                - waiting
                - processing
                - success
                - failure
              example: waiting
            error:
              $ref: '#/components/schemas/error'
        revision:
          $ref: '#/components/schemas/model-revision'
        user:
          $ref: '#/components/schemas/user'
    model-revision:
      type: object
      description: |
        Represents a revision of a Model.

        A new revision is created by uploading an IFC model.
      properties:
        comment:
          type: string
          description: 'Text describing the revision, limited to 64K characters'
          example: Revision description
        createdAt:
          type: string
          description: The date and time the revision was created in ISO 8601 format
          example: 2016-09-26T14:45:20.000Z
        extendedVersion:
          type: object
          description: Extended version of the revision
          properties:
            major:
              type: number
              description: Major version of the revision
              example: 1
            minor:
              type: string
              description: Minor version of the revision
              example: 1
              nullable: true
        id:
          type: string
          description: 'A unique identifier for the revision, represented as compacted UUID using 32 hexadecimal characters.'
          example: 924809076a694255c489d236517a55da
        model:
          $ref: '#/components/schemas/model'
        user:
          $ref: '#/components/schemas/user'
        version:
          type: integer
          description: A number that is incremented for each new revision of a model
          example: 1
    model:
      type: object
      description: |
        Represents an IFC model as a set of Revisions.

        A large building project can contain multiple IFC models.

        They are often divided by domain (architecture, electrical, etc.)
      properties:
        id:
          type: string
          description: 'A unique identifier for a model, represented as compacted UUID using 32 hexadecimal characters'
          example: 47024671cbd642a9c7c84808d4d509f5
        name:
          type: string
          description: 'The name of the model, limited to 512 characters'
          example: Model name
    project:
      type: object
      description: |
        All data in Catenda belongs to a project and has a single owner.
      properties:
        createdAt:
          type: string
          description: The date and time the project was created in ISO 8601 format
          example: 2016-09-26T14:45:05.000Z
        description:
          type: string
          description: 'A short text describing the project, limited to 1024 characters'
          example: Project description
        id:
          type: string
          description: 'A unique identifier for the project, represented as compacted UUID using 32 hexadecimal characters'
          example: af2d8af0fa54465b89bf26dd3d92cfd0
        imageUrl:
          type: string
          description: The URL for the project cover picture
          example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/image'
        name:
          type: string
          description: 'The name of the project, limited to 512 characters'
          example: Project name
        owner:
          $ref: '#/components/schemas/user'
        siteLocation:
          $ref: '#/components/schemas/latitude-longitude'
          description: 'The approximate location (latitude, longitude in WGS 84) of the project'
        updatedAt:
          type: string
          description: The date and time of the last change to the project in ISO 8601 format
          example: 2016-09-26T14:45:40.000Z
    scim-user:
      type: object
      properties:
        active:
          type: string
          description: Active state of the user
          example: true
        schemas:
          type: array
          description: List of schemas
          items:
            type: string
            description: The schema value
            example: 'urn:ietf:params:scim:schemas:core:2.0:User'
        id:
          type: string
          description: 'A unique identifier for the user, represented as compacted UUID using 32 hexadecimal characters'
          example: 2819c223-7f76-453a-919d-413861904646
        meta:
          type: object
          description: Meta object for the user
          properties:
            resourceType:
              type: string
              description: Resource type
              example: User
            created:
              type: string
              description: The date and time the user was created in ISO 8601 format
              example: '2011-08-01T18:29:49.793Z'
            lastModified:
              type: string
              description: The date and time the user was last modified in ISO 8601 format
              example: '2011-08-01T18:29:49.793Z'
            location:
              type: string
              description: The location of the user
              example: 'https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646'
            version:
              type: string
              description: The version of the user
              example: W\/\"f250dd84f0671c3\"
        userName:
          type: string
          description: Human readable user name
          example: john_smith@example.com
        externalId:
          type: string
          description: Identifier of the original source where the user data is taken from
          example: john_smith
        name:
          type: object
          description: Name object for the user
          properties:
            formatted:
              type: string
              description: Formatted representation of the user name
              example: JohnSmith
            familyName:
              type: string
              description: The family name of the user
              example: Smith
            givenName:
              type: string
              description: The given name of the user
              example: John
        emails:
          type: array
          description: List of emails for the user
          items:
            type: object
            properties:
              value:
                type: string
                description: Value of the email address
                example: john_smith@example.com
              primary:
                type: boolean
                description: Whether is the primary email address for the user
                example: true
              type:
                type: string
                description: Category of the email
                example: work
    topic:
      type: object
      properties:
        guid:
          type: string
          description: Represented as compacted UUID using 32 hexadecimal characters
          example: 18d0273d-e15c-4924-97b3-6f47b233eebe
        server_assigned_id:
          type: string
          description: Human readable identifier unique to this topic board
          example: '23'
        topic_type:
          type: string
          description: Name of topic type
          example: Info
        topic_status:
          type: string
          description: Name of topic status
          example: Open
        title:
          type: string
          description: Title of topic
          example: Topic 1
        labels:
          type: array
          description: List of topic labels
          items:
            type: string
          example:
            - Electrical
            - Basement
        creation_date:
          type: string
          description: Topic creation date
          example: '2024-05-08T11:28:35.317+0000'
        creation_author:
          type: string
          description: Topic creation author
          example: john@doe.com
        modified_date:
          type: string
          description: Topic last modified date
          example: '2024-05-08T14:29:41.199+0000'
        modified_author:
          type: string
          description: Topic last modified author
          example: john@doe.com
        assigned_to:
          type: string
          description: Topic assigned to user
          example: john@doe.com
        stage:
          type: string
          description: Topic milestone
          example: Phase one
        description:
          type: string
          description: Topic description
          example: The topic description
        due_date:
          type: string
          description: Topic due date
          example: '2024-05-02T10:00:00.000+0000'
        authorization:
          type: object
          description: Local variations from the global authorization defaults for this resource
          properties:
            topic_actions:
              type: array
              description: List of topic actions
              items:
                type: string
              example:
                - createComment
                - createViewpoint
                - update
                - delete
                - updateRelatedTopics
                - updateDocumentReferences
            topic_status:
              type: array
              description: List of topic board status names
              items:
                type: string
              example:
                - Open
                - Closed
        bimsync_issue_number:
          type: integer
          description: Unique auto incremented number assigned when a new topic is created
          example: 23
        bimsync_creation_author:
          type: object
          description: Topic created by Catenda user
          properties:
            user:
              $ref: '#/components/schemas/user-ref'
            importedBy:
              $ref: '#/components/schemas/user-ref'
              nullable: true
        bimsync_viewpoints:
          type: array
          description: List of topic viewpoints
          items:
            type: object
            properties:
              guid:
                type: string
                description: Represented as compacted UUID using 32 hexadecimal characters
                example: 52959166-dbd2-44eb-81bb-74f955f30e0f
              hasSnapshot:
                type: boolean
                description: Whether viewpoint has any snapshot
                example: true
        bimsync_points:
          type: array
          description: List of topic points
          items:
            type: object
            properties:
              x:
                type: number
                description: X coordinate of the point
                example: 100
              'y':
                type: number
                description: Y coordinate of the point
                example: 100
              z:
                type: number
                description: Z coordinate of the point
                example: 100
              models:
                type: array
                description: List of models
                items:
                  type: object
                  properties:
                    modelRef:
                      type: string
                      description: Id of the model
                      example: 11a9bb2984ee4a999875c4cd9560f319
                    revisionRef:
                      type: string
                      description: Id of the model revision
                      example: eed6ae36-5fe0-4f1f-89da-fba8efcf8b97
                    ref:
                      type: string
                      description: A reference for this model revision relation
                      example: 827f4b14-af0c-44e5-90ce-4e58fa79d7b3
              id:
                type: string
                description: Id of the point
                example: a08af3d4-edca-49ed-adf7-107a4a481188
        bimsync_requester:
          type: object
          description: Topic requested by Catenda user
          properties:
            user:
              $ref: '#/components/schemas/user-ref'
              nullable: true
            team:
              $ref: '#/components/schemas/user-ref'
              nullable: true
        bimsync_document_references:
          type: array
          description: List of document references
          items:
            type: object
            properties:
              guid:
                type: string
                description: Id of the document reference
                example: 86962ff9-b5fe-4537-996f-8dc15461422c
              document_guid:
                type: string
                description: Id of the document
                example: a8644754-b646-4f67-a767-a1fef44a51c9
        bimsync_comments_size:
          type: integer
          description: Count of topic comments
          example: 3
        bimsync_assigned_to:
          type: object
          description: Topic assigned to Catenda user
          properties:
            user:
              $ref: '#/components/schemas/user-ref'
              nullable: true
            team:
              $ref: '#/components/schemas/user-ref'
              nullable: true
        bimsync_labels:
          type: array
          description: List of topic labels
          items:
            $ref: '#/components/schemas/label'
        bimsync_custom_fields:
          type: array
          description: List of topic custom fields
          items:
            $ref: '#/components/schemas/custom-field'
    topic-board:
      type: object
      properties:
        id:
          type: string
          description: 'Id of a topic board, represented as compacted UUID using 32 hexadecimal characters.'
          example: 324404076a694255b589d236517a55da
        name:
          type: string
          description: Name of the topic board.
          example: Board name
        description:
          type: string
          description: Description of the topic board.
          example: Topic board description
        customFields:
          type: array
          description: List of custom fields.
          items:
            $ref: '#/components/schemas/custom-field'
        customFieldInstances:
          type: array
          description: List of custom fields currently configured in the topic board.
          items:
            $ref: '#/components/schemas/custom-field-instance'
    topic-board-extensions:
      type: object
      properties:
        topic_type:
          type: array
          description: List of topic types
          items:
            type: string
            example: Info
        topic_status:
          type: array
          description: List of topic statuses
          items:
            type: string
            example: Open
        topic_label:
          type: array
          description: List of topic labels
          items:
            type: string
            example: Electrical
        priority:
          type: array
          description: List of topic priorities
          items:
            type: string
          example:
            - High
            - Normal
            - Low
        users:
          type: array
          description: List of BCF users with access to the topic board
          items:
            type: string
            example: john@doe.com
        stage:
          type: array
          description: List of topic milestones
          example: Phase one
        project_actions:
          type: array
          description: List of topic board actions
          items:
            type: string
            example: createTopic
        topic_actions:
          type: array
          description: List of topic actions
          items:
            type: string
            example: update
        comment_actions:
          type: array
          description: List of topic comment actions
          items:
            type: string
            example: update
        bimsync_milestones:
          type: array
          description: List of topic milestones
          items:
            type: object
            properties:
              id:
                type: string
                description: Id of the milestone
                example: 1da81d1409ec43ecbe4f9e55a79236d9
              name:
                type: string
                description: Name of the milestone
                example: Phase one
    topic-board-status:
      type: object
      properties:
        id:
          type: string
          description: Id of the status
          example: 629a9b4e36ac4e68a05aedbcb21f53c0
        name:
          type: string
          description: Name of the status
          example: Open
        color:
          type: string
          description: Color associated with the status
          example: '#DD7E6B'
        type:
          type: string
          description: 'Type of the status, valid values are "open", "closed" and "candidate"'
          enum:
            - open
            - closed
            - candidate
          example: open
        unlinked:
          type: boolean
          description: Set when the status is not known to the topic board
    topic-board-type:
      type: object
      properties:
        id:
          type: string
          description: Id of the type
          example: 18b2a2e7509a4b528dbbd9d312fd45e6
        name:
          type: string
          description: Name of the type
          example: Info
        color:
          type: string
          description: Color associated with the type
          example: '#3D85C6'
        unlinked:
          type: boolean
          description: Set when the type is not known to the topic board
    topic-board-user:
      type: object
      properties:
        name:
          type: string
          description: Name of the user
          example: John Doe
        id:
          type: string
          description: Id of the user
          example: john@doe.com
        unlinked:
          type: boolean
          description: Set when the user is not known to the topic board
    topic-event:
      type: object
      properties:
        topic_guid:
          type: string
          description: Id of topic where event occurred
          example: 18d0273d-e15c-4924-97b3-6f47b233eebe
        date:
          type: string
          description: Date when event occurred
          example: '2023-11-15T12:10:17.000+0000'
        author:
          type: string
          description: User name that triggered the event
          example: john@doe.com
        actions:
          type: array
          description: List of actions involved in the event
          items:
            type: object
            properties:
              type:
                type: string
                description: |
                  The type of action, valid values are:
                    - assigned_to_removed
                    - assigned_to_updated
                    - description_removed
                    - description_updated
                    - due_date_removed
                    - due_date_updated
                    - label_added
                    - label_removed
                    - priority_removed
                    - priority_updated
                    - status_updated
                    - title_updated
                    - topic_created
                    - type_updated
                enum:
                  - assigned_to_removed
                  - assigned_to_updated
                  - description_removed
                  - description_updated
                  - due_date_removed
                  - due_date_updated
                  - label_added
                  - label_removed
                  - priority_removed
                  - priority_updated
                  - status_updated
                  - title_updated
                  - topic_created
                  - type_updated
                example: title_updated
              value:
                type: string
                description: Value associated with event if applicable
                example: 629a9b4e36ac4e68a05aedbcb21f53c0
    topic-label:
      type: object
      properties:
        id:
          type: string
          description: Id of the label
          example: 397t0ccc8f74619096c738de15dc6512
        name:
          type: string
          description: Name of the label
          example: Label 1
        color:
          type: string
          description: Valid RGB hexadecimal color of the label
          example: '#6aa84f'
        deleted:
          type: boolean
          description: Soft deletion state of the label
          example: false
    topic-object:
      type: object
      properties:
        ifcGuid:
          type: string
          description: IFC guid of the linked object
          example: 3BY5alwwL00QXHtY2qmHYZ
    topic-point:
      type: object
      properties:
        id:
          type: string
          description: Represented as compacted UUID using 32 hexadecimal characters
          example: db3cffcf-2217-4503-8e51-ab2740d5043a
        x:
          type: number
          description: X coordinate of the point
          example: 100
        'y':
          type: number
          description: Y coordinate of the point
          example: 100
        z:
          type: number
          description: Z coordinate of the point
          example: 100
        models:
          type: array
          description: List of models
          items:
            type: object
            properties:
              modelRef:
                type: string
                description: Id of the model
                example: 11a9bb2984ee4a999875c4cd9560f319
              revisionRef:
                type: string
                description: Id of the model revision
                example: eed6ae36-5fe0-4f1f-89da-fba8efcf8b97
              ref:
                type: string
                description: A reference for this model revision relation
                example: 827f4b14-af0c-44e5-90ce-4e58fa79d7b3
    user:
      type: object
      description: |
        Represents a User, Organization or Team.

        A User is someone with a Catenda account, commonly representing a person.

        An Organization represents a company, project organization or an application. Organizations do not have a username and cannot sign in to Catenda.

        A Team represents a group of users within a project. Teams do not have a username and cannot sign in to Catenda.
      properties:
        id:
          type: string
          description: Represented as compacted UUID using 32 hexadecimal characters
          example: 524809076a694255b989d236517a55da
        name:
          type: string
          description: 'The name of the user, limited to 128 characters'
          example: John Doe
        username:
          type: string
          description: |
            The handle the user identifies with. 

            Commonly the username will be in email address format. Usernames are unique but subject to change, we recommend using the id field to reference users instead.

            If the user represents an organization or a team the value is always null.

            Limited to 50 characters.
          example: john@doe.com
          nullable: true
        email:
          type: string
          description: Email address of the User
          example: john@doe.com
        createdAt:
          type: string
          description: The date and time the user was created in ISO 8601 format
          example: 2016-09-20T14:55:22.000Z
        avatarUrl:
          type: string
          description: The URL for the user avatar
          example: 'https://api.catenda.com/v2/avatar/397t0ccd8f74516096c738de15dc6512'
        type:
          type: string
          description: |
            The type of user, valid values are:
              - user
              - organization
              - team
          enum:
            - user
            - organization
            - team
          example: user
    user-ref:
      type: object
      properties:
        ref:
          type: string
          description: Id of the user
          example: 524809076a694255b989d236517a55da
        email:
          type: string
          description: Email of the user
          example: john@doe.com
        name:
          type: string
          description: Name of the user
          example: John Doe
    viewer-2d-token:
      type: object
      description: 'Represents a time limited access token to grant access to viewer data, valid for one hour.'
      properties:
        revisions:
          type: array
          description: The set of revisions the token grants access to
          items:
            $ref: '#/components/schemas/model-revision'
        token:
          type: string
          description: 'The token value, valid for one hour.'
          example: ba16ee5e36054019917210c4559bcca0
        url:
          type: string
          description: URL used to load models within a viewer instance
          example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/viewer2d/geometry?token=ba16ee5e36054019917210c4559bcca0'
    viewer-3d-token:
      type: object
      description: 'Represents a time limited access token to grant access to viewer data, valid for one hour.'
      properties:
        revisions:
          type: array
          description: The set of revisions the token grants access to
          items:
            $ref: '#/components/schemas/model-revision'
        token:
          type: string
          description: 'The token value, valid for one hour.'
          example: ba16ee5e36054019917210c4559bcca0
        url:
          type: string
          description: URL used to load models within a viewer instance
          example: 'https://api.catenda.com/v2/projects/67551168422040148d8ae198a321494d/viewer3d/data?token=ba16ee5e36054019917210c4559bcca0'
    viewpoint:
      type: object
      properties:
        guid:
          type: string
          description: Represented as compacted UUID using 32 hexadecimal characters
          example: 52959166-dbd2-44eb-81bb-74f955f30e0f
        orthogonal_camera:
          type: object
          description: Details of orthogonal camera if applicable
          properties:
            camera_view_point:
              type: object
              description: Location of the camera
              properties:
                x:
                  type: number
                  description: X coordinate of camera location
                  example: 100
                'y':
                  type: number
                  description: Y coordinate of camera location
                  example: 100
                z:
                  type: number
                  description: Z coordinate of camera location
                  example: 100
            camera_direction:
              type: object
              description: Direction of the camera
              properties:
                x:
                  type: number
                  description: X coordinate of camera direction
                  example: 100
                'y':
                  type: number
                  description: Y coordinate of camera direction
                  example: 100
                z:
                  type: number
                  description: Z coordinate of camera direction
                  example: 100
            camera_up_vector:
              type: object
              description: Normalized vector describing the camera orientation
              properties:
                x:
                  type: number
                  description: X coordinate of vector
                  example: 0
                'y':
                  type: number
                  description: Y coordinate of vector
                  example: 0
                z:
                  type: number
                  description: Z coordinate of vector
                  example: 1
            view_to_world_scale:
              type: number
              description: The scale factor between the camera and the scene
              example: 14
            aspect_ratio:
              type: number
              description: Aspect ratio of the scene
              example: 1
        perspective_camera:
          type: object
          description: Details of perspective camera if applicable
          properties:
            camera_view_point:
              type: object
              description: Location of the camera
              properties:
                x:
                  type: number
                  description: X coordinate of camera location
                  example: 100
                'y':
                  type: number
                  description: Y coordinate of camera location
                  example: 100
                z:
                  type: number
                  description: Z coordinate of camera location
                  example: 100
            camera_direction:
              type: object
              description: Direction of the camera
              properties:
                x:
                  type: number
                  description: X coordinate of camera direction
                  example: 100
                'y':
                  type: number
                  description: Y coordinate of camera direction
                  example: 100
                z:
                  type: number
                  description: Z coordinate of camera direction
                  example: 100
            camera_up_vector:
              type: object
              description: Normalized vector describing the camera orientation
              properties:
                x:
                  type: number
                  description: X coordinate of vector
                  example: 0
                'y':
                  type: number
                  description: Y coordinate of vector
                  example: 0
                z:
                  type: number
                  description: Z coordinate of vector
                  example: 1
            field_of_view:
              type: number
              description: Field of view of the camera in degrees
              example: 60
            aspect_ratio:
              type: number
              description: Aspect ratio of the scene
              example: 1
        lines:
          type: array
          description: List of graphical lines
          items:
            type: object
            properties:
              start_point:
                type: object
                description: Start point of the line
                properties:
                  x:
                    type: number
                    description: X coordinate of start point
                    example: 100
                  'y':
                    type: number
                    description: Y coordinate of start point
                    example: 100
                  z:
                    type: number
                    description: Z coordinate of start point
                    example: 100
              end_point:
                type: object
                description: End point of the line
                properties:
                  x:
                    type: number
                    description: X coordinate of end point
                    example: 200
                  'y':
                    type: number
                    description: Y coordinate of end point
                    example: 200
                  z:
                    type: number
                    description: Z coordinate of end point
                    example: 200
        clipping_planes:
          type: array
          description: List of clipping planes
          items:
            type: object
            properties:
              location:
                type: object
                description: Location of the clipping plane
                properties:
                  x:
                    type: number
                    description: X coordinate of location
                    example: 100
                  'y':
                    type: number
                    description: Y coordinate of location
                    example: 100
                  z:
                    type: number
                    description: Z coordinate of location
                    example: 100
              direction:
                type: object
                description: Direction of the clipping plane
                properties:
                  x:
                    type: number
                    description: X coordinate of direction
                    example: 0
                  'y':
                    type: number
                    description: Y coordinate of direction
                    example: 0
                  z:
                    type: number
                    description: Z coordinate of direction
                    example: 1
        bitmaps:
          type: array
          description: List of embedded images
          items:
            type: object
            properties:
              guid:
                type: string
                description: Id of the bitmap
                example: 8c2f8818-e413-49d4-8978-7f7d95d2b27e
              bitmap_type:
                type: string
                description: 'Type of the bitmap, valid values are "jpg" and "png"'
                enum:
                  - jpg
                  - png
                example: png
              location:
                type: object
                description: Location of the center of the bitmap
                properties:
                  x:
                    type: number
                    description: X coordinate of location
                    example: 100
                  'y':
                    type: number
                    description: Y coordinate of location
                    example: 100
                  z:
                    type: number
                    description: Z coordinate of location
                    example: 100
              normal:
                type: object
                description: Normalized vector describing the bitmap direction
                properties:
                  x:
                    type: number
                    description: X coordinate of vector
                    example: 0
                  'y':
                    type: number
                    description: Y coordinate of vector
                    example: 1
                  z:
                    type: number
                    description: Z coordinate of vector
                    example: 0
              up:
                type: object
                description: Normalized vector describing the bitmap orientation
                properties:
                  x:
                    type: number
                    description: X coordinate of vector
                    example: 0
                  'y':
                    type: number
                    description: Y coordinate of vector
                    example: 0
                  z:
                    type: number
                    description: Z coordinate of vector
                    example: 1
              height:
                type: number
                description: Height of bitmap in the scene
                example: 20
        snapshot:
          type: object
          properties:
            snapshot_type:
              type: string
              description: 'Format of snapshot, valid values are "jpg" and "png"'
              enum:
                - jpg
                - png
              example: png
        authorization:
          type: object
          properties:
            viewpoint_actions:
              type: array
              description: List of viewpoint actions
              items:
                type: string
              example:
                - delete
    viewpoint-coloring:
      type: object
      properties:
        coloring:
          type: array
          description: List of components
          items:
            type: object
            properties:
              color:
                type: string
                description: Color of the components
                example: '#dddddd'
              components:
                type: array
                items:
                  type: object
                  properties:
                    ifc_guid:
                      type: string
                      description: IFC guid of the component
                      example: 3BY5alwwL00QXHtY2qmHYZ
                    originating_system:
                      description: Originating system of the selection
                      type: string
                    authoring_tool_id:
                      type: string
                      description: Id of the selection in the authoring tool
                      nullable: true
    viewpoint-model:
      type: object
      properties:
        modelRef:
          type: string
          description: Id of the model
          example: 11a9bb2984ee4a999875c4cd9560f319
        revisionRef:
          type: string
          description: Id of the model revision
          example: eed6ae36-5fe0-4f1f-89da-fba8efcf8b97
    viewpoint-selection:
      type: object
      properties:
        selection:
          type: array
          description: List of selections
          items:
            type: object
            properties:
              ifc_guid:
                type: string
                description: IFC guid of the selection
                example: 3BY5alwwL00QXHtY2qmHYZ
              originating_system:
                description: Originating system of the selection
                type: string
              authoring_tool_id:
                type: string
                description: Id of the selection in the authoring tool
                nullable: true
    viewpoint-visibility:
      type: object
      properties:
        visibility:
          type: object
          properties:
            default_visibility:
              type: boolean
              description: 'Visibility of exception components, default is false'
              example: true
            exceptions:
              type: array
              description: Exception components
              items:
                type: object
                properties:
                  ifc_guid:
                    type: string
                    description: IFC guid of the component
                    example: 3BY5alwwL00QXHtY2qmHYZ
                  originating_system:
                    description: Originating system of the component
                    type: string
                  authoring_tool_id:
                    type: string
                    description: Id of the component in the authoring tool
                    nullable: true
            view_setup_hints:
              type: object
              properties:
                spaces_visible:
                  type: boolean
                  description: 'Visibility of spaces, default is false'
                  example: true
                space_boundaries_visible:
                  type: boolean
                  description: 'Visibility of space boundaries, default is false'
                  example: true
                openings_visible:
                  type: boolean
                  description: 'Visibility of openings, default is false'
                  example: true
    webhook-subscription:
      type: object
      description: Represents the subscription to an event with an associated callback.
      properties:
        id:
          type: string
          description: 'A unique identifier for a Webhook, represented as compacted UUID using 32 hexadecimal characters'
          example: 57d5457e09d64380af75da94ed96557h
        target_url:
          type: string
          description: The URL to be called when the event occurs
          example: 'https://hooks.zapier.com/hooks/catch/1028857/a8w0or/'
        createdAt:
          type: string
          description: Creation date of the Webhook
          example: '2019-02-13T14:15:18Z"'
        state:
          type: string
          description: |
            The state of the Webhook.

            Valid values are: 
              - ENABLED
              - DISABLED_GONE
              - DISABLED_TOO_MANY_FAILURES
              - DISABLED_BY_USER
        failureCount:
          type: number
          description: The number of times the Webhook has failed
          example: 0
        event:
          type: string
          description: |
            The event that triggers the callback URL.

            Valid values are: 
              - issue.created
              - issue.deleted
              - issue.modified
              - issue.status.changed
              - library.document.revision.published
              - model.created
              - revision.created
          example: issue.created
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: AccessToken
