Input Ports
An input port documents the upstream data a data product consumes. In the
Open Data Product Standard (ODPS),
input ports live in the inputPorts array of the data product and usually reference the
data contract of the data they consume.
Input ports make the data flow into a data product explicit: they show, on the data product itself, where its source data comes from and which contract describes it.
Two ways an input port appears
On a data product's details page, the Input Ports section can contain two kinds of cards:
- Declared input ports — input ports defined in the data product's ODPS
inputPortsarray. The author declares them in the YAML and (optionally) links a data contract viacontractId. These cards are labeled Input Port. - Input ports via access requests — when a data product is granted access to another data product's output port through the access approval workflow, Entropy Data derives an input port from that granted access agreement and shows it here. These cards are labeled Input Port via Access Request.
Both kinds are shown together, so the Input Ports section is a complete picture of everything the data product consumes — what it declares for itself and what it has been granted access to.
Input Ports vs. Access Agreements
Input ports and access agreements are related but answer different questions:
| Input Port (ODPS) | Access Agreement | |
|---|---|---|
| Question it answers | What data does this product consume? | Is this consumer allowed to use that output port? |
| Defined by | The data product author, in the inputPorts array of the ODPS specification | The request → approval workflow between a consumer and a provider |
| Scope | A documented dependency on an upstream data contract | A governed permission for a specific output port of a specific provider |
| Carries | name, version, contractId, tags, authoritative definitions, custom properties | Purpose, access period (start / end / next reassessment), status, the parties involved |
| Lifecycle | Edited as part of the data product specification | Requested, approved, rejected, expired, revoked |
| Where it lives | In the data product's YAML | As a separate access resource, managed in the workflow |
A useful way to think about it:
- A declared input port is a statement of intent — “this data product consumes that data, described by this contract.” It is part of how the data product describes itself, independent of permissions.
- An access agreement is a governed grant — “this consumer may use that output port.” It is created and managed through the approval workflow and carries the governance metadata (purpose, validity period, status).
When an access agreement is granted, Entropy Data surfaces it in the consuming data product's Input Ports section as a convenience, so the section reflects both declared dependencies and granted access in one place. The card for a granted agreement additionally shows its purpose and access period, mirroring the access details.
Adding and removing declared input ports is currently only possible through the YAML editor (or the API). There is no dedicated form yet to add or remove input ports in the data product edit UI. Input ports that come from an access request are managed through the access approval workflow, not the YAML.
Declaring an input port in YAML
A declared input port is an entry in the inputPorts array. It links the data contract that
describes the consumed data through contractId:
inputPorts:
- name: orders-feed
version: "1.0.0"
contractId: orders-contract
tags:
- pii
authoritativeDefinitions:
- type: businessDefinition
url: https://example.com/semantics/orders
customProperties:
- property: description
value: Order events consumed from the Orders data product.
The referenced contractId is resolved to a data contract in your organization. If the contract is
described only by input ports — that is, no output port in your organization publishes it — the
card marks it as an Input Port Data Contract to distinguish it from a shared, published
contract.