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

# This is a fake path added just so the schemas are generated into code. It will be removed from the OAS after type generation, before documentation generation.

> This is a fake path added just so the schemas are generated into code. It will be removed from the OAS after type generation, before documentation generation.



## OpenAPI

````yaml /api-reference/bundled.yaml get /fake-path-for-type-generation
openapi: 3.1.0
info:
  title: Gable API
  description: >
    API to interact with the Gable platform

    ## Authorization

    All API requests require an API key to be passed in the `X-API-KEY` header.
    For instructions on finding your API key and api endpoint check out the [API
    Key documentation](../docs/api-keys.md).

    Example: `curl -H "X-API-KEY: <your-api-key>"
    https://api-{organization}.gable.ai/v0/ping`
  contact:
    name: Gable Engineering
    url: https://gable.ai
    email: engineers@gable.ai
  version: 1.28.0
servers:
  - url: https://{hostname}.gable.ai
    description: Gable API
    variables:
      hostname:
        default: demo-api
        description: Customer environment assigned by Gable
security:
  - ApiKeyAuth: []
tags:
  - name: action
  - name: api-keys
  - name: auth
  - name: changelog
  - name: config
  - name: contract
  - name: data-asset
  - name: debug
  - name: s3
  - name: settings
  - name: slack
  - name: sso
  - name: webhook
  - name: notifications
  - name: constraints
  - name: telemetry
  - name: component
  - name: components
  - name: sca
  - name: cross-service-components
  - name: lineage
  - name: events
  - name: measurements
  - name: defect-report
  - name: experimental
