> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.specurate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Query Table



## OpenAPI

````yaml /openapi.json post /v1/workspaces/{workspaceId}/projects/{projectId}/item-slots/query
openapi: 3.1.0
info:
  title: Specurate API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://app.specurate.com/api
    description: API Server
security: []
tags: []
paths:
  /v1/workspaces/{workspaceId}/projects/{projectId}/item-slots/query:
    post:
      tags:
        - Project Item Slot Table Query
      summary: Query Table
      operationId: ProjectItemSlotTableQueryController_queryTable_v1
      parameters:
        - name: workspaceId
          required: true
          in: path
          schema:
            type: string
        - name: projectId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectItemSlotsTableQueryDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/TableQueryGroupsResponseDto'
                  - $ref: >-
                      #/components/schemas/ProjectItemSlotTableQueryRowsResponseDto
components:
  schemas:
    ProjectItemSlotsTableQueryDto:
      type: object
      properties:
        configuration:
          type: object
          properties:
            schemaVersion:
              type: number
              const: 1
            columns:
              maxItems: 200
              type: array
              items:
                type: string
                minLength: 1
                maxLength: 255
            quickFilters:
              type: object
              properties:
                status:
                  maxItems: 20
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 255
                categoryIds:
                  maxItems: 100
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 255
                columnFilters:
                  maxItems: 50
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          fieldKey:
                            type: string
                            minLength: 1
                            maxLength: 255
                          type:
                            type: string
                            const: text
                          value:
                            type: string
                            minLength: 1
                            maxLength: 1000
                          mode:
                            type: string
                            enum:
                              - contains
                              - equals
                        required:
                          - fieldKey
                          - type
                          - value
                          - mode
                        additionalProperties: false
                      - type: object
                        properties:
                          fieldKey:
                            type: string
                            minLength: 1
                            maxLength: 255
                          type:
                            type: string
                            const: number
                          min:
                            type: number
                          max:
                            type: number
                        required:
                          - fieldKey
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          fieldKey:
                            type: string
                            minLength: 1
                            maxLength: 255
                          type:
                            type: string
                            const: boolean
                          value:
                            type: boolean
                        required:
                          - fieldKey
                          - type
                          - value
                        additionalProperties: false
                      - type: object
                        properties:
                          fieldKey:
                            type: string
                            minLength: 1
                            maxLength: 255
                          type:
                            type: string
                            const: list
                          values:
                            minItems: 1
                            maxItems: 100
                            type: array
                            items:
                              type: string
                              minLength: 1
                              maxLength: 255
                        required:
                          - fieldKey
                          - type
                          - values
                        additionalProperties: false
                      - type: object
                        properties:
                          fieldKey:
                            type: string
                            minLength: 1
                            maxLength: 255
                          type:
                            type: string
                            const: date
                          from:
                            type: string
                            format: date
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                          to:
                            type: string
                            format: date
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                        required:
                          - fieldKey
                          - type
                        additionalProperties: false
              required:
                - status
                - categoryIds
                - columnFilters
              additionalProperties: false
            advancedFilter:
              type: object
              properties:
                sets:
                  maxItems: 5
                  type: array
                  items:
                    type: object
                    properties:
                      conditions:
                        minItems: 1
                        maxItems: 10
                        type: array
                        items:
                          oneOf:
                            - type: object
                              properties:
                                fieldKey:
                                  type: string
                                  minLength: 1
                                  maxLength: 255
                                operator:
                                  type: string
                                  enum:
                                    - is_any_of
                                    - is_not_any_of
                                values:
                                  minItems: 1
                                  maxItems: 100
                                  type: array
                                  items:
                                    type: string
                                    minLength: 1
                                    maxLength: 255
                              required:
                                - fieldKey
                                - operator
                                - values
                              additionalProperties: false
                            - type: object
                              properties:
                                fieldKey:
                                  type: string
                                  minLength: 1
                                  maxLength: 255
                                operator:
                                  type: string
                                  enum:
                                    - contains
                                    - does_not_contain
                                value:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                              required:
                                - fieldKey
                                - operator
                                - value
                              additionalProperties: false
                            - type: object
                              properties:
                                fieldKey:
                                  type: string
                                  minLength: 1
                                  maxLength: 255
                                operator:
                                  type: string
                                  enum:
                                    - is_empty
                                    - is_not_empty
                              required:
                                - fieldKey
                                - operator
                              additionalProperties: false
                            - type: object
                              properties:
                                fieldKey:
                                  type: string
                                  minLength: 1
                                  maxLength: 255
                                operator:
                                  type: string
                                  enum:
                                    - date_on
                                    - date_before
                                    - date_after
                                value:
                                  type: string
                                  format: date
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                              required:
                                - fieldKey
                                - operator
                                - value
                              additionalProperties: false
                            - type: object
                              properties:
                                fieldKey:
                                  type: string
                                  minLength: 1
                                  maxLength: 255
                                operator:
                                  type: string
                                  const: date_between
                                from:
                                  type: string
                                  format: date
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                                to:
                                  type: string
                                  format: date
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                              required:
                                - fieldKey
                                - operator
                                - from
                                - to
                              additionalProperties: false
                    required:
                      - conditions
                    additionalProperties: false
              required:
                - sets
              additionalProperties: false
            groupBy:
              maxItems: 2
              type: array
              items:
                type: object
                properties:
                  fieldKey:
                    type: string
                    minLength: 1
                    maxLength: 255
                  direction:
                    type: string
                    enum:
                      - asc
                      - desc
                required:
                  - fieldKey
                  - direction
                additionalProperties: false
            sort:
              maxItems: 1
              type: array
              items:
                type: object
                properties:
                  fieldKey:
                    type: string
                    minLength: 1
                    maxLength: 255
                  direction:
                    type: string
                    enum:
                      - asc
                      - desc
                required:
                  - fieldKey
                  - direction
                additionalProperties: false
          required:
            - schemaVersion
            - columns
            - quickFilters
            - advancedFilter
            - groupBy
            - sort
          additionalProperties: false
        search:
          type: string
          minLength: 1
          maxLength: 255
        groupPath:
          default: []
          maxItems: 2
          type: array
          items:
            type: object
            properties:
              fieldKey:
                type: string
                minLength: 1
                maxLength: 255
              valueKey:
                anyOf:
                  - type: string
                    minLength: 1
                    maxLength: 1000
                  - type: 'null'
            required:
              - fieldKey
              - valueKey
            additionalProperties: false
        cursor:
          type: string
          minLength: 1
          maxLength: 4096
        limit:
          default: 50
          type: integer
          minimum: 1
          maximum: 100
        status:
          type: string
          enum:
            - new
            - ready
            - broken
        navigatorScope:
          oneOf:
            - type: object
              properties:
                kind:
                  type: string
                  const: area
                areaId:
                  type: string
                scope:
                  default: subtree
                  type: string
                  enum:
                    - direct
                    - subtree
              required:
                - kind
                - areaId
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  const: category
                categoryId:
                  type: string
              required:
                - kind
                - categoryId
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  const: special
                value:
                  type: string
                  enum:
                    - unassigned
                    - extra
              required:
                - kind
                - value
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  const: path
                segments:
                  minItems: 1
                  maxItems: 10
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: area
                          areaId:
                            type: string
                          scope:
                            type: string
                            enum:
                              - direct
                              - subtree
                        required:
                          - dimension
                          - areaId
                          - scope
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: area-type
                          areaTypeKey:
                            anyOf:
                              - type: string
                                pattern: ^[a-f0-9]{64}$
                              - type: 'null'
                        required:
                          - dimension
                          - areaTypeKey
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: area-level
                          levelKey:
                            type: string
                            format: uuid
                            pattern: >-
                              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          areaId:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - dimension
                          - levelKey
                          - areaId
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: category
                          categoryId:
                            type: string
                        required:
                          - dimension
                          - categoryId
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: status
                          status:
                            type: string
                            enum:
                              - new
                              - ready
                              - broken
                        required:
                          - dimension
                          - status
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: supplier
                          supplierId:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - dimension
                          - supplierId
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: finish
                          valueKey:
                            anyOf:
                              - type: string
                                pattern: ^[a-f0-9]{64}$
                              - type: 'null'
                        required:
                          - dimension
                          - valueKey
                        additionalProperties: false
                      - type: object
                        properties:
                          dimension:
                            type: string
                            const: field
                          field:
                            type: string
                            maxLength: 200
                            pattern: >-
                              ^(?:system|catalog_family|catalog_item|catalog_family_source|catalog_item_source|project_item|project_item_slot):[a-zA-Z0-9_-]+$
                          value:
                            anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 1000
                              - type: 'null'
                        required:
                          - dimension
                          - field
                          - value
                        additionalProperties: false
              required:
                - kind
                - segments
              additionalProperties: false
        changedSinceIssue:
          type: boolean
        changedInRange:
          type: object
          properties:
            from:
              type: string
              format: date
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
            to:
              type: string
              format: date
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
            timeZone:
              default: UTC
              type: string
              minLength: 1
              maxLength: 64
          required:
            - from
            - to
          additionalProperties: false
        issueTypes:
          minItems: 1
          maxItems: 3
          type: array
          items:
            enum:
              - version
              - issue
              - revision
            type: string
      required:
        - configuration
      additionalProperties: false
    TableQueryGroupsResponseDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - groups
        path:
          type: array
          items:
            $ref: '#/components/schemas/TableQueryGroupPathSegmentDto'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TableQueryGroupDto'
        totalItems:
          type: integer
        totalGroups:
          type: integer
        nextCursor:
          type: string
          nullable: true
        hasMore:
          type: boolean
        orderRevision:
          type: integer
          nullable: true
        level:
          type: number
        fieldKey:
          type: string
      required:
        - kind
        - path
        - groups
        - totalItems
        - totalGroups
        - nextCursor
        - hasMore
        - orderRevision
        - level
        - fieldKey
    ProjectItemSlotTableQueryRowsResponseDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - rows
        path:
          type: array
          items:
            $ref: '#/components/schemas/TableQueryGroupPathSegmentDto'
        items:
          type: array
          items:
            $ref: '#/components/schemas/ProjectItemSlotListItemDto'
        totalItems:
          type: integer
        nextCursor:
          type: string
          nullable: true
        hasMore:
          type: boolean
        orderRevision:
          type: integer
          nullable: true
      required:
        - kind
        - path
        - items
        - totalItems
        - nextCursor
        - hasMore
        - orderRevision
    TableQueryGroupPathSegmentDto:
      type: object
      properties:
        fieldKey:
          type: string
        valueKey:
          type: string
          nullable: true
      required:
        - fieldKey
        - valueKey
    TableQueryGroupDto:
      type: object
      properties:
        path:
          type: array
          items:
            $ref: '#/components/schemas/TableQueryGroupPathSegmentDto'
        valueKey:
          type: string
          nullable: true
        label:
          type: string
          nullable: true
        itemCount:
          type: number
      required:
        - path
        - valueKey
        - label
        - itemCount
    ProjectItemSlotListItemDto:
      type: object
      properties:
        quantityBreakdown:
          $ref: '#/components/schemas/SlotQuantityBreakdownDto'
        areas:
          type: array
          items:
            $ref: '#/components/schemas/SlotAreaAllocationDto'
        id:
          type: string
        projectId:
          type: string
        position:
          type: number
        quantity:
          type: string
        refNumber:
          type: object
          nullable: true
        brandStandardId:
          type: string
          nullable: true
          description: BigInt string
        unitsPerPackage:
          type: object
          nullable: true
        parLevel:
          type: object
          nullable: true
        extraQuantityPercentage:
          type: object
          nullable: true
        extraQuantityOverride:
          type: object
          nullable: true
        extraQuantityDecimalPlaces:
          type: integer
          nullable: true
        columnsAttributes:
          type: object
          additionalProperties: true
        version:
          type: number
        createdAt:
          type: string
        updatedAt:
          type: string
        primaryItem:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SlotListPrimaryItemDto'
        alternativesCount:
          type: integer
        similarItemsCount:
          type: integer
        latestRevision:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SlotLatestRevisionDto'
        latestIssue:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SlotLatestIssueDto'
        revisionDate:
          type: string
          nullable: true
        issueCount:
          type: integer
        catalogRelease:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SlotCatalogReleaseDto'
        releasesBehind:
          type: integer
          nullable: true
        revisionCount:
          type: integer
        changedSinceIssueCount:
          type: integer
        changedFields:
          type: array
          items:
            type: string
        applyParToPurchaseQuantity:
          type: boolean
      required:
        - quantityBreakdown
        - areas
        - id
        - projectId
        - position
        - quantity
        - refNumber
        - brandStandardId
        - columnsAttributes
        - version
        - createdAt
        - updatedAt
        - primaryItem
        - alternativesCount
        - similarItemsCount
        - latestRevision
        - latestIssue
        - revisionDate
        - issueCount
        - catalogRelease
        - releasesBehind
        - revisionCount
        - changedSinceIssueCount
        - applyParToPurchaseQuantity
    SlotQuantityBreakdownDto:
      type: object
      properties:
        parRequirement:
          type: string
          nullable: true
        packagesToPurchase:
          type: string
          nullable: true
        assignedQuantity:
          type: string
        allocationBalance:
          type: string
        extraQuantity:
          type: string
        purchaseQuantity:
          type: string
      required:
        - parRequirement
        - packagesToPurchase
        - assignedQuantity
        - allocationBalance
        - extraQuantity
        - purchaseQuantity
    SlotAreaAllocationDto:
      type: object
      properties:
        parentId:
          type: string
          nullable: true
        code:
          type: string
          nullable: true
        id:
          type: string
        name:
          type: string
        quantity:
          type: string
        roomNumbers:
          type: array
          items:
            type: string
        roomCount:
          type: number
        path:
          type: array
          items:
            type: string
      required:
        - parentId
        - code
        - id
        - name
        - quantity
        - roomNumbers
        - roomCount
        - path
    SlotListPrimaryItemDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: object
          nullable: true
        version:
          type: integer
          nullable: true
        catalogFamilyId:
          type: string
          nullable: true
          description: BigInt string
        catalogItemId:
          type: string
          nullable: true
          description: BigInt string
        catalogFamilySourceId:
          type: string
          nullable: true
        selectedSource:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SelectedSourceDto'
        primaryImageUrl:
          type: string
          nullable: true
        columnsAttributes:
          type: object
          additionalProperties: true
        syncStateCache:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SyncStateCacheDto'
        categoryId:
          type: string
          nullable: true
        categoryName:
          type: object
          nullable: true
        productTypeId:
          type: string
          nullable: true
        kind:
          enum:
            - option
            - component
          type: string
        isPrimary:
          type: boolean
        catalogConnectionMode:
          enum:
            - live
            - saved
          type: string
        catalogFamilyStatus:
          nullable: true
          enum:
            - draft
            - new_from_project
            - new_from_collection
            - ready_to_use
          type: string
        partsCount:
          type: integer
        materialsCount:
          type: integer
        coreChangePolicy:
          type: object
      required:
        - id
        - name
        - version
        - catalogFamilyId
        - catalogItemId
        - selectedSource
        - primaryImageUrl
        - columnsAttributes
        - productTypeId
        - kind
        - isPrimary
        - catalogConnectionMode
        - catalogFamilyStatus
        - partsCount
        - materialsCount
        - coreChangePolicy
    SlotLatestRevisionDto:
      type: object
      properties:
        id:
          type: string
        label:
          type: object
          nullable: true
        createdAt:
          type: string
        type:
          enum:
            - version
            - issue
            - revision
          type: string
        issueDate:
          type: string
          example: '2026-09-02'
      required:
        - id
        - label
        - createdAt
        - type
        - issueDate
    SlotLatestIssueDto:
      type: object
      properties:
        label:
          type: object
          nullable: true
        createdAt:
          type: string
        issueDate:
          type: string
      required:
        - label
        - createdAt
        - issueDate
    SlotCatalogReleaseDto:
      type: object
      properties:
        id:
          type: string
        number:
          type: number
        label:
          type: string
          nullable: true
        collectionId:
          type: string
          nullable: true
        collectionName:
          type: string
          nullable: true
      required:
        - id
        - number
        - label
        - collectionId
        - collectionName
    SelectedSourceDto:
      type: object
      properties:
        isDefault:
          type: boolean
        companyName:
          type: object
          nullable: true
        officeName:
          type: object
          nullable: true
      required:
        - isDefault
        - companyName
        - officeName
    SyncStateCacheDto:
      type: object
      properties:
        hasDiff:
          type: boolean
          description: >-
            Status-worthy drift: core/commercial columns, taxonomy, invalid
            source binding, or parts; descriptive-only column changes are
            excluded
        columnsDiff:
          type: boolean
          description: >-
            Any physical catalog-owned column delta, including descriptive
            fields; this can be true while hasDiff is false
        partsDiff:
          $ref: '#/components/schemas/PartsDiffDto'
        selectionDiff:
          $ref: '#/components/schemas/SelectionDiffDto'
        orphanedRefs:
          $ref: '#/components/schemas/OrphanedRefsDto'
        computedAt:
          type: string
        componentsDiverged:
          type: boolean
      required:
        - hasDiff
        - columnsDiff
        - partsDiff
        - selectionDiff
        - orphanedRefs
        - computedAt
        - componentsDiverged
    PartsDiffDto:
      type: object
      properties:
        hasDiff:
          type: boolean
        addedLocally:
          type: array
          items:
            type: string
        removedLocally:
          type: array
          items:
            type: string
        quantityChanged:
          type: array
          items:
            $ref: '#/components/schemas/PartsDiffEntryDto'
      required:
        - hasDiff
        - addedLocally
        - removedLocally
        - quantityChanged
    SelectionDiffDto:
      type: object
      properties:
        familySourceMismatch:
          type: boolean
          description: true when the selected family-source binding is incomplete
        itemSourceMismatch:
          type: boolean
          description: true when the selected item-source binding is incomplete
      required:
        - familySourceMismatch
        - itemSourceMismatch
    OrphanedRefsDto:
      type: object
      properties:
        family:
          type: boolean
        item:
          type: boolean
        familySource:
          type: boolean
        itemSource:
          type: boolean
      required:
        - family
        - item
        - familySource
        - itemSource
    PartsDiffEntryDto:
      type: object
      properties:
        catalogItemId:
          type: string
        projectQty:
          type: string
          nullable: true
        catalogQty:
          type: string
          nullable: true
      required:
        - catalogItemId
        - projectQty
        - catalogQty

````