Skip to content

connector/provider

Step Summary
connector/provider/create_asset Register an asset at the provider connector.
connector/provider/create_contract_definition Publish assets by binding them to an access and a contract policy.
connector/provider/create_mock_asset Offer one of the run's own mocks as an asset on the engine connector.
connector/provider/create_policy Register an ODRL policy definition at the provider connector.
connector/provider/delete_asset Delete an asset from the provider connector.
connector/provider/delete_contract_definition Delete a contract definition from the provider connector.
connector/provider/delete_policy Delete a policy definition from the provider connector.
connector/provider/retire_asset_agreements Retire all engine provider agreements referencing one exact asset.
connector/provider/retire_contract_agreement Retire an engine provider agreement to prevent future transfers.

connector/provider/create_asset

Register an asset at the provider connector.

What the asset is is not written into the step: it is configured once in the manifest's env.variables and handed to the step as a single asset input, so the same asset can be reused across tests. An asset that already exists is not an error: the connector answers 409 and the step reports the ID it would have created, so a test can be re-run against a provider it has already provisioned.

Inputs

Parameter Type Required Default Also accepts Description
asset object no {} — The whole asset definition, as declared by a 'config/connector/asset' manifest variable and referenced as '${{ env. }}'. Carries 'base_url', 'dct_type' or 'properties', 'dct_subject', 'version', 'semantic_id', 'proxy_params', 'headers', 'private_properties' and an optional '@context'.

Output — the value assertions and returns: read

Output contract of connector/provider/create_asset.

Field Type Description
asset_id string ID of the asset that now exists at the provider.

connector/provider/create_contract_definition

Publish assets by binding them to an access and a contract policy.

This is the step that makes an asset appear in the provider's catalog; the assets and both policies must already exist. While the run is paused the definition is withdrawn, and it is created again on resume (player.execution.hold). The SDK's own create_contract only ever offers a single asset, so the definition is built here and posted through the contract-definition controller.

Inputs

Parameter Type Required Default Also accepts Description
contract_definition_id string no '' — Contract definition ID; a fresh UUID is used when omitted.
contract_policy_id any no '' — Policy governing what the consumer may do with the data.
access_policy_id any no '' — Policy governing who may see the offer at all.
asset_id any no '' — Single asset the contract definition offers; ignored when 'asset_selector' is given.
asset_selector list of FilterExpression no [] — Criteria selecting which assets the definition offers, for a definition that covers more than one. Wins over 'asset_id'.

Output — the value assertions and returns: read

Output contract of connector/provider/create_contract_definition.

Field Type Description
contract_definition_id string ID of the contract definition that now exists at the provider.

connector/provider/create_mock_asset

Offer one of the run's own mocks as an asset on the engine connector.

The reflexive asset: the system under test negotiates it and calls through its data plane, and the data plane forwards to the engine's mock. The data address is the mock server's root, with the path, method and body proxied, and carries the key the mock requires as header:<name> — so a call the data plane forwards is answered, and a call made to the mock URL directly is refused. The key never appears in the test: it is read from the mock. It sits only in the asset's private data address, which neither the catalog nor the EDR the system under test receives carries, and it is masked wherever the run is written down. The key is new every run, so an asset left by an earlier run with the same id would forward the wrong one. The connector keeps an existing asset on 409, so that is an error here rather than the "already there" that create_asset reports; give the asset id the run id (${{ execution.id }}) and withdraw it in teardown.

Inputs

Parameter Type Required Default Also accepts Description
asset object yes — — The asset, as declared by a 'config/connector/mock_asset' variable and referenced as '${{ env. }}'. Carries 'asset_id', 'dct_type' or 'properties', 'dct_subject', 'version', 'semantic_id', 'proxy_params', 'private_properties' and an optional '@context' — not 'base_url' or 'headers', which the mock supplies.
mock MockInstance yes — — The mock the asset fronts, as 'mock/api' returned it. Its root becomes the data address, and the key it requires a header the data plane sends.
base_url string no '' — Where the connector's data plane reaches the mock server, when that is not the root the mock published (the engine's mock_public_url) — a data plane in another network. Defaults to the mock's 'base_mock_url'.

Output — the value assertions and returns: read

Output contract of connector/provider/create_asset.

Field Type Description
asset_id string ID of the asset that now exists at the provider.

