Skip to content

connector/consumer

Step Summary
connector/consumer/discover_connector Discover a counter-party's DSP endpoint, ID and protocol from its BPN.
connector/consumer/do_dsp Run the full DSP flow (catalog → negotiation → transfer) via the SDK.
connector/consumer/do_dsp_with_bpnl Run the full DSP flow using BPNL-based connector discovery via the SDK.
connector/consumer/extract_dataset Extract the first matching dataset from catalog offers by dct:type.
connector/consumer/get_edr Retrieve the EDR data address for a completed transfer.
connector/consumer/initiate_transfer Start a data transfer for a contract that has already been negotiated.
connector/consumer/negotiate Negotiate a contract with the provider and wait for the outcome.
connector/consumer/pull_data_filtered Run the full DSP flow in one step, optionally constrained to one policy.
connector/consumer/pull_data_filtered_by_policy Run the full DSP flow, accepting an offer that matches any of several policies.
connector/consumer/query_catalog Query a provider's catalog via the SDK connector consumer service.
connector/consumer/query_catalog_by_asset_id Query the catalog filtered by a specific asset ID.
connector/consumer/query_catalog_by_bpnl Query the catalog using BPNL-based connector discovery.
connector/consumer/query_catalog_with_filters Query a provider's catalog with multiple filter expressions via the SDK.

connector/consumer/discover_connector

Discover a counter-party's DSP endpoint, ID and protocol from its BPN.

Saturn only. The endpoint this calls is a Saturn addition and the SDK exposes it on the Saturn consumer service alone, so the step is registered for that release and a test on any other cannot resolve it.

Inputs

Parameter Type Required Default Also accepts Description
bpnl string yes — — BPN of the counter-party whose connector is discovered.
counter_party_address string no '' — DSP endpoint to discover against, as its root or as the versioned endpoint the SUT binding carries — a trailing version path is dropped, since discovery is what appends it. When omitted the connector resolves the address from the BPN alone.
namespace string no 'https://w3id.org/edc/v0.0.1/ns/' — Namespace the response keys are prefixed with; bare keys are read too.

Output — the value assertions and returns: read

Output contract of connector/consumer/discover_connector.

Field Type Description
discovery any The discovery response document, unchanged.
counter_party_address string DSP endpoint the counter-party is addressed at.
counter_party_id string ID the counter-party identifies itself as.
protocol string DSP protocol version the endpoint speaks, e.g. 'dataspace-protocol-http:2025-1'.

connector/consumer/do_dsp

Run the full DSP flow (catalog → negotiation → transfer) via the SDK.

Returns the resulting data-plane address so connector/dataplane/http_request can fetch the data without any further wiring.

Inputs

Parameter Type Required Default Also accepts Description
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
expected_policies list of object no [] — ODRL policies the negotiation is allowed to accept, as the raw policy document, the testlab simplified spelling, JSON text, or the whole 'config/connector/policy' variable that holds one.

Output — the value assertions and returns: read

What every DSP flow step hands back: where the data is, and the token for it.

Field Type Description
dataplane_url string Data-plane URL the negotiated data is fetched from.
edr_token string Authorization token for that data-plane URL.

connector/consumer/do_dsp_with_bpnl

Run the full DSP flow using BPNL-based connector discovery via the SDK.

Returns the same data-plane address as do_dsp.

Inputs

Parameter Type Required Default Also accepts Description
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.
bpnl string yes — — BPN used to discover the counter-party's connector.
counter_party_address string no None — DSP endpoint to discover against, as its root or as the versioned endpoint the SUT binding carries — a trailing version path is dropped, since discovery is what appends it. When omitted it is resolved from the BPN alone.
expected_policies list of object no None — ODRL policies the negotiation is allowed to accept, as the raw policy document, the testlab simplified spelling, JSON text, or the whole 'config/connector/policy' variable that holds one.

Output — the value assertions and returns: read

What every DSP flow step hands back: where the data is, and the token for it.

