Skip to content

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 inputPorts array. The author declares them in the YAML and (optionally) links a data contract via contractId. 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 answersWhat data does this product consume?Is this consumer allowed to use that output port?
Defined byThe data product author, in the inputPorts array of the ODPS specificationThe request → approval workflow between a consumer and a provider
ScopeA documented dependency on an upstream data contractA governed permission for a specific output port of a specific provider
Carriesname, version, contractId, tags, authoritative definitions, custom propertiesPurpose, access period (start / end / next reassessment), status, the parties involved
LifecycleEdited as part of the data product specificationRequested, approved, rejected, expired, revoked
Where it livesIn the data product's YAMLAs 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.

  1. In the Studio, open the data product and click Add Input Port in the Input Ports section.
  2. Enter a Name. The name must be unique in the data product and must not contain /, \, %, ;, ? or #.
  3. 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.
  4. If you connect a data contract, set the Version of the contract that the input port consumes.
  5. 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.