Foundational · Schema

EdgeProvenanceResponse

The application path behind one lineage edge (design 11 §4.2) — "explain this edge".

CompanyData GovernanceAIData ManagementLineage

Properties

Name Type Description
source string stored = doc 04's stitched-carrier path; derived = run_id-joined RUNS/ACCESS chain; none = an honest empty, never a guess
path array The representative application path — `paths[0]`. Ordered: e.g. [op_A, op_B, op_C], or [producer_op?, carrier, consumer_op?] for a stitched edge; op ends optional (a carrier can dangle)
paths array Every application path behind this edge, each independently explaining it. More than one means several distinct producers write the same dataset pair (e.g. a dozen Informatica mappings loading one job
pathsTruncated boolean True when this edge had more paths than the server serves and `paths` is therefore partial — do not present it as the complete producer list
carriers array The Carrier-typed entries across every entry of `paths`
platforms array Distinct Operation.platform values across `paths` — edge-icon data
jobs array The jobs behind this edge, in the order their first path appears in `paths`. Partial when `paths_truncated`
stepCount integer Distinct Operations across every entry of `paths`
View JSON Schema on GitHub

JSON Schema

foundational-edge-provenance-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/foundational/json-schema/foundational-edge-provenance-response-schema.json",
  "title": "EdgeProvenanceResponse",
  "description": "The application path behind one lineage edge (design 11 §4.2) — \"explain this edge\".",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/foundational-openapi.json#/components/schemas/EdgeProvenanceResponse",
  "properties": {
    "source": {
      "type": "string",
      "enum": [
        "stored",
        "derived",
        "none"
      ],
      "title": "Source",
      "description": "stored = doc 04's stitched-carrier path; derived = run_id-joined RUNS/ACCESS chain; none = an honest empty, never a guess"
    },
    "path": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/APIOperationEntity"
          },
          {
            "$ref": "#/$defs/APICarrierEntity"
          },
          {
            "$ref": "#/$defs/BaseEntity"
          }
        ]
      },
      "type": "array",
      "title": "Path",
      "description": "The representative application path — `paths[0]`. Ordered: e.g. [op_A, op_B, op_C], or [producer_op?, carrier, consumer_op?] for a stitched edge; op ends optional (a carrier can dangle)"
    },
    "paths": {
      "items": {
        "items": {
          "anyOf": [
            {
              "$ref": "#/$defs/APIOperationEntity"
            },
            {
              "$ref": "#/$defs/APICarrierEntity"
            },
            {
              "$ref": "#/$defs/BaseEntity"
            }
          ]
        },
        "type": "array"
      },
      "type": "array",
      "title": "Paths",
      "description": "Every application path behind this edge, each independently explaining it. More than one means several distinct producers write the same dataset pair (e.g. a dozen Informatica mappings loading one job-control table) — not several routes to one answer. Render all of them; `path` is a single-chain convenience projection that necessarily hides the rest"
    },
    "pathsTruncated": {
      "type": "boolean",
      "title": "Pathstruncated",
      "description": "True when this edge had more paths than the server serves and `paths` is therefore partial — do not present it as the complete producer list",
      "default": false
    },
    "carriers": {
      "items": {
        "$ref": "#/$defs/APICarrierEntity"
      },
      "type": "array",
      "title": "Carriers",
      "description": "The Carrier-typed entries across every entry of `paths`"
    },
    "platforms": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Platforms",
      "description": "Distinct Operation.platform values across `paths` — edge-icon data"
    },
    "jobs": {
      "items": {
        "$ref": "#/$defs/APIEdgeJob"
      },
      "type": "array",
      "title": "Jobs",
      "description": "The jobs behind this edge, in the order their first path appears in `paths`. Partial when `paths_truncated`"
    },
    "stepCount": {
      "type": "integer",
      "title": "Stepcount",
      "description": "Distinct Operations across every entry of `paths`",
      "default": 0
    }
  },
  "type": "object",
  "required": [
    "source",
    "path"
  ],
  "$defs": {
    "APICarrierEntity": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "certification": {
          "anyOf": [
            {
              "$ref": "#/$defs/APICertification"
            },
            {
              "type": "null"
            }
          ],
          "description": "The certification of the entity: the one set on the entity itself, else the one on its nearest ancestor (see `ancestors`) that has one"
        },
        "certificationInheritedFrom": {
          "anyOf": [
            {
              "$ref": "#/$defs/APILocationRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "The ancestor `certification` is inherited from; null when the certification is the entity's own or it has none"
        },
        "entityType": {
          "type": "string",
          "const": "CARRIER",
          "title": "Entitytype",
          "default": "CARRIER"
        },
        "ancestors": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/APILocationRef"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ancestors",
          "description": "The locations the entity sits in, outermost first: its containers (account, database, schema, ...) and, for a column, its table. The entity inherits the certification and the custom tags set on them, unless it has its own."
        },
        "family": {
          "type": "string",
          "title": "Family",
          "description": "CarrierKey.Family name, e.g. TOPIC, GLUE_JOB, DAG_ID"
        },
        "namespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Namespace"
        },
        "address": {
          "type": "string",
          "title": "Address"
        },
        "selector": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Selector"
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Displayname"
        },
        "breadcrumbs": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Breadcrumbs",
          "description": "The containers this entity sits in, outermost first — an Informatica operation's `[repo_schema, folder]`, an Airflow task's `[dag_id]` (ADR-5f80bba8). The app-layer counterpart of a dataset's `db › schema` descriptor, and empty whenever the entity genuinely has no hierarchy (an Airflow DAG's namespace is unset), which the frontend renders as an icon-only row rather than a placeholder. Excludes the platform, which every surface already renders as an icon."
        },
        "matchStatus": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "matched",
                "producer_only",
                "consumer_only"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Matchstatus",
          "description": "Resolution state derived from the carrier's incoming edges: matched (has both a producer and a consumer), producer_only, or consumer_only (design 11 §5.1). None when it was not resolved against the graph."
        }
      },
      "type": "object",
      "required": [
        "id",
        "family",
        "address"
      ],
      "title": "APICarrierEntity",
      "description": "The API projection of a ``Carrier`` entity (design 01 §4). See :class:`APIOperationEntity`\nfor the construction-path rationale."
    },
    "APICertification": {
      "type": "string",
      "enum": [
        "certified",
        "deprecated"
      ],
      "title": "APICertification"
    },
    "APIColumnEntitySlim": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "entityId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Entityid",
          "description": "The column's own entity id: the id lineage walks and diff entries name it by. `id` addresses it in this API."
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "The name of the column"
        },
        "columnType": {
          "anyOf": [
            {
              "$ref": "#/$defs/ColumnType"
            },
            {
              "type": "null"
            }
          ],
          "description": "The type of the column"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Parentid",
          "description": "The immediate owning Port or parent Field"
        },
        "certification": {
          "anyOf": [
            {
              "$ref": "#/$defs/APICertification"
            },
            {
              "type": "null"
            }
          ],
          "description": "The certification of the column: the one set on the column itself, else the one on its nearest ancestor (its table, then its containers) that has one"
        },
        "certificationInheritedFrom": {
          "anyOf": [
            {
              "$ref": "#/$defs/APILocationRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "The ancestor `certification` is inherited from; null when the certification is the column's own or it has none"
        },
        "labels": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Labels",
          "description": "The column's labels, embedded with `labels`: the tags scans found on it and the custom tags in effect on it, its own and, per tag name it has none of, its nearest ancestor's. A tag with several values joins them with ', '."
        },
        "owners": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/PublicEntityOwner"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Owners",
          "description": "The column's owners, embedded with `owners`: its own and every ancestor's, each user once."
        }
      },
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "title": "APIColumnEntitySlim"
    },
    "APIEdgeJob": {
      "properties": {
        "key": {
          "type": "string",
          "title": "Key",
          "description": "The DAG/workflow id, else the first step's own id"
        },
        "containerId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Containerid",
          "description": "The DAG/workflow, when the job has one"
        },
        "firstStepId": {
          "type": "string",
          "title": "Firststepid",
          "description": "The first Operation of the job's first path"
        },
        "pathIndexes": {
          "items": {
            "type": "integer"
          },
          "type": "array",
          "title": "Pathindexes",
          "description": "The indexes into `paths` of this job's paths"
        },
        "stepCount": {
          "type": "integer",
          "title": "Stepcount",
          "description": "Distinct Operations across this job's paths"
        }
      },
      "type": "object",
      "required": [
        "key",
        "firstStepId",
        "pathIndexes",
        "stepCount"
      ],
      "title": "APIEdgeJob",
      "description": "One job behind a lineage edge: the DAG/workflow the first step of its paths sits in, or that step\nitself when it sits in no single container. Keyed as ``AppPathSummary.job_count`` counts jobs."
    },
    "APIEntityType": {
      "type": "string",
      "enum": [
        "TABLE",
        "DASHBOARD",
        "FILE",
        "STREAM",
        "WAREHOUSE_TASK",
        "SALESFORCE_RESOURCE",
        "SPREADSHEET",
        "WEB_RESOURCE",
        "POWER_PLATFORM_DATAFLOW",
        "EXECUTED_QUERY",
        "COLUMN",
        "DASHBOARD_COLUMN",
        "FILE_COLUMN",
        "STREAM_COLUMN",
        "WAREHOUSE_TASK_COLUMN",
        "SALESFORCE_RESOURCE_COLUMN",
        "SPREADSHEET_COLUMN",
        "WEB_RESOURCE_COLUMN",
        "POWER_PLATFORM_DATAFLOW_COLUMN",
        "EXECUTED_QUERY_COLUMN",
        "OPERATION",
        "PORT",
        "CARRIER",
        "UNKNOWN"
      ],
      "title": "APIEntityType",
      "description": "Enum for the types of entities that can be returned in the lineage response"
    },
    "APILastRun": {
      "properties": {
        "outcome": {
          "$ref": "#/$defs/RunOutcome"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Status",
          "description": "The status exactly as the connector served it"
        },
        "startedAt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Startedat",
          "description": "When the run started, as served"
        },
        "finishedAt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Finishedat",
          "description": "When the run finished, as served"
        },
        "durationSeconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Durationseconds"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error",
          "description": "The run's error message, when it failed with one"
        }
      },
      "type": "object",
      "required": [
        "outcome"
      ],
      "title": "APILastRun",
      "description": "The latest run a connector reported for an Operation (or one of its placements)."
    },
    "APILocationRef": {
      "properties": {
        "locationId": {
          "type": "string",
          "title": "Locationid",
          "description": "The location's id. The certification and tag endpoints take it as `entity_id`, so a value set on a container applies to everything under it."
        },
        "level": {
          "type": "string",
          "title": "Level",
          "description": "A container's level, such as `account`, `db` or `schema`, or an entity's type, such as `table`"
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "The container's or entity's name"
        }
      },
      "type": "object",
      "required": [
        "locationId",
        "level",
        "name"
      ],
      "title": "APILocationRef",
      "description": "A location a certification or custom tags can be set on: a container (an account, a database, a schema,\na BI project or folder, ...) or an entity."
    },
    "APIOperationEntity": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "certification": {
          "anyOf": [
            {
              "$ref": "#/$defs/APICertification"
            },
            {
              "type": "null"
            }
          ],
          "description": "The certification of the entity: the one set on the entity itself, else the one on its nearest ancestor (see `ancestors`) that has one"
        },
        "certificationInheritedFrom": {
          "anyOf": [
            {
              "$ref": "#/$defs/APILocationRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "The ancestor `certification` is inherited from; null when the certification is the entity's own or it has none"
        },
        "entityType": {
          "type": "string",
          "const": "OPERATION",
          "title": "Entitytype",
          "default": "OPERATION"
        },
        "ancestors": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/APILocationRef"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ancestors",
          "description": "The locations the entity sits in, outermost first: its containers (account, database, schema, ...) and, for a column, its table. The entity inherits the certification and the custom tags set on them, unless it has its own."
        },
        "kind": {
          "type": "string",
          "title": "Kind",
          "description": "OperationKind name, e.g. TASK, DAG, FUNCTION"
        },
        "platform": {
          "type": "string",
          "title": "Platform",
          "description": "Operation.Platform name, e.g. AIRFLOW"
        },
        "executionMode": {
          "type": "string",
          "title": "Executionmode",
          "description": "ExecutionMode name: BATCH or CONTINUOUS"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Displayname"
        },
        "namespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Namespace"
        },
        "configParams": {
          "items": {
            "$ref": "#/$defs/APIParamBinding"
          },
          "type": "array",
          "title": "Configparams"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Parentid",
          "description": "Containment parent entity id (e.g. a TASK's DAG), when this operation is contained in exactly one container; the frontend derives containment child ids from it (design 11 §6.1, ADR-96f314e8/ADR-215f2779). Since ADR-85e440ea an Operation is minted per definition, so containment is carried by `placements`: this field is the single-container convenience projection and is None for a definition reused across containers — read `placements` for the general case."
        },
        "placements": {
          "items": {
            "$ref": "#/$defs/APIPlacement"
          },
          "type": "array",
          "title": "Placements",
          "description": "Every container this operation is placed in, with that placement's own run history (ADR-85e440ea). A definition reused across N containers has N entries; the per-placement facts live here rather than in `config_params`, which would otherwise hold N nameless copies of each."
        },
        "runSummary": {
          "anyOf": [
            {
              "$ref": "#/$defs/APIRunSummary"
            },
            {
              "type": "null"
            }
          ],
          "description": "The operation's runs, typed: as its first placement with run params reports them, else as its own `config_params` do. None when nothing reports a run fact. A placement's own runs are on `placements[].run_summary`"
        },
        "templateMultiplicity": {
          "anyOf": [
            {
              "$ref": "#/$defs/APITemplateMultiplicity"
            },
            {
              "type": "null"
            }
          ],
          "description": "The ×N template marker (F5), present only for a template fan-out operation"
        },
        "fusesWithEntityId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Fuseswithentityid",
          "description": "The id of the single table this operation 1:1-fuses with (a MODEL that writes exactly one table whose only producer is this operation, design 10 §4.1); the frontend collapses the model↔table pair into one fused card. None when the operation is not fusable."
        },
        "ports": {
          "items": {
            "$ref": "#/$defs/APIPortEntity"
          },
          "type": "array",
          "title": "Ports",
          "description": "The operation's ports — its grouped PARAM/PAYLOAD inputs and RETURN outputs (design 01 §3, ADR-96f314e8), rendered as column-like rows on the operation card. Graph-derived, so populated only when this operation is served as a canvas card (neighbors / triggers); empty on the pure proto projection (provenance / search rows)."
        },
        "portFlowEdges": {
          "items": {
            "$ref": "#/$defs/PortFlowEdgeView"
          },
          "type": "array",
          "title": "Portflowedges",
          "description": "The PORT_FLOW edges (port→port arg/return data flow, ADR-96f314e8) incident to this operation's ports, with their per-caller ParamBindings. Same graph-derived, card-only population as `ports`."
        },
        "breadcrumbs": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Breadcrumbs",
          "description": "The containers this entity sits in, outermost first — an Informatica operation's `[repo_schema, folder]`, an Airflow task's `[dag_id]` (ADR-5f80bba8). The app-layer counterpart of a dataset's `db › schema` descriptor, and empty whenever the entity genuinely has no hierarchy (an Airflow DAG's namespace is unset), which the frontend renders as an icon-only row rather than a placeholder. Excludes the platform, which every surface already renders as an icon."
        },
        "portColumnFlowEdges": {
          "items": {
            "$ref": "#/$defs/PortColumnFlowEdgeView"
          },
          "type": "array",
          "title": "Portcolumnflowedges",
          "description": "The column-granular PORT_FLOW edges (ADR-2c23c57d) incident to this operation's port fields — the arm whose far end is a dataset column rather than another operation's port, which makes this operation a visible hop in column lineage. Same graph-derived, card-only population as `ports`."
        }
      },
      "type": "object",
      "required": [
        "id",
        "kind",
        "platform",
        "executionMode",
        "name"
      ],
      "title": "APIOperationEntity",
      "description": "The API projection of an ``Operation`` entity (design 01 §2, design 11 §6.1).\n\nConstructed directly from the proto ``Entity`` via :func:`api_operation_entity_from_proto`\n— never through ``from_entity_type``/``api_entity_from_entity`` (ADR-3c1fad53:\napp-graph entities have no dataset-document representation and are served by their own surface)."
    },
    "APIParamBinding": {
      "properties": {
        "name": {
          "type": "string",
          "title": "Name"
        },
        "kind": {
          "type": "string",
          "title": "Kind"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Value",
          "description": "The resolved value, when resolvable"
        },
        "valueSource": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Valuesource",
          "description": "How value was obtained: literal, config:<key>, env:<VAR>, arg:<caller_port>, ..."
        }
      },
      "type": "object",
      "required": [
        "name",
        "kind"
      ],
      "title": "APIParamBinding",
      "description": "The API projection of ``ParamBinding`` (design 01 §3.1)."
    },
    "APIPlacement": {
      "properties": {
        "containerId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Containerid",
          "description": "The containing DAG/workflow operation's entity id"
        },
        "instanceKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Instancekey",
          "description": "Platform-native placement id (Informatica OPB_TASK_INST.INSTANCE_ID, an Airflow task_id). Unique only within its container, so never an identity on its own."
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Displayname",
          "description": "The name this placement carries when it differs from the definition's name"
        },
        "runParams": {
          "items": {
            "$ref": "#/$defs/APIParamBinding"
          },
          "type": "array",
          "title": "Runparams",
          "description": "This placement's own run history (last_run_*, row counts)"
        },
        "runSummary": {
          "anyOf": [
            {
              "$ref": "#/$defs/APIRunSummary"
            },
            {
              "type": "null"
            }
          ],
          "description": "This placement's runs, typed: its `run_params` read over the operation's `config_params`. None when the placement serves no run params"
        }
      },
      "type": "object",
      "title": "APIPlacement",
      "description": "One occurrence of an Operation inside a container (ADR-85e440ea).\n\nSince an Operation is minted per definition, \"which container is this in\" and \"how did its last\nrun go\" are per-placement facts: a session reused by three workflows has three placements, each\nwith its own outcome. ``run_params`` reuses the ``config_params`` binding shape and names, so the\ninspector's prefix grouping applies to it unchanged."
    },
    "APIPortCoverageGap": {
      "properties": {
        "gap": {
          "type": "string",
          "title": "Gap"
        },
        "valuePath": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Valuepath"
        },
        "callSiteKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Callsitekey"
        },
        "runId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Runid"
        }
      },
      "type": "object",
      "required": [
        "gap"
      ],
      "title": "APIPortCoverageGap",
      "description": "One retained unsupported-evidence observation for a Port."
    },
    "APIPortEntity": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "certification": {
          "anyOf": [
            {
              "$ref": "#/$defs/APICertification"
            },
            {
              "type": "null"
            }
          ],
          "description": "The certification of the entity: the one set on the entity itself, else the one on its nearest ancestor (see `ancestors`) that has one"
        },
        "certificationInheritedFrom": {
          "anyOf": [
            {
              "$ref": "#/$defs/APILocationRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "The ancestor `certification` is inherited from; null when the certification is the entity's own or it has none"
        },
        "entityType": {
          "type": "string",
          "const": "PORT",
          "title": "Entitytype",
          "default": "PORT"
        },
        "ancestors": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/APILocationRef"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ancestors",
          "description": "The locations the entity sits in, outermost first: its containers (account, database, schema, ...) and, for a column, its table. The entity inherits the certification and the custom tags set on them, unless it has its own."
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "The port's identifier within its Operation. Identity-bearing, and not necessarily the name of whatever sits on the other end of its edge (ADR-d121cc23)"
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Displayname",
          "description": "The port's human label, when it differs from `name` — an Informatica port is keyed by its widget instance but labelled with the dataset it moves. Cosmetic; render this and fall back to `name`"
        },
        "kind": {
          "type": "string",
          "title": "Kind",
          "description": "PortKind name: PARAM, RETURN, or PAYLOAD"
        },
        "index": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Index",
          "description": "Positional ordinal for positional args (mirrors Column.index)"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Parentid",
          "description": "The containing Operation's entity id (ADR-96f314e8)"
        },
        "children": {
          "items": {
            "$ref": "#/$defs/APIColumnEntitySlim"
          },
          "type": "array",
          "title": "Children",
          "description": "The port's field children (design 01 §3), shown in the inspector"
        },
        "fieldsTruncated": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Fieldstruncated",
          "description": "True when `children` is only a bounded partial projection of the Port's stored Field tree. False means field hydration completed; omitted means this endpoint did not hydrate Fields."
        },
        "breadcrumbs": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Breadcrumbs",
          "description": "The containers this port sits in, outermost first, ENDING IN ITS OWNING OPERATION's name — unlike `APIOperationEntity.breadcrumbs`, which ends at that operation's containers. A port is rendered as a row of its own in search, where the operation is the crumb that tells two same-named ports apart (FOU-16141). Empty when the owning operation has no location, which the clients render as an icon-only row."
        },
        "coverageGaps": {
          "items": {
            "$ref": "#/$defs/APIPortCoverageGap"
          },
          "type": "array",
          "title": "Coveragegaps",
          "description": "Machine-readable reasons why finer-grained flow could not safely be materialized"
        }
      },
      "type": "object",
      "required": [
        "id",
        "name",
        "kind"
      ],
      "title": "APIPortEntity",
      "description": "The API projection of a ``Port`` entity (design 01 §3, ADR-96f314e8) — a parameter or return of\nan Operation, child of it via ``parent_id``. Its field children reuse the slim column projection\n(ADR-96f314e8: a port's fields are Column subtypes). See :class:`APIOperationEntity` for the\nconstruction-path rationale (never through ``from_entity_type``)."
    },
    "APIPortFlowEvidence": {
      "properties": {
        "callSiteKey": {
          "anyOf": [
            {
     

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://artifacts.apis.io/foundational/json-schema/foundational-edge-provenance-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/foundational-edge-provenance-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.