Field Type Description
dataplane_url string Data-plane URL the negotiated data is fetched from.
edr_token string Authorization token for that data-plane URL.

connector/consumer/extract_dataset

Extract the first matching dataset from catalog offers by dct:type.

Inputs

Parameter Type Required Default Also accepts Description
datasets list of object yes — — Dataset offers returned by a catalog query.
dct_type string yes — — The 'dct:type' @id used to select the dataset.

Output — the value assertions and returns: read

Output contract of connector/consumer/extract_dataset.

Field Type Description
dataset object The first dataset whose 'dct:type' matched.
offer_id string Policy/offer ID of the first match.
asset_id string Asset ID of the first match.
catalog_policy object The ODRL policy the matched offer is made under, as the provider wrote it. This is what 'negotiate' has to be given: an offer is accepted under the policy it was made under, and only the catalog knows that policy's offer id.

connector/consumer/get_edr

Retrieve the EDR data address for a completed transfer.

Returns the same data-plane pair as initiate_transfer, so it can stand in for that step when the transfer was started elsewhere — a PULL initiate_transfer resolves a negotiation_id down to a transfer_id and then does exactly what this step does.

Inputs

Parameter Type Required Default Also accepts Description
transfer_id string no None — Transfer process to read the EDR of; falls back to the 'transfer_id' context variable.
verify any no None — TLS verification passed through to the SDK; None keeps its default.

Output — the value assertions and returns: read

Output contract of connector/consumer/get_edr.

Field Type Description
dataplane_url string Data-plane URL the negotiated data is fetched from.
edr_token string Authorization token for that data-plane URL.
data_address DataAddressPayload The full EDR data address document, unchanged.

connector/consumer/initiate_transfer

Start a data transfer for a contract that has already been negotiated.

A PULL transfer turns a finished negotiation into something connector/dataplane/http_request can call: it resolves negotiation_id down to a transfer_id, then does exactly what connector/consumer/get_edr does with one — the two steps share that lookup rather than each fetching the data address their own way. A PUSH transfer instead asks the connector to deliver the data to a destination of the test's choosing, and waits for that transfer to settle.

Inputs

Parameter Type Required Default Also accepts Description
transfer_type string no 'HttpData-PULL' — How the data moves: 'HttpData-PULL' (the consumer fetches it) or a '-PUSH' type such as 'HttpData-PUSH' or 'AmazonS3-PUSH'.
negotiation_id string no None — PULL only — negotiation to collect the EDR for; falls back to the 'negotiation_id' context variable.
agreement_id string no None — PUSH only — contract agreement the transfer runs under; falls back to the 'agreement_id' context variable.
data_destination object no None — PUSH only — the EDC data address the provider pushes to.
counter_party_address string no '' — PUSH only — DSP endpoint of the provider; defaults to the bound SUT connector's 'dsp_url'.
max_wait number no 60.0 — Seconds to wait for the transfer to settle: for a PULL, until the EDR the negotiation started is written; for a PUSH, until the transfer reaches a final state.
poll_interval number no 1.0 — Seconds between two reads while waiting.
verify any no None — TLS verification passed through to the SDK; None keeps its default.

Output — the value assertions and returns: read

Output contract of connector/consumer/initiate_transfer.

Field Type Description
transfer_id string ID of the transfer process.
state string State the transfer settled at, e.g. 'STARTED' or 'COMPLETED'.
edr_entry object PULL only — the EDR entry the negotiation produced.
dataplane_url string PULL only — data-plane URL the data is fetched from.
edr_token string PULL only — authorization token for that data-plane URL.
data_address DataAddressPayload PULL only — the full data address document, for assertions on its other keys.

connector/consumer/negotiate

Negotiate a contract with the provider and wait for the outcome.

The SDK starts the negotiation and answers with its ID straight away; this step then polls the negotiation until it finalises or terminates, so what it returns is the settled outcome rather than "accepted for processing".

Inputs

