openapi: 3.0.3
info:
  title: 'API Documentation | Infinity'
  description: 'Short API Documentation for Infinity application.'
  version: 2025-12-01.morava
servers:
  -
    url: 'https://app.startinfinity.com/api/v2'
tags:
  -
    name: Profile
    description: ''
  -
    name: Workspaces
    description: ''
  -
    name: Boards
    description: ''
  -
    name: Attributes
    description: ''
  -
    name: Items
    description: ''
  -
    name: Comments
    description: ''
  -
    name: Folders
    description: ''
  -
    name: Attachments
    description: "\nThis endpoint is used as a first part of uploading file to the item. The response will contain\nthe attachment object, which can be used when creating a new item.\n```\n// When creating the item with attachments, value should have the following format:\n{\n  \"values\": [{\n    \"attribute_id\": \"a787da0a-7e17-48e5-bbf0-9142f19ed98f\",\n    \"data\": [{\"id\": \"<attachment_id>\"}]\n  }]\n}\n```\nUploaded attachments are not publicly accessible.\nThis means that when fetching items with attachments, links are publicly available for 2 hours and after that, they have to be re-fetched again."
  -
    name: Views
    description: "\nFolder views (tabs) is a configuration of how data will be presented in a given folder. It can contain view type (e.g. column or table), filters (what items to show) and many other settings that can be specific for the view (for example last viewed date in the calendar view)."
  -
    name: Members
    description: ''
  -
    name: References
    description: ''
  -
    name: Hooks
    description: "\nThis type of webhooks are for programmatic usage, for example integrations. The webhook request contain two properties:\n`event`, which contains the name of the event (`value.updated`, `comment.created`, ...) and\n`payload` with entity data that is a subject of the event (check the code on the right side for example).\n\n<pre><code>\n// Example payload\n{\n  \"event\": \"value.created\",\n  \"payload\": {\n    \"id\": \"5455db29-d1a0-437e-8461-700d46ebadf7\",\n    \"object\": \"value\",\n    \"data\": \"Test\",\n    \"attribute_id\": \"a4b26453-156c-432f-8e13-bc6908cdc2de\",\n    \"deleted\": false\n  }\n}\n</code></pre>\n\nPay attention to the choice of the events that you want to react to because Infinity doesn't have a concept of *\"item created with all needed values filled\"*.\nAn item is created once and then additional values are created after that.\n\nThere are two ways to resolve this:\n1. If you need multiple attributes present on the item: listen for `value.created` event and, when it's triggered, fetch the item from the **items** endpoint and validate that all required attributes are present.\n\n2. If you need a single specific attribute to be present: listen for `value.created` event. This event is triggered the first time a value is added to the item. In the event handler check if the attribute_id of the created value matches the attribute that the user is interested in.\nCheck the example on the right side.\n\n<pre><code>\nfunction valueCreatedHandler(event) {\n  if (event.payload.attribute_id === '&ltid_of_label_attribute&gt') {\n    // Trigger\n  }\n}\n</code></pre>\n\nHooks are deactivated automatically after they fail to receive a response from the server after 3 attempts. The second attempt is triggered 1 minute after the first, and the next is 10 minutes after that."
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'You can retrieve your token by visiting your <a href="https://app.startinfinity.com/profile/settings">dashboard</a>, enabling developers features, then visiting <a href="https://app.startinfinity.com/profile/developer/tokens">Tokens page</a> and createing a new Token.'','
  parameters:
    xAPIVersion:
      description: ''
      example: 2025-12-01.morava
      in: header
      name: X-API-Version
      schema:
        type: string
        example: 2025-12-01.morava
      required: true
    limit:
      description: 'Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100.'
      example: 10
      in: query
      name: limit
      required: false
      schema:
        type: integer
        description: 'Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100.'
        example: 10
    sortBy:
      description: 'Sort items by id or created date - default is created_at.'
      example: created_at
      in: query
      name: sort_by
      required: false
      schema:
        type: string
        description: 'Sort items by id or created date - default is created_at.'
        example: created_at
        enum:
          - id
          - created_at
    sortDirection:
      description: 'Sort direction `asc` or `desc` - default is desc. Example: desc.'
      example: desc
      in: query
      name: sort_direction
      required: false
      schema:
        type: string
        description: 'Sort direction `asc` or `desc` - default is desc. Example: desc.'
        example: desc
        enum:
          - asc
          - desc
    after:
      description: 'Use this parameter to get items after last item. Use this to get to the next page.'
      example: null
      in: query
      name: after
      required: false
      schema:
        type: string
        description: 'Use this parameter to get items after last item. Use this to get to the next page.'
        example: null
        nullable: true
    before:
      description: 'Use this parameter to get items before first item.'
      example: null
      in: query
      name: before
      required: false
      schema:
        type: string
        description: 'Use this parameter to get items before first item.'
        example: null
        nullable: true
    workspace:
      description: 'Workspace ID'
      example: '669'
      in: path
      name: workspace
      required: true
      schema:
        type: string
    board:
      description: 'Board ID'
      example: LA1dW8i1TTK
      in: path
      name: board
      required: true
      schema:
        type: string
    attribute:
      description: 'Attribute ID'
      example: 46b171c5-32fa-4bd8-b23a-f2bf4645632c
      in: path
      name: attribute
      required: true
      schema:
        type: string
    expand:
      description: "set to 'logs' to include hook logs in the response."
      example:
        - logs
      in: query
      name: expand
      required: false
      schema:
        type: array
        description: "set to 'logs' to include hook logs in the response."
        example:
          - logs
        items:
          type: string
    folderId:
      description: 'Views that belong to this folder.'
      example: 8FjZofz89PM
      in: query
      name: folder_id
      required: false
      schema:
        type: string
        description: 'Views that belong to this folder.'
        example: 8FjZofz89PM
    item:
      description: 'Item ID'
      example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764
      in: path
      name: item
      required: true
      schema:
        type: string
    comment:
      description: 'Comment ID'
      example: bfefec7e-5ba6-4287-ac4a-753357584f16
      in: path
      name: comment
      required: true
      schema:
        type: string
    folder:
      description: 'Folder ID'
      example: 8FjZofz89PM
      in: path
      name: folder
      required: true
      schema:
        type: string
    view:
      description: 'Folder View ID'
      example: 11c3d575-8309-4cef-95d3-17f18adea1b3
      in: path
      name: view
      required: true
      schema:
        type: string
    user:
      description: 'Id of the existing user that should be added to the workspace.'
      example: 1300
      in: path
      name: user
      required: true
      schema:
        type: integer
    reference:
      description: 'Optional parameter. id of the reference.'
      examples:
        omitted:
          summary: 'When the value is omitted'
          value: ''
        present:
          summary: 'When the value is present'
          value: 8a69de6b-1587-438f-b14a-8f9047d827b2
      in: path
      name: reference
      required: true
      schema:
        type: string
    hook:
      description: 'Hook ID'
      example: 2555617b-01e2-4501-8ad8-2ae8e49766bf
      in: path
      name: hook
      required: true
      schema:
        type: string
  schemas:
    User:
      type: object
      example:
        id: 1302
        object: user
        name: 'Damian Peterson'
        email: damianpeterson@startinfinity.com
        photo_url: 'https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson'
        created_at: '2020-11-25T15:31:38.000000Z'
        job: null
        location: null
        tagline: null
        deleted: false
      properties:
        id:
          type: integer
          example: 1302
          readOnly: true
        object:
          type: string
          example: user
          readOnly: true
        name:
          type: string
          example: 'Damian Peterson'
        email:
          type: string
          example: damianpeterson@startinfinity.com
        photo_url:
          type: string
          example: 'https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson'
        created_at:
          type: string
          example: '2020-11-25T15:31:38.000000Z'
          readOnly: true
        job:
          type: string
          example: null
        location:
          type: string
          example: null
        tagline:
          type: string
          example: null
        deleted:
          type: boolean
          example: false
          readOnly: true
    Workspace:
      type: object
      properties:
        id:
          type: integer
          example: 669
          readOnly: true
        object:
          type: string
          example: workspace
          readOnly: true
        name:
          type: string
          example: 'Customer Success'
        photo_url:
          type: string
          example: null
        owner_id:
          type: integer
          example: 1302
        deleted:
          type: boolean
          example: false
          readOnly: true
    Board:
      type: object
      properties:
        id:
          type: string
          example: LA1dW8i1TTK
          readOnly: true
        object:
          type: string
          example: board
          readOnly: true
        name:
          type: string
          example: 'Vacation Planning'
        sort_order:
          type: string
          example: '393216.000000000000000000000000000000'
        color:
          type: string
          example: '#4eb4f9'
        description:
          type: string
          example: null
        user_ids:
          type: array
          example:
            - 1302
          items:
            type: integer
        deleted:
          type: boolean
          example: false
          readOnly: true
    Attribute:
      type: object
      properties:
        id:
          type: string
          example: b5e95ec8-80bc-4a55-a996-dcea663e4e6c
          readOnly: true
        object:
          type: string
          example: attribute
          readOnly: true
        name:
          type: string
          example: Reference
        type:
          type: string
          example: reference
        default_data:
          description: 'Depends on the attribute type'
          example: ''
        settings:
          type: object
        created_by:
          type: integer
          example: 1302
          readOnly: true
        created_at:
          type: string
          example: '2021-12-15T12:24:44.000000Z'
          readOnly: true
        deleted:
          type: boolean
          example: false
          readOnly: true
    Value:
      type: object
      properties:
        object:
          type: string
          example: value
          readOnly: true
        data:
          anyOf:
            -
              type: boolean
            -
              type: string
            -
              type: object
            -
              type: array
              items:
                anyOf:
                  -
                    type: string
                  -
                    type: object
        attribute_id:
          type: string
          example: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
        deleted:
          type: boolean
          example: false
          readOnly: true
    Item:
      type: object
      properties:
        id:
          type: string
          example: f98f97ca-d23d-4bea-8433-a1884ea99a86
          readOnly: true
        object:
          type: string
          example: item
          readOnly: true
        values:
          type: array
          example:
            -
              object: value
              data: 'Rent a car'
              attribute_id: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
              deleted: false
            -
              object: value
              data: false
              attribute_id: 3f723f19-5494-484b-a052-716d448c7629
              deleted: false
          items:
            $ref: '#/components/schemas/Value'
        folder_id:
          type: string
          example: APwqfkShQuR
        parent_id:
          type: string
          example: null
        created_at:
          type: string
          example: '2020-11-26T13:57:11.000000Z'
          readOnly: true
        sort_order:
          type: string
          example: '1245696.000000000000000000000000000000'
        deleted:
          type: boolean
          example: false
          readOnly: true
    Comment:
      type: object
      properties:
        id:
          type: string
          example: bfefec7e-5ba6-4287-ac4a-753357584f16
          readOnly: true
        object:
          type: string
          example: comment
          readOnly: true
        parent_id:
          type: string
          example: null
        text:
          type: string
          example: '<p>Reminder to myself: Check the calendar</p>'
        created_at:
          type: string
          example: '2020-11-26T14:02:27.000000Z'
          readOnly: true
        created_by:
          type: integer
          example: 1302
          readOnly: true
        deleted:
          type: boolean
          example: false
          readOnly: true
    Folder:
      type: object
      properties:
        id:
          type: string
          example: XmWKwYMfNxQ
          readOnly: true
        object:
          type: string
          example: folder
          readOnly: true
        name:
          type: string
          example: 'What to See in Barcelona'
        sort_order:
          type: string
          example: '589824.000000000000000000000000000000'
        color:
          type: string
          example: null
        settings:
          type: object
        attribute_ids:
          type: array
          example:
            - e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
            - 012fc63b-b690-4db1-98a1-2f018f8941ce
            - d2be0368-c5cd-43da-ae32-20a41304e9b1
            - 5d4ec2cf-627e-4e35-b49f-c73e1fd85c47
            - 8c78f989-5189-4b8c-b97f-96453007dc15
            - 73ac1c73-a2f1-4542-b951-351b8cda4c87
          items:
            type: string
        parent_id:
          type: string
          example: LA1dW8i1TTK
        deleted:
          type: boolean
          example: false
          readOnly: true
    Attachment:
      type: object
      example:
        id: 86245
        object: attachment
        link: 'https://app.startinfinity.com/storage/item-files/669/IGzfJcRqaBou4jm7pGujEPH18LAyANVI76scSYAc.jpg'
        original_name: test.jpg
        filesize: 0
        created_at: '2025-12-10T14:25:10.000000Z'
        deleted: false
      properties:
        id:
          type: integer
          example: 86245
          readOnly: true
        object:
          type: string
          example: attachment
          readOnly: true
        link:
          type: string
          example: 'https://app.startinfinity.com/storage/item-files/669/IGzfJcRqaBou4jm7pGujEPH18LAyANVI76scSYAc.jpg'
        original_name:
          type: string
          example: test.jpg
        filesize:
          type: integer
          example: 0
        created_at:
          type: string
          example: '2025-12-10T14:25:10.000000Z'
          readOnly: true
        deleted:
          type: boolean
          example: false
          readOnly: true
    Folderview:
      type: object
      properties:
        id:
          type: string
          example: 11c3d575-8309-4cef-95d3-17f18adea1b3
          readOnly: true
        object:
          type: string
          example: folderview
          readOnly: true
        folder_id:
          type: string
          example: 8FjZofz89PM
        name:
          type: string
          example: 'Restaurant List'
        type:
          type: string
          example: list
        sort_order:
          type: string
          example: '65536.000000000000000000000000000000'
        settings:
          type: object
        created_by:
          type: integer
          example: 1299
          readOnly: true
        created_at:
          type: string
          example: null
          readOnly: true
        deleted:
          type: boolean
          example: false
          readOnly: true
    Reference:
      type: object
      example:
        id: 019b08a6-e106-70ae-b046-f66e5562b7ea
        object: reference
        attribute_id: b5e95ec8-80bc-4a55-a996-dcea663e4e6c
        from_item_id: 341a89c9-618e-40ba-92e1-1e12c83b69a6
        to_item_id: 033709ef-aa01-4eb8-b4d0-5733e283c160
      properties:
        id:
          type: string
          example: 019b08a6-e106-70ae-b046-f66e5562b7ea
          readOnly: true
        object:
          type: string
          example: reference
          readOnly: true
        attribute_id:
          type: string
          example: b5e95ec8-80bc-4a55-a996-dcea663e4e6c
        from_item_id:
          type: string
          example: 341a89c9-618e-40ba-92e1-1e12c83b69a6
        to_item_id:
          type: string
          example: 033709ef-aa01-4eb8-b4d0-5733e283c160
    Hook:
      type: object
      example:
        id: 019b08a6-e196-72df-a98a-0b7458f93d27
        object: hook
        url: 'https://example.com/webhook/comment-created'
        user_id: 1302
        board_id: LA1dW8i1TTK
        secret: VKQlMbpH8tGYH64rjqNgVUkhLeCc92nf
        events:
          -
            event: comment.created
            data: null
        created_at: '2025-12-10T14:25:13.000000Z'
        deleted: false
      properties:
        id:
          type: string
          example: 019b08a6-e196-72df-a98a-0b7458f93d27
          readOnly: true
        object:
          type: string
          example: hook
          readOnly: true
        url:
          type: string
          example: 'https://example.com/webhook/comment-created'
        user_id:
          type: integer
          example: 1302
        board_id:
          type: string
          example: LA1dW8i1TTK
        secret:
          type: string
          example: VKQlMbpH8tGYH64rjqNgVUkhLeCc92nf
        events:
          type: array
          example:
            -
              event: comment.created
              data: null
          items:
            type: object
            properties:
              event:
                type: string
                example: comment.created
              data:
                type: string
                example: null
        created_at:
          type: string
          example: '2025-12-10T14:25:13.000000Z'
          readOnly: true
        deleted:
          type: boolean
          example: false
          readOnly: true
    Pagination:
      type: object
      example:
        has_more: false
        before: NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=
        after: NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=
        data:
          -
            id: 669
            object: workspace
            name: 'Customer Success'
            photo_url: null
            owner_id: 1302
            deleted: false
      properties:
        has_more:
          type: boolean
          example: false
        before:
          type: string
          example: NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=
        after:
          type: string
          example: NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=
