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.
Add an input port
You add declared input ports to ODPS data products in the Studio. You can also add them in the YAML editor or through the API. Input ports that come from an access agreement are managed through the access approval workflow, not here.
- In the Studio, open the data product and click Add Input Port in the Input Ports section.
- Enter a Name. The name must be unique in the data product and must not contain
/,\,%,;,?or#. - Choose how to link a data contract:
- Connect a data contract: Select an existing data contract. A contract that an output port publishes connects this data product to the providing data product. A contract without a publisher describes an external or ingested source.
- Create a new data contract: The data contract editor opens. Entropy Data creates the input port when you save the new contract, and the port takes over the version of that contract.
- I will connect a data contract later: Entropy Data creates the input port without a data contract.
- If you connect a data contract, set the Version of the contract that the input port consumes.
- Click Save.
The version works like the version on an output port. A full version, such as 1.0.1, names
exactly that version. A prefix, such as 1 or 1.0, names the latest version in that range. We
recommend that you track only major versions.
If you create a new data contract and that contract needs approval, the input port is not created automatically. Add the input port after the contract is approved.
Edit or delete an input port
Each declared input port card has an Actions menu with these items:
- Edit Input Port opens a form for the name, version, data contract, server, tags, authoritative definitions, and custom properties.
- View Data Contract opens the linked data contract.
- Delete Input Port removes the input port from the data product.
The Server field selects the server of the data contract that the input port consumes.
Entropy Data stores it as the contractServer custom property. To remove a linked data contract,
select No data contract in the edit form and save.
If changes to the data product need approval, the buttons change to Request Add, Request Update, and Request Delete. Entropy Data then creates a change request instead of changing the data product directly.
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.