Parameter Type Required Default Also accepts Description
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
asset_id any no None — Asset ID to negotiate for; falls back to the 'catalog_asset_id' context variable.
policy any no None — ODRL policy to negotiate under, as the policy document itself, its JSON text, or the whole 'config/connector/policy' variable that holds it; falls back to the 'catalog_policy' context variable.
max_wait number no 60.0 — Seconds to wait for the negotiation to reach a final state.
poll_interval number no 1.0 — Seconds between two negotiation state reads.

Output — the value assertions and returns: read

Output contract of connector/consumer/negotiate.

Field Type Description
negotiation_id string ID of the started negotiation.
agreement_id string ID of the contract agreement, once the negotiation finalised.
state string State the negotiation settled at, e.g. 'FINALIZED' or 'TERMINATED'.

connector/consumer/pull_data_filtered

Run the full DSP flow in one step, optionally constrained to one policy.

expected_policies reaches the SDK as the raw ODRL policies its offer comparison takes, whichever way the test wrote them — see tractusx_testlab.steps.connector.policies.as_policy_list. With no policy the SDK takes the first offer.

Inputs

Parameter Type Required Default Also accepts Description
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
max_wait number no 60.0 — Seconds to wait for the transfer to complete.
poll_interval number no 1.0 — Seconds between transfer-state polls.
expected_policies list of object no None — Policies the offer must satisfy, as the raw policy document, the testlab simplified spelling, JSON text, or the whole 'config/connector/policy' variable that holds one; omitted means the SDK picks the first offer.

Output — the value assertions and returns: read

Everything the DSP flow produced, from the catalog through to the token.

Field Type Description
dataplane_url string Data-plane URL the negotiated data is fetched from.
edr_token string Authorization token for that URL.
token_prefix string First characters of the token, safe to log or assert on.
catalog object Catalog document the offer was taken from.
datasets list of object Dataset offers in that catalog.
asset_id string Asset ID of the first offer.
negotiation_id string ID of the negotiation the flow ran.
agreement_id string ID of the contract agreement the negotiation produced.
transfer_id string ID of the transfer process the flow ran.

connector/consumer/pull_data_filtered_by_policy

Run the full DSP flow, accepting an offer that matches any of several policies.

Unlike pull_data_filtered, where expected_policies is optional and "no policies" means "take the first offer", this variant requires them. They are normalised the same way, so either spelling is accepted.

Inputs

Parameter Type Required Default Also accepts Description
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
max_wait number no 60.0 — Seconds to wait for the transfer to complete.
poll_interval number no 1.0 — Seconds between transfer-state polls.
expected_policies list of object yes — — Policies, any one of which the negotiated offer must satisfy, in any of the forms 'pull_data_filtered' accepts.

Output — the value assertions and returns: read

Everything the DSP flow produced, from the catalog through to the token.

Field Type Description
dataplane_url string Data-plane URL the negotiated data is fetched from.
edr_token string Authorization token for that URL.
token_prefix string First characters of the token, safe to log or assert on.
catalog object Catalog document the offer was taken from.
datasets list of object Dataset offers in that catalog.
asset_id string Asset ID of the first offer.
negotiation_id string ID of the negotiation the flow ran.
agreement_id string ID of the contract agreement the negotiation produced.
transfer_id string ID of the transfer process the flow ran.

connector/consumer/query_catalog

Query a provider's catalog via the SDK connector consumer service.

Returns the catalog document and its offers side by side, so a returns: block reads datasets rather than the JSON-LD key the provider's DSP generation happens to spell them with, and downstream steps read the same offers.

Inputs

Parameter Type Required Default Also accepts Description
protocol string no '' — DSP protocol version the request is made under, e.g. 'dataspace-protocol-http:2025-1'. Left empty, the connector's dataspace version decides it.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.

Output — the value assertions and returns: read

What every catalog query returns: the document, and its offers as a list.