connector/provider/create_policy

Register an ODRL policy definition at the provider connector.

The rules are not written into the step: the policy is configured once in the manifest's env.variables and handed to the step as a single policy input, so the same policy can be reused across tests. As with create_asset, a 409 from the connector is reported as success against the existing policy rather than failing the step.

Inputs

Parameter Type Required Default Also accepts Description
policy object no {} — The whole ODRL policy, as declared by a 'config/connector/policy' manifest variable and referenced as '${{ env. }}'. Carries 'permissions', 'prohibitions', 'obligations', an optional '@context' and an optional 'policy_id'; a fresh UUID names the policy without one. The rules are read in the same two spellings the consumer steps read them in — the testlab simplified one and ODRL's own.

Output — the value assertions and returns: read

Output contract of connector/provider/create_policy.

Field Type Description
policy_id string ID of the policy that now exists at the provider.

connector/provider/delete_asset

Delete an asset from the provider connector.

Inputs

Parameter Type Required Default Also accepts Description
asset_id string no '' — Asset to delete; falls back to the 'asset_id' context variable.

Output — the value assertions and returns: read

What a delete step publishes: the status the server answered it with.

Field Type Description
status_code integer HTTP status the delete was answered with.

connector/provider/delete_contract_definition

Delete a contract definition from the provider connector.

Deleting this withdraws the offer from the catalog but leaves the asset and policies in place.

Inputs

Parameter Type Required Default Also accepts Description
contract_definition_id string no '' — Contract definition to delete; falls back to the 'contract_definition_id' context variable.

Output — the value assertions and returns: read

What a delete step publishes: the status the server answered it with.

Field Type Description
status_code integer HTTP status the delete was answered with.

connector/provider/delete_policy

Delete a policy definition from the provider connector.

Inputs

Parameter Type Required Default Also accepts Description
policy_id string no '' — Policy to delete; falls back to the 'policy_id' context variable.

Output — the value assertions and returns: read

What a delete step publishes: the status the server answered it with.

Field Type Description
status_code integer HTTP status the delete was answered with.

connector/provider/retire_asset_agreements

Retire all engine provider agreements referencing one exact asset.

Queries all pages before retiring any agreement, and checks each asset ID. A failed retirement does not prevent attempts for the remaining agreements. Use SOFT validations in teardown; retirement preserves agreement history.

Inputs

Parameter Type Required Default Also accepts Description
reason string no 'TCK execution ended' — Reason recorded in the provider's retirement history.
asset_id string yes — — Exact engine asset ID whose provider agreements are retired.

Output — the value assertions and returns: read

__

Field Type Description
asset_id string Exact engine asset selected for cleanup.
agreement_ids list of string All matching provider agreements discovered before retirement.
retirements list of RetirementResult Actual retirement outcome for each agreement.
status_code integer 204 when all succeeded or none matched; first failure status, or 0 for a transport/invalid query failure.
error string Query or transport diagnostic, empty when discovery succeeded.

connector/provider/retire_contract_agreement

Retire an engine provider agreement to prevent future transfers.

Agreement history remains, so retirement does not guarantee asset deletion. Refused requests retain their status and body; use SOFT validations in teardown. No HTTP response is reported as status 0, never as successful retirement.

Inputs

Parameter Type Required Default Also accepts Description
reason string no 'TCK execution ended' — Reason recorded in the provider's retirement history.
agreement_id string yes — — Agreement to retire on the engine provider connector.

Output — the value assertions and returns: read

__

Field Type Description
agreement_id string Provider agreement targeted for retirement.
status_code integer Actual HTTP status; 0 means no HTTP response.
response_body object Connector response or transport error.

Nested objects

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.

MockInstance

A registered mock, as the steps that use it later need to see it.

Field Type Required Default Also accepts Description
endpoint_id string no '' — Identifier the mock was registered under, when it was given one.
path string yes — — Path the mock listens on.
method string yes — — HTTP method the mock answers.
base_mock_url string yes — — Root URL of the testlab mock server.
full_mock_url string yes — — Address the system under test calls — root plus path.

RetirementResult

Field Type Required Default Also accepts Description
agreement_id string yes — — Provider agreement targeted for retirement.
status_code integer yes — — Actual HTTP status; 0 means no HTTP response.
response_body object no None — Connector response or transport error.