swagger: '2.0'
info:
  contact:
    email: engineers@gable.ai
    name: Gable Engineering
    url: 'https://gable.ai'
  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`
  title: Gable API
  version: 1.20.4
host: demo-api.gable.ai
basePath: /
schemes:
  - https
paths:
  /fake-path-for-type-generation:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/FakeResponseForTypeGeneration'
      tags:
        - action
      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
      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.
  /v0/_version:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Successful version response
          schema:
            $ref: '#/definitions/VersionResponse'
      tags:
        - debug
      description: Gable version endpoint
      operationId: version
      summary: Gable version endpoint
  /v0/action:
    delete:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/DeleteActionRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/DeleteActionResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - action
      description: Delete an existing action
      operationId: deleteAction
      summary: Delete an existing action
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostActionRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/PostActionResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - action
      description: Create a new action
      operationId: postAction
      summary: Create a new action
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PutActionRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/PutActionResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - action
      description: Update an existing action
      operationId: putAction
      summary: Update an existing action
  /v0/actions:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/GetActionsResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - action
      description: Get all actions
      operationId: getActions
      summary: Get all actions
  /v0/api-keys:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Api keys
          schema:
            $ref: '#/definitions/GetApiKeysResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - api-keys
      description: Get all api keys
      operationId: getApiKeys
      summary: Get all api keys
  /v0/auth/npm:
    post:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Npm credentials
          schema:
            $ref: '#/definitions/GetNpmCredentialsResponse'
      tags:
        - auth
      description: Gets temporary npm credentials
      operationId: getNpmCredentials
      summary: Gets temporary npm credentials
  /v0/auth/pip:
    post:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Pip credentials
          schema:
            $ref: '#/definitions/GetPipCredentialsResponse'
      tags:
        - auth
      description: Gets temporary aws code artfact creditial for pip
      operationId: getPipCredentials
      summary: Gets temporary aws code artfact creditial for pip
  /v0/auth/sca-prime-artifact-bucket:
    get:
      produces:
        - application/json
      parameters:
        - in: query
          name: library
          required: true
          type: string
        - in: query
          name: scaPrimeHash
          required: true
          type: string
      responses:
        '200':
          description: The SCA Prime artifact bucket
          schema:
            $ref: '#/definitions/GetScaPrimeArtifactBucketResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - auth
      description: >-
        Get presigned S3 URL to SCA Prime artifact bucket containing the symbol
        artifact for the given library and scaPrimeHash
      operationId: getScaPrimeS3Url
      summary: Get SCA Prime S3 URL
  /v0/changelog:
    get:
      produces:
        - application/json
      parameters:
        - description: The limit used for offset-based pagination
          in: query
          name: limit
          type: integer
        - description: The offset used for offset-based pagination
          in: query
          name: offset
          type: integer
        - collectionFormat: multi
          description: Comma-separated list of the sources to filter by
          in: query
          items:
            type: string
          name: source
          type: array
        - collectionFormat: multi
          description: Comma-separated list of the source types to filter by
          in: query
          items:
            type: string
          name: source_type
          type: array
        - collectionFormat: multi
          description: Comma-separated list of the changelog events to filter by
          in: query
          items:
            type: string
          name: event
          type: array
      responses:
        '200':
          description: Changelog
          schema: {}
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - changelog
      description: Get the changelog
      operationId: getChangelog
      summary: Get the changelog
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Changelog event to create
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateChangelogEventRequest'
      responses:
        '200':
          description: Changelog event(s) was successfully created
          schema:
            $ref: '#/definitions/CreateChangelogEventResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - changelog
      description: Create a new changelog event
      operationId: createChangelogEvent
      summary: Create a new changelog event
  /v0/changelog/count:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Changelog count
          schema:
            $ref: '#/definitions/DataCount'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - changelog
      description: Get changelog count
      operationId: getChangelogCount
      summary: Get changelog count
  /v0/changelog/filters:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Changelog filters
          schema:
            $ref: '#/definitions/GetChangelogFiltersResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - changelog
      description: Get changelog filters available
      operationId: getChangelogFilters
      summary: Get changelog filters available
  '/v0/component/diff/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Base event ID for comparison
          in: query
          name: base
          required: true
          type: string
        - description: Compare event ID for comparison
          in: query
          name: compare
          required: true
          type: string
        - default: false
          description: >-
            When true, load lineage from raw scan snapshots and return summary
            counts only (no field details).
          in: query
          name: scanOnly
          required: false
          type: boolean
      responses:
        '200':
          description: Component diff retrieved successfully
          schema:
            $ref: '#/definitions/ComponentDiffResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - component
      description: >-
        Compare two versions of a component's lineage. Returns a high-level
        summary of all path-level changes.
      operationId: getComponentDiff
      summary: Get component diff between two versions
  '/v0/component/path-diff/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Base event ID for comparison
          in: query
          name: base
          required: true
          type: string
        - description: Compare event ID for comparison
          in: query
          name: compare
          required: true
          type: string
        - description: Payload name of the ingress boundary
          in: query
          name: ingress
          required: true
          type: string
        - description: Payload name of the egress boundary
          in: query
          name: egress
          required: true
          type: string
        - description: >-
            Path ID from the base version. When provided, filters to a specific
            path instead of merging all matching paths.
          in: query
          name: basePathId
          required: false
          type: string
        - description: >-
            Path ID from the compare version. When provided, filters to a
            specific path instead of merging all matching paths.
          in: query
          name: comparePathId
          required: false
          type: string
        - default: false
          description: >-
            When true, load lineage from raw scan snapshots instead of projected
            results.
          in: query
          name: scanOnly
          required: false
          type: boolean
      responses:
        '200':
          description: Path diff retrieved successfully
          schema:
            $ref: '#/definitions/PathDiffResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Path or component not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - component
      description: >-
        Compare a single path between two versions of a component. Returns
        field-level and code-flow detail.
      operationId: getPathDiff
      summary: Get path diff between two versions
  '/v0/component/versions/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Optional version ID to filter or focus on a specific version
          in: query
          name: versionId
          required: false
          type: string
      responses:
        '200':
          description: Component versions retrieved successfully
          schema:
            $ref: '#/definitions/GetComponentVersionsResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - component
      description: Get all versions of a component
      operationId: getComponentVersions
      summary: Get all versions of a component
  '/v0/component/{id}':
    delete:
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Success response
          schema:
            properties:
              success:
                type: boolean
            type: object
      tags:
        - component
      description: Delete a component by id
      operationId: deleteComponent
      summary: Delete a component by id
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Full component
          schema:
            $ref: '#/definitions/CodeComponent'
      tags:
        - component
      description: Get a component by id
      operationId: getComponent
      summary: Get a component by id
    patch:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: UUID of the component
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - in: body
          name: body
          required: true
          schema:
            properties:
              friendly_name:
                description: >-
                  User-defined friendly name for the component. Pass empty
                  string to remove.
                type: string
              xgress_friendly_names:
                additionalProperties:
                  nullable: true
                  type: string
                description: >-
                  Map of boundary ID to friendly name. Pass null value to remove
                  a friendly name.
                type: object
                x-nullable: true
            type: object
      responses:
        '200':
          description: Component updated successfully
          schema:
            properties:
              success:
                type: boolean
            type: object
      tags:
        - component
      description: Update a component's metadata
      operationId: patchComponent
      summary: Update component metadata
  /v0/components:
    get:
      produces:
        - application/json
      parameters:
        - description: A query string to search components with
          in: query
          name: search
          type: string
      responses:
        '200':
          description: Successful operation
          schema:
            properties:
              components:
                items:
                  $ref: '#/definitions/Component'
                type: array
            required:
              - components
            type: object
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - component
      description: Get all components
      operationId: getComponents
      summary: Get all components
  /v0/components/history:
    get:
      produces:
        - application/json
      parameters:
        - description: Human-readable name of the component.
          in: query
          name: componentName
          required: false
          type: string
        - default: main
          description: Filter by git branch name.
          in: query
          name: branchName
          required: false
          type: string
        - description: Filter by git commit SHA.
          in: query
          name: commitSha
          required: false
          type: string
        - description: 'Filter by namespace (e.g. prod, staging, dev).'
          in: query
          name: namespace
          required: false
          type: string
        - description: Inclusive start timestamp for filtering runs.
          format: date-time
          in: query
          name: timeRangeStart
          required: false
          type: string
        - description: Inclusive end timestamp for filtering runs.
          format: date-time
          in: query
          name: timeRangeEnd
          required: false
          type: string
        - description: Filter by specific run ID.
          in: query
          name: runId
          required: false
          type: string
        - default: 20
          description: Maximum number of history entries to return.
          in: query
          name: limit
          required: false
          type: integer
        - description: Token for paginating through large result sets.
          in: query
          name: cursor
          required: false
          type: string
      responses:
        '200':
          description: Component history retrieved successfully
          schema:
            $ref: '#/definitions/GetComponentsHistoryResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - components
      description: >-
        Get components run history entries, optionally filtered by trigger,
        branch, commit, namespace, and time range.
      operationId: getComponentsHistory
      summary: Get components history
  /v0/components/history/filters:
    get:
      produces:
        - application/json
      parameters:
        - description: A query string to search commit shas
          in: query
          name: search
          type: string
      responses:
        '200':
          description: Component history filters retrieved successfully
          schema:
            $ref: '#/definitions/GetComponentsHistoryFiltersResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - components
      description: Get components history filters
      operationId: getComponentsHistoryFilters
      summary: Get components history filters
  /v0/config:
    get:
      produces:
        - application/json
      parameters:
        - in: query
          name: config_type
          required: true
          type: string
        - in: query
          name: repo
          required: true
          type: string
        - in: query
          name: language
          required: false
          type: string
        - in: query
          name: version
          required: false
          type: string
        - in: query
          name: namespace
          required: false
          type: string
      responses:
        '200':
          description: Config found
          schema:
            $ref: '#/definitions/GetConfigResponse'
        '404':
          description: Config not found
      tags:
        - config
      description: >-
        Get config by type, language, repo and optional version. Returns the
        latest config if version is not specified.
      operationId: getConfig
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Config
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostConfigRequest'
      responses:
        '200':
          description: Config
          schema:
            $ref: '#/definitions/PostConfigResponse'
      description: Create a config - config
      operationId: postConfig
  /v0/contract:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Contract
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostContractRequest'
      responses:
        '200':
          description: Contracts
          schema:
            $ref: '#/definitions/PostContractResponse'
      tags:
        - contract
      description: Create a contract
      operationId: postContract
      summary: Create a contract
  /v0/contract-namespaces:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Contract namespaces
          schema:
            $ref: '#/definitions/GetContractNamespacesResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get all available contract namespaces
      operationId: getContractNamespaces
      summary: Get all available contract namespaces
  /v0/contract-subscription:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Subscription to create
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateContractSubscriptionRequest'
      responses:
        '200':
          description: Contract subscription was successfully created
          schema:
            $ref: '#/definitions/ContractSubscription'
        '404':
          description: Contract or user not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Create a new subscription for a contract
      operationId: createContractSubscription
      summary: Create a new subscription for a contract
  '/v0/contract-subscription/{id}':
    delete:
      produces:
        - application/json
      parameters:
        - description: The UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '204':
          description: Contract subscription was successfully deleted
        '404':
          description: Contract subscription not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Delete a subscription for a contract
      operationId: deleteContractSubscription
      summary: Delete a subscription for a contract
    get:
      produces:
        - application/json
      parameters:
        - description: The UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Details of a contract subscription
          schema:
            $ref: '#/definitions/ContractSubscription'
        '404':
          description: Contract subscription not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get a contract subscription by id
      operationId: getContractSubscription
      summary: Get a contract subscription by id
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: The UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Contract subscription to update
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UpdateContractSubscriptionRequest'
      responses:
        '200':
          description: Contract subscription was successfully updated
          schema:
            $ref: '#/definitions/ContractSubscription'
        '404':
          description: 'Contract subscription, contract, or user not found'
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Update a contract subscription
      operationId: updateContractSubscription
      summary: Update a contract subscription
  /v0/contract-subscriptions:
    get:
      produces:
        - application/json
      parameters:
        - description: Filter subscriptions by contract
          format: uuid
          in: query
          name: dataContractId
          required: false
          type: string
      responses:
        '200':
          description: List of subscriptions for the contract
          schema:
            $ref: '#/definitions/GetContractSubscriptionsResponse'
        '404':
          description: Contract ID specified in query string param does not exist
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get all contract subscriptions
      operationId: getContractSubscriptions
      summary: Get all contract subscriptions
  /v0/contract/bulk-check-compliance:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Contract with multiple data assets to check
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/BulkContractCheckComplianceRequest'
      responses:
        '200':
          description: Compliance results for each data asset
          schema:
            $ref: '#/definitions/BulkContractCheckComplianceResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
        - contract
      description: Check if multiple assets associated with a contract are compliant
      operationId: BulkContractCheckCompliance
      summary: Check multiple assets for contract compliance
  /v0/contract/check-compliance:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Contract to check
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/ContractCheckComplianceRequest'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/ContractCheckComplianceResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
        - contract
      description: Check if the asset associated with the contract is compliant
      operationId: ContractCheckCompliance
      summary: Check if the asset associated with the contract is compliant
  '/v0/contract/data-asset/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: asset name of data contract
          in: path
          name: id
          required: true
          type: string
        - description: The status of the contract
          in: query
          name: status
          type: string
      responses:
        '200':
          description: Successful response containing the contract by asset name
          schema:
            $ref: '#/definitions/ContractOutput'
        '400':
          description: Invalid request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get the contract by data asset name
      operationId: getContractByAssetId
      summary: Get the contract by data asset name
  '/v0/contract/delete/{id}':
    delete:
      produces:
        - application/json
      parameters:
        - description: Contract ID
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Contract successfully deleted
          schema:
            $ref: '#/definitions/DeleteContractResponse'
        '400':
          description: Invalid contract ID format
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Contract not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Delete a contract by ID
      operationId: deleteContract
      summary: Delete a contract by ID
  /v0/contract/enforcement-level:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Create Contract enforcement level
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateContractEnforcementLevelRequest'
      responses:
        '200':
          description: EnforcementLevel
          schema:
            $ref: '#/definitions/ContractEnforcementLevel'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: create a contract enforcement level
      operationId: postContractEnforcementLevel
      summary: Create a contract enforcement level
  '/v0/contract/enforcement-level/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the data contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Get EnforcementLevel
          schema:
            $ref: '#/definitions/ContractEnforcementLevel'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get a contract enforcement level by id
      operationId: getContractEnforcementLevel
      summary: Get a contract enforcement level by id
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: UUID of the data contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Contract enforcement level
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UpdateContractEnforcementLevelRequest'
      responses:
        '200':
          description: Update EnforcementLevel
          schema:
            $ref: '#/definitions/ContractEnforcementLevel'
        '400':
          description: Contract Dependency Deletion Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Enforcement Level Not Found Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Update a contract enforcement level by id
      operationId: putContractEnforcementLevel
      summary: Update a contract enforcement level by id
  /v0/contract/validate:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Contract
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostContractRequest'
      responses:
        '200':
          description: Response when validation could be completed
          schema:
            $ref: '#/definitions/CheckResponse'
      tags:
        - contract
      description: Validate a contract
      operationId: validateContract
      summary: Validate a contract
  '/v0/contract/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Contract
          schema:
            $ref: '#/definitions/ContractOutput'
      tags:
        - contract
      description: Get a contract by id
      operationId: getContract
      summary: Get a contract by id
  '/v0/contract/{id}/activity':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Successful response containing the activity events for the contract
          schema:
            $ref: '#/definitions/ContractActivityResponse'
        '400':
          description: Invalid request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get the activity events for a contract
      operationId: getContractActivity
      summary: Get the activity events for a contract
  '/v0/contract/{id}/stage':
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Contract ID
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Contract stage update
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PutContractStageRequest'
      responses:
        '200':
          description: Contract stage updated
          schema:
            $ref: '#/definitions/PutContractStageResponse'
        '400':
          description: Invalid request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Contract not found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Update a contract's stage
      operationId: putContractStage
      summary: Update a contract's stage
  '/v0/contract/{id}/violation-status':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the contract
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Contract
          schema:
            $ref: '#/definitions/GetContractViolationStatusResponse'
        '404':
          description: Contract not found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get the violation status of a contract by id
      operationId: getContractViolationStatus
      summary: Get the violation status of a contract by id
  /v0/contract_constraints:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: constraints
          schema:
            $ref: '#/definitions/ContractConstraintMapping'
      tags:
        - constraints
      description: Get contract Constraints
      operationId: getContractConstraints
      summary: Get contract Constraints
  /v0/contracts:
    get:
      produces:
        - application/json
      parameters:
        - description: >-
            Location of the data assets resources (e.g.
            '{host}:{port}.{database}.{schema}' for database resources)
          in: query
          name: resourcesLocation
          required: false
          type: string
        - description: >-
            Source type of the data assets (e.g. 'postgres', 'mysql', 'avro',
            'protobuf', 'json_schema', etc.)
          enum:
            - postgres
            - mysql
            - mssql
            - json_schema
            - avro
            - protobuf
            - python
            - pyspark
            - typescript
            - java
            - s3
            - dataframe
            - kotlin
            - swift
            - php
            - golang
          in: query
          name: sourceType
          required: false
          type: string
        - description: The limit used for offset-based pagination
          in: query
          name: limit
          type: integer
        - description: The offset used for offset-based pagination
          in: query
          name: offset
          type: integer
        - description: The status of the contract
          in: query
          name: status
          type: string
      responses:
        '200':
          description: All data contracts (filtered by query parameters if provided)
          schema: {}
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get all contracts
      operationId: getContracts
      summary: Get all contracts
  /v0/contracts/count:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Contracts count
          schema:
            $ref: '#/definitions/DataCount'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get contracts count
      operationId: getContractsCount
      summary: Get contracts count
  '/v0/contracts/data-asset/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: asset name of data contract
          in: path
          name: id
          required: true
          type: string
        - description: The status of the contract
          in: query
          name: status
          type: string
      responses:
        '200':
          description: Successful response containing the contract by asset name
          schema:
            items:
              $ref: '#/definitions/ContractOutput'
            type: array
        '400':
          description: Invalid request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - contract
      description: Get the contract by darn
      operationId: getContractsByAssetId
      summary: Get the contract by darn
  /v0/cross-service-components:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/CrossServiceComponentsResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - cross-service-components
      description: Get all components
      operationId: getCrossServiceComponents
      summary: Get all components
  /v0/data-asset:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Data Asset
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateOrUpdateDataAssetRequest'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/CreateOrUpdateDataAssetResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Create a data asset
      operationId: createDataAsset
      summary: Create a data asset
  /v0/data-asset/ingest:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Data Asset Schema
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/IngestDataAssetRequest'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/IngestDataAssetResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponseDeprecated'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponseDeprecated'
      tags:
        - data-asset
      description: Ingest a data asset from a schema
      operationId: ingestDataAsset
      summary: Ingest a data asset from a schema
  /v0/data-asset/register/s3:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: S3 Data Asset Registration Request
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/RegisterDataAssetS3Request'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/IngestDataAssetResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponseDeprecated'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponseDeprecated'
      tags:
        - data-asset
        - s3
      description: Register an S3 data asset
      operationId: registerDataAssetS3
      summary: Register an S3 data asset
  '/v0/data-asset/{id}':
    delete:
      produces:
        - application/json
      parameters:
        - description: UUID of the data asset
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '204':
          description: Data asset deleted
        '400':
          description: Contract Dependency Deletion Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Data Asset Not Found Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Delete a data asset by id
      operationId: deleteDataAsset
      summary: Delete a data asset by id
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the data asset
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Data asset
          schema:
            $ref: '#/definitions/DataAsset'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Get a data asset by id
      operationId: getDataAsset
      summary: Get a data asset by id
  '/v0/data-asset/{id}/infer-contract':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the data asset
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: Contract was successfully inferred from the given data asset
          schema:
            $ref: '#/definitions/InferContractFromDataAssetResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
        - contract
      description: Infer a contract from a data asset
      operationId: inferContractFromDataAsset
      summary: Infer a contract from a data asset
  '/v0/data-asset/{id}/profile':
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: UUID of the data asset
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Data Asset Profiles
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateDataAssetProfileRequest'
      responses:
        '200':
          description: Data asset profile was successfully created
          schema:
            $ref: '#/definitions/CreateDataAssetProfileResponse'
        '404':
          description: Data asset not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Create profile for a data asset
      operationId: createDataAssetProfile
      summary: Create profile for a data asset
  /v0/data-assets:
    delete:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/DeleteDataAssetsRequest'
      responses:
        '200':
          description: Assets deleted successfully
          schema:
            $ref: '#/definitions/DeleteDataAssetsResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Deletes data assets
      operationId: deleteDataAssets
      summary: Deletes data assets
    get:
      produces:
        - application/json
      parameters:
        - description: The limit used for offset-based pagination
          in: query
          name: limit
          type: integer
        - description: The offset used for offset-based pagination
          in: query
          name: offset
          type: integer
        - description: A query string to search data assets with
          in: query
          name: search
          type: string
      responses:
        '200':
          description: Data assets
          schema: {}
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Get all data assets
      operationId: getDataAssets
      summary: Get all data assets
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateOrUpdateDataAssetsRequest'
      responses:
        '200':
          description: Assets created or updated successfully
          schema:
            $ref: '#/definitions/CreateOrUpdateDataAssetsResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Creates or updates data assets
      operationId: createOrUpdateDataAssets
      summary: Creates or updates data assets
  /v0/data-assets/bulk:
    get:
      produces:
        - application/json
      parameters:
        - collectionFormat: multi
          description: List of Data Asset Resource Names to fetch
          in: query
          items:
            type: string
          minItems: 1
          name: darns
          required: true
          type: array
        - default: 1000
          description: Maximum number of results to return (default is 1000)
          in: query
          maximum: 1000
          minimum: 1
          name: limit
          type: integer
        - default: 0
          description: Number of results to skip (default is 0)
          in: query
          minimum: 0
          name: offset
          type: integer
      responses:
        '200':
          description: Data assets with status information for each DARN
          schema:
            $ref: '#/definitions/GetDataAssetsByDarnsResponsePaginated'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Get data assets by a list of DARNs
      operationId: getDataAssetsByDarns
      summary: Get data assets by a list of DARNs
  /v0/data-assets/check:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: List of data assets to check
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CheckDataAssetsRequest'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/CheckDataAssetsResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Check list of data assets for contract violations
      operationId: checkDataAssets
      summary: Check list of data assets for contract violations
  /v0/data-assets/check-compliance:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: List of data assets to check
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/DataAssetsCheckComplianceRequest'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/CheckDataAssetsResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Check list of data assets for contract violations
      operationId: dataAssetsCheckCompliance
      summary: Check list of data assets for contract violations
  /v0/data-assets/check-compliance/s3:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: List of S3 data assets to check for compliance
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CheckComplianceDataAssetsS3Request'
      responses:
        '200':
          description: Data Asset ID
          schema:
            $ref: '#/definitions/CheckDataAssetsResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Check list of S3 data assets for contract violations
      operationId: checkComplianceDataAssetsS3
      summary: Check list of S3 data assets for contract violations
  /v0/data-assets/count:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Data assets count
          schema:
            $ref: '#/definitions/DataCount'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Get data assets count
      operationId: getDataAssetsCount
      summary: Get data assets count
  /v0/data-assets/register:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Data Assets Registration Request
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/RegisterDataAssetsRequest'
      responses:
        '200':
          description: Data Assets Registration Response
          schema:
            $ref: '#/definitions/RegisterDataAssetsResponse'
        '400':
          description: User Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Server Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Register data assets
      operationId: registerDataAssets
      summary: Register data assets
  /v0/defect-report:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostDefectReportRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/PostDefectReportResponse'
        '400':
          description: Invalid request body
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Failed to send defect report email
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - defect-report
      description: Submit a defect report from the product UI
      operationId: postDefectReport
      summary: Submit a defect report
  /v0/events:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: event to create
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostEventsRequest'
      responses:
        '200':
          description: Lineage Event was created
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - events
      description: Create Lineage Events
      operationId: postEvents
      summary: Create Lineage Events
  '/v0/experimental/component/{id}/field-pairs':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the component.
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Optional payload to scope the returned field pairs to.
          in: query
          name: payloadGroupId
          required: false
          type: string
        - description: Optional filter by row provenance.
          enum:
            - SCAN
            - BYO_ADD
            - BYO_CHANGE
            - BYO_SUPPRESS
          in: query
          name: origin
          required: false
          type: string
        - description: Optional filter by suppression state.
          in: query
          name: isSuppressed
          required: false
          type: boolean
      responses:
        '200':
          description: List of field pairs.
          schema:
            $ref: '#/definitions/GetFieldPairsResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Component not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - experimental
      description: List field pairs on a component for the field-level focused views.
      operationId: getExperimentalComponentFieldPairs
      summary: List field pairs for a component.
  /v0/experimental/edges:
    get:
      produces:
        - application/json
      parameters:
        - description: Optional namespace to scope returned edges.
          in: query
          name: namespace
          required: false
          type: string
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/GetExperimentalEdgesResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - experimental
      description: Get experimental edge summaries.
      operationId: getExperimentalEdges
      summary: Get experimental edge summaries.
  '/v0/experimental/edges/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: The edge ID.
          in: path
          name: id
          required: true
          type: string
        - description: Optional namespace guard for the requested edge.
          in: query
          name: namespace
          required: false
          type: string
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/GetExperimentalEdgeResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - experimental
      description: Get experimental edge details by ID.
      operationId: getExperimentalEdge
      summary: Get experimental edge details by ID.
  /v0/lineage/export:
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the run
          format: uuid
          in: query
          name: run_id
          required: true
          type: string
      responses:
        '200':
          description: Lineage export
          schema:
            $ref: '#/definitions/LineageExportResponse'
        '400':
          description: Client error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: Forbidden - namespace filtering denied access
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Run not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error exporting lineage
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - lineage
      description: Export lineage
      operationId: getLineageExport
      summary: Export lineage
  /v0/measurements/generate:
    get:
      produces:
        - application/json
      parameters:
        - description: Component to measure.
          in: query
          name: componentId
          required: true
          type: string
        - description: Version to evaluate against the base.
          in: query
          name: compareVersionId
          required: true
          type: string
        - description: Base (ground-truth) version ID. Defaults to latest if omitted.
          in: query
          name: baseVersionId
          type: string
        - description: >-
            Component ID for the compare version. Defaults to componentId if
            omitted. Use when comparing across namespaces.
          in: query
          name: compareComponentId
          type: string
        - default: 'false'
          description: 'When true, use raw scan data. When false, use projected data.'
          enum:
            - 'true'
            - 'false'
          in: query
          name: scanOnly
          type: string
        - default: 'true'
          description: >-
            When true, apply IE inclusion filtering to lineage data before
            generating the measurement report.
          enum:
            - 'true'
            - 'false'
          in: query
          name: applyIEInclusionFilter
          type: string
      responses:
        '200':
          description: Computed measurement report
          schema:
            $ref: '#/definitions/ComparisonResult'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Component or version not found
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - measurements
      description: >-
        Fetches lineage data for the specified component versions, runs the
        measurement comparison, and returns the result without persisting.
      operationId: compareMeasurement
      summary: Compute a measurement report on the fly
  /v0/notifications:
    get:
      produces:
        - application/json
      parameters:
        - description: The limit used for offset-based pagination
          in: query
          name: limit
          type: integer
        - description: The offset used for offset-based pagination
          in: query
          name: offset
          type: integer
        - description: A field to order by
          in: query
          name: orderBy
          type: string
        - description: Ordering direction ('asc' or 'desc')
          in: query
          name: orderDir
          type: string
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/GetNotificationsResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - notifications
      description: Get notifications
      operationId: getNotifications
      summary: Get notifications
  /v0/notifications/count:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Notifications count
          schema:
            $ref: '#/definitions/DataCount'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - notifications
      description: Get notifications count
      operationId: getNotificationsCount
      summary: Get notifications count
  /v0/ping:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Successful ping response
          schema:
            $ref: '#/definitions/PingResponse'
      tags:
        - debug
      description: Ping Gable
      operationId: ping
      summary: Ping Gable
  /v0/sca-metadata/ingest:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Upload metadata tied to data asset
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/IngestScaMetadataRequest'
      responses:
        '200':
          description: Sca Metadata Registration Response
          schema:
            $ref: '#/definitions/IngestScaMetadataResponse'
        '400':
          description: User Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Server Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - data-asset
      description: Register sca metadata for a data asset version
      operationId: ingestScaMetadata
      summary: Register sca metadata for a data asset version
  /v0/sca/results:
    post:
      consumes:
        - application/json
        - application/gzip
        - application/octet-stream
      produces:
        - application/json
      parameters:
        - description: >-
            Required when uploading gzip-compressed SCA results with
            Content-Type application/octet-stream. Do not use HTTP
            Content-Encoding for compressed SCA uploads.
          enum:
            - gzip
          in: header
          name: X-Gable-Payload-Encoding
          required: false
          type: string
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/ScaResultsUploadRequest'
      responses:
        '200':
          description: SCA results
          schema:
            $ref: '#/definitions/PostScaResultsResponse'
        '400':
          description: Bad request body
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal server error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - sca
      description: Post SCA results
      operationId: postScaResults
      summary: Post SCA results
  /v0/sca/start-run:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostScaStartRunRequest'
      responses:
        '200':
          description: The SCA config and canonical run ID for this upload
          schema:
            $ref: '#/definitions/PostScaStartRunResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - sca
      description: Resolve SCA config and a canonical run ID for a future upload
      operationId: postScaStartRun
      summary: Resolve SCA config and run ID
  '/v0/sca/status/{id}':
    get:
      produces:
        - application/json
      parameters:
        - description: UUID of the sca job
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '200':
          description: the status and information about the sca run job
          schema:
            $ref: '#/definitions/GetScaRunStatusResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - sca
      description: Get status of a sca run
      operationId: getScaRunStatus
      summary: Get status of a sca run
  /v0/settings/sso:
    delete:
      produces:
        - application/json
      parameters: []
      responses:
        '204':
          description: SSO was successfully deleted
        '404':
          description: No existing SSO was found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
        - sso
      description: Remove the existing SSO integration in Gable
      operationId: removeSso
      summary: Remove the existing SSO integration in Gable
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Configuration of current SSO integration
          schema:
            $ref: '#/definitions/SsoConfig'
        '404':
          description: SSO is not currently configured
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
        - sso
      description: >-
        Gets the configuration of the existing SSO integration, returns 404 if
        SSO is not currently configured
      operationId: getSsoConfiguration
      summary: Gets the configuration of the existing SSO integration
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Configuration for setting up SSO
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/SsoConfig'
      responses:
        '200':
          description: SSO was successfully configured
          schema:
            $ref: '#/definitions/SsoConfig'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
        - sso
      description: Configure (create or update) an SSO integration in Gable
      operationId: configureSso
      summary: Configure (create or update) an SSO integration in Gable
  /v0/settings/sso-saml-setup-details:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Details required to create a SAML integration for Gable in an IdP
          schema:
            $ref: '#/definitions/GetSsoSamlSetupDetailsResponse'
      tags:
        - settings
        - sso
      description: >-
        Get the details required to create a SAML integration for Gable in an
        IdP
      operationId: getSsoSamlSetupDetails
      summary: Get the SAML integration details
  /v0/settings/user:
    patch:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: User
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UpdateUserRequest'
      responses:
        '200':
          description: User was updated successfully
          schema:
            $ref: '#/definitions/UpdateUserResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: User not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal server error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
      description: Update a user
      operationId: updateUser
      summary: Update a user
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: Get user by email address
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/GetUserRequest'
      responses:
        '200':
          description: User was found with the given email address
          schema:
            $ref: '#/definitions/User'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '404':
          description: User not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal server error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
      description: >-
        Gets the details of a Gable user by their email address. Users are
        automatically created in Gable the first time they log in. Use PATCH
        /v0/settings/user to update a user's details.
      operationId: getUser
      summary: Gets the details of a Gable user
  /v0/settings/users:
    delete:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/DeleteUserRequest'
      responses:
        '200':
          description: User was deleted successfully
        '404':
          description: User not found
        '500':
          description: Error deleting user
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
      description: Deletes a user from Gable
      operationId: deleteUser
      summary: Deletes a user
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Details required to create a SAML integration for Gable in an IdP
          schema:
            $ref: '#/definitions/GetUsersResponse'
      tags:
        - settings
      description: Gets the list of Gable users
      operationId: getUsers
      summary: Gets the list of Gable users
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/InviteUserRequest'
      responses:
        '200':
          description: User was invited to Gable
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error inviting user
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - settings
      description: Invites a user to Gable
      operationId: inviteUser
      summary: Invites a user
  /v0/slack/channels:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Slack channels
          schema:
            $ref: '#/definitions/GetSlackChannelsResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - slack
      description: Get Slack channels for workspace
      operationId: getSlackChannels
      summary: Get Slack channels for workspace
  /v0/slack/delete:
    delete:
      produces:
        - application/json
      parameters: []
      responses:
        '204':
          description: Slack integration deleted
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - slack
      description: Delete Slack integration
      operationId: deleteSlack
      summary: Delete Slack integration
  /v0/slack/install:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Slack install
          schema:
            $ref: '#/definitions/GetSlackInstallResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - slack
      description: Get the generated Slack install URL
      operationId: getSlackInstall
      summary: Get the generated Slack install URL
  /v0/slack/test:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostTestSlackMessageRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/PostTestSlackMessageResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - slack
      description: Post a test message to the slack channel
      operationId: postTestSlackMessage
      summary: Post a test message to the slack channel
  /v0/telemetry/ingest:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateTelemetryRequest'
      responses:
        '201':
          description: Successful operation
          schema:
            $ref: '#/definitions/CreateTelemetryResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - telemetry
      description: >-
        Create a telemetry data point for long term storage in the telemetry
        table
      operationId: createTelemetry
      summary: Create a telemetry data point
  /v0/webhooks:
    get:
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Get all webhooks endpoints
          schema:
            $ref: '#/definitions/GetWebhooksResponse'
        '400':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - webhook
      description: Get webhooks endpoints
      operationId: getWebhooks
      summary: Get webhooks endpoints
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateWebhookRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/CreateWebhookResponse'
        '422':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - webhook
      description: Create a webhook endpoint
      operationId: createWebhook
      summary: Create a webhook endpoint
  /v0/webhooks/test:
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/PostTestWebhookMessageRequest'
      responses:
        '200':
          description: Successful operation
          schema:
            $ref: '#/definitions/PostTestWebhookMessageResponse'
        '500':
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - webhook
      description: Post a test message to the webhook
      operationId: postTestWebhookMessage
      summary: Post a test message to the webhook
  '/v0/webhooks/{id}':
    delete:
      produces:
        - application/json
      parameters:
        - description: The UUID of the webhook
          format: uuid
          in: path
          name: id
          required: true
          type: string
      responses:
        '204':
          description: Webhook was successfully deleted
        '404':
          description: No existing webhook was found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - webhook
      description: Delete the existing webhook
      operationId: deleteWebhook
      summary: Delete the existing webhook
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - description: The UUID of the webhook
          format: uuid
          in: path
          name: id
          required: true
          type: string
        - description: Webhook to update
          in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/CreateWebhookRequest'
      responses:
        '200':
          description: Webhook was successfully updated
          schema:
            $ref: '#/definitions/CreateWebhookResponse'
        '404':
          description: Webhook not found
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorResponse'
      tags:
        - webhook
      description: Update a webhook
      operationId: updateWebhook
      summary: Update a webhook
definitions:
  ActionCreatedEvent:
    allOf:
      - $ref: '#/definitions/ChangelogEventBase'
      - properties:
          actionId:
            description: The unique identifier for the action.
            format: uuid
            type: string
          actionName:
            description: The name of the action.
            type: string
          entityType:
            description: The type of entity that the changelog event is associated with.
            enum:
              - ACTION
            type: string
          eventType:
            $ref: '#/definitions/ChangelogEventType'
        required:
          - actionId
          - actionName
          - entityType
          - eventType
        type: object
  ActionDeletedEvent:
    allOf:
      - $ref: '#/definitions/ActionCreatedEvent'
  ActionDestinationEmail:
    properties:
      destinationType:
        description: The type of destination
        enum:
          - email
        type: string
      emailAddresses:
        description: List of email addresses to notify when the action is triggered
        items:
          format: email
          type: string
        type: array
    required:
      - destinationType
      - emailAddresses
    type: object
  ActionDestinationSlack:
    properties:
      destinationType:
        description: The type of destination
        enum:
          - slack
        type: string
      slackChannelIds:
        description: List of slack channels IDs to notify when the action is triggered
        items:
          type: string
        type: array
    required:
      - destinationType
      - slackChannelIds
    type: object
  ActionDestinationType:
    description: 'The type of the action destination (e.g. email, slack, etc.).'
    enum:
      - slack
      - email
      - webhook
    type: string
  ActionDestinationWebhook:
    properties:
      destinationType:
        description: The type of destination
        enum:
          - webhook
        type: string
      webhookIds:
        description: List of webhook identifiers to notify when the action is triggered
        items:
          type: string
        type: array
    required:
      - destinationType
      - webhookIds
    type: object
  ActionDisabledEvent:
    allOf:
      - $ref: '#/definitions/ActionCreatedEvent'
  ActionEnabledEvent:
    allOf:
      - $ref: '#/definitions/ActionCreatedEvent'
  ActionModifiedEvent:
    allOf:
      - $ref: '#/definitions/ActionCreatedEvent'
      - properties:
          modifications:
            description: >-
              List of changelog modifications in chronological order (newest
              first)
            items: {}
            type: array
        required:
          - modifications
        type: object
  ActionRenamedEvent:
    properties:
      diff:
        description: Details of the modified action.
        properties:
          newValue:
            description: The name of the action after the change.
            type: string
          previousValue:
            description: The name of the action before the change.
            type: string
        required:
          - previousValue
          - newValue
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - ACTION_RENAMED
        type: string
    required:
      - eventType
      - diff
    type: object
  ActionTriggerEventName:
    properties:
      triggerType:
        description: The type of trigger
        enum:
          - eventName
        type: string
      triggerValues:
        description: >-
          List of data asset event names, any of which need to match an event to
          trigger an action
        items:
          enum:
            - data_asset_created
            - data_asset_modified_field_added
            - data_asset_modified_field_changed
            - data_asset_modified_field_removed
            - data_asset_deleted
            - data_contract_created
            - data_contract_modified
            - data_contract_violation
            - data_contract_deleted
            - data_action_created
            - data_action_deleted
            - data_action_enabled
            - data_action_disabled
            - data_action_modified
            - data_asset_pii_detected
          type: string
        type: array
    required:
      - triggerType
      - triggerValues
    type: object
  ActionTriggerNamespace:
    properties:
      triggerType:
        description: The type of trigger
        enum:
          - namespace
        type: string
      triggerValues:
        description: >-
          List of contract namespaces, any of which need to match an event to
          trigger an action
        items:
          type: string
        type: array
    required:
      - triggerType
      - triggerValues
    type: object
  ActionTriggerSource:
    properties:
      triggerType:
        description: The type of trigger
        enum:
          - source
        type: string
      triggerValues:
        description: >-
          List of data asset sources, any of which need to match an event to
          trigger an action
        items:
          type: string
        type: array
    required:
      - triggerType
      - triggerValues
    type: object
  ActionTriggerSourceType:
    properties:
      triggerType:
        description: The type of trigger
        enum:
          - sourceType
        type: string
      triggerValues:
        description: >-
          List of data asset sourceTypes, any of which need to match an event to
          trigger an action
        items:
          $ref: '#/definitions/SourceType'
        type: array
    required:
      - triggerType
      - triggerValues
    type: object
  ActionTriggerType:
    description: The type of the action trigger.
    enum:
      - source
      - source_type
      - event_name
      - namespace
    type: string
  AssetCreatedEvent:
    allOf:
      - $ref: '#/definitions/ChangelogEventBase'
      - properties:
          dataAssetResourceName:
            $ref: '#/definitions/DataAssetResourceName'
          entityType:
            description: The type of entity that the changelog event is associated with.
            enum:
              - DATA_ASSET
            type: string
          eventType:
            $ref: '#/definitions/ChangelogEventType'
          piiDetected:
            additionalProperties: true
            description: A mapping of the fieldname to the pii_category.
            type: object
          prLink:
            description: Link to the pull request associated with the asset modification.
            example: 'https://github.com/fakeorg/fakerepo/pull/1'
            type: string
        required:
          - entityType
          - dataAssetResourceName
          - eventType
        type: object
  AssetDeletedEvent:
    allOf:
      - $ref: '#/definitions/AssetCreatedEvent'
  AssetModifiedEvent:
    allOf:
      - $ref: '#/definitions/AssetCreatedEvent'
      - properties:
          modifications:
            description: >-
              List of changelog modifications in chronological order (newest
              first)
            items: {}
            type: array
          piiDetected:
            additionalProperties: true
            description: A mapping of the fieldname to the pii_category.
            type: object
        required:
          - modifications
        type: object
  BooleanConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/OtherConstraintEnum'
        type: array
      type:
        enum:
          - boolean
        type: string
    required:
      - type
      - constraints
    type: object
  BulkContractCheckComplianceRequest:
    properties:
      contract:
        properties:
          contractSchema:
            items:
              $ref: '#/definitions/GableSchemaContractField'
            type: array
          dataAssetResourceNames:
            description: >-
              Array of data asset resource names to check compliance against the
              contract
            items:
              $ref: '#/definitions/DataAssetResourceName'
            type: array
        required:
          - contractSchema
          - dataAssetResourceNames
        type: object
    required:
      - contract
    type: object
  BulkContractCheckComplianceResponse:
    properties:
      results:
        additionalProperties:
          properties:
            violations:
              items:
                properties:
                  actual:
                    type: string
                  expected:
                    type: string
                  field:
                    type: string
                  fieldType:
                    type: string
                  message:
                    type: string
                  violationType:
                    $ref: '#/definitions/ContractViolationType'
                required:
                  - message
                  - field
                  - fieldType
                  - violationType
                  - expected
                type: object
              type: array
          required:
            - violations
          type: object
        description: Map of data asset resource names to their compliance check results
        type: object
    required:
      - results
    type: object
  ChangelogEventBase:
    properties:
      eventTitle:
        description: The LLM-generated text of the changelog event.
        type: string
      id:
        description: The unique identifier for the changelog event.
        format: uuid
        type: string
      timestamp:
        description: The timestamp of the changelog event.
        format: date-time
        type: string
      userId:
        description: The unique identifier for the User who made a changelog event.
        format: uuid
        type: string
    required:
      - id
      - entityName
      - timestamp
    type: object
  ChangelogEventInput: {}
  ChangelogEventType:
    enum:
      - CREATED
      - MODIFIED
      - DELETED
      - VIOLATION
      - ENABLED
      - DISABLED
    type: string
  ChangelogResponsePaginated:
    properties:
      data:
        $ref: '#/definitions/GetChangelogResponse'
      totalCount:
        type: number
    type: object
  CheckComplianceDataAssetsS3Request:
    properties:
      assets:
        description: Array of data assets to check for compliance
        items:
          $ref: '#/definitions/S3Asset'
        type: array
      includeUnchangedAssets:
        default: false
        description: >-
          If true, the data assets sent that have not changed compared with the
          stored assets will be checked for contract violations and
          responseType: NO_CHANGE will be returned for those assets. If false,
          the only data assets that have changed compared with the stored assets
          will be checked for contract violations.
        type: boolean
      prLink:
        description: >-
          Link to the pull request the proposed changes to the data asset are
          part of
        type: string
      responseType:
        description: >-
          Determines the format of the response from the API. Specifying
          'DETAILED' will return a detailed JSON object for each data asset
          checked. If 'COMMENT_MARKDOWN' is specified, the response will be a
          markdown string intended to be used as a comment in a pull request.
        enum:
          - DETAILED
          - COMMENT_MARKDOWN
        type: string
    required:
      - assets
      - responseType
    type: object
  CheckDataAssetCommentMarkdownResponse:
    properties:
      errors:
        items:
          $ref: '#/definitions/CheckDataAssetErrorResponse'
        type: array
      markdown:
        type: string
      responseType:
        enum:
          - COMMENT_MARKDOWN
        type: string
      shouldAlert:
        description: >-
          Whether or not to comment on the PR - true if at least one contract
          with a contract violation has its enforcement level set to ALERT or
          BLOCK.
        type: boolean
      shouldBlock:
        description: >-
          Whether or not to block the PR - true if at least one contract with a
          contract violation has its enforcement level set to BLOCK.
        type: boolean
    required:
      - responseType
      - shouldAlert
      - shouldBlock
    type: object
  CheckDataAssetDetailedResponse:
    properties:
      contractId:
        format: uuid
        type: string
      contractName:
        type: string
      contractNamespace:
        type: string
      contractOwner:
        type: string
      contractOwnerGithubHandle:
        type: string
      contractUrl:
        description: Link to the contract in the Gable UI
        type: string
      dataAssetNamespace:
        description: The namespace of the data asset
        examples:
          - 'postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432'
          - 'protobuf://github.com/org/repo/path/to/file.proto'
        type: string
      dataAssetPath:
        description: The relative path of the data asset within its data store
        examples:
          - serviceone.public.sales
          - company.serviceone.Sales
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
        description: >-
          The full resource name of the data asset, see [Data
          Assets](https://docs.gable.ai/data_assets_and_lineage/data_assets)
        examples:
          - >-
            postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432:serviceone.public.sales
          - >-
            protobuf://git@github.com/org/repo/path/to/file.proto:company.serviceone.Sales
      enforcementLevel:
        default: INACTIVE
        description: alert level for contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
      responseType:
        enum:
          - DETAILED
        type: string
      subscribers:
        items:
          properties:
            email:
              type: string
            githubHandle:
              type: string
            slackChannel:
              type: string
          type: object
        type: array
      violations:
        items:
          properties:
            actual:
              type: string
            expected:
              type: string
            field:
              type: string
            fieldType:
              type: string
            message:
              type: string
            violationType:
              $ref: '#/definitions/ContractViolationType'
          required:
            - message
            - field
            - fieldType
            - violationType
            - expected
          type: object
        type: array
    required:
      - dataAssetNamespace
      - dataAssetResourceName
      - dataAssetPath
      - contractId
      - contractUrl
      - contractNamespace
      - contractName
      - contractOwner
      - subscribers
      - responseType
    type: object
  CheckDataAssetErrorResponse:
    properties:
      dataAssetNamespace:
        description: The namespace of the data asset
        examples:
          - 'postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432'
          - 'protobuf://github.com/org/repo/path/to/file.proto'
        type: string
      dataAssetPath:
        description: The relative path of the data asset within its data store
        examples:
          - serviceone.public.sales
          - company.serviceone.Sales
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
        description: >-
          The full resource name of the data asset, see [Data
          Assets](https://docs.gable.ai/data_assets_and_lineage/data_assets)
        examples:
          - >-
            postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432:serviceone.public.sales
          - >-
            protobuf://git@github.com/org/repo/path/to/file.proto:company.serviceone.Sales
      enforcementLevel:
        description: notification tier of error response
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
      message:
        description: The error message
        type: string
      responseType:
        enum:
          - ERROR
        type: string
    required:
      - dataAssetNamespace
      - message
      - responseType
    type: object
  CheckDataAssetMissingAssetResponse:
    properties:
      contract:
        $ref: '#/definitions/ContractOutput'
      contractOwner:
        type: string
      contractOwnerGithubHandle:
        type: string
      dataAssetPath:
        description: The relative path of the data asset within its data store
        examples:
          - serviceone.public.sales
          - company.serviceone.Sales
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
        description: >-
          The full resource name of the data asset, see [Data
          Assets](https://docs.gable.ai/data_assets_and_lineage/data_assets)
        examples:
          - >-
            postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432:serviceone.public.sales
          - >-
            protobuf://git@github.com/org/repo/path/to/file.proto:company.serviceone.Sales
      responseType:
        enum:
          - MISSING_DATA_ASSET
        type: string
      subscribers:
        items:
          properties:
            email:
              type: string
            githubHandle:
              type: string
            slackChannel:
              type: string
          type: object
        type: array
    required:
      - dataAssetResourceName
      - dataAssetPath
      - contract
      - contractOwner
      - subscribers
      - responseType
    type: object
  CheckDataAssetNoChangeResponse:
    properties:
      dataAssetNamespace:
        description: The namespace of the data asset
        examples:
          - 'postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432'
          - 'protobuf://github.com/org/repo/path/to/file.proto'
        type: string
      dataAssetPath:
        description: The relative path of the data asset within its data store
        examples:
          - serviceone.public.sales
          - company.serviceone.Sales
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
        description: >-
          The full resource name of the data asset, see [Data
          Assets](https://docs.gable.ai/data_assets_and_lineage/data_assets)
        examples:
          - >-
            postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432:serviceone.public.sales
          - >-
            protobuf://git@github.com/org/repo/path/to/file.proto:company.serviceone.Sales
      responseType:
        enum:
          - NO_CHANGE
        type: string
    required:
      - dataAssetNamespace
      - dataAssetResourceName
      - dataAssetPath
      - responseType
    type: object
  CheckDataAssetNoContractResponse:
    properties:
      dataAssetNamespace:
        description: The namespace of the data asset
        examples:
          - 'postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432'
          - 'protobuf://github.com/org/repo/path/to/file.proto'
        type: string
      dataAssetPath:
        description: The relative path of the data asset within its data store
        examples:
          - serviceone.public.sales
          - company.serviceone.Sales
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
        description: >-
          The full resource name of the data asset, see [Data
          Assets](https://docs.gable.ai/data_assets_and_lineage/data_assets)
        examples:
          - >-
            postgres://service-one.aaa.eu-west-1.rds.amazonaws.com:5432:serviceone.public.sales
          - >-
            protobuf://git@github.com/org/repo/path/to/file.proto:company.serviceone.Sales
      responseType:
        enum:
          - NO_CONTRACT
        type: string
    required:
      - dataAssetNamespace
      - dataAssetResourceName
      - dataAssetPath
      - responseType
    type: object
  CheckDataAssetResponse: {}
  CheckDataAssetsRequest:
    properties:
      includeUnchangedAssets:
        default: false
        description: >-
          If true, the data assets sent that have not changed compared with the
          stored assets will be checked for contract violations. If false, the
          only data assets that have changed compared with the stored assets
          will be checked for contract violations.
        type: boolean
      inputs:
        items:
          properties:
            realDbName:
              type: string
            realDbSchema:
              type: string
            schemaContents:
              type: string
            sourceName:
              type: string
            sourceType:
              $ref: '#/definitions/SourceType'
          required:
            - sourceName
            - sourceType
            - schemaContents
          type: object
        type: array
      prLink:
        description: >-
          Link to the pull request the proposed changes to the data asset are
          part of
        type: string
      responseType:
        description: >-
          Determines the format of the response from the API. Specifying
          'DETAILED' will return a detailed JSON object for each data asset
          checked. If 'COMMENT_MARKDOWN' is specified, the response will be a
          markdown string intended to be used as a comment in a pull request.
        enum:
          - DETAILED
          - COMMENT_MARKDOWN
        type: string
    required:
      - inputs
      - responseType
    type: object
  CheckDataAssetsResponse: {}
  CheckResponse:
    properties:
      message:
        type: string
      success:
        type: boolean
    required:
      - success
      - message
    type: object
  CodeAnchor:
    properties:
      anchorId:
        description: Unique identifier for the anchor.
        type: string
      codeUri:
        $ref: '#/definitions/CodeURI'
      name:
        description: Human readable name of the code anchor.
        type: string
      url:
        description: URL to the code anchor.
        type: string
    required:
      - anchorId
      - name
      - codeUri
    type: object
  CodeComponent:
    properties:
      paths:
        description: The paths associated with the component.
        items:
          $ref: '#/definitions/Path'
        type: array
      collectionMechanism:
        description: The mechanism used to collect data for this component (SCA or BYOL).
        enum:
          - SCA
          - BYOL
        type: string
      egresses:
        description: The egresses associated with the component.
        items:
          $ref: '#/definitions/Egress'
        type: array
      friendly_name:
        description: Optional user-defined friendly name for the component.
        type: string
      id:
        description: The unique identifier for the component.
        format: uuid
        type: string
      ingresses:
        description: The ingresses associated with the component.
        items:
          $ref: '#/definitions/Ingress'
        type: array
      metadata:
        allOf:
          - $ref: '#/definitions/StaticAnalysisCodeMetadata'
          - properties:
              extras:
                additionalProperties:
                  type: string
                description: Additional metadata for the code component.
                type: object
            type: object
      name:
        description: The name of the component.
        type: string
      runId:
        description: The ID of the run that the component belongs to
        type: string
      type:
        const: CODE
        description: The type of the component.
        type: string
    required:
      - id
      - type
      - runId
      - name
      - ingresses
      - egresses
      - paths
      - metadata
    type: object
  CodeStepDetail:
    description: Comparison detail for a code transformation step.
    properties:
      base:
        $ref: '#/definitions/PresenceEnum'
      compare:
        $ref: '#/definitions/PresenceEnum'
      completeness:
        $ref: '#/definitions/CompletenessEnum'
      egressField:
        description: Associated output field.
        type: string
      ingressField:
        description: Associated input field.
        type: string
      severity:
        $ref: '#/definitions/SeverityEnum'
      status:
        $ref: '#/definitions/StatusEnum'
      stepOrder:
        description: Order in the transformation chain.
        type: integer
    required:
      - stepOrder
      - base
      - compare
      - status
      - ingressField
      - egressField
      - completeness
      - severity
    type: object
  CodeURI:
    description: >-
      Code URI is a unique identifier for a code location. It is used to
      identify the code location in the codebase.
    properties:
      columnEnd:
        type: integer
      columnStart:
        type: integer
      file:
        description: Relative file path in the repo.
        type: string
      lineEnd:
        type: integer
      lineStart:
        type: integer
    required:
      - file
      - lineStart
      - columnStart
    type: object
  ComparisonMetadata:
    description: 'Timestamps, file paths, and component information for the comparison.'
    properties:
      baseComponentId:
        description: Component identifier in base version.
        type: string
      baseNamespace:
        description: Namespace identifier in base version.
        type: string
      baseTimestamp:
        description: ISO timestamp of base version.
        type: string
      baseVersionId:
        description: Base version/run ID.
        type: string
      compareComponentId:
        description: Component identifier in compare version.
        type: string
      compareNamespace:
        description: Namespace identifier in compare version.
        type: string
      compareTimestamp:
        description: ISO timestamp of compare version.
        type: string
      compareVersionId:
        description: Compare version/run ID.
        type: string
      comparisonDate:
        description: ISO timestamp when comparison ran.
        type: string
      componentName:
        description: Name of the component being compared.
        type: string
      mappingJoinMultiplicity:
        description: >-
          Optional diagnostics for duplicate field-mapping join keys that can
          multiply rows in the comparison.
        properties:
          baseDuplicateKeyCount:
            description: Number of mapping join keys duplicated in the base dataset.
            type: integer
          compareDuplicateKeyCount:
            description: Number of mapping join keys duplicated in the compare dataset.
            type: integer
          crossProductKeyCount:
            description: >-
              Number of join keys present on both sides where duplicate rows
              would create cross-product matches.
            type: integer
          extraJoinedRows:
            description: >-
              Additional joined rows introduced beyond a single expected row per
              key.
            type: integer
          samples:
            description: >-
              All duplicated mapping keys that contribute to join
              multiplication.
            items:
              properties:
                baseCount:
                  type: integer
                compareCount:
                  type: integer
                egressField:
                  type: string
                extraJoinedRows:
                  type: integer
                ingressField:
                  type: string
                joinedRows:
                  type: integer
                pathPayloadName:
                  type: string
              required:
                - pathPayloadName
                - ingressField
                - egressField
                - baseCount
                - compareCount
                - joinedRows
                - extraJoinedRows
              type: object
            type: array
        type: object
    required:
      - baseTimestamp
      - compareTimestamp
      - comparisonDate
      - componentName
      - baseNamespace
      - compareNamespace
      - baseComponentId
      - compareComponentId
      - baseVersionId
      - compareVersionId
    type: object
  ComparisonResult:
    description: >-
      Top-level object containing all comparison data between a base and compare
      lineage export.
    properties:
      paths:
        description: Per-path comparison results.
        items:
          $ref: '#/definitions/PathResult'
        type: array
      extraPaths:
        description: Paths in compare but not in base.
        items:
          $ref: '#/definitions/ExtraPath'
        type: array
      metadata:
        $ref: '#/definitions/ComparisonMetadata'
        description: 'Timestamps, file paths, and component info.'
      summary:
        $ref: '#/definitions/ComparisonSummary'
        description: Aggregate counts and percentages.
    required:
      - metadata
      - summary
      - paths
      - extraPaths
    type: object
  ComparisonSummary:
    description: Aggregate counts and percentages for the comparison.
    properties:
      fullyQualified:
        $ref: '#/definitions/SummarySection'
        description: Stats for fully qualified paths.
      partiallyQualified:
        $ref: '#/definitions/SummarySection'
        description: Stats for partially qualified paths.
    required:
      - fullyQualified
      - partiallyQualified
    type: object
  Completeness:
    properties:
      egress:
        $ref: '#/definitions/CompletenessClassification'
        description: >-
          The completeness of non-schema egress elements (name, signature, code
          anchor, etc.).
      egress_schema:
        $ref: '#/definitions/CompletenessClassification'
        description: The completeness of the egress's field schema.
      field_mappings:
        $ref: '#/definitions/CompletenessClassification'
        description: The completeness of the field mappings.
      ingress:
        $ref: '#/definitions/CompletenessClassification'
        description: >-
          The completeness of non-schema ingress elements (name, signature, code
          anchor, etc.).
      ingress_schema:
        $ref: '#/definitions/CompletenessClassification'
        description: The completeness of the ingress's field schema.
    required:
      - ingress
      - ingress_schema
      - egress
      - egress_schema
      - field_mappings
    type: object
  CompletenessClassification:
    description: A completeness classification of a ground truth element.
    enum:
      - UNKNOWN
      - KNOWN_INCOMPLETE
      - KNOWN_COMPLETE
    type: string
  CompletenessEnum:
    description: Ground truth completeness level.
    enum:
      - KNOWN_COMPLETE
      - KNOWN_INCOMPLETE
      - UNKNOWN
    type: string
  Component:
    properties:
      codeInfo:
        $ref: '#/definitions/ComponentCodeInfo'
        description: Repository metadata for this component.
      friendly_name:
        description: Optional user-defined friendly name for the component.
        type: string
      id:
        description: The unique identifier for the component.
        format: uuid
        type: string
      lastUpdated:
        description: The date when the component was last updated.
        format: date
        type: string
      metrics:
        $ref: '#/definitions/ComponentMetrics'
        description: 'Counts of ingresses, egresses and paths recorded for this component.'
      name:
        description: The name of the component.
        type: string
      repoName:
        description: The repository name or path associated with the component.
        type: string
      type:
        description: The type of the component.
        type: string
    required:
      - id
      - name
      - type
      - repoName
      - lastUpdated
      - metrics
      - codeInfo
    type: object
  ComponentCodeInfo:
    properties:
      projectRoot:
        description: Root directory of the project within the repository.
        type: string
      repoUri:
        description: URL of the Git repository.
        format: uri
        type: string
    required:
      - repoUri
      - projectRoot
    type: object
  ComponentDiffMetadata:
    description: Metadata for a component diff comparison.
    properties:
      baseCommitSha:
        description: 'Commit SHA of the base version, if available.'
        type: string
      baseDate:
        description: Timestamp of the base version.
        format: date-time
        type: string
      baseEventId:
        description: Event ID of the base (older) version.
        type: string
      baseLabel:
        description: Label for the base version (e.g. job trigger type).
        type: string
      compareCommitSha:
        description: 'Commit SHA of the compare version, if available.'
        type: string
      compareDate:
        description: Timestamp of the compare version.
        format: date-time
        type: string
      compareEventId:
        description: Event ID of the compare (newer) version.
        type: string
      compareLabel:
        description: Label for the compare version.
        type: string
      componentId:
        description: UUID of the component (retained for links and disambiguation).
        format: uuid
        type: string
      componentName:
        description: Stable name of the component.
        type: string
      totalAdded:
        description: Total number of paths added.
        type: integer
      totalModified:
        description: Total number of paths modified.
        type: integer
      totalRemoved:
        description: Total number of paths removed.
        type: integer
      totalUnchanged:
        description: Total number of unchanged paths.
        type: integer
    required:
      - componentName
      - componentId
      - baseEventId
      - baseDate
      - compareEventId
      - compareDate
      - totalAdded
      - totalRemoved
      - totalModified
    type: object
  ComponentDiffResponse:
    description: >-
      Response for the component diff API, comparing two versions of a
      component's lineage.
    properties:
      metadata:
        $ref: '#/definitions/ComponentDiffMetadata'
      pathChanges:
        description: List of path-level diffs between the two versions.
        items:
          $ref: '#/definitions/PathDiff'
        type: array
    required:
      - metadata
      - pathChanges
    type: object
  ComponentMetrics:
    properties:
      egressCount:
        description: Number of egress records.
        type: integer
      ingressCount:
        description: Number of ingress records.
        type: integer
      pathCount:
        description: Number of paths.
        type: integer
    required:
      - ingressCount
      - egressCount
      - pathCount
    type: object
  ContractActivityCreateEvent:
    properties:
      datetime:
        description: date time at which the contract was created
        format: date-time
        type: string
      fileUri:
        description: >-
          full link to the file and commit in the repo that contains this
          created contract
        format: uri
        type: string
      gitUser:
        description: the git user who created the contract
        type: string
      type:
        description: type of the event
        enum:
          - CONTRACT_CREATED
        type: string
    required:
      - type
      - datetime
    type: object
  ContractActivityResponse:
    description: List of contract activity events in chronological order (oldest first)
    items: {}
    minItems: 1
    type: array
  ContractActivityUpdateEvent:
    properties:
      datetime:
        description: date time at which the contract was updated
        format: date-time
        type: string
      fileUri:
        description: >-
          full link to the file and commit in the repo that contains this
          updated contract
        format: uri
        type: string
      gitUser:
        description: the git user who edited the contract
        type: string
      type:
        description: type of the event
        enum:
          - CONTRACT_UPDATED
        type: string
    required:
      - type
      - datetime
    type: object
  ContractCheckComplianceRequest:
    properties:
      contract:
        properties:
          contractSchema:
            items:
              $ref: '#/definitions/GableSchemaContractField'
            type: array
          dataAssetResourceName:
            $ref: '#/definitions/DataAssetResourceName'
        required:
          - contractSchema
          - dataAssetResourceName
        type: object
    required:
      - contract
    type: object
  ContractCheckComplianceResponse:
    properties:
      violations:
        items:
          properties:
            actual:
              type: string
            expected:
              type: string
            field:
              type: string
            fieldType:
              type: string
            message:
              type: string
            violationType:
              $ref: '#/definitions/ContractViolationType'
          required:
            - message
            - field
            - fieldType
            - violationType
            - expected
          type: object
        type: array
    required:
      - violations
    type: object
  ContractConstraint:
    type: object
  ContractConstraintMapping:
    components:
      schemas:
        BooleanConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/OtherConstraintEnum'
              type: array
            type:
              enum:
                - boolean
              type: string
          required:
            - type
            - constraints
          type: object
        ContractConstraint:
          discriminator:
            mapping:
              boolean: '#/components/schemas/BooleanConstraints'
              contract: '#/components/schemas/SupportedContractConstraints'
              float: '#/components/schemas/FloatConstraints'
              integer: '#/components/schemas/IntegerConstraints'
              list: '#/components/schemas/ListConstraints'
              map: '#/components/schemas/MapConstraints'
              other: '#/components/schemas/OtherConstraints'
              recap: '#/components/schemas/RecapConstraints'
              string: '#/components/schemas/StringConstraints'
              time: '#/components/schemas/TimeConstraints'
              uuid: '#/components/schemas/UUIDConstraints'
            propertyName: type
          oneOf:
            - $ref: '#/definitions/TimeConstraints'
            - $ref: '#/definitions/FloatConstraints'
            - $ref: '#/definitions/IntegerConstraints'
            - $ref: '#/definitions/ListConstraints'
            - $ref: '#/definitions/MapConstraints'
            - $ref: '#/definitions/StringConstraints'
            - $ref: '#/definitions/UUIDConstraints'
            - $ref: '#/definitions/BooleanConstraints'
            - $ref: '#/definitions/OtherConstraints'
            - $ref: '#/definitions/RecapConstraints'
            - $ref: '#/definitions/SupportedContractConstraints'
          type: object
        ContractConstraintType:
          enum:
            - greaterThan
            - greaterThanOrEqualTo
            - lessThan
            - lessThanOrEqualTo
            - isNull
            - isNullThreshold
            - charLength
            - isNotEmpty
            - length
          type: string
          x-enum-varnames:
            - GREATER_THAN
            - GREATER_THAN_OR_EQUAL_TO
            - LESS_THAN
            - LESS_THAN_OR_EQUAL_TO
            - IS_NULL
            - IS_NULL_THRESHOLD
            - CHARACTER_LENGTH
            - IS_NOT_EMPTY
            - LENGTH
        FloatConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/NumberConstraintEnum'
              type: array
            type:
              enum:
                - float
              type: string
          required:
            - type
            - constraints
          type: object
        IntegerConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/NumberConstraintEnum'
              type: array
            type:
              enum:
                - integer
              type: string
          required:
            - type
            - constraints
          type: object
        LengthConstraintEnum:
          enum:
            - length
            - isNotEmpty
            - isNull
            - isNullThreshold
          type: string
        ListConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/LengthConstraintEnum'
              type: array
            type:
              enum:
                - list
              type: string
          required:
            - type
            - constraints
          type: object
        MapConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/LengthConstraintEnum'
              type: array
            type:
              enum:
                - map
              type: string
          required:
            - type
            - constraints
          type: object
        NumberConstraintEnum:
          enum:
            - greaterThan
            - greaterThanOrEqualTo
            - lessThan
            - lessThanOrEqualTo
            - isNull
            - isNullThreshold
          type: string
        OtherConstraintEnum:
          enum:
            - isNull
            - isNullThreshold
          type: string
        OtherConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/OtherConstraintEnum'
              type: array
            type:
              enum:
                - other
              type: string
          required:
            - type
            - constraints
          type: object
        RecapConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/RecapTypeConstraintCategory'
              type: array
            type:
              enum:
                - recap
              type: string
          required:
            - type
            - constraints
          type: object
        RecapTypeConstraintCategory:
          enum:
            - NUMBER
            - TIME
            - STRING
            - BYTES
            - DATA_STRUCTURE
            - OTHER
          type: string
        StringConstraintEnum:
          enum:
            - charLength
            - isNotEmpty
            - isNull
            - isNullThreshold
          type: string
        StringConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/StringConstraintEnum'
              type: array
            type:
              enum:
                - string
              type: string
          required:
            - type
            - constraints
          type: object
        SupportedContractConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/ContractConstraintType'
              type: array
            type:
              enum:
                - contract
              type: string
          required:
            - type
            - constraints
          type: object
        TimeConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/NumberConstraintEnum'
              type: array
            type:
              enum:
                - time
              type: string
          required:
            - type
            - constraints
          type: object
        UUIDConstraints:
          properties:
            constraints:
              items:
                $ref: '#/definitions/StringConstraintEnum'
              type: array
            type:
              enum:
                - uuid
              type: string
          required:
            - type
            - constraints
          type: object
    additionalProperties:
      $ref: '#/definitions/ContractConstraint'
    description: >-
      Mapping of contract constraint types to their respective recap type
      constraint categories and detailed constraint definitions
    type: object
  ContractConstraintType:
    enum:
      - greaterThan
      - greaterThanOrEqualTo
      - lessThan
      - lessThanOrEqualTo
      - isNull
      - isNullThreshold
      - charLength
      - isNotEmpty
      - length
    type: string
    x-enum-varnames:
      - GREATER_THAN
      - GREATER_THAN_OR_EQUAL_TO
      - LESS_THAN
      - LESS_THAN_OR_EQUAL_TO
      - IS_NULL
      - IS_NULL_THRESHOLD
      - CHARACTER_LENGTH
      - IS_NOT_EMPTY
      - LENGTH
  ContractCreatedEvent:
    allOf:
      - $ref: '#/definitions/ChangelogEventBase'
      - properties:
          contractDomain:
            description: The domain of the contract.
            type: string
          contractId:
            description: The unique identifier for the contract.
            format: uuid
            type: string
          contractName:
            description: The name of the contract.
            type: string
          entityType:
            description: The type of entity that the changelog event is associated with.
            enum:
              - DATA_CONTRACT
            type: string
          eventType:
            $ref: '#/definitions/ChangelogEventType'
        required:
          - contractId
          - entityType
          - eventType
        type: object
  ContractDeleted:
    properties:
      contractDomain:
        description: Domain/namespace of the contract
        type: string
      contractId:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      contractName:
        description: Name of the contract
        type: string
      entityType:
        description: The type of entity that the changelog event is associated with.
        enum:
          - DATA_CONTRACT
        type: string
      eventType:
        description: The type of event that occurred
        enum:
          - DELETED
        type: string
      userId:
        description: Unique identifier for the user in UUID format
        format: uuid
        type: string
    required:
      - contractId
      - entityType
      - eventType
      - contractName
      - contractDomain
    type: object
  ContractDeletedEvent:
    allOf:
      - $ref: '#/definitions/ChangelogEventBase'
      - $ref: '#/definitions/ContractDeleted'
  ContractEnforcementLevel:
    description: Represents an enforcement level associated with a contract.
    properties:
      contractId:
        description: Unique identifier for the associated contract
        format: uuid
        type: string
      createdAt:
        description: Date and time at which the enforcement level was created
        format: date-time
        type: string
      enforcementLevel:
        default: INACTIVE
        description: alert level for contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
        x-enum-varnames:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
      id:
        description: >-
          Unique identifier for the contract enforcement level row in UUID
          format
        format: uuid
        type: string
      updatedAt:
        description: Date and time at which the enforcement level was last updated
        format: date-time
        type: string
    required:
      - id
      - contractId
      - enforcementLevel
      - createdAt
      - updatedAt
    type: object
  ContractInput:
    description: >-
      The metadata and schema for the Contract that is sent to Gable to be
      validated and uploaded. It may or may not contain a valid contract.
    properties:
      contractSpec:
        $ref: '#/definitions/ContractSpec'
        additionalProperties: true
        description: >-
          This is the possible contract specification. If it is valid, it will 
          match the contract specification schema. However, we have to allow 
          for invalid contracts to be passed to Gable even if we reject them.
      enforcementLevel:
        description: alert level for contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
        x-nullable: true
      filePath:
        description: path to the contract file from the root of the git repository
        pattern: '^([^/]+\/)*[^/]+$'
        type: string
      gitHash:
        description: >-
          full length git hash corresponding to the commit this contract was
          added/updated
        maxLength: 40
        minLength: 40
        type: string
      gitRepo:
        description: full link to the git repo this contract lives in
        format: uri
        type: string
      gitUser:
        description: git user who added this contract
        type: string
      id:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      lastEditorEmail:
        description: Email of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorFirstName:
        description: First name of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorGithubHandle:
        description: GitHub handle of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorLastName:
        description: Last name of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorUserId:
        description: >-
          Unique identifier for the user who last edited the contract through
          the UI
        format: uuid
        type: string
        x-nullable: true
      mergedAt:
        description: date time at which the PR that added/updated this contract was merged
        format: date-time
        type: string
      parentRowId:
        description: Unique identifier for a contract's parent row id in UUID format
        format: uuid
        type: string
      reviewers:
        description: >-
          optional list of users who reviewed the merged PR that this contract
          added/updated in
        items:
          type: string
        type: array
      status:
        $ref: '#/definitions/ContractStatus'
      version:
        description: Version of the contract (semantic versioning)
        type: string
    required:
      - id
      - status
      - contractSpec
    type: object
  ContractModifiedEvent:
    allOf:
      - $ref: '#/definitions/ContractCreatedEvent'
      - properties:
          modifications:
            description: >-
              List of changelog modifications in chronological order (newest
              first)
            items: {}
            type: array
        required:
          - modifications
        type: object
  ContractOutput:
    properties:
      contractSpec:
        $ref: '#/definitions/ContractSpec'
        description: contract spec
      contractSpecFieldToViolationStatusMapping:
        additionalProperties:
          items:
            $ref: '#/definitions/ContractViolationType'
          type: array
        description: >-
          Mapping of contract spec fields to a list of the violations currently
          applicable to them
        type: object
      contractSpecRaw:
        description: contract spec raw json
        type: string
      createdAt:
        description: date time at which the contract was created
        format: date-time
        type: string
      enforcementLevel:
        default: INACTIVE
        description: alert level for contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
      filePath:
        description: path to the contract file from the root of the git repository
        type: string
      fileUri:
        description: full link to the file in the repo that contains this contract
        format: uri
        type: string
      gitHash:
        description: >-
          full length git hash corresponding to the commit this contract was
          added/updated
        maxLength: 40
        minLength: 40
        type: string
      gitRepo:
        description: full link to the git repo this contract lives in
        format: uri
        type: string
      gitUser:
        description: git user who added/updated this contract
        type: string
      id:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      lastEditorEmail:
        description: Email of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorFirstName:
        description: First name of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorGithubHandle:
        description: GitHub handle of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorLastName:
        description: Last name of the user who last edited the contract through the UI
        type: string
        x-nullable: true
      lastEditorUserId:
        description: >-
          Unique identifier for the user who last edited the contract through
          the UI
        format: uuid
        type: string
        x-nullable: true
      mergedAt:
        description: date time at which the PR that added/updated this contract was merged
        format: date-time
        type: string
      parentRowId:
        description: Unique identifier for a contract's parent row id in UUID format
        format: uuid
        type: string
      reviewers:
        description: >-
          optional list of users who reviewed the merged PR that this contract
          added/updated in
        items:
          type: string
        type: array
      status:
        $ref: '#/definitions/ContractStatus'
      updatedAt:
        description: date time at which the contract was last updated
        format: date-time
        type: string
      version:
        description: Version of the contract (semantic versioning)
        type: string
      violations:
        description: List of contract violations
        items:
          $ref: '#/definitions/ContractViolationEvent'
        type: array
    required:
      - id
      - status
      - contractSpec
      - contractSpecRaw
      - createdAt
      - updatedAt
      - violations
    type: object
  ContractOutputPaginated:
    description: A paginated list of contracts with total count
    properties:
      contracts:
        items:
          $ref: '#/definitions/ContractOutput'
        type: array
      totalCount:
        description: Total number of contracts matching the search criteria
        type: number
    required:
      - contracts
      - totalCount
    type: object
  ContractSpec:
    properties:
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      dataAssetResourceNameList:
        description: >-
          Optional array of data asset resource names for contracts that apply
          to multiple specific assets. When present, this takes precedence over
          dataAssetResourceName.
        items:
          $ref: '#/definitions/DataAssetResourceName'
        type: array
      doc:
        description: Description of the contract
        type: string
      id:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      name:
        description: >-
          The name of the contract. When combined with the contract namespace,
          it represents a unique name in the Gable platform.  Only alphanumeric
          characters (upper and lowercase) and underscores are allowed
        type: string
      namespace:
        description: >-
          The namespace of the contract. When combined with the contract name,
          it represents a unique name in the Gable platform.  Only alphanumeric
          characters (upper and lowercase) and underscores are allowed
        type: string
      owner:
        description: The owner of the contract
        format: email
        type: string
      restrictPii:
        description: 'If true, fields that look like PII will cause contract violations.'
        type: boolean
      schema:
        items:
          $ref: '#/definitions/GableSchemaContractField'
        type: array
    required:
      - id
      - doc
      - name
      - namespace
      - owner
      - schema
    type: object
  ContractStatus:
    description: status of the contract
    enum:
      - ACTIVE
      - DEPRECATED
      - DRAFT
      - ARCHIVED
    type: string
  ContractSubscription:
    properties:
      dataContractId:
        description: Unique identifier of the contract
        format: uuid
        type: string
      email:
        description: The email address of the subscriber if provided
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      githubHandle:
        description: The GitHub handle of the subscriber if provided
        type: string
      id:
        description: The unique identifier of the subscription
        format: uuid
        type: string
      slackChannel:
        description: The Slack channel where contract violations will be sent
        type: string
      userId:
        description: The unique identifier of the user
        format: uuid
        type: string
    required:
      - id
      - dataContractId
    type: object
  ContractViolation:
    properties:
      actualValue:
        description: actual value of the field
        type: string
      contractDomain:
        description: Domain of the contract
        type: string
      contractFieldName:
        description: Field of the contract where violation occured
        type: string
      contractId:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      contractName:
        description: Name of the contract
        type: string
      contractVersion:
        description: Version of the contract
        type: string
      dataAssetFieldProfileId:
        description: Unique identifier for the data asset field in UUID format
        format: uuid
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      entityType:
        description: The type of entity that the changelog event is associated with.
        enum:
          - DATA_CONTRACT
        type: string
      eventType:
        description: The type of event that occurred
        enum:
          - VIOLATION
        type: string
      expectedValue:
        description: Expected value of the field
        type: string
      prLink:
        description: Link to the pull request associated with the violation
        type: string
      userId:
        description: Unique identifier for the user in UUID format
        format: uuid
        type: string
      violationType:
        $ref: '#/definitions/ContractViolationType'
        description: Type of violation
    required:
      - contractId
      - contractVersion
      - violationType
      - dataAssetResourceName
      - contractFieldName
      - entityType
      - expectedValue
      - actualValue
    type: object
  ContractViolationCheckedResponse:
    properties:
      checkedAt:
        description: The datetime the violation check was performed
        format: date-time
        type: string
      violation_state:
        enum:
          - violation
          - no_violation
        type: string
      violations:
        items:
          properties:
            actual:
              type: string
            expected:
              type: string
            field:
              type: string
            fieldType:
              type: string
            message:
              type: string
            violationType:
              $ref: '#/definitions/ContractViolationType'
          required:
            - message
            - field
            - fieldType
            - violationType
            - expected
          type: object
        type: array
    required:
      - violation_state
    type: object
  ContractViolationEvent:
    allOf:
      - $ref: '#/definitions/ChangelogEventBase'
      - $ref: '#/definitions/ContractViolation'
  ContractViolationType:
    enum:
      - MISSING_REQUIRED_PROPERTY
      - INCOMPATIBLE_TYPE
      - GREATER_THAN
      - GREATER_THAN_OR_EQUAL_TO
      - LESS_THAN
      - LESS_THAN_OR_EQUAL_TO
      - IS_NULL
      - IS_NULL_THRESHOLD
      - IS_NOT_EMPTY
      - LENGTH
      - LENGTH_GREATER_THAN
      - LENGTH_GREATER_THAN_OR_EQUAL_TO
      - LENGTH_LESS_THAN
      - LENGTH_LESS_THAN_OR_EQUAL_TO
      - MISSING_DATA_ASSET
      - PII_DETECTED
    type: string
  ContractViolationUncheckedResponse:
    properties:
      violation_state:
        enum:
          - unchecked
        type: string
    required:
      - violation_state
    type: object
  CreateChangelogEventRequest: {}
  CreateChangelogEventResponse:
    properties:
      changelogEventIds:
        description: List of changelog event IDs that were create
        items:
          format: uuid
          type: string
        type: array
    required:
      - changelogEventIds
    type: object
  CreateContractEnforcementLevelRequest:
    description: Represents an enforcement level associated with a contract.
    properties:
      contractId:
        description: Unique identifier for the associated contract
        format: uuid
        type: string
      enforcementLevel:
        description: The enforcement level for the contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
        x-enum-varnames:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
    required:
      - contractId
      - enforcementLevel
    type: object
  CreateContractSubscriptionRequest:
    properties:
      dataContractId:
        description: Unique identifier of the contract
        format: uuid
        type: string
      email:
        description: The email address of the subscriber if provided
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      githubHandle:
        description: The GitHub handle of the subscriber
        type: string
      slackChannel:
        description: The Slack channel where contract violations will be sent
        type: string
      userId:
        description: The unique identifier of the user
        format: uuid
        type: string
    required:
      - dataContractId
    type: object
  CreateDataAssetProfileRequest:
    properties:
      darn:
        description: the Data Asset Resource Name (DARN) of the data asset
        type: string
      data_asset_id:
        description: ID for the data asset
        format: uuid
        type: string
      fieldsToProfilesMapping:
        $ref: '#/definitions/DataAssetFieldsToProfilesMapping'
        description: >-
          The mapping of data asset fields to data asset field profiles
          associated with the data asset
    required:
      - darn
      - data_asset_id
      - fieldsToProfilesMapping
    type: object
  CreateDataAssetProfileResponse:
    properties:
      fieldsToProfilesMapping:
        $ref: '#/definitions/DataAssetFieldsToProfilesMapping'
    required:
      - fieldsToProfilesMapping
    type: object
  CreateOrUpdateDataAssetFieldRequest:
    properties:
      changeDescription:
        description: >-
          A detailed LLM-generated description of the changes made to the data
          asset field.
        type: string
      changeSummary:
        description: >-
          A very brief LLM-generated summary of the changes made to the data
          asset field.
        type: string
      description:
        description: A brief description of the field.
        type: string
      name:
        description: The name of the field.
        type: string
      nativeDataType:
        description: The native data type of the field in the source system.
        type: string
      order:
        description: The order or position of the field in the data asset.
        type: integer
      parentFieldId:
        description: 'For nested fields, this is the ID of the parent field.'
        format: uuid
        type: string
      type:
        additionalProperties: true
        description: >-
          A custom or specific attribute to represent the Gable type of the
          field.
        type: object
    required:
      - name
      - nativeDataType
      - type
    type: object
  CreateOrUpdateDataAssetRequest:
    allOf:
      - $ref: '#/definitions/DataAssetInput'
  CreateOrUpdateDataAssetResponse:
    allOf:
      - $ref: '#/definitions/DataAssetOutput'
  CreateOrUpdateDataAssetsRequest:
    items:
      $ref: '#/definitions/DataAssetInput'
    type: array
  CreateOrUpdateDataAssetsResponse:
    items:
      $ref: '#/definitions/DataAssetOutput'
    type: array
  CreateTelemetryRequest:
    properties:
      data:
        additionalProperties: true
        description: The data payload of the telemetry event.
        type: object
      id:
        description: >-
          The unique identifier of the telemetry event. If not provided, a
          random UUID will be generated.
        format: uuid
        type: string
      type:
        $ref: '#/definitions/TelemetryType'
    required:
      - data
      - type
    type: object
  CreateTelemetryResponse:
    properties:
      id:
        description: The id of the created telemetry event
        format: uuid
        type: string
    required:
      - id
    type: object
  CreateWebhookRequest:
    properties:
      headers:
        additionalProperties:
          description: A string header value
          type: string
        description: A map of headers
        type: object
      name:
        description: The webhook name
        type: string
      url:
        description: The URL that the webhooks will be sent to
        type: string
    required:
      - url
      - name
    type: object
  CreateWebhookResponse:
    properties:
      headers:
        additionalProperties:
          description: A string header value
          type: string
        description: A map of headers
        type: object
      id:
        description: The id of a created webhook
        type: string
      name:
        description: The name of a created webhook
        type: string
      url:
        description: The url of a created webhook
        type: string
    required:
      - id
      - url
      - name
    type: object
  CrossServiceComponent:
    description: The component for the cross service components.
    type: object
  CrossServiceComponentsResponse:
    description: The response for the cross service components.
    properties:
      components:
        items:
          $ref: '#/definitions/CrossServiceComponent'
        type: array
      edge_mappings:
        items:
          $ref: '#/definitions/EdgeMapping'
        type: array
    required:
      - components
      - edge_mappings
    type: object
  CrossServiceDataStore:
    additionalProperties: false
    description: Request to upload non code based BYOL data
    properties:
      external_component_id:
        description: The provided external ID for the data store
        type: string
      run_id:
        description: The version ID for this data store
        type: string
      schema:
        additionalProperties: false
        properties:
          fields:
            items:
              additionalProperties: false
              properties:
                name:
                  description: The name of the field
                  type: string
                type:
                  description: The type of the field
                  type: string
              required:
                - name
                - type
              type: object
            minItems: 1
            type: array
        required:
          - fields
        type: object
      table_metadata:
        additionalProperties: false
        properties:
          extras:
            additionalProperties:
              type: string
            description: Additional metadata for the data store.
            type: object
          table_name:
            description: The name of the data store
            type: string
          type:
            description: The type of data store
            enum:
              - dynamodb
              - redis
              - elasticache
              - database
              - kafka
              - other
            type: string
        required:
          - type
          - table_name
        type: object
      type:
        const: DATA_STORE
        description: The type of data store
        type: string
    required:
      - external_component_id
      - run_id
      - type
      - table_metadata
      - schema
    type: object
  CrossServiceDataStoreApiRequest:
    additionalProperties: false
    description: API request for uploading data store metadata
    properties:
      external_component_id:
        description: The provided external ID for the data store
        type: string
      is_final_chunk:
        description: Whether this is the final chunk for the run. Controls job completion.
        type: boolean
      job_id:
        description: >-
          The job ID for a continuing chunked upload. Required on continuation
          chunks.
        type: string
      run_id:
        description: The ID of the run that this data belongs to
        type: string
      schema:
        additionalProperties: false
        properties:
          fields:
            items:
              additionalProperties: false
              properties:
                name:
                  description: The name of the field
                  type: string
                type:
                  description: The type of the field
                  type: string
              required:
                - name
                - type
              type: object
            minItems: 1
            type: array
        required:
          - fields
        type: object
      table_metadata:
        additionalProperties: false
        properties:
          extras:
            additionalProperties:
              type: string
            description: Additional metadata for the data store.
            type: object
          table_name:
            description: The name of the data store
            type: string
          type:
            description: The type of data store
            enum:
              - dynamodb
              - redis
              - elasticache
              - database
              - kafka
              - other
            type: string
        required:
          - type
          - table_name
        type: object
      type:
        description: The type of data store
        enum:
          - DATA_STORE
        type: string
      upload_context:
        $ref: '#/definitions/PostScaStartRunRequest'
    required:
      - run_id
      - external_component_id
      - type
      - table_metadata
      - schema
    type: object
  CrossServiceEdge:
    additionalProperties: false
    properties:
      destination:
        additionalProperties: false
        properties:
          component_id:
            description: Id of the destination component
            type: string
          destination_component_name:
            description: Name of the destination component
            type: string
          ingress_id:
            description: Id of the destination entity
            type: string
          payload_name:
            description: The name of the payload destination
            type: string
          type:
            description: the type of edge connection
            type: string
        required:
          - destination_component_name
          - type
        type: object
      field_mappings:
        items:
          additionalProperties: false
          properties:
            destination_field:
              type: string
            notes:
              type: string
            source_field:
              type: string
          required:
            - source_field
            - destination_field
          type: object
        minItems: 1
        type: array
      run_id:
        description: The ID of the run that this data belongs to
        type: string
      source:
        additionalProperties: false
        properties:
          component_id:
            description: Id of the source component
            type: string
          egress_id:
            description: Id of the source entity
            type: string
          payload_name:
            description: The name of the payload source
            type: string
          source_component_name:
            description: Name of the source component
            type: string
          type:
            description: the type of edge connection
            type: string
        required:
          - source_component_name
          - type
        type: object
      type:
        const: EDGE
        type: string
    required:
      - type
      - field_mappings
      - source
      - destination
    type: object
  CrossServiceEdgeApiRequest:
    additionalProperties: false
    description: API request for uploading edge definitions
    properties:
      destination:
        additionalProperties: false
        properties:
          component_id:
            description: >-
              Id of the destination component (optional, for backward
              compatibility)
            type: string
          destination_component_name:
            description: Name of the destination component
            type: string
          ingress_id:
            description: Id of the destination entity
            type: string
          payload_name:
            description: The name of the payload destination
            type: string
          type:
            description: the type of edge connection
            type: string
        required:
          - destination_component_name
          - type
        type: object
      field_mappings:
        items:
          additionalProperties: false
          properties:
            destination_field:
              type: string
            notes:
              type: string
            source_field:
              type: string
          required:
            - source_field
            - destination_field
          type: object
        minItems: 1
        type: array
      is_final_chunk:
        description: Whether this is the final chunk for the run. Controls job completion.
        type: boolean
      job_id:
        description: >-
          The job ID for a continuing chunked upload. Required on continuation
          chunks.
        type: string
      run_id:
        description: The ID of the run that this data belongs to
        type: string
      source:
        additionalProperties: false
        properties:
          component_id:
            description: 'Id of the source component (optional, for backward compatibility)'
            type: string
          egress_id:
            description: Id of the source entity
            type: string
          payload_name:
            description: The name of the payload source
            type: string
          source_component_name:
            description: Name of the source component
            type: string
          type:
            description: the type of edge connection
            type: string
        required:
          - source_component_name
          - type
        type: object
      type:
        enum:
          - EDGE
        type: string
      upload_context:
        $ref: '#/definitions/PostScaStartRunRequest'
    required:
      - run_id
      - type
      - field_mappings
      - source
      - destination
    type: object
  DataAsset:
    properties:
      contractId:
        description: The contract ID associated with the data asset.
        type: string
      createdAt:
        description: The timestamp of when the data asset was initially created.
        format: date-time
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      deletedAt:
        description: >-
          The timestamp indicating when the data asset was deleted, if
          applicable.
        format: date-time
        type: string
      domain:
        description: >-
          The domain to which the data asset belongs. Previously referred to as
          "namespace."
        type: string
      id:
        description: The unique identifier for the data asset.
        format: uuid
        type: string
      path:
        description: >-
          The name or path identifying the data asset. Previously referred to as
          "name."
        type: string
      type:
        $ref: '#/definitions/SourceType'
      updatedAt:
        description: The timestamp of the most recent update to the data asset.
        format: date-time
        type: string
      versionDetail:
        $ref: '#/definitions/DataAssetVersion'
        description: The version details of the data asset.
    required:
      - id
      - dataAssetResourceName
      - domain
      - path
      - type
      - versionDetail
      - createdAt
      - updatedAt
    type: object
  DataAssetField:
    properties:
      createdAt:
        description: The timestamp when the field was created.
        format: date-time
        type: string
      dataAssetVersionId:
        description: The identifier of the data asset version this field belongs to.
        format: uuid
        type: string
      deletedAt:
        description: The timestamp when the field was marked as deleted.
        format: date-time
        type: string
      description:
        description: A brief description of the field.
        type: string
      displayType:
        description: The display name of the field.
        type: string
      id:
        description: The unique identifier for the data asset field.
        format: uuid
        type: string
      name:
        description: The name of the field.
        type: string
      nativeDataType:
        description: The native data type of the field in the source system.
        type: string
      order:
        description: The order or position of the field in the data asset.
        type: integer
      parentFieldId:
        description: 'For nested fields, this is the ID of the parent field.'
        format: uuid
        type: string
      piiCategory:
        $ref: '#/definitions/PiiCategoryEnum'
      profile:
        $ref: '#/definitions/DataAssetFieldProfile'
      type:
        additionalProperties: true
        description: >-
          A custom or specific attribute to represent the Gable type of the
          field.
        type: object
      updatedAt:
        description: The timestamp when the field was last updated.
        format: date-time
        type: string
    required:
      - id
      - dataAssetVersionId
      - name
      - nativeDataType
      - displayType
      - createdAt
      - updatedAt
      - type
    type: object
  DataAssetFieldProfile: {}
  DataAssetFieldProfileBase:
    description: generic data asset field profile
    properties:
      id:
        description: Unique identifier for the data asset field profile in UUID format
        format: uuid
        type: string
      nullCount:
        description: Number of nulls (only defined if nullable is true)
        type: integer
      nullable:
        description: Whether the data is nullable
        type: boolean
      sampledDate:
        description: The date the sample was taken
        format: date-time
        type: string
      sampledFiles:
        description: List of sampled files
        items:
          type: string
        minItems: 1
        type: array
      sampledRecordsCount:
        description: Number of samples
        type: integer
      samplingParameters:
        $ref: '#/definitions/S3SamplingParameters'
    required:
      - sampledRecordsCount
      - nullable
      - sampledFiles
      - samplingParameters
    type: object
  DataAssetFieldProfileBoolean:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for boolean
        properties:
          falseCount:
            description: Number of false values
            type: integer
          profileType:
            enum:
              - boolean
            type: string
          trueCount:
            description: Number of true values
            type: integer
        required:
          - profileType
          - trueCount
          - falseCount
        type: object
  DataAssetFieldProfileList:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for string
        properties:
          maxLength:
            description: Maximum length
            type: integer
          minLength:
            description: Minimum length
            type: integer
          profileType:
            enum:
              - list
            type: string
        required:
          - profileType
          - minLength
          - maxLength
        type: object
  DataAssetFieldProfileNumber:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for number
        properties:
          max:
            description: Maximum value
            type: number
          min:
            description: Minimum value
            type: number
          profileType:
            enum:
              - number
            type: string
          uniqueCount:
            description: Number of unique values
            type: integer
        required:
          - profileType
          - uniqueCount
          - min
          - max
        type: object
  DataAssetFieldProfileOther:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for unspecified type
        properties:
          profileType:
            enum:
              - other
            type: string
        required:
          - profileType
        type: object
  DataAssetFieldProfileString:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for string
        properties:
          emptyCount:
            description: Number of empty values
            type: integer
          maxLength:
            description: Maximum length
            type: integer
          minLength:
            description: Minimum length
            type: integer
          profileType:
            enum:
              - string
            type: string
          uniqueCount:
            description: Number of unique values
            type: integer
        required:
          - profileType
          - uniqueCount
          - minLength
          - maxLength
          - emptyCount
        type: object
  DataAssetFieldProfileTemporal:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for temporal
        properties:
          format:
            description: Temporal format
            type: string
          max:
            description: Maximum value
            format: date-time
            type: string
          min:
            description: Minimum value
            format: date-time
            type: string
          profileType:
            enum:
              - temporal
            type: string
        required:
          - profileType
          - min
          - max
          - format
        type: object
  DataAssetFieldProfileUUID:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for a UUID
        properties:
          emptyCount:
            description: Number of empty values
            type: integer
          format:
            description: UUID format
            type: string
          maxLength:
            description: Maximum length
            type: integer
          minLength:
            description: Minimum length
            type: integer
          profileType:
            enum:
              - uuid
            type: string
          uniqueCount:
            description: Number of unique values
            type: integer
          uuidVersion:
            description: UUID version
            type: integer
        required:
          - profileType
          - uniqueCount
          - minLength
          - maxLength
          - emptyCount
        type: object
  DataAssetFieldProfileUnion:
    allOf:
      - $ref: '#/definitions/DataAssetFieldProfileBase'
      - description: Data asset field profile for union
        properties:
          profileType:
            enum:
              - union
            type: string
          profiles:
            description: List of constituent data asset field profiles
            items:
              $ref: '#/definitions/DataAssetFieldProfile'
            type: array
        required:
          - profileType
          - profiles
        type: object
  DataAssetFieldsToProfilesMapping:
    additionalProperties:
      $ref: '#/definitions/DataAssetFieldProfile'
    description: Mapping of a data asset's fields to their respective data profiles
    type: object
  DataAssetInput:
    properties:
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      description:
        description: A brief description of this particular version of the data asset.
        type: string
      domain:
        description: The domain or category to which the data asset belongs.
        type: string
      fields:
        description: The fields of the data asset.
        items:
          $ref: '#/definitions/CreateOrUpdateDataAssetFieldRequest'
        type: array
      path:
        description: The name or path identifying the data asset.
        type: string
      prLink:
        description: Link to the PR that may have added or edited the data assets
        example: 'https://github.com/fakeorg/fakerepo/pull/123'
        type: string
      rawSchema:
        description: >-
          The raw schema of the data asset from the source system. This can be
          the contents of a schema file or data from the information  schema of
          a database. This is used to regenerate the schema of the data asset if
          needed.
        type: string
      type:
        $ref: '#/definitions/SourceType'
    required:
      - dataAssetResourceName
      - domain
      - path
      - type
      - fields
    type: object
  DataAssetOutput:
    properties:
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      id:
        description: ID of the created or updated data asset
        format: uuid
        type: string
      newVersionCreated:
        description: Indicates whether a new version was created
        type: boolean
      versionId:
        description: Version ID of the now current data asset
        format: uuid
        type: string
    required:
      - id
      - dataAssetResourceName
      - versionId
      - newVersionCreated
    type: object
  DataAssetResourceName:
    description: >-
      The unique identifier of the data asset. It follows the pattern
      '{data_asset_type}://{data_asset_source}:{data_asset_name}'
    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
      _\./-\{\}\-]+$
    type: string
  DataAssetSearchResult:
    DataAssetSearchResult: null
    properties:
      contractId:
        description: The contract ID associated with the data asset.
        type: string
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      domain:
        description: >-
          The domain to which the data asset belongs. Previously referred to as
          "namespace."
        type: string
      id:
        description: The unique identifier for the data asset.
        format: uuid
        type: string
      path:
        description: >-
          The name or path identifying the data asset. Previously referred to as
          "name."
        type: string
      type:
        $ref: '#/definitions/SourceType'
      updatedAt:
        description: The timestamp of the most recent update to the data asset.
        format: date-time
        type: string
    required:
      - id
      - dataAssetResourceName
      - domain
      - path
      - type
      - updatedAt
    type: object
  DataAssetSearchResultPaginated:
    properties:
      data:
        items:
          $ref: '#/definitions/DataAssetSearchResult'
        type: array
      totalCount:
        type: number
    type: object
  DataAssetVersion:
    properties:
      createdAt:
        description: The timestamp when this version of the data asset was created.
        format: date-time
        type: string
      dataAssetId:
        description: The identifier of the parent data asset to which this version belongs.
        format: uuid
        type: string
      deletedAt:
        description: >-
          The timestamp when this version of the data asset was marked as
          deleted, if applicable.
        format: date-time
        type: string
      description:
        description: A brief description of this particular version of the data asset.
        type: string
      fields:
        description: The fields of the data asset.
        items:
          $ref: '#/definitions/DataAssetField'
        type: array
      id:
        description: The unique identifier for the version of the data asset.
        format: uuid
        type: string
      rawSchema:
        description: >-
          The raw schema of the data asset from the source system. This can be
          the contents of a schema file or data from the information  schema of
          a database. This is used to regenerate the schema of the data asset if
          needed.
        type: string
      updatedAt:
        description: The timestamp when this version of the data asset was last updated.
        format: date-time
        type: string
      violations:
        description: List of contract violations associated with the data asset version.
        items:
          $ref: '#/definitions/ContractViolation'
        type: array
    required:
      - id
      - dataAssetId
      - fields
      - createdAt
      - updatedAt
      - violations
    type: object
  DataAssetsCheckComplianceRequest:
    properties:
      assets:
        description: Array of data assets to check compliance for
        items:
          $ref: '#/definitions/ResolvedDataAsset'
        type: array
      includeUnchangedAssets:
        default: false
        description: >-
          If true, the data assets sent that have not changed compared with the
          stored assets will be checked for contract violations. If false, the
          only data assets that have changed compared with the stored assets
          will be checked for contract violations.
        type: boolean
      prLink:
        description: >-
          (optional) Link to the pull request the proposed changes to the data
          asset are part of
        type: string
      responseType:
        description: >-
          Determines the format of the response from the API. Specifying
          'DETAILED' will return a detailed JSON object for each data asset
          checked. If 'COMMENT_MARKDOWN' is specified, the response will be a
          markdown string intended to be used as a comment in a pull request.
        enum:
          - DETAILED
          - COMMENT_MARKDOWN
        type: string
    required:
      - assets
      - responseType
    type: object
  DataCount:
    properties:
      count:
        description: Total number of rows
        type: number
    required:
      - count
    type: object
  DataFlowBoundary:
    properties:
      friendly_name:
        description: Optional user-defined friendly name for the ingress/egress.
        type: string
      id:
        description: The unique identifier for the ingress/egress.
        format: uuid
        type: string
      kind:
        description: The kind of the ingress/egress.
        type: string
      payloadName:
        description: The name of the ingress/egress node.
        type: string
      schema:
        $ref: '#/definitions/GableSchemaStruct'
        description: The schema of the ingress/egress.
      signatureName:
        description: >-
          The name of the package, class, or method that the ingress/egress
          point is associated with.
        type: string
    required:
      - id
      - kind
      - schema
    type: object
  DataFlowByoPathDeletedEvent:
    allOf:
      - properties:
          effective_since_commit_sha:
            description: The commit SHA that the BYO path deletion should apply from.
            type: string
          event_type:
            enum:
              - DATA_FLOW_BYO_PATH_DELETED
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          path_id:
            description: Stable server-issued path identifier.
            format: uuid
            type: string
          reason:
            description: The reason for the event
            type: string
        required:
          - event_type
          - path_id
        type: object
    description: Lineage data flow BYO path deleted event
    type: object
    x-discriminator-value: DATA_FLOW_BYO_PATH_DELETED
    x-ms-discriminator-value: DATA_FLOW_BYO_PATH_DELETED
  DataFlowEdgeAddedEvent:
    allOf:
      - properties:
          branch_name:
            description: Optional branch scope for this event.
            type: string
          destination:
            additionalProperties: false
            properties:
              component_id:
                description: Destination component ID for edge matching.
                format: uuid
                type: string
              destination_component_name:
                description: Destination component name.
                type: string
              effective_since_commit_sha:
                description: Optional destination-side effective commit SHA.
                type: string
              ingress_id:
                description: Optional destination ingress ID.
                type: string
              payload_name:
                description: Destination payload name used for edge matching.
                type: string
              type:
                description: Destination endpoint type.
                type: string
            required:
              - component_id
              - destination_component_name
              - payload_name
              - type
            type: object
          event_type:
            enum:
              - DATA_FLOW_EDGE_ADDED
            type: string
          field_mappings:
            items:
              additionalProperties: false
              properties:
                destination_field:
                  type: string
                notes:
                  type: string
                source_field:
                  type: string
              required:
                - source_field
                - destination_field
              type: object
            minItems: 1
            type: array
          job_trigger:
            description: Optional trigger scope for this event.
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          reason:
            description: The reason for the event.
            type: string
          source:
            additionalProperties: false
            properties:
              component_id:
                description: Source component ID for edge matching.
                format: uuid
                type: string
              effective_since_commit_sha:
                description: Optional source-side effective commit SHA.
                type: string
              egress_id:
                description: Optional source egress ID.
                type: string
              payload_name:
                description: Source payload name used for edge matching.
                type: string
              source_component_name:
                description: Source component name.
                type: string
              type:
                description: Source endpoint type.
                type: string
            required:
              - component_id
              - source_component_name
              - payload_name
              - type
            type: object
        required:
          - event_type
          - source
          - destination
          - field_mappings
        type: object
    description: Lineage data flow edge added event
    type: object
    x-discriminator-value: DATA_FLOW_EDGE_ADDED
    x-ms-discriminator-value: DATA_FLOW_EDGE_ADDED
  DataFlowEdgeDeletedEvent:
    allOf:
      - properties:
          edge_id:
            description: Stable server-issued edge identifier to hide.
            type: string
          event_type:
            enum:
              - DATA_FLOW_EDGE_DELETED
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          reason:
            description: The reason for the event.
            type: string
        required:
          - event_type
          - edge_id
        type: object
    description: Lineage data flow edge deleted event
    type: object
    x-discriminator-value: DATA_FLOW_EDGE_DELETED
    x-ms-discriminator-value: DATA_FLOW_EDGE_DELETED
  DataFlowPathAddedEvent:
    allOf:
      - properties:
          effective_since_commit_sha:
            description: The commit SHA that the path should apply from.
            type: string
          event_type:
            enum:
              - DATA_FLOW_PATH_ADDED
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          path:
            $ref: '#/definitions/StaticAnalysisDataFlowPath'
          payload_name:
            description: Deterministic payload name for a path if id is not available.
            type: string
          reason:
            description: The reason for the event
            type: string
        required:
          - event_type
          - path
        type: object
    description: Lineage data flow path added event
    type: object
    x-discriminator-value: DATA_FLOW_PATH_ADDED
    x-ms-discriminator-value: DATA_FLOW_PATH_ADDED
  DataFlowPathSuppressedEvent:
    allOf:
      - properties:
          effective_since_commit_sha:
            description: The commit SHA that the path should apply from.
            type: string
          event_type:
            enum:
              - DATA_FLOW_PATH_SUPPRESSED
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          path_id:
            description: Stable server-issued path identifier.
            format: uuid
            type: string
          reason:
            description: The reason for the event
            type: string
        required:
          - event_type
        type: object
    description: Lineage data flow path suppressed event
    type: object
    x-discriminator-value: DATA_FLOW_PATH_SUPPRESSED
    x-ms-discriminator-value: DATA_FLOW_PATH_SUPPRESSED
  DataFlowPathUnsuppressedEvent:
    allOf:
      - properties:
          effective_since_commit_sha:
            description: The commit SHA that the path should apply from.
            type: string
          event_type:
            enum:
              - DATA_FLOW_PATH_UNSUPPRESSED
            type: string
          namespace:
            description: Optional namespace scope for this event.
            type: string
          path_id:
            description: Stable server-issued path identifier.
            format: uuid
            type: string
          reason:
            description: The reason for the event
            type: string
        required:
          - event_type
        type: object
    description: Lineage data flow path un-suppressed event
    type: object
    x-discriminator-value: DATA_FLOW_PATH_UNSUPPRESSED
    x-ms-discriminator-value: DATA_FLOW_PATH_UNSUPPRESSED
  DataStoreComponent:
    description: The data store component for the cross service components.
    properties:
      collectionMechanism:
        description: The mechanism used to collect data for this component (SCA or BYOL).
        enum:
          - SCA
          - BYOL
        type: string
      friendly_name:
        description: Optional user-defined friendly name for the component.
        type: string
      id:
        description: The unique identifier for the component.
        format: uuid
        type: string
      metadata:
        allOf:
          - $ref: '#/definitions/StaticAnalysisCodeMetadata'
          - properties:
              extras:
                additionalProperties: {}
                description: Additional metadata for the data store.
                type: object
              name:
                description: The name of the data store.
                type: string
              type:
                description: The type of the data store.
                type: string
            type: object
      runId:
        description: The ID of the run that the component belongs to.
        type: string
      schema:
        properties:
          fields:
            items:
              properties:
                name:
                  type: string
                type:
                  type: string
              required:
                - name
                - type
              type: object
            type: array
        required:
          - fields
        type: object
      type:
        const: DATA_STORE
        description: The type of the component.
        type: string
    required:
      - id
      - type
      - metadata
      - schema
    type: object
  DeleteActionRequest:
    properties:
      actionId:
        description: The action id to delete
        type: string
    required:
      - actionId
    type: object
  DeleteActionResponse:
    properties:
      actionId:
        description: The id of the action which was deleted
        type: string
    required:
      - actionId
    type: object
  DeleteContractResponse:
    properties:
      message:
        description: Success message
        type: string
    type: object
  DeleteDataAssetsRequest:
    properties:
      dataAssetsResourceNames:
        description: The unique identifiers of the data asset
        items:
          type: string
        type: array
    required:
      - dataAssetsResourceNames
    type: object
  DeleteDataAssetsResponse:
    properties:
      message:
        description: Success message
        type: string
    type: object
  DeleteUserRequest:
    properties:
      email:
        description: 'The email address of the user, which is the primary ID in Gable'
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
    required:
      - email
    type: object
  DestinationAddedEvent:
    properties:
      diff:
        description: Details of the modified destination.
        properties:
          destinationName:
            description: The name of the destination being added.
            type: string
          type:
            $ref: '#/definitions/ActionDestinationType'
            description: The type of the destination being added.
        required:
          - destinationName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - DESTINATION_ADDED
        type: string
    required:
      - eventType
      - diff
    type: object
  DestinationDeletedEvent:
    properties:
      diff:
        description: Details of the modified destination.
        properties:
          destinationName:
            description: The name of the destination being deleted.
            type: string
          type:
            $ref: '#/definitions/ActionDestinationType'
            description: The type of the destination being deleted.
        required:
          - destinationName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - DESTINATION_DELETED
        type: string
    required:
      - eventType
      - diff
    type: object
  DestinationModifiedEvent:
    properties:
      diff:
        description: Details of the modified destination.
        properties:
          description:
            description: A detailed description of the change.
            type: string
          newValues:
            description: Names of the destination after the change.
            items:
              type: string
            type: array
          previousValues:
            description: Names of the destination before the change.
            items:
              type: string
            type: array
          summary:
            description: A very brief summary of the change for the destination.
            type: string
          type:
            $ref: '#/definitions/ActionDestinationType'
            description: The type of the destination being modified.
        required:
          - type
          - previousValue
          - newValue
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - DESTINATION_MODIFIED
        type: string
    required:
      - eventType
      - diff
    type: object
  DiffCodeAnchor:
    description: >-
      A code anchor with file and line location, used in diff contexts.
      Flattened from StaticAnalysisCodeAnchor.
    properties:
      anchorId:
        description: Unique identifier for the code anchor.
        type: string
      columnEnd:
        description: Ending column number.
        type: integer
      columnStart:
        description: Starting column number.
        type: integer
      file:
        description: Relative file path in the repo.
        type: string
      lineEnd:
        description: Ending line number.
        type: integer
      lineStart:
        description: Starting line number.
        type: integer
    required:
      - anchorId
      - file
      - lineStart
    type: object
  DiffStatus:
    description: >-
      Status of a diff element indicating whether it was added, removed,
      modified, or unchanged between two versions.
    enum:
      - added
      - removed
      - modified
      - unchanged
    type: string
  DimensionResult:
    description: Comparison result for a single dimension.
    properties:
      base:
        description: Base value.
        type: string
      baseCount:
        description: Count in base version.
        type: integer
      compare:
        description: Compare value.
        type: string
      compareCount:
        description: Count in compare version.
        type: integer
      mismatches:
        description: Count of mismatches.
        type: integer
      missingCount:
        description: Count of missing items.
        type: integer
      reorderedCount:
        description: Count of reordered items.
        type: integer
      status:
        $ref: '#/definitions/StatusEnum'
    required:
      - status
      - base
      - compare
      - baseCount
      - compareCount
      - missingCount
      - reorderedCount
      - mismatches
    type: object
  EdgeMapping:
    description: The edge mapping for the cross service components.
    properties:
      crossServiceFieldMappings:
        description: The field mappings for the cross service components.
        items:
          properties:
            destinationField:
              type: string
            sourceField:
              type: string
          required:
            - sourceField
            - destinationField
          type: object
        type: array
      destination:
        description: The destination of the edge.
        properties:
          componentId:
            description: The id of the component.
            type: string
          destinationComponentName:
            description: The name of the destination component.
            type: string
          ingressId:
            description: The id of the destination ingress.
            type: string
          payloadName:
            description: The payload name of the destination ingress.
            type: string
          type:
            description: The type of the destination connection.
            example: ingress
            type: string
        required:
          - destinationComponentName
          - type
        type: object
      id:
        description: The id of the edge.
        type: string
      source:
        description: The source of the edge.
        properties:
          componentId:
            description: The id of the component.
            type: string
          egressId:
            description: The id of the source egress.
            type: string
          payloadName:
            description: The payload name of the source egress.
            type: string
          sourceComponentName:
            description: The name of the source component.
            type: string
          type:
            description: The type of the source connection.
            example: egress
            type: string
        required:
          - sourceComponentName
          - type
        type: object
      type:
        const: EDGE
        type: string
    required:
      - id
      - crossServiceFieldMappings
      - source
      - destination
      - type
    type: object
  Egress:
    allOf:
      - $ref: '#/definitions/DataFlowBoundary'
  EgressInfo:
    description: Output interface details for a path.
    properties:
      id:
        description: Interface identifier.
        type: string
      payloadName:
        description: 'Payload name (e.g., "EventStream").'
        type: string
      schemaName:
        description: Schema name.
        type: string
      signatureName:
        description: Signature name.
        type: string
    required:
      - id
      - payloadName
      - signatureName
      - schemaName
    type: object
  EgressSchema:
    additionalProperties: false
    description: EgressSchema merge-key wrapper
    properties:
      data:
        $ref: '#/definitions/EgressSchemaMergeKey'
      kind:
        const: EgressSchema
        type: string
    required:
      - kind
      - data
    type: object
  EgressSchemaMergeKey:
    description: Versioned EgressSchema merge-key (version-level union)
    type: object
  EgressSchemaV0:
    additionalProperties: false
    description: Legacy DARN-based egress schema key
    properties:
      darn:
        $ref: '#/definitions/DataAssetResourceName'
      version:
        const: V0
        type: string
    required:
      - version
      - darn
    type: object
  EgressSchemaV1:
    additionalProperties: false
    description: 'Structured, DARN-free egress schema key'
    properties:
      egress_callsite_hints:
        additionalProperties: false
        properties:
          column:
            minimum: 0
            type: integer
            x-nullable: true
          file_path:
            type: string
            x-nullable: true
          function:
            type: string
            x-nullable: true
          line:
            minimum: 0
            type: integer
            x-nullable: true
          package:
            type: string
            x-nullable: true
          service:
            type: string
            x-nullable: true
        type: object
      egress_callsite_id:
        description: Stable identifier of the egress callsite (tooling/build-derived).
        type: string
      env:
        additionalProperties: false
        properties:
          language:
            type: string
            x-nullable: true
          runtime:
            type: string
            x-nullable: true
          tool:
            type: string
            x-nullable: true
          tool_version:
            type: string
            x-nullable: true
        type: object
      type_fqn:
        description: Fully-qualified logical type name.
        type: string
      type_namespace:
        type: string
        x-nullable: true
      version:
        const: V1
        type: string
    required:
      - version
      - egress_callsite_id
      - type_fqn
    type: object
  EncryptedResponse:
    description: A response payload that has been encrypted
    properties:
      encrypted_payload:
        description: The encrypted payload
        type: string
    required:
      - encrypted_payload
    type: object
  ErrorResponse:
    properties:
      id:
        type: number
      message:
        type: string
      title:
        type: string
    required:
      - message
    type: object
  ErrorResponseDeprecated:
    properties:
      id:
        type: number
      message:
        type: string
      success:
        type: boolean
      title:
        type: string
    required:
      - message
    type: object
  EventEnvelope:
    additionalProperties: false
    properties:
      events:
        items:
          additionalProperties: false
          description: Lineage event envelope.
          discriminator: event_type
          properties:
            actor:
              description: Actor responsible for the event (optional for SCA).
              properties:
                actor_id:
                  description: Opaque identifier for the actor.
                  type: string
                actor_type:
                  enum:
                    - user
                    - api_key
                  type: string
              required:
                - actor_type
              type: object
            component_id:
              description: The ID of the component that the path belongs to
              format: uuid
              type: string
            occurred_at:
              description: >-
                Client timestamp when the event occurred (server also records
                received time).
              format: date-time
              type: string
            payload: {}
            source:
              description: Origin of the event.
              enum:
                - UI
                - SCA
                - BYO
                - API
              type: string
          required:
            - source
            - payload
            - component_id
            - actor
          type: object
        minItems: 1
        type: array
      type:
        enum:
          - LINEAGE_EVENT
        type: string
    required:
      - events
      - type
    type: object
  ExperimentalEdgeDetails:
    description: Detailed experimental edge data.
    properties:
      destination:
        description: The destination side of the edge.
        properties:
          componentId:
            description: The destination component ID.
            type: string
          destinationComponentName:
            description: The destination component name.
            type: string
          ingressId:
            description: The destination ingress ID.
            type: string
          payloadName:
            description: The destination payload name.
            type: string
          type:
            description: The destination connection type.
            example: ingress
            type: string
        required:
          - componentId
          - type
        type: object
      edgeType:
        description: The internal edge type.
        example: cross_service
        type: string
      fieldMappings:
        description: Field mappings captured on the edge.
        items:
          properties:
            destinationField:
              type: string
            notes:
              type: string
            sourceField:
              type: string
          required:
            - sourceField
            - destinationField
          type: object
        type: array
      id:
        description: The edge ID.
        type: string
      namespace:
        description: The namespace the edge belongs to.
        type: string
      source:
        description: The source side of the edge.
        properties:
          componentId:
            description: The source component ID.
            type: string
          egressId:
            description: The source egress ID.
            type: string
          payloadName:
            description: The source payload name.
            type: string
          sourceComponentName:
            description: The source component name.
            type: string
          type:
            description: The source connection type.
            example: egress
            type: string
        required:
          - componentId
          - type
        type: object
    required:
      - id
      - namespace
      - edgeType
      - source
      - destination
      - fieldMappings
    type: object
  ExperimentalEdgeSummary:
    description: Minimal edge data for experimental edge listing.
    properties:
      destinationComponentId:
        description: The destination component ID.
        type: string
      id:
        description: The edge ID.
        type: string
      namespace:
        description: The namespace the edge belongs to.
        type: string
      sourceComponentId:
        description: The source component ID.
        type: string
    required:
      - id
      - sourceComponentId
      - destinationComponentId
      - namespace
    type: object
  ExtraPath:
    description: A path found in the compare version but not in the base version.
    properties:
      egressPayload:
        description: Output payload name.
        type: string
      extraPathId:
        description: 'Identifier (e.g., "extra-001").'
        type: string
      ingressPayload:
        description: Input payload name.
        type: string
      pathPayloadName:
        description: Path payload name.
        type: string
    required:
      - extraPathId
      - ingressPayload
      - egressPayload
      - pathPayloadName
    type: object
  FakeResponseForTypeGeneration:
    properties:
      fakeProperty3: {}
      mergeKey:
        $ref: '#/definitions/MergeKey'
    type: object
  FieldAddedEvent:
    properties:
      diff:
        description: Details of the modified field.
        properties:
          fieldName:
            description: The name of the field being added.
            type: string
          type:
            description: The type of the field being added.
            type: string
        required:
          - fieldName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - FIELD_ADDED
        type: string
    required:
      - eventType
      - diff
    type: object
  FieldDeletedEvent:
    properties:
      diff:
        description: Details of the modified field.
        properties:
          fieldName:
            description: The name of the field being deleted.
            type: string
          type:
            description: The type of the field being deleted.
            type: string
        required:
          - fieldName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - FIELD_DELETED
        type: string
    required:
      - eventType
      - diff
    type: object
  FieldDetail:
    description: Comparison detail for a single field.
    properties:
      base:
        $ref: '#/definitions/PresenceEnum'
      compare:
        $ref: '#/definitions/PresenceEnum'
      completeness:
        $ref: '#/definitions/CompletenessEnum'
      fieldName:
        description: Field name.
        type: string
      fieldType:
        description: Field data type.
        type: string
      severity:
        $ref: '#/definitions/SeverityEnum'
      status:
        $ref: '#/definitions/StatusEnum'
    required:
      - fieldName
      - fieldType
      - base
      - compare
      - status
      - completeness
      - severity
    type: object
  FieldDiff:
    description: Diff of a single field mapping between two versions.
    properties:
      dataFlowSteps:
        description: Code anchors in the compare version's data flow for this field.
        items:
          $ref: '#/definitions/DiffCodeAnchor'
        type: array
      previousDataFlowSteps:
        description: Code anchors in the base version's data flow for this field.
        items:
          $ref: '#/definitions/DiffCodeAnchor'
        type: array
      sourceField:
        description: Source (ingress) field name.
        type: string
      status:
        $ref: '#/definitions/DiffStatus'
      targetField:
        description: Target (egress) field name.
        type: string
      type:
        description: 'Field type, if available.'
        type: string
    required:
      - sourceField
      - targetField
      - status
    type: object
  FieldMappingKind:
    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
    type: string
  FieldModifiedEvent:
    properties:
      diff:
        description: Details of the modified field.
        properties:
          attributeName:
            description: The name of the attribute being modified.
            enum:
              - PRECISION_BITS
              - SIGNED
              - TYPE
              - LOGICAL_TYPE
              - ENUM_VALUES
              - NULLABLE
              - STRUCTURAL
              - BYTES
              - VARIABLE
              - SCALE
              - PRECISION
              - UNIT
              - TIMEZONE
              - VALUE
              - SEMANTIC
              - DOC
            type: string
          description:
            description: A detailed description of the change.
            type: string
          fieldName:
            description: The name of the field being modified.
            type: string
          newValue:
            description: The type of the field after the change.
            type: string
          previousValue:
            description: The type of the field before the change.
            type: string
          summary:
            description: A very brief summary of the change for the field.
            type: string
        required:
          - fieldName
          - attributeName
          - previousValue
          - newValue
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - FIELD_MODIFIED
        type: string
    required:
      - eventType
      - diff
    type: object
  FieldPair:
    description: >-
      A logical field-to-field mapping formed by rolling up strands. Unit of
      change tracking and approval in the field-level focused views.
    properties:
      componentId:
        description: The component this field pair lives on.
        type: string
      createdAt:
        description: When this row was produced.
        format: date-time
        type: string
      createdBy:
        description: >-
          Actor that produced this row (user or api key id). Absent for
          SCAN-origin rows.
        type: string
      downstreamConsumersCount:
        description: Number of downstream consumers of this pair's egress field.
        type: integer
      egress:
        $ref: '#/definitions/FieldPairEndpoint'
      fieldPairGroupId:
        description: Stable identity of the rolled-up field pair.
        type: string
      ingress:
        $ref: '#/definitions/FieldPairEndpoint'
      isSuppressed:
        description: Whether this field pair is currently suppressed in projections.
        type: boolean
      origin:
        $ref: '#/definitions/FieldPairOrigin'
      payloadGroupId:
        description: Stable identity of the parent payload (xgress pair).
        type: string
      strandIds:
        description: >-
          Identifiers of the strands that rolled up into this field pair (for
          traceback to the underlying scanner output).
        items:
          type: string
        type: array
      upstreamSourcesCount:
        description: Number of upstream sources feeding this pair's ingress field.
        type: integer
    required:
      - fieldPairGroupId
      - payloadGroupId
      - componentId
      - ingress
      - egress
      - origin
      - isSuppressed
    type: object
  FieldPairEndpoint:
    description: One side (ingress or egress) of a field pair.
    properties:
      componentId:
        description: The component containing the xgress.
        type: string
      dataType:
        description: Normalized data type for this field.
        type: string
      fieldPath:
        description: Field path within the xgress payload (e.g. "$.payload.amount.value").
        type: string
      xgressId:
        description: The ingress or egress (xgress) ID.
        type: string
    required:
      - componentId
      - xgressId
      - fieldPath
    type: object
  FieldPairOrigin:
    description: |
      Provenance of a field pair row. SCAN = produced by scanner output.
      BYO_ADD / BYO_CHANGE / BYO_SUPPRESS = produced by the corresponding
      user-initiated event. Stored, not derived — carries history.
    enum:
      - SCAN
      - BYO_ADD
      - BYO_CHANGE
      - BYO_SUPPRESS
    type: string
  FloatConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/NumberConstraintEnum'
        type: array
      type:
        enum:
          - float
        type: string
    required:
      - type
      - constraints
    type: object
  GableSchemaAliasReference:
    additionalProperties: true
    not:
      required:
        - alias
    properties:
      doc:
        type: string
      logical:
        type: string
      type:
        not:
          $ref: '#/definitions/GableSchemaTypeName'
        type: string
    required:
      - type
    type: object
  GableSchemaBool:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      type:
        enum:
          - bool
        type: string
    required:
      - type
    type: object
  GableSchemaBytes:
    if:
      properties:
        variable:
          const: false
      required:
        - variable
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bytes:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumNumeric'
      precision:
        maximum: 2147483647
        minimum: 1
        type: integer
      scale:
        maximum: 2147483647
        minimum: 0
        type: integer
      type:
        enum:
          - bytes
        type: string
      unit:
        enum:
          - year
          - month
          - day
          - hour
          - minute
          - second
          - millisecond
          - microsecond
          - nanosecond
          - picosecond
        type: string
      variable:
        type: boolean
    required:
      - type
    then:
      required:
        - bytes
    type: object
  GableSchemaContractField:
    allOf:
      - {}
      - properties:
          name:
            type: string
          optional:
            type: boolean
        type: object
      - properties:
          constraints:
            additionalProperties: true
            type: object
        type: object
  GableSchemaEnum:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      symbols:
        items:
          type: string
        type: array
      type:
        enum:
          - enum
        type: string
    required:
      - type
      - symbols
    type: object
  GableSchemaField: {}
  GableSchemaFieldAliasReference:
    additionalProperties: true
    not:
      required:
        - alias
    properties:
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        not:
          $ref: '#/definitions/GableSchemaTypeName'
        type: string
    required:
      - type
    type: object
  GableSchemaFieldBool:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - bool
        type: string
    required:
      - type
    type: object
  GableSchemaFieldBytes:
    if:
      properties:
        variable:
          const: false
      required:
        - variable
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bytes:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumNumeric'
      name:
        type: string
      optional:
        type: boolean
      precision:
        maximum: 2147483647
        minimum: 1
        type: integer
      scale:
        maximum: 2147483647
        minimum: 0
        type: integer
      type:
        enum:
          - bytes
        type: string
      unit:
        enum:
          - year
          - month
          - day
          - hour
          - minute
          - second
          - millisecond
          - microsecond
          - nanosecond
          - picosecond
        type: string
      variable:
        type: boolean
    required:
      - type
    then:
      required:
        - bytes
    type: object
  GableSchemaFieldEnum:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      symbols:
        items:
          type: string
        type: array
      type:
        enum:
          - enum
        type: string
    required:
      - type
      - symbols
    type: object
  GableSchemaFieldFloat:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bits:
        maximum: 2147483647
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - float
        type: string
    required:
      - type
      - bits
    type: object
  GableSchemaFieldInt:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bits:
        maximum: 2147483647
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumTemporal'
      name:
        type: string
      optional:
        type: boolean
      signed:
        default: true
        type: boolean
      timezone:
        type: string
      type:
        enum:
          - int
        type: string
      unit:
        enum:
          - year
          - month
          - day
          - hour
          - minute
          - second
          - millisecond
          - microsecond
          - nanosecond
          - picosecond
        type: string
    required:
      - type
      - bits
    type: object
  GableSchemaFieldList:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      length:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - list
        type: string
      values:
        $ref: '#/definitions/GableSchemaType'
      variable:
        default: true
        type: boolean
    required:
      - type
      - values
    type: object
  GableSchemaFieldMap:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      keys:
        $ref: '#/definitions/GableSchemaType'
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - map
        type: string
      values:
        $ref: '#/definitions/GableSchemaType'
    required:
      - type
      - keys
      - values
    type: object
  GableSchemaFieldNull:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - 'null'
        type: string
    required:
      - type
    type: object
  GableSchemaFieldString:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bytes:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumText'
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - string
        type: string
      variable:
        default: true
        type: boolean
    required:
      - type
    type: object
  GableSchemaFieldStruct:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      fields:
        items:
          $ref: '#/definitions/GableSchemaField'
        type: array
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - struct
        type: string
    required:
      - type
    type: object
  GableSchemaFieldUnion:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - union
        type: string
      types:
        items:
          $ref: '#/definitions/GableSchemaType'
        type: array
    required:
      - type
      - types
    type: object
  GableSchemaFieldUnknown:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      name:
        type: string
      optional:
        type: boolean
      type:
        enum:
          - unknown
        type: string
    required:
      - type
    type: object
  GableSchemaFloat:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bits:
        maximum: 2147483647
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        type: string
      type:
        enum:
          - float
        type: string
    required:
      - type
      - bits
    type: object
  GableSchemaInt:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bits:
        maximum: 2147483647
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumTemporal'
      signed:
        default: true
        type: boolean
      timezone:
        type: string
      type:
        enum:
          - int
        type: string
      unit:
        enum:
          - year
          - month
          - day
          - hour
          - minute
          - second
          - millisecond
          - microsecond
          - nanosecond
          - picosecond
        type: string
    required:
      - type
      - bits
    type: object
  GableSchemaList:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      length:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      type:
        enum:
          - list
        type: string
      values:
        $ref: '#/definitions/GableSchemaType'
      variable:
        default: true
        type: boolean
    required:
      - type
      - values
    type: object
  GableSchemaMap:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      keys:
        $ref: '#/definitions/GableSchemaType'
      logical:
        type: string
      type:
        enum:
          - map
        type: string
      values:
        $ref: '#/definitions/GableSchemaType'
    required:
      - type
      - keys
      - values
    type: object
  GableSchemaNull:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      type:
        enum:
          - 'null'
        type: string
    required:
      - type
    type: object
  GableSchemaString:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      bytes:
        maximum: 9223372036854776000
        minimum: 1
        type: integer
      doc:
        type: string
      logical:
        $ref: '#/definitions/LogicalEnumText'
      type:
        enum:
          - string
        type: string
      variable:
        default: true
        type: boolean
    required:
      - type
    type: object
  GableSchemaStruct:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      fields:
        items:
          $ref: '#/definitions/GableSchemaField'
        type: array
      logical:
        type: string
      name:
        type: string
      type:
        enum:
          - struct
        type: string
    required:
      - type
    type: object
  GableSchemaType: {}
  GableSchemaTypeName:
    enum:
      - 'null'
      - bool
      - int
      - float
      - string
      - bytes
      - list
      - map
      - struct
      - enum
      - union
    type: string
  GableSchemaUnion:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      type:
        enum:
          - union
        type: string
      types:
        items:
          $ref: '#/definitions/GableSchemaType'
        type: array
    required:
      - type
      - types
    type: object
  GableSchemaUnknown:
    properties:
      alias:
        pattern: '^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+$'
        type: string
      doc:
        type: string
      logical:
        type: string
      type:
        enum:
          - unknown
        type: string
    required:
      - type
    type: object
  GetActionsResponse:
    properties:
      actions:
        items:
          properties:
            actionId:
              description: The unique identifier of the created action
              type: string
            destinations:
              items:
                mapping:
                  email: ./ActionDestinationEmail.yaml
                  slack: ./ActionDestinationSlack.yaml
                  webhook: ./ActionDestinationWebhook.yaml
              minItems: 1
              type: array
            isActive:
              description: Whether the action is active
              example: true
              type: boolean
            name:
              description: The name of the action
              example: email on pricing asset change
              type: string
            ownerName:
              description: The name of the user who created the action
              type: string
            triggers:
              items:
                mapping:
                  eventName: ./ActionTriggerEventName.yaml
                  namespace: ./ActionTriggerNamespace.yaml
                  source: ./ActionTriggerSource.yaml
                  sourceType: ./ActionTriggerSourceType.yaml
              minItems: 1
              type: array
          required:
            - actionId
            - name
            - isActive
            - triggers
            - destinations
          type: object
        type: array
    required:
      - actions
    type: object
  GetApiKeysResponse:
    items:
      properties:
        id:
          description: The identifier of the API key
          type: string
        name:
          description: The name of the API key
          type: string
        value:
          description: The value of the API key
          type: string
      type: object
    type: array
  GetChangelogFiltersResponse:
    properties:
      domains:
        description: Domains list
        items:
          properties:
            type:
              $ref: '#/definitions/SourceType'
            value:
              type: string
          required:
            - value
            - type
          type: object
        type: array
      types:
        description: Types list
        items:
          $ref: '#/definitions/SourceType'
        type: array
    required:
      - domains
      - types
    type: object
  GetChangelogResponse:
    properties:
      changelogEvents:
        description: List of changelog events in chronological order (oldest first)
        items: {}
        type: array
    required:
      - changelogEvents
    type: object
  GetComponentVersionsResponse:
    items:
      properties:
        createdAt:
          description: The timestamp when the component version was created.
          format: date-time
          type: string
        dependencies:
          description: List of version-specific dependencies for this component version.
          items:
            $ref: '#/definitions/StaticAnalysisDependencyMetadata'
          type: array
        event_repo:
          description: Name of the repository from the event that triggered this version.
          type: string
        isLatestVersion:
          description: Indicates if this version is the latest version of the component.
          type: boolean
        job_id:
          description: ID of the job that created this version.
          type: string
        job_status:
          description: Status of the job that created this version.
          enum:
            - pending
            - processing
            - success
            - error
          type: string
        job_trigger:
          description: Type of the event that triggered this version.
          type: string
        repo_commit:
          description: The commit SHA that triggered the version.
          type: string
        repo_commit_timestamp:
          description: The timestamp of the commit.
          type: string
        versionId:
          description: The version ID (runId) of the component.
          type: string
      type: object
    type: array
  GetComponentsHistoryFiltersResponse:
    properties:
      branches:
        description: List of branch names
        items:
          type: string
        type: array
      componentNames:
        description: List of component names
        items:
          type: string
        type: array
      jobTriggers:
        description: List of event trigger types
        items:
          type: string
        type: array
      namespaces:
        description: List of namespace names
        items:
          type: string
        type: array
    type: object
  GetComponentsHistoryResponse:
    properties:
      history:
        items:
          properties:
            analysisTimestamp:
              description: The timestamp when this analysis run was processed.
              format: date-time
              type: string
            branchName:
              description: The git branch associated with the run.
              type: string
            commitSha:
              description: The git commit SHA associated with the run.
              type: string
            commitTimestamp:
              description: The git commit timestamp associated with this version.
              format: date-time
              type: string
            componentId:
              description: The unique identifier of the component.
              type: string
            componentName:
              description: The human-readable name of the component.
              type: string
            createdAt:
              description: The analysis timestamp when this run was processed.
              format: date-time
              type: string
            jobTrigger:
              description: >-
                The trigger that produced this run (e.g. push, pr, manual,
                schedule, byol_import).
              type: string
            job_id:
              description: ID of the job that created this version.
              type: string
            job_status:
              description: Status of the job that created this version.
              enum:
                - pending
                - uploaded
                - processing
                - success
                - error
              type: string
            namespace:
              description: 'The namespace associated with the run (e.g. prod, staging, dev).'
              type: string
            repoUri:
              description: 'The repository URI (e.g. https://github.com/org/repo).'
              type: string
            runId:
              description: The run/version identifier for this history entry.
              type: string
          required:
            - runId
            - componentId
            - componentName
            - createdAt
          type: object
        type: array
      nextCursor:
        description: >-
          Opaque cursor for fetching the next page. Pass as `cursor` in the next
          request. Null when there are no more results.
        type: string
        x-nullable: true
    required:
      - history
    type: object
  GetConfigResponse:
    properties:
      config_type:
        description: Type of configuration
        type: string
      config_value:
        additionalProperties:
          type: string
        description: Configuration value as JSON
        type: object
      created_at:
        description: Date time at which the config was created
        format: date-time
        type: string
      language:
        description: Programming language associated with the config (optional)
        type: string
        x-nullable: true
      namespace:
        description: Namespace (qa/sandbox/prod) of config
        type: string
      project_root:
        description: Project root directory (optional)
        type: string
      repo:
        description: Repository associated with the config (optional)
        type: string
        x-nullable: true
      version:
        description: Version of the configuration
        type: string
    required:
      - config_type
      - version
      - config_value
      - created_at
      - project_root
      - namespace
    type: object
  GetContractNamespacesResponse:
    description: Response object containing a list of contract namespaces
    properties:
      namespaces:
        description: List of contract namespaces
        items:
          type: string
        type: array
    required:
      - namespaces
    type: object
  GetContractSubscriptionsResponse:
    items:
      $ref: '#/definitions/ContractSubscription'
    type: array
  GetContractViolationStatusResponse: {}
  GetDataAssetsByDarnsResponse:
    items:
      properties:
        darn:
          description: The Data Asset Resource Name that was requested
          type: string
        data:
          $ref: '#/definitions/DataAssetSearchResult'
          description: The asset data (only present when status is 'success')
        errorMessage:
          description: Error message (only present when status is 'error' or 'not_found')
          type: string
        status:
          description: The status of fetching this particular asset
          enum:
            - success
            - not_found
            - error
          type: string
      required:
        - darn
        - status
      type: object
    type: array
  GetDataAssetsByDarnsResponsePaginated:
    properties:
      data:
        $ref: '#/definitions/GetDataAssetsByDarnsResponse'
      limit:
        description: Maximum number of results per page
        type: integer
      offset:
        description: Number of results skipped
        type: integer
      totalCount:
        description: Total number of results available
        type: integer
    required:
      - data
      - totalCount
      - limit
      - offset
    type: object
  GetExperimentalEdgeResponse:
    description: Experimental edge detail response.
    properties:
      edge:
        $ref: '#/definitions/ExperimentalEdgeDetails'
    required:
      - edge
    type: object
  GetExperimentalEdgesResponse:
    description: Experimental edge list response.
    properties:
      edges:
        items:
          $ref: '#/definitions/ExperimentalEdgeSummary'
        type: array
    required:
      - edges
    type: object
  GetFieldPairsResponse:
    description: List of field pairs for a component.
    properties:
      fieldPairs:
        items:
          $ref: '#/definitions/FieldPair'
        type: array
    required:
      - fieldPairs
    type: object
  GetNotificationsResponse:
    properties:
      notifications:
        items:
          properties:
            actionDetails:
              additionalProperties: true
              description: >-
                Additional details about the action associated with the
                notification
              type: object
            actionId:
              description: >-
                The unique identifier of the action associated with the
                notification
              type: string
            actionName:
              description: The name of the actions associated with the notification
              type: string
            changeLogEventId:
              description: >-
                The unique identifier of the change log event associated with
                the notification
              type: string
            createdAt:
              description: The timestamp when the notification was created
              format: date-time
              type: string
            id:
              description: The unique identifier of the created notification
              type: string
            retryCount:
              description: The number of times the notification has been retried
              minimum: 0
              type: integer
            status:
              description: >-
                The current status of the notification (e.g., "PENDING", "SENT",
                "FAILED")
              enum:
                - PENDING
                - SENT
                - FAILED
              type: string
            updatedAt:
              description: The timestamp when the notification was last updated
              format: date-time
              type: string
            userName:
              description: The name of the user who created the action
              type: string
          required:
            - id
            - changeLogEventId
            - actionId
            - actionDetails
            - status
            - createdAt
            - retryCount
            - actionName
          type: object
        type: array
    required:
      - notifications
    type: object
  GetNpmCredentialsResponse:
    properties:
      authToken:
        description: Temporary auth token
        type: string
      repositoryEndpoint:
        description: The npm repository endpoint
        type: string
    required:
      - authToken
      - repositoryEndpoint
    type: object
  GetPipCredentialsResponse:
    properties:
      authToken:
        description: Temporary auth token
        type: string
      repositoryEndpoint:
        description: The pip repository endpoint
        type: string
    required:
      - authToken
      - repositoryEndpoint
    type: object
  GetScaPrimeArtifactBucketResponse:
    description: The response from the getScaPrimeArtifactBucket function
    properties:
      signedS3Url:
        description: The signed S3 URL
        type: string
    required:
      - signedS3Url
    type: object
  GetScaRunStatusResponse:
    properties:
      asset_registration_outcomes:
        items:
          properties:
            data_asset_resource_name:
              $ref: '#/definitions/StructuredDataAssetResourceName'
            error:
              description: Error message if registration of this asset failed
              type: string
          required:
            - data_asset_resource_name
          type: object
        type: array
      message:
        description: 'message associated with the status, if any'
        type: string
      status:
        description: status of the sca job
        enum:
          - pending
          - uploaded
          - processing
          - success
          - error
        type: string
    required:
      - status
    type: object
  GetSlackChannelsResponse:
    properties:
      channels:
        items:
          properties:
            id:
              description: The channel id
              type: string
            name:
              description: The channel name
              type: string
          type: object
        type: array
      workspaceName:
        description: Slack workspace name; Slack Client not valid if missing
        type: string
    required:
      - channels
    type: object
  GetSlackInstallResponse:
    properties:
      slackInstallUrl:
        description: URL to install Slack Client
        type: string
    required:
      - slackInstallUrl
    type: object
  GetSsoSamlSetupDetailsResponse:
    properties:
      audienceUri:
        description: >-
          (SP Entity Id) The application-defined unique identifier that is the
          intended audience of the SAML assertion. This is most often the SP
          Entity ID of your application.
        type: string
      ssoUrl:
        description: >-
          The location where the SAML assertion is sent with a HTTP POST, also
          referred to as the SAML Assertion Consumer Service (ACS) URL.
        type: string
    required:
      - ssoUrl
      - audienceUri
    type: object
  GetUserRequest:
    properties:
      email:
        description: 'The email address of the user, which is the primary ID in Gable'
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
    required:
      - email
    type: object
  GetUsersResponse:
    items:
      $ref: '#/definitions/User'
    type: array
  GetWebhooksResponse:
    properties:
      webhooks:
        items:
          $ref: '#/definitions/Webhook'
        type: array
    required:
      - webhooks
    type: object
  InferContractFromDataAssetResponse:
    properties:
      contractId:
        description: Unique identifier for the contract in UUID format
        format: uuid
        type: string
      contractSpec:
        $ref: '#/definitions/ContractSpec'
        description: contract spec
      contractSpecRaw:
        description: contract spec raw json
        type: string
      createdAt:
        description: date time at which the contract was created
        format: date-time
        type: string
      fileUri:
        description: full link to the file in the repo that contains this contract
        format: uri
        type: string
      gitHash:
        description: >-
          full length git hash corresponding to the commit this contract was
          added/updated
        maxLength: 40
        minLength: 40
        type: string
      gitRepo:
        description: full link to the git repo this contract lives in
        format: uri
        type: string
      gitUser:
        description: git user who added/updated this contract
        type: string
      mergedAt:
        description: date time at which the PR that added/updated this contract was merged
        format: date-time
        type: string
      reviewers:
        description: >-
          optional list of users who reviewed the merged PR that this contract
          added/updated in
        items:
          type: string
        type: array
      status:
        description: status of the contract
        enum:
          - ACTIVE
          - DEPRECATED
        type: string
      updatedAt:
        description: date time at which the contract was last updated
        format: date-time
        type: string
      version:
        description: Version of the contract (semantic versioning)
        type: string
    required:
      - contractId
      - contractSpec
      - contractSpecRaw
    type: object
  IngestDataAssetRequest:
    properties:
      databaseSchema:
        description: The name of the database schema
        type: string
      dryRun:
        default: false
        description: 'If true, no data asset will be registered'
        type: boolean
      prLink:
        description: Link to the PR that may have added or edited the data assets
        example: 'https://github.com/fakeorg/fakerepo/pull/123'
        type: string
      schema:
        description: >-
          Array of schemas. Each schema could be from a db information schema or
          the contents of a schema file.
        items:
          type: string
        type: array
      sourceNames:
        description: The names of the sources
        items:
          type: string
        type: array
      sourceType:
        $ref: '#/definitions/SourceType'
    required:
      - sourceType
      - sourceNames
      - databaseSchema
      - schema
    type: object
  IngestDataAssetResponse:
    properties:
      message:
        description: Response message
        type: string
      registered:
        description: List of the registered data asset ids
        items:
          type: string
        type: array
      success:
        description: Whether the request was successful
        type: boolean
    required:
      - message
      - registered
      - success
    type: object
  IngestScaMetadataRequest:
    properties:
      dataAssetResourceName:
        $ref: '#/definitions/DataAssetResourceName'
      metadata:
        additionalProperties: true
        type: object
    required:
      - metadata
      - dataAssetResourceName
    type: object
  IngestScaMetadataResponse:
    properties:
      newVersionCreated:
        description: Indicates whether a new version was created
        type: boolean
    type: object
  Ingress:
    allOf:
      - $ref: '#/definitions/DataFlowBoundary'
  IngressInfo:
    description: Input interface details for a path.
    properties:
      id:
        description: Interface identifier.
        type: string
      payloadName:
        description: 'Payload name (e.g., "EventStream").'
        type: string
      schemaName:
        description: Schema name.
        type: string
      signatureName:
        description: Signature name.
        type: string
    required:
      - id
      - payloadName
      - signatureName
      - schemaName
    type: object
  IngressToEgress:
    additionalProperties: false
    description: IngressToEgress merge-key wrapper
    properties:
      data:
        $ref: '#/definitions/IngressToEgressMergeKey'
      kind:
        const: IngressToEgress
        type: string
    required:
      - kind
      - data
    type: object
  IngressToEgressMergeKey:
    description: Versioned IngressToEgress merge-key (version-level union)
    type: object
  IngressToEgressV0:
    additionalProperties: false
    description: Ingress-to-egress flow key V0
    properties:
      egress_callsite:
        type: string
        x-nullable: true
      flow_id:
        type: string
        x-nullable: true
      ingress_callsite:
        type: string
        x-nullable: true
      notes:
        type: string
        x-nullable: true
      service:
        type: string
        x-nullable: true
      version:
        const: V0
        type: string
    required:
      - version
    type: object
  IntegerConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/NumberConstraintEnum'
        type: array
      type:
        enum:
          - integer
        type: string
    required:
      - type
      - constraints
    type: object
  InviteUserRequest:
    properties:
      email:
        description: 'The email address of the user, which is the primary ID in Gable'
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      firstName:
        description: The first name of the user
        type: string
      lastName:
        description: The last name of the user
        type: string
      resendInvite:
        description: The flag which determines whether the invitation should be resent
        type: boolean
      role:
        $ref: '#/definitions/UserRole'
        description: The role of the user
    required:
      - email
    type: object
  LengthConstraintEnum:
    enum:
      - length
      - isNotEmpty
      - isNull
      - isNullThreshold
    type: string
  LineageExportResponse:
    properties:
      items:
        description: The items in the lineage export
        items: {}
        type: array
      timestamp:
        description: The timestamp of the lineage export
        type: string
    required:
      - timestamp
      - items
    type: object
  ListConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/LengthConstraintEnum'
        type: array
      type:
        enum:
          - list
        type: string
    required:
      - type
      - constraints
    type: object
  LogicalEnumNumeric:
    enum:
      - Decimal
      - Interval
    type: string
  LogicalEnumTemporal:
    enum:
      - Date
      - Time
      - Duration
      - Timestamp
    type: string
  LogicalEnumText:
    enum:
      - UUID
      - org.iso.8601.Date
      - org.iso.8601.DateTime
      - org.iso.8601.Time
    type: string
  MapConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/LengthConstraintEnum'
        type: array
      type:
        enum:
          - map
        type: string
    required:
      - type
      - constraints
    type: object
  MappingDetail:
    description: Comparison detail for a field mapping.
    properties:
      base:
        $ref: '#/definitions/PresenceEnum'
      compare:
        $ref: '#/definitions/PresenceEnum'
      completeness:
        $ref: '#/definitions/CompletenessEnum'
      egressField:
        description: Target field name.
        type: string
      ingressField:
        description: Source field name.
        type: string
      kind:
        $ref: '#/definitions/FieldMappingKind'
      severity:
        $ref: '#/definitions/SeverityEnum'
      status:
        $ref: '#/definitions/StatusEnum'
    required:
      - ingressField
      - egressField
      - base
      - compare
      - status
      - completeness
      - severity
    type: object
  MergeKey:
    description: MergeKey (kind-level union)
    type: object
  NumberConstraintEnum:
    enum:
      - greaterThan
      - greaterThanOrEqualTo
      - lessThan
      - lessThanOrEqualTo
      - isNull
      - isNullThreshold
    type: string
  OtherConstraintEnum:
    enum:
      - isNull
      - isNullThreshold
    type: string
  OtherConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/OtherConstraintEnum'
        type: array
      type:
        enum:
          - other
        type: string
    required:
      - type
      - constraints
    type: object
  OverallStatusEnum:
    description: Overall comparison result for a path.
    enum:
      - FULL
      - PARTIAL
      - MISSING
    type: string
  Path:
    properties:
      codeAnchors:
        description: A list of node IDs that are part of this path.
        items:
          $ref: '#/definitions/CodeAnchor'
        type: array
      completeness:
        $ref: '#/definitions/Completeness'
        description: Completeness indicators for a ground truth path
      egress:
        properties:
          codeAnchorId:
            description: >-
              The unique identifier of the code anchor node where the path
              starts (optional for BYOL imports).
            format: uuid
            type: string
          description:
            description: An AI-generated summary of the egress point.
            type: string
          id:
            description: The unique identifier of the egress where the path ends.
            format: uuid
            type: string
        required:
          - id
        type: object
      fieldMappings:
        description: >-
          A list of field mappings that describe how fields are mapped along the
          path.
        items:
          properties:
            egressField:
              description: The name of the egress field in the mapping.
              type: string
            fieldDataFlowPath:
              description: The field data flow path that represents this mapping
              items:
                $ref: '#/definitions/CodeAnchor'
              type: array
            ingressField:
              description: The name of the ingress field in the mapping.
              type: string
            kind:
              $ref: '#/definitions/FieldMappingKind'
            notes:
              description: Additional notes about the field mapping.
              type: string
          required:
            - ingressField
            - egressField
          type: object
        type: array
      friendlyPayloadName:
        description: user dictated name for the payload
        type: string
      ingress:
        properties:
          codeAnchorId:
            description: >-
              The unique identifier of the code anchor node where the path
              starts (optional for BYOL imports).
            format: uuid
            type: string
          description:
            description: An AI-generated summary of the ingress point.
            type: string
          id:
            description: The unique identifier of the ingress where the path starts.
            format: uuid
            type: string
        required:
          - id
        type: object
      isSuppressed:
        default: false
        type: boolean
      pathId:
        description: >-
          Unique identifier for this path. Generated as a UUID v4 when the path
          is first created.
        format: uuid
        type: string
      pathNotes:
        description: user added notes about the suppression/un-suppression
        type: string
      pathType:
        $ref: '#/definitions/PathType'
      payloadName:
        description: The name of the payload for the path between ingress and egress.
        type: string
      suppressedAt:
        description: only set if is_suppressed
        properties:
          timestamp:
            format: date-time
            type: string
          versionId:
            type: string
        type: object
      transformationSummary:
        description: >-
          An AI-generated summary of the data transformation that occurs along
          this path.
        type: string
      transformationSummaryDetailed:
        description: >-
          A detailed AI-generated summary of the data transformation that occurs
          along this path.
        type: string
    required:
      - ingress
      - egress
      - codeAnchors
      - fieldMappings
    type: object
  PathAnchorDetail:
    description: Comparison detail for a code anchor.
    properties:
      anchorName:
        description: 'Code anchor name (e.g., class/file name).'
        type: string
      base:
        $ref: '#/definitions/PresenceEnum'
      baseLine:
        description: Base line number.
        type: string
      compare:
        $ref: '#/definitions/PresenceEnum'
      compareLine:
        description: Compare line number.
        type: string
      completeness:
        $ref: '#/definitions/CompletenessEnum'
      filePath:
        description: Path to source file.
        type: string
      severity:
        $ref: '#/definitions/SeverityEnum'
      status:
        $ref: '#/definitions/StatusEnum'
    required:
      - anchorName
      - filePath
      - base
      - compare
      - baseLine
      - compareLine
      - status
      - completeness
      - severity
    type: object
  PathDetails:
    description: 'Detailed field, mapping, and code step comparisons for a path.'
    properties:
      codeSteps:
        description: Data flow step comparisons.
        items:
          $ref: '#/definitions/CodeStepDetail'
        type: array
      egressFields:
        description: Output field comparisons.
        items:
          $ref: '#/definitions/FieldDetail'
        type: array
      ingressFields:
        description: Input field comparisons.
        items:
          $ref: '#/definitions/FieldDetail'
        type: array
      mappings:
        description: Field mapping comparisons.
        items:
          $ref: '#/definitions/MappingDetail'
        type: array
      pathAnchors:
        description: Code anchor comparisons.
        items:
          $ref: '#/definitions/PathAnchorDetail'
        type: array
    required:
      - ingressFields
      - egressFields
      - mappings
      - codeSteps
      - pathAnchors
    type: object
  PathDiff:
    description: >-
      Diff summary for a single path (ingress→egress) between two component
      versions.
    properties:
      basePathId:
        description: Path ID from the base version. Absent when the path is newly added.
        type: string
      basePathType:
        $ref: '#/definitions/PathType'
        description: Source of the base path. Absent when the path is newly added.
      codeStepsAdded:
        description: Number of code steps added.
        type: integer
      codeStepsModified:
        description: Number of code steps with file/line changes.
        type: integer
      codeStepsRemoved:
        description: Number of code steps removed.
        type: integer
      comparePathId:
        description: Path ID from the compare version. Absent when the path was removed.
        type: string
      comparePathType:
        $ref: '#/definitions/PathType'
        description: Source of the compare path. Absent when the path was removed.
      egressFunction:
        description: 'Function name of the egress, if available.'
        type: string
      egressName:
        description: Name of the egress payload.
        type: string
      fields:
        description: Detailed field-level diffs for this path.
        items:
          $ref: '#/definitions/FieldDiff'
        type: array
      fieldsAdded:
        description: Number of fields added in this path.
        type: integer
      fieldsChanged:
        description: Number of fields modified in this path.
        type: integer
      fieldsRemoved:
        description: Number of fields removed from this path.
        type: integer
      ingressFunction:
        description: 'Function name of the ingress, if available.'
        type: string
      ingressName:
        description: Name of the ingress payload.
        type: string
      pathId:
        description: Unique identifier for the path.
        type: string
      status:
        $ref: '#/definitions/DiffStatus'
      totalFields:
        description: Total number of fields in this path.
        type: integer
    required:
      - pathId
      - ingressName
      - egressName
      - status
      - fieldsAdded
      - fieldsRemoved
      - fieldsChanged
      - totalFields
      - codeStepsAdded
      - codeStepsRemoved
      - codeStepsModified
      - fields
    type: object
  PathDiffDetail:
    description: >-
      Detailed diff of a single path between two versions, including code flow
      steps and field mappings.
    properties:
      codeFlowChangeCount:
        description: Number of code flow steps that changed.
        type: integer
      codeFlowSteps:
        description: Ordered code flow steps for this path.
        items:
          $ref: '#/definitions/PathStep'
        type: array
      fieldMappingChangeCount:
        description: Number of field mappings that changed.
        type: integer
      fieldMappings:
        description: Field-level diffs for this path.
        items:
          $ref: '#/definitions/FieldDiff'
        type: array
    required:
      - codeFlowSteps
      - codeFlowChangeCount
      - fieldMappings
      - fieldMappingChangeCount
    type: object
  PathDiffMetadata:
    description: Metadata for a path diff comparison.
    properties:
      baseDate:
        description: Timestamp of the base version.
        format: date-time
        type: string
      baseEventId:
        description: Event ID of the base (older) version.
        type: string
      basePathType:
        $ref: '#/definitions/PathType'
        description: 'Source of the selected base path, when one exists.'
      compareDate:
        description: Timestamp of the compare version.
        format: date-time
        type: string
      compareEventId:
        description: Event ID of the compare (newer) version.
        type: string
      comparePathType:
        $ref: '#/definitions/PathType'
        description: 'Source of the selected compare path, when one exists.'
      componentId:
        description: 'UUID of the component, for back-links.'
        format: uuid
        type: string
      componentName:
        description: Stable name of the component.
        type: string
      egressComponent:
        description: Name of the downstream component connected to the egress.
        type: string
      egressPayloadName:
        description: Payload name of the egress boundary.
        type: string
      ingressComponent:
        description: Name of the upstream component connected to the ingress.
        type: string
      ingressPayloadName:
        description: Payload name of the ingress boundary.
        type: string
    required:
      - componentName
      - ingressPayloadName
      - egressPayloadName
      - baseEventId
      - baseDate
      - compareEventId
      - compareDate
    type: object
  PathDiffResponse:
    description: >-
      Response for the path diff API, comparing a single path between two
      component versions.
    properties:
      diff:
        $ref: '#/definitions/PathDiffDetail'
      metadata:
        $ref: '#/definitions/PathDiffMetadata'
    required:
      - metadata
      - diff
    type: object
  PathResult:
    description: Per-path comparison result between base and compare versions.
    properties:
      details:
        $ref: '#/definitions/PathDetails'
        description: Detailed field/mapping comparisons.
      dimensions:
        additionalProperties:
          $ref: '#/definitions/DimensionResult'
        description: Per-dimension comparison results.
        type: object
      egress:
        $ref: '#/definitions/EgressInfo'
        description: Output interface details.
      ingress:
        $ref: '#/definitions/IngressInfo'
        description: Input interface details.
      notes:
        description: Summary of issues found.
        type: string
      overallStatus:
        $ref: '#/definitions/OverallStatusEnum'
      pathId:
        description: Unique path identifier (pathPayloadName).
        type: string
      pathType:
        $ref: '#/definitions/PathType'
        description: Whether this path came from a scan or a user override (BYO).
      quality:
        $ref: '#/definitions/QualityEnum'
    required:
      - pathId
      - ingress
      - egress
      - overallStatus
      - quality
      - notes
      - dimensions
      - details
    type: object
  PathStep:
    description: >-
      A step in a code flow path, with optional file/line location and change
      indicators.
    properties:
      changeBadge:
        description: 'Badge text indicating the type of change (e.g. "added", "moved").'
        type: string
      componentName:
        description: Name of the component this step belongs to.
        type: string
      file:
        description: File path in the compare version.
        type: string
      id:
        description: Unique identifier for the step.
        type: string
      isChanged:
        description: Whether this step changed between versions.
        type: boolean
      isEgress:
        description: Whether this step is an egress boundary.
        type: boolean
      isIngress:
        description: Whether this step is an ingress boundary.
        type: boolean
      label:
        description: Display label for the step.
        type: string
      lineEnd:
        description: End line in the compare version.
        type: integer
      lineStart:
        description: Start line in the compare version.
        type: integer
      previousFile:
        description: File path in the base version.
        type: string
      previousLineEnd:
        description: End line in the base version.
        type: integer
      previousLineStart:
        description: Start line in the base version.
        type: integer
      sublabel:
        description: Optional secondary label.
        type: string
    required:
      - id
      - label
    type: object
  PathType:
    description: >-
      Indicates how a path was created - either from a scan or via user
      override.
    enum:
      - SCAN_OUTPUT
      - USER_OVERRIDE
    type: string
  PiiCategoryEnum:
    description: type of pii detected in the column name
    enum:
      - phone
      - email
      - credit_card
      - address
      - person
      - birth_date
      - gender
      - nationality
      - ssn
      - zip_code
      - po_box
      - user_name
      - password
      - religion
      - sexual_orientation
      - drivers_license
      - passport
      - birth_certificate
      - medicare
      - concession_card
      - fingerprint
      - face_scan
      - bank_details
      - contact_details
      - tax_file_number
    type: string
    x-nullable: true
  PingResponse:
    properties:
      message:
        type: string
      success:
        type: boolean
    required:
      - success
      - message
    type: object
  PostActionRequest:
    properties:
      destinations:
        items:
          mapping:
            email: ./ActionDestinationEmail.yaml
            slack: ./ActionDestinationSlack.yaml
            webhook: ./ActionDestinationWebhook.yaml
        minItems: 1
        type: array
      name:
        description: The name of the action
        example: email on pricing asset change
        type: string
      triggers:
        items:
          mapping:
            eventName: ./ActionTriggerEventName.yaml
            namespace: ./ActionTriggerNamespace.yaml
            source: ./ActionTriggerSource.yaml
            sourceType: ./ActionTriggerSourceType.yaml
        minItems: 1
        type: array
    required:
      - name
      - triggers
      - destinations
    type: object
  PostActionResponse:
    properties:
      actionId:
        description: The unique identifier of the created action
        type: string
    required:
      - actionId
    type: object
  PostConfigRequest:
    properties:
      config_type:
        description: Type of configuration
        type: string
      config_value:
        additionalProperties:
          type: string
        description: Configuration value as JSON
        type: object
      created_at:
        description: Date time at which the config was created
        format: date-time
        type: string
      language:
        description: Programming language associated with the config (optional)
        type: string
        x-nullable: true
      namespace:
        description: 'Namespace (qa/sandbox/prod) of config (optional, default to qa)'
        type: string
      project_root:
        description: Project root directory (optional)
        type: string
      repo:
        description: Repository associated with the config (optional)
        type: string
        x-nullable: true
      version:
        description: Version of the configuration
        type: string
    required:
      - config_type
      - version
      - config_value
      - created_at
      - project_root
    type: object
  PostConfigResponse:
    properties:
      configIds:
        description: >-
          List of config IDs that were updated, if no configs were updated this
          will be an empty list
        items:
          format: uuid
          type: string
        type: array
      message:
        type: string
    required:
      - message
      - configIds
    type: object
  PostContractRequest: {}
  PostContractResponse:
    properties:
      contractIds:
        description: >-
          List of contract IDs that were updated, if no contracts were updated
          this will be an empty list
        items:
          format: uuid
          type: string
        type: array
      message:
        type: string
    required:
      - message
      - contractIds
    type: object
  PostDefectReportRequest:
    properties:
      componentId:
        description: Lineage component ID
        type: string
      componentName:
        description: Lineage component display name
        type: string
      description:
        description: Description of the defect
        type: string
      egressPayloadName:
        description: Egress payload name for the path
        type: string
      expectedBehavior:
        description: What the user expected to happen
        type: string
      ingressPayloadName:
        description: Ingress payload name for the path
        type: string
      organization:
        description: Customer organization name
        type: string
      pageUrl:
        description: URL where the defect was reported from
        type: string
      pathId:
        description: Path ID within the component
        type: string
      reporterEmail:
        description: Email of the reporter
        type: string
      reporterName:
        description: Name of the reporter
        type: string
      severity:
        description: Severity level
        enum:
          - low
          - medium
          - high
        type: string
    required:
      - description
      - expectedBehavior
      - reporterName
      - reporterEmail
      - organization
      - pageUrl
    type: object
  PostDefectReportResponse:
    type: object
  PostEventsRequest:
    description: Create lineage events or upload lineage data event
    type: object
  PostScaResultsResponse:
    description: Response from posting SCA results.
    properties:
      createdJob:
        description: Whether this request created the backing job for the run.
        type: boolean
      jobId:
        description: The job ID associated with this upload.
        type: string
      runId:
        description: The run ID associated with this upload.
        type: string
    required:
      - runId
      - jobId
      - createdJob
    type: object
  PostScaStartRunRequest:
    properties:
      action:
        description: >-
          Action to perform upon receiving the results. Register should be used
          when the results are active (like on a 'main' branch or production
          system), as assets will be registered from the lineage data. Check
          should be used when the results are from a proposed change (like a
          pull request) and resultant assets will be checked against any
          contracts. Upload is the same as register except that no assets will
          be registered, only the lineage data will be uploaded.
        enum:
          - register
          - check
          - upload
        type: string
      code_info:
        $ref: '#/definitions/StaticAnalysisCodeMetadata'
      collection_mechanism:
        default: BYOL
        description: >-
          How the lineage data was collected. SCA means Gable's static code
          analysis tool scanned the code. BYOL (Bring Your Own Lineage) means
          the caller produced the lineage data externally and is uploading it
          directly.
        enum:
          - SCA
          - BYOL
        type: string
      include_unchanged_assets:
        default: false
        description: Whether to include assets that have not changed since the last run
        type: boolean
      output_format:
        description: 'Format of the output, either ''json'', ''text'', or ''markdown'''
        enum:
          - json
          - text
          - markdown
        type: string
      pr_link:
        description: 'Link to the pull request in the source code repository, if applicable'
        type: string
      run_id:
        description: The ID of the run that the component belongs to
        type: string
      sca_info:
        $ref: '#/definitions/StaticAnalysisToolMetadata'
      type:
        default: CODE
        description: 'Type of the run, either ''code'' or ''data_store'' or ''edge'''
        enum:
          - CODE
          - DATA_STORE
          - EDGE
        type: string
    required:
      - code_info
      - action
    type: object
  PostScaStartRunResponse:
    description: The response from the postScaStartRun function
    properties:
      config: {}
      runId:
        description: The unique run ID assigned to this SCA run
        type: string
    required:
      - runId
    type: object
  PostTestSlackMessageRequest:
    properties:
      channelId:
        description: The slack channel id name to which the test message will be sent
        type: string
    required:
      - channelId
    type: object
  PostTestSlackMessageResponse:
    properties:
      message:
        description: Message that indicates successful action
        type: string
    type: object
  PostTestWebhookMessageRequest:
    properties:
      eventType:
        description: The webhook event type to which the test message will be sent
        type: string
    required:
      - eventType
    type: object
  PostTestWebhookMessageResponse:
    properties:
      messageId:
        description: The message id
        type: string
    required:
      - messageId
    type: object
  PresenceEnum:
    description: Whether an item exists in the base or compare version.
    enum:
      - PRESENT
      - ABSENT
      - EXTRA
    type: string
  PutActionRequest:
    properties:
      actionId:
        description: The unique identifier of the action
        type: string
      destinations:
        items:
          mapping:
            email: ./ActionDestinationEmail.yaml
            slack: ./ActionDestinationSlack.yaml
            webhook: ./ActionDestinationWebhook.yaml
        type: array
      isActive:
        description: Whether the action is active or not
        example: true
        type: boolean
      name:
        description: The name of the action
        example: email on pricing asset change
        type: string
      triggers:
        items:
          mapping:
            eventName: ./ActionTriggerEventName.yaml
            namespace: ./ActionTriggerNamespace.yaml
            source: ./ActionTriggerSource.yaml
            sourceType: ./ActionTriggerSourceType.yaml
        minItems: 1
        type: array
    required:
      - actionId
      - name
      - triggers
      - destinations
      - isActive
    type: object
  PutActionResponse:
    properties:
      actionId:
        description: The unique identifier of the updated action
        type: string
    required:
      - actionId
    type: object
  PutContractStageRequest:
    properties:
      contractStage:
        description: The new contract stage for the contract
        enum:
          - ACTIVE
          - DEPRECATED
          - DRAFT
          - ARCHIVED
        type: string
    required:
      - contractStage
    type: object
  PutContractStageResponse:
    properties:
      contractId:
        description: The ID of the contract that was updated
        format: uuid
        type: string
      message:
        description: Success message or information about the operation
        type: string
    required:
      - message
      - contractId
    type: object
  QualityEnum:
    description: Ground truth quality based on completeness dimensions.
    enum:
      - HIGH
      - LOW
    type: string
  RecapConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/RecapTypeConstraintCategory'
        type: array
      type:
        enum:
          - recap
        type: string
    required:
      - type
      - constraints
    type: object
  RecapTypeConstraintCategory:
    enum:
      - NUMBER
      - TIME
      - STRING
      - BYTES
      - DATA_STRUCTURE
      - OTHER
    type: string
  RegisterDataAssetS3Request:
    properties:
      assets:
        description: Array of data assets to register
        items:
          $ref: '#/definitions/S3Asset'
        type: array
      dry_run:
        default: false
        description: 'If true, no data asset will be registered'
        type: boolean
      prLink:
        description: Link to the PR that may have added or edited the data assets
        example: 'https://github.com/fakeorg/fakerepo/pull/123'
        type: string
        x-nullable: true
    required:
      - assets
    type: object
  RegisterDataAssetsRequest:
    properties:
      assets:
        description: Array of data assets to register
        items:
          $ref: '#/definitions/ResolvedDataAsset'
        type: array
      prLink:
        description: Link to the PR that may have added or edited the data assets
        example: 'https://github.com/fakeorg/fakerepo/pull/123'
        type: string
    required:
      - assets
    type: object
  RegisterDataAssetsResponse:
    properties:
      asset_registration_outcomes:
        items:
          properties:
            data_asset_resource_name:
              $ref: '#/definitions/StructuredDataAssetResourceName'
            error:
              description: Error message if registration of this asset failed
              type: string
          required:
            - data_asset_resource_name
          type: object
        type: array
    required:
      - asset_registration_outcomes
    type: object
  ResolvedDataAsset:
    properties:
      data_asset_resource_name:
        $ref: '#/definitions/StructuredDataAssetResourceName'
      fieldNameToDataAssetFieldProfileMap:
        $ref: '#/definitions/DataAssetFieldsToProfilesMapping'
        description: >-
          A mapping of the field name within the schema to its corresponding
          data profile
      schema:
        $ref: '#/definitions/GableSchemaStruct'
        description: The schema of the data asset
      source_type:
        $ref: '#/definitions/SourceType'
    required:
      - source_type
      - data_asset_resource_name
      - schema
    type: object
  S3Asset:
    properties:
      bucket:
        description: The bucket of the data asset
        type: string
      fieldNameToDataAssetFieldProfileMap:
        $ref: '#/definitions/DataAssetFieldsToProfilesMapping'
        description: >-
          A mapping of the field name within the recap struct schema to its
          corresponding data profile
      pattern:
        description: The pattern of the data asset
        type: string
      schema:
        $ref: '#/definitions/GableSchemaStruct'
        description: The schema of the data asset
    required:
      - schema
      - pattern
      - bucket
    type: object
  S3SamplingParameters:
    description: The parameters used to sample the data
    properties:
      recentFileCount:
        description: Number of most recent files whose schemas are sampled per data asset
        type: integer
      rowSampleCount:
        description: Number of rows sampled per file
        type: integer
    required:
      - rowSampleCount
    type: object
  ScaResultsUploadRequest:
    description: >-
      Union type for uploading SCA results - can be code lineage paths, data
      store metadata, or edge definitions
  SeverityEnum:
    description: Issue severity level for reporting.
    enum:
      - ERROR
      - WARNING
      - REVIEW
      - INFO
      - OK
    type: string
  SourceType:
    description: >-
      The type of the source data asset, indicating its source or format (e.g.,
      postgres, protobuf).
    enum:
      - postgres
      - mysql
      - mssql
      - json_schema
      - avro
      - protobuf
      - python
      - pyspark
      - typescript
      - java
      - s3
      - dataframe
      - kotlin
      - swift
      - php
      - golang
    type: string
  SsoConfig: {}
  SsoSamlFileConfig:
    properties:
      identityProvider:
        description: >
          The name of your identity provider. This value will be displayed to
          users when they log in. 


          Note: This value cannot be the strings "Google" or "SAML" as they're
          reserved words in our identity management platform.
        examples:
          - Okta
          - GoogleWorkspace
          - OneLogin
          - JumpCloud
        pattern: '^(?=[a-zA-Z0-9\(\)\.\-!@]+$)(?!Google|SAML$).*$'
        type: string
      metadataFileContents:
        description: >-
          The contents of the metadata document. Either this or
          metadataDocumentEndpointUrl must be provided.
        type: string
      type:
        description: 'The type of SSO integration, currently only SAML is supported.'
        enum:
          - SAML
        type: string
    required:
      - type
      - identityProvider
      - metadataFileContents
    type: object
  SsoSamlUrlConfig:
    properties:
      identityProvider:
        description: >
          The name of your identity provider. This value will be displayed to
          users when they log in. 


          Note: This value cannot be the strings "Google" or "SAML" as they're
          reserved words in our identity management platform.
        examples:
          - Okta
          - GoogleWorkspace
          - OneLogin
          - JumpCloud
        pattern: '^(?=[a-zA-Z0-9\(\)\.\-!@]+$)(?!Google|SAML$).*$'
        type: string
      metadataDocumentEndpointUrl:
        description: >-
          The URL of the SAML metadata document. Either this or
          metadataFileContents must be provided.
        example: 'https://company.okta.com/app/123456789/sso/saml/metadata'
        type: string
      type:
        description: 'The type of SSO integration, currently only SAML is supported.'
        enum:
          - SAML
        type: string
    required:
      - type
      - identityProvider
      - metadataDocumentEndpointUrl
    type: object
  StaticAnalysisCodeAnchor:
    properties:
      anchor_id:
        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.
        type: string
      code_uri:
        $ref: '#/definitions/StaticAnalysisCodeURI'
    required:
      - anchor_id
      - code_uri
    type: object
  StaticAnalysisCodeMetadata:
    additionalProperties: true
    description: Metadata about the code that is being analyzed
    properties:
      dependencies:
        description: Dependencies of the code repository
        items:
          $ref: '#/definitions/StaticAnalysisDependencyMetadata'
        type: array
      docker_image_version:
        description: Version of the Docker image used
        type: string
      event_repo:
        description: Name of the repository from the GitHub event
        type: string
      external_component_id:
        description: ID of the external component that was analyzed
        type: string
      gable_cli_version:
        description: Version of the Gable CLI used for this run
        type: string
      has_uncommitted_changes:
        description: Whether there are uncommitted changes in the code repository
        type: boolean
      is_default_branch:
        description: Whether this is the default branch of the code repository
        type: boolean
      job_trigger:
        description: Type of the GitHub event
        enum:
          - MERGE_TO_MAIN
          - PULL_REQUEST_COMMENT
          - PULL_REQUEST_CREATED
          - PULL_REQUEST_UPDATED
          - MANUAL
          - UNKNOWN
        type: string
      namespace:
        description: 'Namespace of the customer (e.g. dev, qa, prod)'
        type: string
      operating_system:
        description: Operating system of the machine that ran the static analysis tool
        type: string
      pr_base_branch:
        description: 'Base branch of the pull request, if this was run from a pull request'
        properties:
          branch:
            description: Base branch of the pull request
            type: string
          commit:
            description: Commit hash of the base branch
            type: string
        type: object
      pr_number:
        description: Number of the pull request
        type: integer
      project_root:
        description: Root directory targeted by the static analysis tool
        type: string
      repo_branch:
        description: Branch of the code repository
        type: string
      repo_commit:
        description: Commit hash of the code
        type: string
      repo_commit_timestamp:
        description: Timestamp of the commit
        type: string
      repo_name:
        description: Name of the code repository
        type: string
      repo_ui_url:
        description: URL of the code repository UI (e.g. GitHub URL)
        type: string
      repo_uri:
        description: URI of the code repository
        type: string
      sca_config_version:
        description: Version (git SHA) of the SCA configuration files used
        type: string
      sca_prime_version:
        description: Version of the SCA Prime binary used for this run
        type: string
    required:
      - repo_uri
      - repo_branch
      - repo_commit
      - project_root
    type: object
  StaticAnalysisCodeURI:
    description: >-
      Code URI is a unique identifier for a code location. It is used to
      identify the code location in the codebase.
    properties:
      column_end:
        type: integer
      column_start:
        type: integer
      file:
        description: Relative file path in the repo
        type: string
      line_end:
        type: integer
      line_start:
        type: integer
    required:
      - file
      - line_start
      - column_start
    type: object
  StaticAnalysisCompleteness:
    properties:
      egress:
        $ref: '#/definitions/StaticAnalysisCompletenessClassification'
        description: >-
          The completeness of non-schema egress elements (name, signature, code
          anchor, etc.).
      egress_schema:
        $ref: '#/definitions/StaticAnalysisCompletenessClassification'
        description: The completeness of the egress's field schema.
      field_mappings:
        $ref: '#/definitions/StaticAnalysisCompletenessClassification'
        description: The completeness of the field mappings.
      ingress:
        $ref: '#/definitions/StaticAnalysisCompletenessClassification'
        description: >-
          The completeness of non-schema ingress elements (name, signature, code
          anchor, etc.).
      ingress_schema:
        $ref: '#/definitions/StaticAnalysisCompletenessClassification'
        description: The completeness of the ingress's field schema.
    required:
      - ingress
      - ingress_schema
      - egress
      - egress_schema
      - field_mappings
    type: object
  StaticAnalysisCompletenessClassification:
    description: A completeness classification of a ground truth element.
    enum:
      - UNKNOWN
      - KNOWN_INCOMPLETE
      - KNOWN_COMPLETE
    type: string
  StaticAnalysisDataFlowPath:
    description: >-
      A path in the codebase that starts at an ingress node and ends at an
      egress node
    properties:
      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.
        items:
          $ref: '#/definitions/StaticAnalysisCodeAnchor'
        type: array
      completeness:
        $ref: '#/definitions/StaticAnalysisCompleteness'
        description: Completeness indicators for a ground truth path
      egress:
        $ref: '#/definitions/StaticAnalysisDataFlowPathEnds'
      field_mappings:
        description: >-
          List of identified field mappings between schema at ingress and
          egress.
        items:
          $ref: '#/definitions/StaticAnalysisTabularLineageFieldMapping'
        type: array
      ingress:
        $ref: '#/definitions/StaticAnalysisDataFlowPathEnds'
      payload_name:
        description: >-
          The name of the path. If provided, this value will be used directly
          without being overwritten by computed values.
        type: string
      transformation_summary:
        description: >-
          An AI-generated summary of the data transformation that occurs along
          this path.
        type: string
      transformation_summary_detailed:
        description: >-
          A detailed, AI-generated summary of the data transformation that
          occurs along this path.
        type: string
    required:
      - ingress
      - egress
    type: object
  StaticAnalysisDataFlowPathEnds:
    properties:
      code_anchor:
        $ref: '#/definitions/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.
      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
      kind:
        description: 'The kind of the ingress/egress (e.g. "postgres", "gateway_response")'
        type: string
      payload_name:
        description: The name of the ingress/egress node.
        type: string
      schema:
        $ref: '#/definitions/GableSchemaStruct'
      signature_name:
        description: >-
          The name of the package, class, or method that the ingress/egress
          point is associated with
        type: string
    required:
      - schema
      - signature_name
    type: object
  StaticAnalysisDependencyMetadata:
    description: Metadata about a dependency of the code repository
    properties:
      commit_sha:
        description: Associated commit hash of the dependency repository
        type: string
      commit_timestamp:
        description: Timestamp of the commit
        type: string
      repo_name:
        description: Name of the dependency repository
        type: string
    type: object
  StaticAnalysisPathsApiRequest:
    additionalProperties: false
    description: API request for uploading code lineage paths
    properties:
      paths:
        items:
          $ref: '#/definitions/StaticAnalysisDataFlowPath'
        type: array
      external_component_id:
        description: Optional ID of the external component that was analyzed
        type: string
      is_final_chunk:
        description: Whether this is the final chunk for the run. Controls job completion.
        type: boolean
      job_id:
        description: >-
          The job ID for a continuing chunked upload. Required on continuation
          chunks.
        type: string
      metadata:
        description: Additional metadata for the component.
        properties:
          extras:
            additionalProperties:
              type: string
            type: object
        type: object
      name:
        description: The name of the component that was analyzed
        type: string
      run_id:
        description: The ID of the run that the paths belong to
        type: string
      type:
        description: The type of data being uploaded
        enum:
          - CODE
        type: string
      upload_context:
        $ref: '#/definitions/PostScaStartRunRequest'
    required:
      - paths
      - run_id
      - type
    type: object
  StaticAnalysisPathsUploadRequest:
    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:
        items:
          $ref: '#/definitions/StaticAnalysisDataFlowPath'
        type: array
      external_component_id:
        description: Optional ID of the external component that was analyzed
        type: string
      metadata:
        description: Additional metadata for the component.
        properties:
          extras:
            additionalProperties:
              type: string
            type: object
        type: object
      name:
        description: The name of the component that was analyzed
        type: string
      run_id:
        description: The ID of the run that the paths belong to
        type: string
      type:
        const: CODE
        description: The type of component that was analyzed
        type: string
    required:
      - paths
      - run_id
    type: object
  StaticAnalysisSignature:
    description: A signature for a static analysis tool
    properties:
      class_names:
        description: The names of the classes
        items:
          type: string
        type: array
      kind:
        description: >-
          Unique name for the ingress/egress signature (e.g. "postgres",
          "gateway_response"). All the signatures with the same kind are grouped
          together.
        type: string
      method_names:
        description: The names of the methods
        items:
          type: string
        type: array
    required:
      - class_names
      - method_names
      - kind
    type: object
  StaticAnalysisTabularLineageFieldMapping:
    description: A mapping of a field in the ingress schema to a field in the egress schema
    properties:
      egress_field:
        description: The field in the egress schema
        type: string
      field_data_flow_path:
        description: The field data flow path that represents this mapping
        items:
          $ref: '#/definitions/StaticAnalysisCodeAnchor'
        type: array
      ingress_field:
        description: The field in the ingress schema
        type: string
      kind:
        $ref: '#/definitions/FieldMappingKind'
      notes:
        description: Notes about the mapping
        type: string
    required:
      - ingress_field
      - egress_field
    type: object
  StaticAnalysisToolConfig:
    description: Configuration for a static analysis tool
    properties:
      egress_signatures:
        items:
          $ref: '#/definitions/StaticAnalysisSignature'
        type: array
      ingress_signatures:
        items:
          $ref: '#/definitions/StaticAnalysisSignature'
        type: array
    required:
      - ingress_signatures
      - egress_signatures
    type: object
  StaticAnalysisToolMetadata:
    properties:
      config:
        $ref: '#/definitions/StaticAnalysisToolConfig'
      name:
        description: Name of the SCA tool used
        type: string
      version:
        description: Version of the SCA tool
        type: string
    required:
      - name
      - version
    type: object
  StatusEnum:
    description: Comparison result status between base and compare versions.
    enum:
      - PASS
      - FAIL
      - WARNING
      - INFO
      - NA
    type: string
  StringConstraintEnum:
    enum:
      - charLength
      - isNotEmpty
      - isNull
      - isNullThreshold
    type: string
  StringConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/StringConstraintEnum'
        type: array
      type:
        enum:
          - string
        type: string
    required:
      - type
      - constraints
    type: object
  StructuredDataAssetResourceName:
    properties:
      data_source:
        type: string
      path:
        type: string
      source_type:
        $ref: '#/definitions/SourceType'
    required:
      - source_type
      - data_source
      - path
    type: object
  SummarySection:
    description: >-
      Aggregate statistics for a qualification level (fully or partially
      qualified).
    properties:
      full:
        description: Paths with full match (green).
        type: integer
      highQualityFull:
        description: High quality paths with full match.
        type: integer
      highQualityMissing:
        description: High quality paths that are missing.
        type: integer
      highQualityPartial:
        description: High quality paths with partial match.
        type: integer
      highQualityTotal:
        description: Paths where all completeness = KNOWN_COMPLETE.
        type: integer
      lowQualityFull:
        description: Low quality paths with full match.
        type: integer
      lowQualityMissing:
        description: Low quality paths that are missing.
        type: integer
      lowQualityPartial:
        description: Low quality paths with partial match.
        type: integer
      lowQualityTotal:
        description: Paths with incomplete base version data.
        type: integer
      missing:
        description: Missing paths (red).
        type: integer
      partial:
        description: Paths with partial match (yellow).
        type: integer
      total:
        description: Total path count.
        type: integer
    required:
      - total
      - full
      - partial
      - missing
      - highQualityTotal
      - highQualityFull
      - highQualityPartial
      - highQualityMissing
      - lowQualityTotal
      - lowQualityFull
      - lowQualityPartial
      - lowQualityMissing
    type: object
  SupportedContractConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/ContractConstraintType'
        type: array
      type:
        enum:
          - contract
        type: string
    required:
      - type
      - constraints
    type: object
  TelemetryType:
    description: The type of the telemetry event.
    enum:
      - SCA_PRIME
      - GABLE_CLIENT
    type: string
  TimeConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/NumberConstraintEnum'
        type: array
      type:
        enum:
          - time
        type: string
    required:
      - type
      - constraints
    type: object
  TriggerAddedEvent:
    properties:
      diff:
        description: Details of the modified trigger.
        properties:
          triggerName:
            description: The name of the trigger being added.
            type: string
          type:
            $ref: '#/definitions/ActionTriggerType'
            description: The type of the trigger being added.
        required:
          - triggerName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - TRIGGER_ADDED
        type: string
    required:
      - eventType
      - diff
    type: object
  TriggerDeletedEvent:
    properties:
      diff:
        description: Details of the modified trigger.
        properties:
          triggerName:
            description: The name of the trigger being deleted.
            type: string
          type:
            $ref: '#/definitions/ActionTriggerType'
            description: The type of the trigger being deleted.
        required:
          - triggerName
          - type
        type: object
      eventType:
        description: The type of event that occurred.
        enum:
          - TRIGGER_DELETED
        type: string
    required:
      - eventType
      - diff
    type: object
  UUIDConstraints:
    properties:
      constraints:
        items:
          $ref: '#/definitions/StringConstraintEnum'
        type: array
      type:
        enum:
          - uuid
        type: string
    required:
      - type
      - constraints
    type: object
  UpdateContractEnforcementLevelRequest:
    description: Represents an enforcement level associated with a contract.
    properties:
      enforcementLevel:
        description: The enforcement level for the contract
        enum:
          - RECORD
          - NOTIFY
          - ALERT
          - BLOCK
          - INACTIVE
        type: string
    required:
      - enforcementLevel
    type: object
  UpdateContractSubscriptionRequest:
    properties:
      dataContractId:
        description: Unique identifier of the contract
        format: uuid
        type: string
      email:
        description: The email address of the subscriber if provided
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      githubHandle:
        description: The GitHub handle for the subscriber if provided
        type: string
      slackChannel:
        description: The Slack channel where contract violations will be sent
        type: string
      userId:
        description: The unique identifier of the user
        format: uuid
        type: string
    required:
      - dataContractId
    type: object
  UpdateUserRequest:
    properties:
      email:
        description: 'The email address of the user, which is the primary ID in Gable'
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      firstName:
        description: The first name of the user
        type: string
      githubHandle:
        description: The GitHub handle of the user
        pattern: '^[a-zA-Z0-9-]*$'
        type: string
      lastName:
        description: The last name of the user
        type: string
      role:
        $ref: '#/definitions/UserRole'
        description: The role of the user
    required:
      - email
    type: object
  UpdateUserResponse:
    properties:
      email:
        description: 'The email address of the user, which is the primary ID in Gable'
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      firstName:
        description: The first name of the user
        type: string
      githubHandle:
        description: The GitHub handle of the user
        type: string
      lastName:
        description: The last name of the user
        type: string
      role:
        $ref: '#/definitions/UserRole'
        description: The role of the user
    required:
      - email
      - role
    type: object
  User:
    properties:
      email:
        description: The email address of the user
        pattern: '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
        type: string
      firstName:
        description: 'The first name of the user, if available'
        type: string
      githubHandle:
        description: 'The GitHub handle of the user or team, if available'
        type: string
      lastName:
        description: 'The last name of the user, if available'
        type: string
      role:
        $ref: '#/definitions/UserRole'
        description: The role of the user
      status:
        $ref: '#/definitions/UserStatus'
        description: The status of the user
    required:
      - email
      - status
      - role
    type: object
  UserRole:
    enum:
      - ADMIN
      - EDITOR
      - VIEWER
    type: string
  UserStatus:
    description: |
      User status:

        * `active` - User accepted invitation and is active
        * `invited` - The invitation is sent to the user
        * `deleted` - The user has been deleted
    enum:
      - ACTIVE
      - INVITED
      - DELETED
    type: string
  VersionResponse:
    properties:
      hash:
        type: string
    required:
      - hash
    type: object
  Webhook:
    properties:
      headers:
        additionalProperties:
          description: A string header value
          type: string
        description: A map of headers
        type: object
      id:
        description: Endpoint id
        type: string
      name:
        description: Endpoint name
        type: string
      secret:
        description: Endpoint secret
        type: string
      url:
        description: Endpoint url
        type: string
    required:
      - id
      - url
      - name
      - secret
    type: object
securityDefinitions:
  ApiKeyAuth:
    in: header
    name: X-API-KEY
    type: apiKey
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
x-components: {}

