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

# List projected strand edges touching a component.

> EXPERIMENTAL. List strand edges touching a component on either side, projected from the edge lifecycle event log. Each active edge is evaluated against both endpoint components' latest scans: connected when both payload addresses resolve in their roll-ups, pending when a side's scan carries no strands, dangling when a resolved side no longer exposes the address, deleted when the latest lifecycle event is a deletion.



## OpenAPI

````yaml /api-reference/bundled.yaml get /v0/experimental/component/{id}/discriminator_edges
openapi: 3.1.0
info:
  title: Gable API
  description: >
    API to interact with the Gable platform

    ## Authorization

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

    Example: `curl -H "X-API-KEY: <your-api-key>"
    https://api-{organization}.gable.ai/v0/ping`
  contact:
    name: Gable Engineering
    url: https://gable.ai
    email: engineers@gable.ai
  version: 1.54.0
servers:
  - url: https://{hostname}.gable.ai
    description: Gable API
    variables:
      hostname:
        default: demo-api
        description: Customer environment assigned by Gable
security:
  - ApiKeyAuth: []
tags:
  - name: action
  - name: api-keys
  - name: auth
  - name: changelog
  - name: config
  - name: debug
  - name: settings
  - name: slack
  - name: sso
  - name: webhook
  - name: notifications
  - name: telemetry
  - name: component
  - name: components
  - name: sca
  - name: cross-service-components
  - name: lineage
  - name: events
  - name: measurements
  - name: defect-report
  - name: data-tagging
    description: Tag vocabulary management and field level tagging of lineage boundaries.