security:
  -
    default: []
paths:
  /profile:
    get:
      summary: 'Get my profile data'
      operationId: getMyProfileData
      description: 'The response contains all the data related to the current user, including some fields that are not visible to other users.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      tags:
        - Profile
  /workspaces:
    get:
      summary: 'List workspaces'
      operationId: listWorkspaces
      description: 'Lists all workspaces that belong to the currently logged-in user.'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: 669
                            object: workspace
                            name: 'Customer Success'
                            photo_url: null
                            owner_id: 1302
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Workspace'
      tags:
        - Workspaces
  '/workspaces/{workspace}/boards':
    get:
      summary: 'List boards'
      operationId: listBoards
      description: 'Lists all boards that belong to the workspace given.'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: LA1dW8i1TTK
                            object: board
                            name: 'Vacation Planning'
                            sort_order: '393216.000000000000000000000000000000'
                            color: '#4eb4f9'
                            description: null
                            user_ids:
                              - 1302
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Board'
      tags:
        - Boards
    post:
      summary: 'Create board'
      operationId: createBoard
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Board'
      tags:
        - Boards
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Board'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
  '/workspaces/{workspace}/boards/{board}':
    get:
      summary: 'Get board'
      operationId: getBoard
      description: "Get a single board by its id for the board given. The user needs to have access to the board\nin order to be able to fetch it."
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Board'
      tags:
        - Boards
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/attributes':
    get:
      summary: 'List attributes'
      operationId: listAttributes
      description: "Lists all attributes belonging to the board given. The user needs to have access\nto the board in order to be able to fetch its attributes."
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: b5e95ec8-80bc-4a55-a996-dcea663e4e6c
                            object: attribute
                            name: Reference
                            type: reference
                            default_data:
                              description: 'Depends on the attribute type'
                              example: ''
                            settings:
                              folderId: 8FjZofz89PM
                              allowNew: true
                              multiple: true
                            created_by: 1302
                            created_at: '2021-12-15T12:24:44.000000Z'
                            deleted: false
                          -
                            id: e3009b98-db05-4408-8414-c8ce5cd7c143
                            object: attribute
                            name: Cuisine
                            type: label
                            default_data:
                              description: 'Depends on the attribute type'
                              example: ''
                            settings:
                              multiple: true
                              allowNew: true
                              allowEmpty: true
                              labels:
                                -
                                  id: 3f68e105-d878-40d9-8e51-5919d92ab89d
                                  name: Spanish
                                  color: '#92F3EC'
                                -
                                  id: 6bc19250-f233-4a6d-9ef7-620192b4147c
                                  name: Italian
                                  color: '#D6C2FF'
                            created_by: 1299
                            created_at: '2020-11-26T13:57:11.000000Z'
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Attribute'
      tags:
        - Attributes
    post:
      summary: 'Create attribute'
      operationId: createAttribute
      description: 'After the attribute is created, it is necessary to update the attribute_ids property of the Folder to make it accessible.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attribute'
      tags:
        - Attributes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Attribute'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/attributes/{attribute}':
    get:
      summary: 'Get attribute'
      operationId: getAttribute
      description: "Get a single attribute by its id for the board given. The user needs to have access to the board\nin order to be able to fetch an attribute."
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attribute'
      tags:
        - Attributes
    put:
      summary: 'Update attribute'
      operationId: updateAttribute
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attribute'
      tags:
        - Attributes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Attribute'
    delete:
      summary: 'Delete attribute'
      operationId: deleteAttribute
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attribute'
      tags:
        - Attributes
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/attribute'
  '/workspaces/{workspace}/boards/{board}/items':
    get:
      summary: 'List items'
      operationId: listItems
      description: 'Lists paginated items. Item properties can be expanded.'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/expand'
        -
          $ref: '#/components/parameters/folderId'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: f98f97ca-d23d-4bea-8433-a1884ea99a86
                            object: item
                            values:
                              -
                                object: value
                                data: 'Rent a car'
                                attribute_id: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
                                deleted: false
                              -
                                object: value
                                data: false
                                attribute_id: 3f723f19-5494-484b-a052-716d448c7629
                                deleted: false
                            folder_id: APwqfkShQuR
                            parent_id: null
                            created_at: '2020-11-26T13:57:11.000000Z'
                            sort_order: '1245696.000000000000000000000000000000'
                            deleted: false
                          -
                            id: f46b5830-b0d4-465c-81b7-14d6e6cba7c7
                            object: item
                            values:
                              -
                                object: value
                                data: 'Buy plane tickets'
                                attribute_id: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
                                deleted: false
                              -
                                object: value
                                data: false
                                attribute_id: 3f723f19-5494-484b-a052-716d448c7629
                                deleted: false
                            folder_id: APwqfkShQuR
                            parent_id: null
                            created_at: '2020-11-26T13:57:11.000000Z'
                            sort_order: '983552.000000000000000000000000000000'
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Item'
      tags:
        - Items
    post:
      summary: 'Create item'
      operationId: createItem
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
      tags:
        - Items
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Item'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/items/{item}':
    get:
      summary: 'Get item'
      operationId: getItem
      description: 'Get item by its id. The item must belong to the board given. Item properties can be expanded.'
      parameters:
        -
          $ref: '#/components/parameters/expand'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
      tags:
        - Items
    put:
      summary: 'Update item'
      operationId: updateItem
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
      tags:
        - Items
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Item'
    delete:
      summary: 'Delete item'
      operationId: deleteItem
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
      tags:
        - Items
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/item'
  '/workspaces/{workspace}/boards/{board}/items/{item}/comments':
    get:
      summary: 'List comments'
      operationId: listComments
      description: "Lists the comments of the board and item given.\nComment's property 'created_by' can be included in the response's body by using the 'expand' query parameter."
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/expand'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: bfefec7e-5ba6-4287-ac4a-753357584f16
                            object: comment
                            parent_id: null
                            text: '<p>Reminder to myself: Check the calendar</p>'
                            created_at: '2020-11-26T14:02:27.000000Z'
                            created_by: 1302
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Comment'
      tags:
        - Comments
    post:
      summary: 'Create comment'
      operationId: createComment
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
      tags:
        - Comments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Comment'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/item'
  '/workspaces/{workspace}/boards/{board}/items/{item}/comments/{comment}':
    get:
      summary: 'Get comment'
      operationId: getComment
      description: "Get comment by its id. The comment must belong to the board and item given.\nComment's property 'created_by' can be included in the response's body by using the 'expand' query parameter."
      parameters:
        -
          $ref: '#/components/parameters/expand'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
      tags:
        - Comments
    put:
      summary: 'Update comment'
      operationId: updateComment
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
      tags:
        - Comments
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Comment'
    delete:
      summary: 'Delete comment'
      operationId: deleteComment
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
      tags:
        - Comments
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/item'
      -
        $ref: '#/components/parameters/comment'
  '/workspaces/{workspace}/boards/{board}/folders':
    get:
      summary: 'List folders'
      operationId: listFolders
      description: 'Lists all folders that belong to the board given.'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: XmWKwYMfNxQ
                            object: folder
                            name: 'What to See in Barcelona'
                            sort_order: '589824.000000000000000000000000000000'
                            color: null
                            settings: []
                            attribute_ids:
                              - e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
                              - 012fc63b-b690-4db1-98a1-2f018f8941ce
                              - d2be0368-c5cd-43da-ae32-20a41304e9b1
                              - 5d4ec2cf-627e-4e35-b49f-c73e1fd85c47
                              - 8c78f989-5189-4b8c-b97f-96453007dc15
                              - 73ac1c73-a2f1-4542-b951-351b8cda4c87
                            parent_id: LA1dW8i1TTK
                            deleted: false
                          -
                            id: APwqfkShQuR
                            object: folder
                            name: Preparation
                            sort_order: '524288.000000000000000000000000000000'
                            color: null
                            settings: []
                            attribute_ids:
                              - e9eabdcd-66be-41d4-a88c-bdf8d05c28a9
                              - 3f723f19-5494-484b-a052-716d448c7629
                              - ab9ba009-da5d-4828-8c47-c53199f9b09b
                              - 8712b2d2-7e59-41de-b8ee-7b00d08ca625
                              - 46b171c5-32fa-4bd8-b23a-f2bf4645632c
                              - b5e95ec8-80bc-4a55-a996-dcea663e4e6c
                            parent_id: LA1dW8i1TTK
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Folder'
      tags:
        - Folders
    post:
      summary: 'Create folder'
      operationId: createFolder
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
      tags:
        - Folders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Folder'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/folders/{folder}':
    get:
      summary: 'Get folder'
      operationId: getFolder
      description: 'Get folder by id that belong to the board given.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
      tags:
        - Folders
    put:
      summary: 'Update folder'
      operationId: updateFolder
      description: ''
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
      tags:
        - Folders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Folder'
    delete:
      summary: 'Delete folder'
      operationId: deleteFolder
      description: 'Deletes a folder by its id.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folder'
      tags:
        - Folders
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/folder'
  '/workspaces/{workspace}/attachments/file':
    post:
      summary: 'Create from file'
      operationId: createFromFile
      description: "Upload files by submitting a file content as a `multipart/form-data`.\n\n ```javascript\n // Example: How to upload file with JavaScript\n const form = new FormData();\n form.append('file', document.getElementById('file-input'));\n axios.post('/api/v2/workspace/669/attachments/file', form);\n ```"
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
      tags:
        - Attachments
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'File to upload'
              required:
                - file
    parameters:
      -
        $ref: '#/components/parameters/workspace'
  '/workspaces/{workspace}/attachments/url':
    post:
      summary: 'Create from URL'
      operationId: createFromURL
      description: 'Download the attachment from a given URL, store it, and return an attachment object.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
      tags:
        - Attachments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Hook'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
  '/workspaces/{workspace}/boards/{board}/views':
    get:
      summary: 'List Views'
      operationId: listViews
      description: 'List from the folder'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/folderId'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: 11c3d575-8309-4cef-95d3-17f18adea1b3
                            object: folderview
                            folder_id: 8FjZofz89PM
                            name: 'Restaurant List'
                            type: list
                            sort_order: '65536.000000000000000000000000000000'
                            settings:
                              attributes: []
                              includeSubfolders: false
                              collapsedGroups: []
                              filter:
                                conditions: []
                                combinator: AND
                              sort:
                                conditions:
                                  -
                                    attributeId: 46b171c5-32fa-4bd8-b23a-f2bf4645632c
                                    settings:
                                      direction: asc
                            created_by: 1299
                            created_at: null
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Folderview'
      tags:
        - Views
    post:
      summary: 'Create view'
      operationId: createView
      description: 'Create a view'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folderview'
      tags:
        - Views
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Folderview'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/views/{view}':
    get:
      summary: 'Get views'
      operationId: getViews
      description: 'Get views by id that belong to the folder given.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folderview'
      tags:
        - Views
    put:
      summary: 'Update view'
      operationId: updateView
      description: 'Get views by id that belong to the folder given.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folderview'
      tags:
        - Views
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Folderview'
    delete:
      summary: 'Delete view'
      operationId: deleteView
      description: 'Delete the view'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folderview'
      tags:
        - Views
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/view'
  '/workspaces/{workspace}/members':
    get:
      summary: 'List members'
      operationId: listMembers
      description: 'Lists all users that belong to the current workspace given.'
      parameters:
        -
          $ref: '#/components/parameters/limit'
        -
          $ref: '#/components/parameters/sortBy'
        -
          $ref: '#/components/parameters/sortDirection'
        -
          $ref: '#/components/parameters/after'
        -
          $ref: '#/components/parameters/before'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: 1302
                            object: user
                            name: 'Damian Peterson'
                            email: damianpeterson@startinfinity.com
                            photo_url: 'https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson'
                            created_at: '2020-11-25T15:31:38.000000Z'
                            job: null
                            location: null
                            tagline: null
                            role: owner
                            deleted: false
                        items:
                          $ref: '#/components/schemas/User'
      tags:
        - Members
    parameters:
      -
        $ref: '#/components/parameters/workspace'
  '/workspaces/{workspace}/members/invite':
    post:
      summary: 'Invite Member'
      operationId: inviteMember
      description: 'Invite the user into the workspace.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      tags:
        - Members
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'Email of the user that will be invited to the workspace.'
                  example: user@example.com
                role:
                  type: string
                  description: "Role that will user have in the workspace. Possible values: 'restricted-member', 'full-member', 'admin. default: restricted-member"
                  example: full-member
              required:
                - email
    parameters:
      -
        $ref: '#/components/parameters/workspace'
  '/workspaces/{workspace}/members/{user}':
    put:
      summary: 'Add Member'
      operationId: addMember
      description: 'Add a member to the workspace'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      tags:
        - Members
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  type: string
                  description: "Role that will user have in the workspace. Possible values: 'restricted-member', 'full-member', 'admin. default: restricted-member"
                  example: full-member
    delete:
      summary: 'Remove Member'
      operationId: removeMember
      description: 'Remove member from the workspace'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      tags:
        - Members
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/user'
  '/workspaces/{workspace}/boards/{board}/references':
    post:
      summary: 'Create reference'
      operationId: createReference
      description: 'Creates a reference between two items.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reference'
      tags:
        - References
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Reference'
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/references/{reference}':
    delete:
      summary: 'Delete reference'
      operationId: deleteReference
      description: 'Delete a reference between two items.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reference'
      tags:
        - References
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/reference'
  '/workspaces/{workspace}/boards/{board}/hooks':
    post:
      summary: 'Create hook'
      operationId: createHook
      description: 'Creates a new hook.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        201:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
      tags:
        - Hooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Hook'
    get:
      summary: 'List hooks'
      operationId: listHooks
      description: 'Lists the hooks of the currently logged in user.'
      parameters:
        -
          $ref: '#/components/parameters/expand'
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                allOf:
                  -
                    $ref: '#/components/schemas/Pagination'
                  -
                    properties:
                      data:
                        type: array
                        example:
                          -
                            id: 2555617b-01e2-4501-8ad8-2ae8e49766bf
                            object: hook
                            url: 'https://domain.com/callback'
                            user_id: 1302
                            board_id: LA1dW8i1TTK
                            secret: D5DR6g203U6zB3X5nylgIGt45ZdbO1nO
                            logs: []
                            events: []
                            created_at: '2021-05-14T14:34:47.000000Z'
                            deleted: false
                          -
                            id: 56840d05-22f1-42cb-9288-a6ee006761f8
                            object: hook
                            url: 'https://domain.com/callback'
                            user_id: 1302
                            board_id: LA1dW8i1TTK
                            secret: XTTuLIBt70e4oSnNBzd1wx7QTJCXqEDD
                            logs: []
                            events: []
                            created_at: '2021-05-14T14:32:00.000000Z'
                            deleted: false
                        items:
                          $ref: '#/components/schemas/Hook'
      tags:
        - Hooks
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
  '/workspaces/{workspace}/boards/{board}/hooks/{hook}':
    put:
      summary: 'Update hook'
      operationId: updateHook
      description: 'Updates a hook.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
      tags:
        - Hooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Hook'
    delete:
      summary: 'Delete hook'
      operationId: deleteHook
      description: 'Deletes a hook that belongs to the currently logged in user.'
      parameters:
        -
          $ref: '#/components/parameters/xAPIVersion'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
      tags:
        - Hooks
    parameters:
      -
        $ref: '#/components/parameters/workspace'
      -
        $ref: '#/components/parameters/board'
      -
        $ref: '#/components/parameters/hook'
