openapi: 3.0.0
info:
  title: Local Watch Server API
  version: 1.0.0
  description: Single-tenant localhost watch server API (no auth, operates on
    single workspace directory)
servers:
  - url: http://localhost:8083
    description: Local coa watch server
paths:
  /health:
    get:
      operationId: health
      summary: Health check
      responses:
        "200":
          description: Service is healthy
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
  /api/v1/watch/stream:
    get:
      operationId: stream
      summary: SSE endpoint for workspace changes
      responses:
        "200":
          description: SSE stream
          content:
            text/event-stream:
              schema:
                type: string
  /api/v1/watch/storage-locations:
    post:
      operationId: createStorageLocation
      summary: Create a new storage location
      parameters:
        - name: workspaceId
          in: query
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
        "500":
          description: Error
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    oneOf:
                      - type: string
                      - type: object
                        required:
                          - errorString
                        properties:
                          errorString:
                            type: string
  /api/v1/watch/node/bulk:
    post:
      operationId: bulkWriteNodes
      summary: Bulk write nodes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nodes:
                  type: array
                  items:
                    anyOf:
                      - type: object
                        properties:
                          operation:
                            anyOf:
                              - type: object
                                properties:
                                  database:
                                    type: string
                                    default: ""
                                  schema:
                                    type: string
                                    default: ""
                                  description:
                                    type: string
                                    default: ""
                                  deployEnabled:
                                    type: boolean
                                    default: true
                                  locationName:
                                    type: string
                                  name:
                                    type: string
                                  sqlType:
                                    type: string
                                    enum:
                                      - Source
                                  type:
                                    type: string
                                    enum:
                                      - sourceInput
                                  version:
                                    type: number
                                    enum:
                                      - 1
                                    default: 1
                                  metadata:
                                    type: object
                                    properties:
                                      columns:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            defaultValue:
                                              type: string
                                            nullable:
                                              allOf:
                                                - {}
                                                - type: boolean
                                              default: false
                                            name:
                                              type: string
                                            dataType:
                                              type: string
                                            description:
                                              type: string
                                            columnReference:
                                              type: object
                                              properties:
                                                stepCounter:
                                                  allOf:
                                                    - {}
                                                    - type: string
                                                columnCounter:
                                                  allOf:
                                                    - {}
                                                    - type: string
                                              required:
                                                - stepCounter
                                                - columnCounter
                                              additionalProperties: true
                                            transform:
                                              type: string
                                            sourceColumnReferences:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  columnReferences:
                                                    type: array
                                                    items:
                                                      type: object
                                                      properties:
                                                        stepCounter:
                                                          allOf:
                                                            - {}
                                                            - type: string
                                                        columnCounter:
                                                          allOf:
                                                            - {}
                                                            - type: string
                                                      required:
                                                        - stepCounter
                                                        - columnCounter
                                                      additionalProperties: true
                                                  transform:
                                                    type: string
                                                required:
                                                  - columnReferences
                                                  - transform
                                                additionalProperties: true
                                            systemColumnType:
                                              type: string
                                              enum:
                                                - None
                                                - sysCreateDate
                                                - sysUpdateDate
                                                - sysStartDate
                                                - sysEndDate
                                                - sysVersion
                                                - sysCurrentFlag
                                            keyColumnType:
                                              type: string
                                              enum:
                                                - None
                                                - surrogateKey
                                                - primaryBusinessKey
                                            isBusinessKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            isChangeTracking:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            primaryKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            uniqueKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            hashDetails:
                                              type: object
                                              properties:
                                                hashAlgorithm:
                                                  type: string
                                                  enum:
                                                    - SHA1
                                                    - SHA256
                                                    - MD5
                                              required:
                                                - hashAlgorithm
                                              additionalProperties: true
                                              nullable: true
                                            hashedColumns:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  stepCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                  columnCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                required:
                                                  - stepCounter
                                                  - columnCounter
                                                additionalProperties: true
                                            isSurrogateKey:
                                              type: boolean
                                            config:
                                              type: object
                                              additionalProperties: {}
                                            appliedColumnTests:
                                              type: object
                                              additionalProperties:
                                                type: boolean
                                            acceptedValues:
                                              type: object
                                              properties:
                                                strictMatch:
                                                  type: boolean
                                                values:
                                                  type: array
                                                  items:
                                                    type: string
                                              required:
                                                - strictMatch
                                                - values
                                              additionalProperties: true
                                            isSystemCreateDate:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            isSystemUpdateDate:
                                              type: boolean
                                            isSystemStartDate:
                                              type: boolean
                                            isSystemEndDate:
                                              type: boolean
                                            isSystemVersion:
                                              type: boolean
                                            isSystemCurrentFlag:
                                              type: boolean
                                          required:
                                            - name
                                            - dataType
                                            - description
                                            - columnReference
                                          additionalProperties: true
                                    required:
                                      - columns
                                    additionalProperties: true
                                  id:
                                    type: string
                                required:
                                  - locationName
                                  - name
                                  - sqlType
                                  - type
                                  - metadata
                                  - id
                                additionalProperties: true
                              - type: object
                                properties:
                                  database:
                                    type: string
                                    default: ""
                                  schema:
                                    type: string
                                    default: ""
                                  description:
                                    type: string
                                    default: ""
                                  deployEnabled:
                                    type: boolean
                                    default: true
                                  locationName:
                                    type: string
                                  name:
                                    type: string
                                  sqlType:
                                    anyOf:
                                      - type: string
                                        enum:
                                          - Stage
                                          - persistentStage
                                          - View
                                          - Dimension
                                          - Fact
                                      - type: string
                                  type:
                                    type: string
                                    enum:
                                      - sql
                                  version:
                                    type: number
                                    enum:
                                      - 1
                                    default: 1
                                  isMultisource:
                                    type: boolean
                                  config:
                                    type: object
                                    additionalProperties: {}
                                    default: {}
                                  metadata:
                                    type: object
                                    properties:
                                      columns:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            defaultValue:
                                              type: string
                                            nullable:
                                              allOf:
                                                - {}
                                                - type: boolean
                                              default: false
                                            name:
                                              type: string
                                            dataType:
                                              type: string
                                            description:
                                              type: string
                                            columnReference:
                                              type: object
                                              properties:
                                                stepCounter:
                                                  allOf:
                                                    - {}
                                                    - type: string
                                                columnCounter:
                                                  allOf:
                                                    - {}
                                                    - type: string
                                              required:
                                                - stepCounter
                                                - columnCounter
                                              additionalProperties: true
                                            transform:
                                              type: string
                                            sourceColumnReferences:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  columnReferences:
                                                    type: array
                                                    items:
                                                      type: object
                                                      properties:
                                                        stepCounter:
                                                          allOf:
                                                            - {}
                                                            - type: string
                                                        columnCounter:
                                                          allOf:
                                                            - {}
                                                            - type: string
                                                      required:
                                                        - stepCounter
                                                        - columnCounter
                                                      additionalProperties: true
                                                  transform:
                                                    type: string
                                                required:
                                                  - columnReferences
                                                  - transform
                                                additionalProperties: true
                                            systemColumnType:
                                              type: string
                                              enum:
                                                - None
                                                - sysCreateDate
                                                - sysUpdateDate
                                                - sysStartDate
                                                - sysEndDate
                                                - sysVersion
                                                - sysCurrentFlag
                                            keyColumnType:
                                              type: string
                                              enum:
                                                - None
                                                - surrogateKey
                                                - primaryBusinessKey
                                            isBusinessKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            isChangeTracking:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            primaryKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            uniqueKey:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            hashDetails:
                                              type: object
                                              properties:
                                                hashAlgorithm:
                                                  type: string
                                                  enum:
                                                    - SHA1
                                                    - SHA256
                                                    - MD5
                                              required:
                                                - hashAlgorithm
                                              additionalProperties: true
                                              nullable: true
                                            hashedColumns:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  stepCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                  columnCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                required:
                                                  - stepCounter
                                                  - columnCounter
                                                additionalProperties: true
                                            isSurrogateKey:
                                              type: boolean
                                            config:
                                              type: object
                                              additionalProperties: {}
                                            appliedColumnTests:
                                              type: object
                                              additionalProperties:
                                                type: boolean
                                            acceptedValues:
                                              type: object
                                              properties:
                                                strictMatch:
                                                  type: boolean
                                                values:
                                                  type: array
                                                  items:
                                                    type: string
                                              required:
                                                - strictMatch
                                                - values
                                              additionalProperties: true
                                            isSystemCreateDate:
                                              allOf:
                                                - {}
                                                - type: boolean
                                            isSystemUpdateDate:
                                              type: boolean
                                            isSystemStartDate:
                                              type: boolean
                                            isSystemEndDate:
                                              type: boolean
                                            isSystemVersion:
                                              type: boolean
                                            isSystemCurrentFlag:
                                              type: boolean
                                          required:
                                            - name
                                            - dataType
                                            - description
                                            - columnReference
                                          additionalProperties: true
                                      sourceMapping:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            name:
                                              type: string
                                            join:
                                              type: object
                                              properties:
                                                joinCondition:
                                                  type: string
                                              required:
                                                - joinCondition
                                              additionalProperties: true
                                            dependencies:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  locationName:
                                                    type: string
                                                  nodeName:
                                                    type: string
                                                required:
                                                  - locationName
                                                  - nodeName
                                                additionalProperties: true
                                            customSQL:
                                              type: object
                                              properties:
                                                customSQL:
                                                  type: string
                                              required:
                                                - customSQL
                                              additionalProperties: true
                                            noLinkRefs:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  locationName:
                                                    type: string
                                                  nodeName:
                                                    type: string
                                                required:
                                                  - locationName
                                                  - nodeName
                                                additionalProperties: false
                                              default: []
                                            aliases:
                                              type: object
                                              additionalProperties:
                                                type: string
                                          required:
                                            - name
                                            - join
                                            - dependencies
                                          additionalProperties: true
                                      cteString:
                                        type: string
                                      destinationName:
                                        type: string
                                      description:
                                        type: string
                                      mapping:
                                        type: object
                                        additionalProperties:
                                          anyOf:
                                            - type: object
                                              properties: {}
                                              additionalProperties: true
                                            - type: string
                                            - type: number
                                            - type: boolean
                                      materializationOption:
                                        type: string
                                      appliedNodeTests:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            name:
                                              type: string
                                            description:
                                              type: string
                                              default: ""
                                            continueOnFailure:
                                              type: boolean
                                            runOrder:
                                              type: string
                                              enum:
                                                - Before
                                                - After
                                            templateString:
                                              type: string
                                          required:
                                            - name
                                            - continueOnFailure
                                            - runOrder
                                            - templateString
                                          additionalProperties: false
                                        default: []
                                      enabledColumnTestIDs:
                                        type: array
                                        items:
                                          type: string
                                        default: []
                                    required:
                                      - columns
                                      - sourceMapping
                                    additionalProperties: true
                                  materializationType:
                                    anyOf:
                                      - type: string
                                        enum:
                                          - table
                                          - view
                                      - type: string
                                  overrideSQL:
                                    type: boolean
                                  id:
                                    type: string
                                required:
                                  - locationName
                                  - name
                                  - type
                                  - isMultisource
                                  - metadata
                                  - materializationType
                                  - id
                                additionalProperties: true
                        required:
                          - operation
                        additionalProperties: true
                      - type: object
                        properties:
                          location:
                            type: string
                          name:
                            type: string
                          sql:
                            type: string
                          id:
                            type: string
                        required:
                          - location
                          - name
                          - sql
                          - id
                        additionalProperties: true
              required:
                - nodes
              additionalProperties: false
      responses:
        "200":
          description: Bulk operation successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  count:
                    type: integer
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/node/{nodeId}:
    post:
      operationId: writeNode
      summary: Create or update node
      parameters:
        - name: nodeId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
                - type: object
                  properties:
                    operation:
                      anyOf:
                        - type: object
                          properties:
                            database:
                              type: string
                              default: ""
                            schema:
                              type: string
                              default: ""
                            description:
                              type: string
                              default: ""
                            deployEnabled:
                              type: boolean
                              default: true
                            locationName:
                              type: string
                            name:
                              type: string
                            sqlType:
                              anyOf:
                                - type: string
                                  enum:
                                    - Stage
                                    - persistentStage
                                    - View
                                    - Dimension
                                    - Fact
                                - type: string
                            type:
                              type: string
                              enum:
                                - sql
                            version:
                              type: number
                              enum:
                                - 1
                              default: 1
                            isMultisource:
                              type: boolean
                            config:
                              type: object
                              additionalProperties: {}
                              default: {}
                            metadata:
                              type: object
                              properties:
                                columns:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      defaultValue:
                                        type: string
                                      nullable:
                                        allOf:
                                          - {}
                                          - type: boolean
                                        default: false
                                      name:
                                        type: string
                                      dataType:
                                        type: string
                                      description:
                                        type: string
                                      columnReference:
                                        type: object
                                        properties:
                                          stepCounter:
                                            allOf:
                                              - {}
                                              - type: string
                                          columnCounter:
                                            allOf:
                                              - {}
                                              - type: string
                                        required:
                                          - stepCounter
                                          - columnCounter
                                        additionalProperties: true
                                      transform:
                                        type: string
                                      sourceColumnReferences:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            columnReferences:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  stepCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                  columnCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                required:
                                                  - stepCounter
                                                  - columnCounter
                                                additionalProperties: true
                                            transform:
                                              type: string
                                          required:
                                            - columnReferences
                                            - transform
                                          additionalProperties: true
                                      systemColumnType:
                                        type: string
                                        enum:
                                          - None
                                          - sysCreateDate
                                          - sysUpdateDate
                                          - sysStartDate
                                          - sysEndDate
                                          - sysVersion
                                          - sysCurrentFlag
                                      keyColumnType:
                                        type: string
                                        enum:
                                          - None
                                          - surrogateKey
                                          - primaryBusinessKey
                                      isBusinessKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      isChangeTracking:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      primaryKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      uniqueKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      hashDetails:
                                        type: object
                                        properties:
                                          hashAlgorithm:
                                            type: string
                                            enum:
                                              - SHA1
                                              - SHA256
                                              - MD5
                                        required:
                                          - hashAlgorithm
                                        additionalProperties: true
                                        nullable: true
                                      hashedColumns:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            stepCounter:
                                              allOf:
                                                - {}
                                                - type: string
                                            columnCounter:
                                              allOf:
                                                - {}
                                                - type: string
                                          required:
                                            - stepCounter
                                            - columnCounter
                                          additionalProperties: true
                                      isSurrogateKey:
                                        type: boolean
                                      config:
                                        type: object
                                        additionalProperties: {}
                                      appliedColumnTests:
                                        type: object
                                        additionalProperties:
                                          type: boolean
                                      acceptedValues:
                                        type: object
                                        properties:
                                          strictMatch:
                                            type: boolean
                                          values:
                                            type: array
                                            items:
                                              type: string
                                        required:
                                          - strictMatch
                                          - values
                                        additionalProperties: true
                                      isSystemCreateDate:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      isSystemUpdateDate:
                                        type: boolean
                                      isSystemStartDate:
                                        type: boolean
                                      isSystemEndDate:
                                        type: boolean
                                      isSystemVersion:
                                        type: boolean
                                      isSystemCurrentFlag:
                                        type: boolean
                                    required:
                                      - name
                                      - dataType
                                      - description
                                      - columnReference
                                    additionalProperties: true
                                sourceMapping:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                                      join:
                                        type: object
                                        properties:
                                          joinCondition:
                                            type: string
                                        required:
                                          - joinCondition
                                        additionalProperties: true
                                      dependencies:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            locationName:
                                              type: string
                                            nodeName:
                                              type: string
                                          required:
                                            - locationName
                                            - nodeName
                                          additionalProperties: true
                                      customSQL:
                                        type: object
                                        properties:
                                          customSQL:
                                            type: string
                                        required:
                                          - customSQL
                                        additionalProperties: true
                                      noLinkRefs:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            locationName:
                                              type: string
                                            nodeName:
                                              type: string
                                          required:
                                            - locationName
                                            - nodeName
                                          additionalProperties: false
                                        default: []
                                      aliases:
                                        type: object
                                        additionalProperties:
                                          type: string
                                    required:
                                      - name
                                      - join
                                      - dependencies
                                    additionalProperties: true
                                cteString:
                                  type: string
                                destinationName:
                                  type: string
                                description:
                                  type: string
                                mapping:
                                  type: object
                                  additionalProperties:
                                    anyOf:
                                      - type: object
                                        properties: {}
                                        additionalProperties: true
                                      - type: string
                                      - type: number
                                      - type: boolean
                                materializationOption:
                                  type: string
                                appliedNodeTests:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                                      description:
                                        type: string
                                        default: ""
                                      continueOnFailure:
                                        type: boolean
                                      runOrder:
                                        type: string
                                        enum:
                                          - Before
                                          - After
                                      templateString:
                                        type: string
                                    required:
                                      - name
                                      - continueOnFailure
                                      - runOrder
                                      - templateString
                                    additionalProperties: false
                                  default: []
                                enabledColumnTestIDs:
                                  type: array
                                  items:
                                    type: string
                                  default: []
                              required:
                                - columns
                                - sourceMapping
                              additionalProperties: true
                            materializationType:
                              anyOf:
                                - type: string
                                  enum:
                                    - table
                                    - view
                                - type: string
                            overrideSQL:
                              type: boolean
                          required:
                            - locationName
                            - name
                            - type
                            - isMultisource
                            - metadata
                            - materializationType
                          additionalProperties: true
                        - type: object
                          properties:
                            database:
                              type: string
                              default: ""
                            schema:
                              type: string
                              default: ""
                            description:
                              type: string
                              default: ""
                            deployEnabled:
                              type: boolean
                              default: true
                            locationName:
                              type: string
                            name:
                              type: string
                            sqlType:
                              type: string
                              enum:
                                - Source
                            type:
                              type: string
                              enum:
                                - sourceInput
                            version:
                              type: number
                              enum:
                                - 1
                              default: 1
                            metadata:
                              type: object
                              properties:
                                columns:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      defaultValue:
                                        type: string
                                      nullable:
                                        allOf:
                                          - {}
                                          - type: boolean
                                        default: false
                                      name:
                                        type: string
                                      dataType:
                                        type: string
                                      description:
                                        type: string
                                      columnReference:
                                        type: object
                                        properties:
                                          stepCounter:
                                            allOf:
                                              - {}
                                              - type: string
                                          columnCounter:
                                            allOf:
                                              - {}
                                              - type: string
                                        required:
                                          - stepCounter
                                          - columnCounter
                                        additionalProperties: true
                                      transform:
                                        type: string
                                      sourceColumnReferences:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            columnReferences:
                                              type: array
                                              items:
                                                type: object
                                                properties:
                                                  stepCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                  columnCounter:
                                                    allOf:
                                                      - {}
                                                      - type: string
                                                required:
                                                  - stepCounter
                                                  - columnCounter
                                                additionalProperties: true
                                            transform:
                                              type: string
                                          required:
                                            - columnReferences
                                            - transform
                                          additionalProperties: true
                                      systemColumnType:
                                        type: string
                                        enum:
                                          - None
                                          - sysCreateDate
                                          - sysUpdateDate
                                          - sysStartDate
                                          - sysEndDate
                                          - sysVersion
                                          - sysCurrentFlag
                                      keyColumnType:
                                        type: string
                                        enum:
                                          - None
                                          - surrogateKey
                                          - primaryBusinessKey
                                      isBusinessKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      isChangeTracking:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      primaryKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      uniqueKey:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      hashDetails:
                                        type: object
                                        properties:
                                          hashAlgorithm:
                                            type: string
                                            enum:
                                              - SHA1
                                              - SHA256
                                              - MD5
                                        required:
                                          - hashAlgorithm
                                        additionalProperties: true
                                        nullable: true
                                      hashedColumns:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            stepCounter:
                                              allOf:
                                                - {}
                                                - type: string
                                            columnCounter:
                                              allOf:
                                                - {}
                                                - type: string
                                          required:
                                            - stepCounter
                                            - columnCounter
                                          additionalProperties: true
                                      isSurrogateKey:
                                        type: boolean
                                      config:
                                        type: object
                                        additionalProperties: {}
                                      appliedColumnTests:
                                        type: object
                                        additionalProperties:
                                          type: boolean
                                      acceptedValues:
                                        type: object
                                        properties:
                                          strictMatch:
                                            type: boolean
                                          values:
                                            type: array
                                            items:
                                              type: string
                                        required:
                                          - strictMatch
                                          - values
                                        additionalProperties: true
                                      isSystemCreateDate:
                                        allOf:
                                          - {}
                                          - type: boolean
                                      isSystemUpdateDate:
                                        type: boolean
                                      isSystemStartDate:
                                        type: boolean
                                      isSystemEndDate:
                                        type: boolean
                                      isSystemVersion:
                                        type: boolean
                                      isSystemCurrentFlag:
                                        type: boolean
                                    required:
                                      - name
                                      - dataType
                                      - description
                                      - columnReference
                                    additionalProperties: true
                              required:
                                - columns
                              additionalProperties: true
                          required:
                            - locationName
                            - name
                            - sqlType
                            - type
                            - metadata
                          additionalProperties: true
                  required:
                    - operation
                  additionalProperties: true
                - type: object
                  properties:
                    location:
                      type: string
                    name:
                      type: string
                    sql:
                      type: string
                  required:
                    - location
                    - name
                    - sql
                  additionalProperties: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deleteNode
      summary: Delete node
      parameters:
        - name: nodeId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/job:
    post:
      operationId: createJob
      summary: Create job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                includeSelector:
                  allOf:
                    - {}
                    - type: string
                excludeSelector:
                  allOf:
                    - {}
                    - type: string
                subgraphs:
                  type: array
                  items:
                    type: integer
                steps:
                  type: array
                  items:
                    allOf:
                      - {}
                      - type: string
                version:
                  type: number
                  enum:
                    - 2
                id:
                  type: number
              required:
                - id
              additionalProperties: false
      responses:
        "200":
          description: Job created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: number
                required:
                  - id
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/job/{jobId}:
    post:
      operationId: writeJob
      summary: Create or update job
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                includeSelector:
                  allOf:
                    - {}
                    - type: string
                excludeSelector:
                  allOf:
                    - {}
                    - type: string
                subgraphs:
                  type: array
                  items:
                    type: integer
                steps:
                  type: array
                  items:
                    allOf:
                      - {}
                      - type: string
                version:
                  type: number
                  enum:
                    - 2
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deleteJob
      summary: Delete job
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/macro/{macroId}:
    post:
      operationId: updateMacro
      summary: Update macro
      parameters:
        - name: macroId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                macroString:
                  type: string
                  default: ""
                macroCounter:
                  type: integer
                packageInfo:
                  type: object
                  properties:
                    id:
                      type: string
                    version:
                      type: string
                  required:
                    - id
                    - version
                  additionalProperties: false
                version:
                  type: number
                  enum:
                    - 1
                  default: 1
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deleteMacro
      summary: Delete macro
      parameters:
        - name: macroId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/subgraph:
    post:
      operationId: createSubgraph
      summary: Create subgraph
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                folderCounter:
                  allOf:
                    - {}
                    - type: string
                name:
                  type: string
                  default: ""
                steps:
                  type: array
                  items:
                    allOf:
                      - {}
                      - type: string
                  default: []
                version:
                  type: number
                  enum:
                    - 1
                  default: 1
                id:
                  type: string
              required:
                - id
              additionalProperties: false
      responses:
        "200":
          description: Subgraph created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/subgraph/{subgraphId}:
    post:
      operationId: writeSubgraph
      summary: Create or update subgraph
      parameters:
        - name: subgraphId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                folderCounter:
                  allOf:
                    - {}
                    - type: string
                name:
                  type: string
                  default: ""
                steps:
                  type: array
                  items:
                    allOf:
                      - {}
                      - type: string
                  default: []
                version:
                  type: number
                  enum:
                    - 1
                  default: 1
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deleteSubgraph
      summary: Delete subgraph
      parameters:
        - name: subgraphId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/package/{packageId}:
    post:
      operationId: updatePackage
      summary: Update package
      parameters:
        - name: packageId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                version:
                  type: number
                  enum:
                    - 1
                  default: 1
                contents:
                  type: object
                  properties:
                    description:
                      type: string
                    overview:
                      type: string
                      maxLength: 200
                      default: ""
                    packageID:
                      type: string
                    publisherID:
                      type: string
                    name:
                      type: string
                    macros:
                      type: string
                    nodeTypes:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          templateCounter:
                            type: integer
                          id:
                            allOf:
                              - {}
                              - type: string
                          isDisabled:
                            type: boolean
                          metadata:
                            type: object
                            properties:
                              defaultStorageLocation:
                                type: string
                                nullable: true
                              error:
                                type: object
                                properties:
                                  errorString:
                                    type: string
                                required:
                                  - errorString
                                additionalProperties: false
                                nullable: true
                              nodeMetadataSpec:
                                type: string
                              templates:
                                type: object
                                properties:
                                  create:
                                    type: object
                                    properties:
                                      templateString:
                                        type: string
                                    required:
                                      - templateString
                                    additionalProperties: false
                                  run:
                                    type: object
                                    properties:
                                      templateString:
                                        type: string
                                    required:
                                      - templateString
                                    additionalProperties: false
                                required:
                                  - create
                                  - run
                                additionalProperties: false
                            required:
                              - error
                              - nodeMetadataSpec
                              - templates
                            additionalProperties: false
                          name:
                            type: string
                          version:
                            anyOf:
                              - type: number
                                enum:
                                  - 1
                              - type: number
                                enum:
                                  - 2
                            default: 1
                          packageInfo:
                            type: object
                            properties:
                              id:
                                type: string
                              version:
                                type: string
                            required:
                              - id
                              - version
                            additionalProperties: false
                        required:
                          - id
                          - isDisabled
                          - metadata
                          - name
                        additionalProperties: false
                    release:
                      type: object
                      properties:
                        version:
                          type: string
                        changeLog:
                          type: string
                        releaseID:
                          type: string
                      required:
                        - version
                        - changeLog
                        - releaseID
                      additionalProperties: false
                    dependencies:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          alias:
                            type: string
                          packageID:
                            type: string
                          releaseID:
                            type: string
                          macros:
                            type: string
                          version:
                            type: string
                          dependencies:
                            type: object
                            additionalProperties: {}
                        required:
                          - alias
                          - packageID
                          - releaseID
                          - macros
                          - version
                          - dependencies
                        additionalProperties: false
                    platformKind:
                      type: string
                      enum:
                        - snowflake
                        - databricks
                        - fabric
                        - bigquery
                  required:
                    - description
                    - packageID
                    - publisherID
                    - name
                    - macros
                    - nodeTypes
                    - release
                    - dependencies
                  additionalProperties: false
                config:
                  type: object
                  properties:
                    packageVariables:
                      type: string
                    entities:
                      type: object
                      properties:
                        nodeTypes:
                          type: object
                          additionalProperties:
                            type: object
                            properties:
                              defaultStorageLocation:
                                type: string
                                nullable: true
                              isDisabled:
                                type: boolean
                            required:
                              - defaultStorageLocation
                              - isDisabled
                            additionalProperties: false
                      required:
                        - nodeTypes
                      additionalProperties: false
                  required:
                    - packageVariables
                    - entities
                  additionalProperties: false
                alias:
                  type: string
              required:
                - contents
                - config
                - alias
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deletePackage
      summary: Delete package
      parameters:
        - name: packageId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/nodeType:
    post:
      operationId: createNodeTypeWithoutId
      summary: Create node type (auto-generates ID)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                isDisabled:
                  type: boolean
                version:
                  anyOf:
                    - type: number
                      enum:
                        - 1
                    - type: number
                      enum:
                        - 2
                packageInfo:
                  type: object
                  properties:
                    id:
                      type: string
                    version:
                      type: string
                  required:
                    - id
                    - version
                  additionalProperties: false
                metadata:
                  type: object
                  properties:
                    defaultStorageLocation:
                      type: string
                      nullable: true
                    templates:
                      type: object
                      properties:
                        create:
                          type: object
                          properties:
                            templateString:
                              type: string
                          required:
                            - templateString
                          additionalProperties: false
                        run:
                          type: object
                          properties:
                            templateString:
                              type: string
                          required:
                            - templateString
                          additionalProperties: false
                      additionalProperties: false
                    nodeMetadataSpec:
                      type: string
                  additionalProperties: false
              additionalProperties: false
      responses:
        "200":
          description: Node type created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/nodeType/{nodeTypeId}:
    post:
      operationId: writeNodeType
      summary: Create or update node type
      parameters:
        - name: nodeTypeId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                isDisabled:
                  type: boolean
                version:
                  anyOf:
                    - type: number
                      enum:
                        - 1
                    - type: number
                      enum:
                        - 2
                packageInfo:
                  type: object
                  properties:
                    id:
                      type: string
                    version:
                      type: string
                  required:
                    - id
                    - version
                  additionalProperties: false
                metadata:
                  type: object
                  properties:
                    defaultStorageLocation:
                      type: string
                      nullable: true
                    templates:
                      type: object
                      properties:
                        create:
                          type: object
                          properties:
                            templateString:
                              type: string
                          required:
                            - templateString
                          additionalProperties: false
                        run:
                          type: object
                          properties:
                            templateString:
                              type: string
                          required:
                            - templateString
                          additionalProperties: false
                      additionalProperties: false
                    nodeMetadataSpec:
                      type: string
                  additionalProperties: false
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
    delete:
      operationId: deleteNodeType
      summary: Delete node type
      parameters:
        - name: nodeTypeId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/environment/{environmentId}:
    post:
      operationId: updateEnvironment
      summary: Update environment
      parameters:
        - name: environmentId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                id:
                  type: string
                type:
                  type: string
                  enum:
                    - Environment
                fileVersion:
                  type: integer
                mappingDefinitions:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      database:
                        type: string
                      schema:
                        type: string
                    additionalProperties: false
              required:
                - name
                - id
                - type
                - fileVersion
                - mappingDefinitions
              additionalProperties: false
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/environment:
    patch:
      operationId: updateEnvironmentMappings
      summary: Update environment mappings
      parameters:
        - name: environmentId
          in: query
          required: true
          schema:
            type: string
        - name: workspaceId
          in: query
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mappings:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      database:
                        type: string
                      schema:
                        type: string
                    required:
                      - database
                      - schema
                name:
                  type: string
              required:
                - mappings
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/storage-locations/{name}:
    delete:
      operationId: deleteStorageLocation
      summary: Delete storage location
      parameters:
        - name: name
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/storage-locations/default:
    patch:
      operationId: setDefaultStorageLocation
      summary: Set default storage location
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  nullable: true
              required:
                - name
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/node/bulk/delete:
    post:
      operationId: bulkDeleteNodes
      summary: Bulk delete nodes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nodeIds:
                  type: array
                  items:
                    type: string
              required:
                - nodeIds
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/status:
    get:
      operationId: gitStatus
      summary: Get git status
      responses:
        "200":
          description: Git status
          content:
            application/json:
              schema:
                type: object
                properties:
                  files:
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                        status:
                          type: string
                      required:
                        - path
                        - status
                      additionalProperties: false
                required:
                  - files
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/connection:
    get:
      operationId: getConnection
      summary: Get warehouse connection settings (secrets redacted to presence flags)
      responses:
        "200":
          description: Connection settings of the [default] coa profile
          content:
            application/json:
              schema:
                type: object
                properties:
                  platformKind:
                    type: string
                  authType:
                    type: string
                    enum:
                      - Basic
                      - KeyPair
                  account:
                    type: string
                  username:
                    type: string
                  role:
                    type: string
                  warehouse:
                    type: string
                  keyPairKey:
                    type: string
                  hasPassword:
                    type: boolean
                  hasKeyPairPass:
                    type: boolean
                required:
                  - hasPassword
                  - hasKeyPairPass
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
    put:
      operationId: updateConnection
      summary: Write warehouse connection settings into the [default] coa profile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                platformKind:
                  type: string
                  enum:
                    - snowflake
                authType:
                  type: string
                  enum:
                    - Basic
                    - KeyPair
                account:
                  type: string
                  minLength: 1
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                username:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                password:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                keyPairKey:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                keyPairPass:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                role:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
                warehouse:
                  type: string
                  maxLength: 4096
                  pattern: ^[^\r\n]*$
              required:
                - platformKind
                - authType
                - account
              additionalProperties: true
      responses:
        "200":
          description: Connection written
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                required:
                  - success
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/connection/test:
    post:
      operationId: testConnection
      summary: Live warehouse connectivity check of the stored [default] connection
      responses:
        "200":
          description: Check result (a failed check is success:false, not an error status)
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  platformKind:
                    type: string
                  phase:
                    type: string
                    enum:
                      - resolve
                      - setup
                      - connect
                  error:
                    type: string
                required:
                  - success
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/branches:
    get:
      operationId: gitBranches
      summary: Get git branches
      responses:
        "200":
          description: Git branches
          content:
            application/json:
              schema:
                type: object
                properties:
                  current:
                    type: string
                  local:
                    type: array
                    items:
                      type: string
                  remote:
                    type: array
                    items:
                      type: string
                  hasRemote:
                    type: boolean
                required:
                  - current
                  - local
                  - remote
                  - hasRemote
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/log:
    get:
      operationId: gitLog
      summary: Get git log
      parameters:
        - name: branch
          in: query
          required: false
          schema:
            type: string
            default: HEAD
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
      responses:
        "200":
          description: Git log
          content:
            application/json:
              schema:
                type: object
                properties:
                  commits:
                    type: array
                    items:
                      type: object
                      properties:
                        sha:
                          type: string
                        author:
                          type: string
                        email:
                          type: string
                        timestamp:
                          type: number
                        message:
                          type: string
                      required:
                        - sha
                        - author
                        - email
                        - timestamp
                        - message
                      additionalProperties: false
                required:
                  - commits
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/diff:
    get:
      operationId: gitDiff
      summary: Get git diff for a file
      parameters:
        - name: file
          in: query
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Git diff
          content:
            application/json:
              schema:
                type: object
                properties:
                  diff:
                    type: string
                required:
                  - diff
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/checkout:
    post:
      operationId: gitCheckout
      summary: Checkout git branch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                branch:
                  type: string
                force:
                  type: boolean
              required:
                - branch
              additionalProperties: false
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/commit:
    post:
      operationId: gitCommit
      summary: Create git commit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                author:
                  type: object
                  properties:
                    name:
                      type: string
                    email:
                      type: string
                  required:
                    - name
                    - email
                  additionalProperties: false
              required:
                - message
                - author
              additionalProperties: false
      responses:
        "200":
          description: Commit created
          content:
            application/json:
              schema:
                type: object
                properties:
                  commitSha:
                    type: string
                required:
                  - commitSha
                additionalProperties: false
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/push:
    post:
      operationId: gitPush
      summary: Push to git remote
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                branch:
                  type: string
                gitToken:
                  type: string
                gitUsername:
                  type: string
              required:
                - branch
              additionalProperties: false
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/branch:
    post:
      operationId: gitCreateBranch
      summary: Create git branch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
              required:
                - name
              additionalProperties: false
      responses:
        "200":
          description: Branch created
          content:
            application/json:
              schema:
                type: object
                properties:
                  branch:
                    type: string
                required:
                  - branch
                additionalProperties: false
        "400":
          $ref: "#/components/responses/BadRequest"
        "500":
          $ref: "#/components/responses/Error"
  /api/v1/watch/git/add:
    post:
      operationId: gitAddAll
      summary: Stage all changes
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "500":
          $ref: "#/components/responses/Error"
  /api/rescan:
    post:
      operationId: rescanWorkspace
      summary: Rescan workspace directory
      responses:
        "200":
          description: Rescan complete
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
components:
  responses:
    Success:
      description: Operation successful
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: true
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              error:
                type: string
    Error:
      description: Error response
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              error:
                oneOf:
                  - type: string
                  - type: object
                    required:
                      - errorString
                    properties:
                      errorString:
                        type: string