paths:
  /v0/experimental/component/{id}/discriminator_edges:
    get:
      tags:
        - lineage
      summary: List projected strand edges touching a component.
      description: >-
        EXPERIMENTAL. List strand edges touching a component on either side,
        projected from the edge lifecycle event log. Each active edge is
        evaluated against both endpoint components' latest scans: connected when
        both payload addresses resolve in their roll-ups, pending when a side's
        scan carries no strands, dangling when a resolved side no longer exposes
        the address, deleted when the latest lifecycle event is a deletion.
      operationId: getExperimentalComponentDiscriminatorEdges
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
          description: UUID of the component.
      responses:
        '200':
          description: Projected strand edges touching the component.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscriminatorEdgeListResponse'
        '404':
          description: Component not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error (includes typed stamp-integrity errors)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    DiscriminatorEdgeListResponse:
      type: object
      description: >-
        Strand edges touching a component on either side, projected from the
        edge lifecycle event log against each endpoint's latest scan.
      properties:
        edges:
          type: array
          items:
            $ref: '#/components/schemas/DiscriminatorProjectedEdge'
        invalidEventCount:
          type: integer
          description: >-
            Stored lifecycle events whose persisted payload could not be
            interpreted; counted, never silently dropped.
      required:
        - edges
        - invalidEventCount
      additionalProperties: false
    ErrorResponse:
      type: object
      required:
        - message
      properties:
        id:
          type: number
        title:
          type: string
        message:
          type: string
    DiscriminatorProjectedEdge:
      type: object
      description: >-
        One strand edge as projected from its lifecycle events. The latest
        declaration/deletion per edge id wins; an active edge is then evaluated
        against both endpoint components' selected scans.
      properties:
        edgeId:
          type: string
          format: uuid
        state:
          type: string
          enum:
            - connected
            - pending
            - dangling
            - deleted
          description: >-
            connected — both payload addresses resolve in their roll-ups;
            pending — at least one side's selected scan carries no strands;
            dangling — both sides are readable but at least one payload address
            is absent from its roll-up; deleted — the latest lifecycle event is
            a deletion (audit channel only).
        origin:
          type: string
          enum:
            - SCANNER
            - MANUAL
          description: >-
            How the edge was declared. SCANNER edges came from immutable scanner
            attachments; MANUAL edges were declared through the BYO edge API.
        source:
          $ref: '#/components/schemas/DiscriminatorGroupAddress'
        destination:
          $ref: '#/components/schemas/DiscriminatorGroupAddress'
        fieldMappings:
          type: array
          items:
            $ref: '#/components/schemas/DiscriminatorEdgeFieldMapping'
        sourceGroupId:
          type: string
          description: Advisory payload group-id stamp from the declaration.
        destinationGroupId:
          type: string
          description: Advisory payload group-id stamp from the declaration.
        note:
          type: string
        sourceDisplay:
          $ref: '#/components/schemas/DiscriminatorEdgeEndpointDisplay'
          description: >-
            Display identity for the source endpoint. Present when the endpoint
            component's registry record was readable at projection time.
        destinationDisplay:
          $ref: '#/components/schemas/DiscriminatorEdgeEndpointDisplay'
          description: >-
            Display identity for the destination endpoint. Present when the
            endpoint component's registry record was readable at projection
            time.
      required:
        - edgeId
        - state
        - origin
        - source
        - destination
        - fieldMappings
        - sourceGroupId
        - destinationGroupId
      additionalProperties: false
    DiscriminatorGroupAddress:
      type: object
      description: The metadata coordinates for a discriminator group
      properties:
        componentId:
          type: string
          format: uuid
          description: The component this group lives on. Must equal the route component.
        level:
          $ref: '#/components/schemas/DiscriminatorLevel'
        ancestors:
          type: array
          description: >-
            Root-to-immediate-parent ancestor chain. Empty for a `payload`;
            exactly one `payload` entry for a `field_mapping`. Every ancestor
            carries the same component and config identity as this wrapper.
          items:
            $ref: '#/components/schemas/DiscriminatorGroupAncestor'
        coordinates:
          $ref: '#/components/schemas/DiscriminatorGroupCoordinates'
      required:
        - componentId
        - level
        - ancestors
        - coordinates
      additionalProperties: false
    DiscriminatorEdgeFieldMapping:
      type: object
      description: >-
        One cross-service field mapping carried by an edge. Paths are
        dot-separated field paths (e.g. `order.customer.id`); a literal dot in a
        field name is not supported and is rejected as FIELD_PATH_UNSUPPORTED.
      properties:
        sourceFieldPath:
          type: string
          description: Field path on the edge's source payload.
        destinationFieldPath:
          type: string
          description: Field path on the edge's destination payload.
        notes:
          type: string
          description: Optional free-text note for this mapping.
        dataStoreEvidence:
          type: array
          description: >-
            Scanner-derived evidence describing which part of a whole
            application value the mapped data-store field contributes to. These
            entries enrich this field mapping; they do not declare additional
            discriminator fields or nested field mappings.
          items:
            type: object
            additionalProperties: false
            properties:
              derivation:
                type: string
                enum:
                  - direct
                  - computed
                  - aggregate
                  - unknown
              projectionLabel:
                type: string
                description: SQL projection or mapper label proven for this contribution.
              applicationFieldPath:
                type: string
                description: >-
                  Unambiguous path within the whole application value, when the
                  scanner can prove one.
            required:
              - derivation
      required:
        - sourceFieldPath
        - destinationFieldPath
      additionalProperties: false
    DiscriminatorEdgeEndpointDisplay:
      type: object
      description: >-
        Display identity for one strand edge endpoint: the endpoint component's
        registry name and a label for the addressed payload, derived from the
        declaration's coordinates. Carried alongside the authoritative address
        so consumers can render an edge without loading the endpoint component.
      properties:
        componentName:
          type: string
        componentType:
          type: string
          enum:
            - CODE
            - DATA_STORE
          description: >-
            Registry component class of the endpoint component: CODE for repo
            components, DATA_STORE for data-store components. A data-store
            endpoint is addressed as one payload named by the store and its
            mapped field paths are the store schema's field names.
        payloadLabel:
          type: string
          description: >-
            The endpoint payload's `payload_name` coordinate when present,
            otherwise the coordinate values joined in key order.
      required:
        - componentName
        - componentType
        - payloadLabel
      additionalProperties: false
    DiscriminatorLevel:
      type: string
      description: >-
        A level in the product_canonical group hierarchy. `payload` is the root
        level; `field_mapping` is its child. The group_by dimensions for each
        level are defined by the config, not enumerated by this API (see
        DiscriminatorGroupCoordinates).
      enum:
        - payload
        - field_mapping
    DiscriminatorGroupAncestor:
      type: object
      description: >-
        One ancestor group in a canonical address chain. Ancestors are ordered
        root-to-immediate-parent: a `field_mapping` carries its `payload`, and a
        `payload` carries none. The chain's depth and each level's coordinate
        dimensions are the discriminator config's, not this API's — copy an
        ancestor's coordinates verbatim rather than rebuilding them. The service
        derives the parent chain from these coordinates; clients never supply an
        authoritative parent group ID.
      properties:
        level:
          $ref: '#/components/schemas/DiscriminatorLevel'
        coordinates:
          $ref: '#/components/schemas/DiscriminatorGroupCoordinates'
      required:
        - level
        - coordinates
      additionalProperties: false
    DiscriminatorGroupCoordinates:
      type: object
      description: >-
        Discriminator-group coordinates — the durable address of a group, as
        key-value pairs of the facts the group is grouped by. Keys are the
        discriminator config's group_by dimensions for the group's level,
        verbatim; the dimension vocabulary is defined by the config, not by this
        API. Values are the exact grouping facts; null is the engine's null
        coordinate (fact unknown). Edges and BYO metadata attach to lineage by
        these coordinates, never by group ID (group IDs are derived from
        coordinates by the discriminator engine and are only stable within one
        discriminator config).
      additionalProperties:
        description: >-
          A grouping fact. The engine's coordinate value algebra: null, boolean,
          integer, string, or array of strings.
        anyOf:
          - type: 'null'
          - type: boolean
          - type: integer
          - type: string
          - type: array
            items:
              type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.