Field Type Description
catalog CatalogPayload The provider's catalog document, unchanged.
datasets list of object Dataset offers from the catalog, always as a list.

connector/consumer/query_catalog_by_asset_id

Query the catalog filtered by a specific asset ID.

Returns the catalog's first offer as catalog_asset_id / catalog_policy for the negotiation step that follows. Which policy that offer carries is reported, not judged: a step that asserts on the policy reads it from the output, and a step that must only accept certain policies is pull_data_filtered_by_policy.

Inputs

Parameter Type Required Default Also accepts Description
protocol string no '' — DSP protocol version the request is made under, e.g. 'dataspace-protocol-http:2025-1'. Left empty, the connector's dataspace version decides it.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.
asset_id string yes — — Asset ID the catalog is filtered by.

Output — the value assertions and returns: read

Output contract of connector/consumer/query_catalog_by_asset_id.

Field Type Description
catalog CatalogPayload The provider's catalog document, unchanged.
datasets list of object Dataset offers from the catalog, always as a list.
catalog_asset_id any Asset ID of the first offer in the catalog.
catalog_policy any The ODRL policy that offer is made under.

connector/consumer/query_catalog_by_bpnl

Query the catalog using BPNL-based connector discovery.

Alone among the catalog steps this takes no protocol: discovery is what answers with one, so a protocol given here would be an assumption competing with the connector's own answer. Pin it by discovering explicitly with connector/consumer/discover_connector and passing the endpoint it resolves to query_catalog.

Inputs

Parameter Type Required Default Also accepts Description
bpnl string yes — — BPN used to discover the counter-party's connector.
counter_party_address string no None — DSP endpoint to discover against, as its root or as the versioned endpoint the SUT binding carries — a trailing version path is dropped, since discovery is what appends it. When omitted it is resolved from the BPN alone.
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.

Output — the value assertions and returns: read

What every catalog query returns: the document, and its offers as a list.

Field Type Description
catalog CatalogPayload The provider's catalog document, unchanged.
datasets list of object Dataset offers from the catalog, always as a list.

connector/consumer/query_catalog_with_filters

Query a provider's catalog with multiple filter expressions via the SDK.

Filter criteria are translated by the SDK's own get_filter_expression, so they carry whatever JSON-LD context the negotiated dataspace version expects.

Inputs

Parameter Type Required Default Also accepts Description
protocol string no '' — DSP protocol version the request is made under, e.g. 'dataspace-protocol-http:2025-1'. Left empty, the connector's dataspace version decides it.
filters list of FilterExpression no [] — Filter criteria applied to the catalog request.
counter_party_address string no '' — DSP endpoint of the counter-party connector; defaults to the bound SUT connector's 'dsp_url'.
counter_party_id string no '' — Dataspace identity of the counter-party; defaults to the bound SUT connector's 'participant_id'.

Output — the value assertions and returns: read

What every catalog query returns: the document, and its offers as a list.

Field Type Description
catalog CatalogPayload The provider's catalog document, unchanged.
datasets list of object Dataset offers from the catalog, always as a list.

Nested objects

CatalogPayload

A provider's DCAT catalog.

Field Type Required Default Also accepts Description
@context any no None — JSON-LD context.
@id string no None — Catalog ID.
@type any no None — JSON-LD type.

Additional keys sent by the counterpart are passed through unchanged.

DataAddressPayload

An EDR data address — where negotiated data is fetched and with what token.

Field Type Required Default Also accepts Description
endpoint string no None — Data-plane URL to fetch the data from.
authorization string no None — Authorization token for that URL.
authCode string no None — Legacy spelling of 'authorization' used by older connectors.

Additional keys sent by the counterpart are passed through unchanged.

FilterExpression

One catalog filter criterion.

Field Type Required Default Also accepts Description
operand_left string yes — — Left-hand property of the criterion, e.g. 'https://w3id.org/edc/v0.0.1/ns/id'.
operator string no '=' — Comparison operator.
operand_right any no '' — Value the left-hand property is compared against.