> ## 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 Nodes



## OpenAPI

````yaml /openapi.json post /v1/workspaces/{workspaceId}/projects/{projectId}/specification-navigator/nodes/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}/specification-navigator/nodes/query:
    post:
      tags:
        - Specification Navigator
      summary: Query Nodes
      operationId: SpecificationNavigatorController_queryNodes_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/ReadSpecificationNavigatorNodesTableQueryDto
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpecificationNavigatorNodesResponseDto'
      security:
        - bearer: []
components:
  schemas:
    ReadSpecificationNavigatorNodesTableQueryDto:
      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
        status:
          type: string
          enum:
            - new
            - ready
            - broken
        showItemCount:
          type: boolean
        cursor:
          type: string
          minLength: 1
          maxLength: 2048
        limit:
          type: integer
          minimum: 1
          maximum: 100
        layout:
          enum:
            - areas
            - categories
            - areas-categories
            - categories-areas
            - custom
          type: string
        grouping:
          minItems: 1
          maxItems: 3
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  kind:
                    type: string
                    const: area
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    type: string
                    const: area_type
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    type: string
                    const: category
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    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)$
                required:
                  - kind
                  - levelKey
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    type: string
                    const: status
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    type: string
                    const: supplier
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    type: string
                    const: finish
                required:
                  - kind
                additionalProperties: false
              - type: object
                properties:
                  kind:
                    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_-]+$
                required:
                  - kind
                  - field
                additionalProperties: false
        parentPath:
          minItems: 1
          maxItems: 3
          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
        parentAreaId:
          type: string
        parentCategoryId:
          type: string
      required:
        - configuration
        - layout
      additionalProperties: false
    SpecificationNavigatorNodesResponseDto:
      type: object
      properties:
        areaStructureVersion:
          type: number
          nullable: true
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/SpecificationNavigatorNodeResponseDto'
        pageInfo:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SpecificationNavigatorPageInfoResponseDto'
      required:
        - areaStructureVersion
        - nodes
        - pageInfo
    SpecificationNavigatorNodeResponseDto:
      type: object
      properties:
        kind:
          enum:
            - area
            - area-type
            - area-level
            - category
            - status
            - supplier
            - finish
            - field
          type: string
        areaCount:
          type: number
        hasFloorPlan:
          type: boolean
        pinnedCount:
          type: number
        id:
          type: string
        label:
          type: string
        code:
          type: string
        structuralParentId:
          type: string
          nullable: true
        itemCount:
          type: number
        structuralChildCount:
          type: number
        hasStructuralChildren:
          type: boolean
        groupingChildCount:
          type: number
        hasGroupingChildren:
          type: boolean
        selection:
          $ref: '#/components/schemas/SpecificationNavigatorPathSelectionResponseDto'
      required:
        - kind
        - id
        - label
        - structuralParentId
        - structuralChildCount
        - hasStructuralChildren
        - groupingChildCount
        - hasGroupingChildren
        - selection
    SpecificationNavigatorPageInfoResponseDto:
      type: object
      properties:
        nextCursor:
          type: string
          nullable: true
        hasMore:
          type: boolean
      required:
        - nextCursor
        - hasMore
    SpecificationNavigatorPathSelectionResponseDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - path
        segments:
          type: array
          minItems: 1
          maxItems: 3
          items:
            oneOf:
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorAreaSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorAreaTypeSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorAreaLevelSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorCategorySelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorStatusSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorSupplierSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorFinishSelectionSegmentDto
              - $ref: >-
                  #/components/schemas/SpecificationNavigatorFieldSelectionSegmentDto
            discriminator:
              propertyName: dimension
              mapping:
                area:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorAreaSelectionSegmentDto
                area-type:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorAreaTypeSelectionSegmentDto
                area-level:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorAreaLevelSelectionSegmentDto
                category:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorCategorySelectionSegmentDto
                status:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorStatusSelectionSegmentDto
                supplier:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorSupplierSelectionSegmentDto
                finish:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorFinishSelectionSegmentDto
                field:
                  $ref: >-
                    #/components/schemas/SpecificationNavigatorFieldSelectionSegmentDto
      required:
        - kind
        - segments
    SpecificationNavigatorAreaSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - area
        scope:
          type: string
          enum:
            - direct
            - subtree
        areaId:
          type: string
      required:
        - dimension
        - scope
        - areaId
    SpecificationNavigatorAreaTypeSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - area-type
        areaTypeKey:
          type: string
          nullable: true
          pattern: ^[a-f0-9]{64}$
      required:
        - dimension
        - areaTypeKey
    SpecificationNavigatorAreaLevelSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - area-level
        levelKey:
          type: string
        areaId:
          type: string
          nullable: true
      required:
        - dimension
        - levelKey
        - areaId
    SpecificationNavigatorCategorySelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - category
        categoryId:
          type: string
      required:
        - dimension
        - categoryId
    SpecificationNavigatorStatusSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - status
        status:
          type: string
          enum:
            - new
            - ready
            - broken
      required:
        - dimension
        - status
    SpecificationNavigatorSupplierSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - supplier
        supplierId:
          type: string
          nullable: true
      required:
        - dimension
        - supplierId
    SpecificationNavigatorFinishSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - finish
        valueKey:
          type: string
          nullable: true
          pattern: ^[a-f0-9]{64}$
      required:
        - dimension
        - valueKey
    SpecificationNavigatorFieldSelectionSegmentDto:
      type: object
      properties:
        dimension:
          type: string
          enum:
            - field
        value:
          type: string
          nullable: true
        field:
          type: string
      required:
        - dimension
        - value
        - field
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````