paths:
  /fake-path-for-type-generation:
    get:
      tags:
        - action
      summary: >-
        This is a fake path added just so the schemas are generated into code.
        It will be removed from the OAS after type generation, before
        documentation generation.
      description: >-
        This is a fake path added just so the schemas are generated into code.
        It will be removed from the OAS after type generation, before
        documentation generation.
      operationId: fakeOperationId
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FakeResponseForTypeGeneration'
components:
  schemas:
    FakeResponseForTypeGeneration:
      type: object
      properties:
        fakeProperty3:
          oneOf:
            - $ref: '#/components/schemas/StaticAnalysisPathsUploadRequest'
            - $ref: '#/components/schemas/CrossServiceDataStore'
            - $ref: '#/components/schemas/CrossServiceEdge'
        mergeKey:
          $ref: '#/components/schemas/MergeKey'
    StaticAnalysisPathsUploadRequest:
      type: object
      description: >-
        The lineage data for a component. This is not actually part of the API,
        but is used to generate the type for validation at the CLI and in the
        backend lineage queue handler.
      properties:
        paths:
          type: array
          items:
            $ref: '#/components/schemas/StaticAnalysisDataFlowPath'
        run_id:
          type: string
          description: The ID of the run that the paths belong to
        external_component_id:
          type: string
          description: Optional ID of the external component that was analyzed
        type:
          type: string
          description: The type of component that was analyzed
          const: CODE
        name:
          type: string
          description: The name of the component that was analyzed
        metadata:
          type: object
          description: Additional metadata for the component.
          properties:
            extras:
              type: object
              additionalProperties:
                type: string
      required:
        - paths
        - run_id
    CrossServiceDataStore:
      type: object
      description: Request to upload non code based BYOL data
      additionalProperties: false
      properties:
        external_component_id:
          type: string
          description: The provided external ID for the data store
        run_id:
          type: string
          description: The version ID for this data store
        type:
          type: string
          const: DATA_STORE
          description: The type of data store
        schema:
          type: object
          additionalProperties: false
          required:
            - fields
          properties:
            fields:
              type: array
              minItems: 1
              items:
                type: object
                additionalProperties: false
                properties:
                  name:
                    type: string
                    description: The name of the field
                  type:
                    type: string
                    description: The type of the field
                required:
                  - name
                  - type
        table_metadata:
          type: object
          additionalProperties: false
          properties:
            type:
              type: string
              description: The type of data store
              enum:
                - dynamodb
                - redis
                - elasticache
                - database
                - kafka
                - other
            table_name:
              type: string
              description: The name of the data store
            extras:
              type: object
              description: Additional metadata for the data store.
              additionalProperties:
                type: string
          required:
            - type
            - table_name
      required:
        - external_component_id
        - run_id
        - type
        - table_metadata
        - schema
    CrossServiceEdge:
      type: object
      additionalProperties: false
      required:
        - type
        - field_mappings
        - source
        - destination
      properties:
        run_id:
          type: string
          description: The ID of the run that this data belongs to
        type:
          type: string
          const: EDGE
        field_mappings:
          type: array
          minItems: 1
          items:
            type: object
            additionalProperties: false
            required:
              - source_field
              - destination_field
            properties:
              source_field:
                type: string
              destination_field:
                type: string
              notes:
                type: string
        source:
          type: object
          additionalProperties: false
          required:
            - source_component_name
            - type
          properties:
            component_id:
              type: string
              description: Id of the source component
            source_component_name:
              type: string
              description: Name of the source component
            egress_id:
              type: string
              description: Id of the source entity
            type:
              type: string
              description: the type of edge connection
            payload_name:
              type: string
              description: The name of the payload source
        destination:
          type: object
          additionalProperties: false
          required:
            - destination_component_name
            - type
          properties:
            component_id:
              type: string
              description: Id of the destination component
            destination_component_name:
              type: string
              description: Name of the destination component
            ingress_id:
              type: string
              description: Id of the destination entity
            type:
              type: string
              description: the type of edge connection
            payload_name:
              type: string
              description: The name of the payload destination
    MergeKey:
      type: object
      description: MergeKey (kind-level union)
      oneOf:
        - $ref: '#/components/schemas/EgressSchema'
        - $ref: '#/components/schemas/IngressToEgress'
      discriminator:
        propertyName: kind
        mapping:
          EgressSchema:
            $ref: '#/components/schemas/EgressSchema'
          IngressToEgress:
            $ref: '#/components/schemas/IngressToEgress'
    StaticAnalysisDataFlowPath:
      type: object
      description: >-
        A path in the codebase that starts at an ingress node and ends at an
        egress node
      required:
        - ingress
        - egress
      properties:
        ingress:
          $ref: '#/components/schemas/StaticAnalysisDataFlowPathEnds'
        egress:
          $ref: '#/components/schemas/StaticAnalysisDataFlowPathEnds'
        code_anchors:
          description: >-
            Ordered list of code anchors that represent the path from ingress to
            egress. The order of the anchors in this array represents the flow
            of data through the codebase.
          type: array
          items:
            $ref: '#/components/schemas/StaticAnalysisCodeAnchor'
        field_mappings:
          description: >-
            List of identified field mappings between schema at ingress and
            egress.
          type: array
          items:
            $ref: '#/components/schemas/StaticAnalysisTabularLineageFieldMapping'
        transformation_summary:
          type: string
          description: >-
            An AI-generated summary of the data transformation that occurs along
            this path.
        transformation_summary_detailed:
          description: >-
            A detailed, AI-generated summary of the data transformation that
            occurs along this path.
          type: string
        payload_name:
          description: >-
            The name of the path. If provided, this value will be used directly
            without being overwritten by computed values.
          type: string
        completeness:
          $ref: '#/components/schemas/StaticAnalysisCompleteness'
          description: Completeness indicators for a ground truth path
    EgressSchema:
      type: object
      description: EgressSchema merge-key wrapper
      properties:
        kind:
          type: string
          const: EgressSchema
        data:
          $ref: '#/components/schemas/EgressSchemaMergeKey'
      required:
        - kind
        - data
      additionalProperties: false
    IngressToEgress:
      type: object
      description: IngressToEgress merge-key wrapper
      properties:
        kind:
          type: string
          const: IngressToEgress
        data:
          $ref: '#/components/schemas/IngressToEgressMergeKey'
      required:
        - kind
        - data
      additionalProperties: false
    StaticAnalysisDataFlowPathEnds:
      type: object
      properties:
        kind:
          type: string
          description: The kind of the ingress/egress (e.g. "postgres", "gateway_response")
        signature_name:
          type: string
          description: >-
            The name of the package, class, or method that the ingress/egress
            point is associated with
        code_anchor:
          $ref: '#/components/schemas/StaticAnalysisCodeAnchor'
          description: >-
            The code anchor that represents the ingress/egress point in the
            codebase (optional for BYOL imports). This should be the same as the
            first (for ingress) or last (for egress) code anchor in the flow
            path.
        schema:
          $ref: '#/components/schemas/GableSchemaStruct'
        description:
          description: An AI-generated summary of the ingress/egress point.
          type: string
        id:
          description: >-
            The ID of the ingress/egress point. This is a unique identifier for
            the ingress/egress point.
          type: string
        payload_name:
          description: The name of the ingress/egress node.
          type: string
      required:
        - schema
        - signature_name
    StaticAnalysisCodeAnchor:
      type: object
      properties:
        anchor_id:
          type: string
          description: >-
            Unique identifier for the anchor. Analogous to a merge key.
            Conceptually, an anchor represents a point in code which is ideally
            stable to some set of changes to surrounding code. Generated by the
            tool.
        code_uri:
          $ref: '#/components/schemas/StaticAnalysisCodeURI'
      required:
        - anchor_id
        - code_uri
    StaticAnalysisTabularLineageFieldMapping:
      type: object
      description: >-
        A mapping of a field in the ingress schema to a field in the egress
        schema
      required:
        - ingress_field
        - egress_field
      properties:
        ingress_field:
          type: string
          description: The field in the ingress schema
        egress_field:
          type: string
          description: The field in the egress schema
        notes:
          type: string
          description: Notes about the mapping
        kind:
          $ref: '#/components/schemas/FieldMappingKind'
        field_data_flow_path:
          type: array
          description: The field data flow path that represents this mapping
          items:
            $ref: '#/components/schemas/StaticAnalysisCodeAnchor'
    StaticAnalysisCompleteness:
      type: object
      properties:
        ingress:
          $ref: '#/components/schemas/StaticAnalysisCompletenessClassification'
          description: >-
            The completeness of non-schema ingress elements (name, signature,
            code anchor, etc.).
        ingress_schema:
          $ref: '#/components/schemas/StaticAnalysisCompletenessClassification'
          description: The completeness of the ingress's field schema.
        egress:
          $ref: '#/components/schemas/StaticAnalysisCompletenessClassification'
          description: >-
            The completeness of non-schema egress elements (name, signature,
            code anchor, etc.).
        egress_schema:
          $ref: '#/components/schemas/StaticAnalysisCompletenessClassification'
          description: The completeness of the egress's field schema.
        field_mappings:
          $ref: '#/components/schemas/StaticAnalysisCompletenessClassification'
          description: The completeness of the field mappings.
      required:
        - ingress
        - ingress_schema
        - egress
        - egress_schema
        - field_mappings
    EgressSchemaMergeKey:
      type: object
      description: Versioned EgressSchema merge-key (version-level union)
      oneOf:
        - $ref: '#/components/schemas/EgressSchemaV0'
        - $ref: '#/components/schemas/EgressSchemaV1'
      discriminator:
        propertyName: version
        mapping:
          V0:
            $ref: '#/components/schemas/EgressSchemaV0'
          V1:
            $ref: '#/components/schemas/EgressSchemaV1'
    IngressToEgressMergeKey:
      type: object
      description: Versioned IngressToEgress merge-key (version-level union)
      oneOf:
        - $ref: '#/components/schemas/IngressToEgressV0'
      discriminator:
        propertyName: version
        mapping:
          V0:
            $ref: '#/components/schemas/IngressToEgressV0'
    GableSchemaStruct:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - struct
        name:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/GableSchemaField'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    StaticAnalysisCodeURI:
      type: object
      description: >-
        Code URI is a unique identifier for a code location. It is used to
        identify the code location in the codebase.
      required:
        - file
        - line_start
        - column_start
      properties:
        file:
          type: string
          description: Relative file path in the repo
        line_start:
          type: integer
        line_end:
          type: integer
        column_start:
          type: integer
        column_end:
          type: integer
    FieldMappingKind:
      type: string
      description: >
        How a field mapping participates in the path.

        - DataFlow: the ingress field's value flows into the egress field
        (default).

        - KeyValueBridge: the mapping bridges a key/value pair rather than
        copying a single value.

        - ControlFlow: the ingress field influences whether/how the egress field
        is produced, but is not its value.

        When absent, treat as DataFlow.
      enum:
        - DataFlow
        - KeyValueBridge
        - ControlFlow
    StaticAnalysisCompletenessClassification:
      type: string
      description: A completeness classification of a ground truth element.
      enum:
        - UNKNOWN
        - KNOWN_INCOMPLETE
        - KNOWN_COMPLETE
    EgressSchemaV0:
      type: object
      description: Legacy DARN-based egress schema key
      properties:
        version:
          type: string
          const: V0
        darn:
          $ref: '#/components/schemas/DataAssetResourceName'
      required:
        - version
        - darn
      additionalProperties: false
    EgressSchemaV1:
      type: object
      description: Structured, DARN-free egress schema key
      properties:
        version:
          type: string
          const: V1
        egress_callsite_id:
          type: string
          description: Stable identifier of the egress callsite (tooling/build-derived).
        egress_callsite_hints:
          type: object
          additionalProperties: false
          properties:
            file_path:
              type: string
              nullable: true
            line:
              type: integer
              nullable: true
              minimum: 0
            column:
              type: integer
              nullable: true
              minimum: 0
            function:
              type: string
              nullable: true
            package:
              type: string
              nullable: true
            service:
              type: string
              nullable: true
        type_fqn:
          type: string
          description: Fully-qualified logical type name.
        type_namespace:
          type: string
          nullable: true
        env:
          type: object
          additionalProperties: false
          properties:
            language:
              type: string
              nullable: true
            runtime:
              type: string
              nullable: true
            tool:
              type: string
              nullable: true
            tool_version:
              type: string
              nullable: true
      required:
        - version
        - egress_callsite_id
        - type_fqn
      additionalProperties: false
    IngressToEgressV0:
      type: object
      description: Ingress-to-egress flow key V0
      properties:
        version:
          type: string
          const: V0
        ingress_callsite:
          type: string
          nullable: true
        egress_callsite:
          type: string
          nullable: true
        flow_id:
          type: string
          nullable: true
        service:
          type: string
          nullable: true
        notes:
          type: string
          nullable: true
      required:
        - version
      additionalProperties: false
    GableSchemaField:
      oneOf:
        - $ref: '#/components/schemas/GableSchemaFieldStruct'
        - $ref: '#/components/schemas/GableSchemaFieldNull'
        - $ref: '#/components/schemas/GableSchemaFieldBool'
        - $ref: '#/components/schemas/GableSchemaFieldInt'
        - $ref: '#/components/schemas/GableSchemaFieldFloat'
        - $ref: '#/components/schemas/GableSchemaFieldString'
        - $ref: '#/components/schemas/GableSchemaFieldBytes'
        - $ref: '#/components/schemas/GableSchemaFieldList'
        - $ref: '#/components/schemas/GableSchemaFieldMap'
        - $ref: '#/components/schemas/GableSchemaFieldEnum'
        - $ref: '#/components/schemas/GableSchemaFieldUnion'
        - $ref: '#/components/schemas/GableSchemaFieldAliasReference'
        - $ref: '#/components/schemas/GableSchemaFieldUnknown'
      discriminator:
        propertyName: type
        mapping:
          struct:
            $ref: '#/components/schemas/GableSchemaFieldStruct'
          'null':
            $ref: '#/components/schemas/GableSchemaFieldNull'
          bool:
            $ref: '#/components/schemas/GableSchemaFieldBool'
          int:
            $ref: '#/components/schemas/GableSchemaFieldInt'
          float:
            $ref: '#/components/schemas/GableSchemaFieldFloat'
          string:
            $ref: '#/components/schemas/GableSchemaFieldString'
          bytes:
            $ref: '#/components/schemas/GableSchemaFieldBytes'
          list:
            $ref: '#/components/schemas/GableSchemaFieldList'
          map:
            $ref: '#/components/schemas/GableSchemaFieldMap'
          enum:
            $ref: '#/components/schemas/GableSchemaFieldEnum'
          union:
            $ref: '#/components/schemas/GableSchemaFieldUnion'
          aliasReference:
            $ref: '#/components/schemas/GableSchemaFieldAliasReference'
          unknown:
            $ref: '#/components/schemas/GableSchemaFieldUnknown'
    DataAssetResourceName:
      type: string
      pattern: >-
        ^(protobuf|avro|json_schema|java|postgres|mysql|mssql|snowflake|bigquery|python|pyspark|typescript|s3|dataframe|kotlin|swift|php)://(?=.*[a-zA-Z0-9])[a-zA-Z0-9_@\.:/-]+[:/](?=.*[a-zA-Z0-9])[a-zA-Z0-9
        _\./-\{\}\-]+$
      description: >-
        The unique identifier of the data asset. It follows the pattern
        '{data_asset_type}://{data_asset_source}:{data_asset_name}'
    GableSchemaFieldStruct:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - struct
        name:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/GableSchemaField'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        optional:
          type: boolean
    GableSchemaFieldNull:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - 'null'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldBool:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - bool
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldInt:
      type: object
      required:
        - type
        - bits
      properties:
        type:
          type: string
          enum:
            - int
        bits:
          type: integer
          minimum: 1
          maximum: 2147483647
        signed:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumTemporal'
        unit:
          type: string
          enum:
            - year
            - month
            - day
            - hour
            - minute
            - second
            - millisecond
            - microsecond
            - nanosecond
            - picosecond
        timezone:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldFloat:
      type: object
      required:
        - type
        - bits
      properties:
        type:
          type: string
          enum:
            - float
        bits:
          type: integer
          minimum: 1
          maximum: 2147483647
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldString:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - string
        bytes:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumText'
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldBytes:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - bytes
        bytes:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumNumeric'
        precision:
          type: integer
          minimum: 1
          maximum: 2147483647
        scale:
          type: integer
          minimum: 0
          maximum: 2147483647
        unit:
          type: string
          enum:
            - year
            - month
            - day
            - hour
            - minute
            - second
            - millisecond
            - microsecond
            - nanosecond
            - picosecond
        name:
          type: string
        optional:
          type: boolean
      if:
        properties:
          variable:
            const: false
        required:
          - variable
      then:
        required:
          - bytes
    GableSchemaFieldList:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          enum:
            - list
        values:
          $ref: '#/components/schemas/GableSchemaType'
        length:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldMap:
      type: object
      required:
        - type
        - keys
        - values
      properties:
        type:
          type: string
          enum:
            - map
        keys:
          $ref: '#/components/schemas/GableSchemaType'
        values:
          $ref: '#/components/schemas/GableSchemaType'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldEnum:
      type: object
      required:
        - type
        - symbols
      properties:
        type:
          type: string
          enum:
            - enum
        symbols:
          type: array
          items:
            type: string
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldUnion:
      type: object
      required:
        - type
        - types
      properties:
        type:
          type: string
          enum:
            - union
        types:
          type: array
          items:
            $ref: '#/components/schemas/GableSchemaType'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    GableSchemaFieldAliasReference:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          not:
            $ref: '#/components/schemas/GableSchemaTypeName'
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
      additionalProperties: true
      not:
        required:
          - alias
    GableSchemaFieldUnknown:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - unknown
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
        name:
          type: string
        optional:
          type: boolean
    LogicalEnumTemporal:
      type: string
      enum:
        - Date
        - Time
        - Duration
        - Timestamp
    LogicalEnumText:
      type: string
      enum:
        - UUID
        - org.iso.8601.Date
        - org.iso.8601.DateTime
        - org.iso.8601.Time
    LogicalEnumNumeric:
      type: string
      enum:
        - Decimal
        - Interval
    GableSchemaType:
      oneOf:
        - $ref: '#/components/schemas/GableSchemaTypeName'
        - oneOf:
            - $ref: '#/components/schemas/GableSchemaStruct'
            - $ref: '#/components/schemas/GableSchemaNull'
            - $ref: '#/components/schemas/GableSchemaBool'
            - $ref: '#/components/schemas/GableSchemaInt'
            - $ref: '#/components/schemas/GableSchemaFloat'
            - $ref: '#/components/schemas/GableSchemaString'
            - $ref: '#/components/schemas/GableSchemaBytes'
            - $ref: '#/components/schemas/GableSchemaList'
            - $ref: '#/components/schemas/GableSchemaMap'
            - $ref: '#/components/schemas/GableSchemaEnum'
            - $ref: '#/components/schemas/GableSchemaUnion'
            - $ref: '#/components/schemas/GableSchemaAliasReference'
            - $ref: '#/components/schemas/GableSchemaUnknown'
          discriminator:
            propertyName: type
            mapping:
              struct:
                $ref: '#/components/schemas/GableSchemaStruct'
              'null':
                $ref: '#/components/schemas/GableSchemaNull'
              bool:
                $ref: '#/components/schemas/GableSchemaBool'
              int:
                $ref: '#/components/schemas/GableSchemaInt'
              float:
                $ref: '#/components/schemas/GableSchemaFloat'
              string:
                $ref: '#/components/schemas/GableSchemaString'
              bytes:
                $ref: '#/components/schemas/GableSchemaBytes'
              list:
                $ref: '#/components/schemas/GableSchemaList'
              map:
                $ref: '#/components/schemas/GableSchemaMap'
              enum:
                $ref: '#/components/schemas/GableSchemaEnum'
              union:
                $ref: '#/components/schemas/GableSchemaUnion'
              aliasReference:
                $ref: '#/components/schemas/GableSchemaAliasReference'
              unknown:
                $ref: '#/components/schemas/GableSchemaUnknown'
    GableSchemaTypeName:
      type: string
      enum:
        - 'null'
        - bool
        - int
        - float
        - string
        - bytes
        - list
        - map
        - struct
        - enum
        - union
    GableSchemaNull:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - 'null'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaBool:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - bool
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaInt:
      type: object
      required:
        - type
        - bits
      properties:
        type:
          type: string
          enum:
            - int
        bits:
          type: integer
          minimum: 1
          maximum: 2147483647
        signed:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumTemporal'
        unit:
          type: string
          enum:
            - year
            - month
            - day
            - hour
            - minute
            - second
            - millisecond
            - microsecond
            - nanosecond
            - picosecond
        timezone:
          type: string
    GableSchemaFloat:
      type: object
      required:
        - type
        - bits
      properties:
        type:
          type: string
          enum:
            - float
        bits:
          type: integer
          minimum: 1
          maximum: 2147483647
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaString:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - string
        bytes:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumText'
    GableSchemaBytes:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - bytes
        bytes:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          $ref: '#/components/schemas/LogicalEnumNumeric'
        precision:
          type: integer
          minimum: 1
          maximum: 2147483647
        scale:
          type: integer
          minimum: 0
          maximum: 2147483647
        unit:
          type: string
          enum:
            - year
            - month
            - day
            - hour
            - minute
            - second
            - millisecond
            - microsecond
            - nanosecond
            - picosecond
      if:
        properties:
          variable:
            const: false
        required:
          - variable
      then:
        required:
          - bytes
    GableSchemaList:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          enum:
            - list
        values:
          $ref: '#/components/schemas/GableSchemaType'
        length:
          type: integer
          minimum: 1
          maximum: 9223372036854776000
        variable:
          type: boolean
          default: true
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
    GableSchemaMap:
      type: object
      required:
        - type
        - keys
        - values
      properties:
        type:
          type: string
          enum:
            - map
        keys:
          $ref: '#/components/schemas/GableSchemaType'
        values:
          $ref: '#/components/schemas/GableSchemaType'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaEnum:
      type: object
      required:
        - type
        - symbols
      properties:
        type:
          type: string
          enum:
            - enum
        symbols:
          type: array
          items:
            type: string
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaUnion:
      type: object
      required:
        - type
        - types
      properties:
        type:
          type: string
          enum:
            - union
        types:
          type: array
          items:
            $ref: '#/components/schemas/GableSchemaType'
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
    GableSchemaAliasReference:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          not:
            $ref: '#/components/schemas/GableSchemaTypeName'
        doc:
          type: string
        logical:
          type: string
      additionalProperties: true
      not:
        required:
          - alias
    GableSchemaUnknown:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - unknown
        alias:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$
        doc:
          type: string
        logical:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````