Start a negotiation
const url = 'https://example.com/api/v1/negotiations';const options = { method: 'POST', headers: { cookie: 'bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E', 'Content-Type': 'application/json' }, body: '{"counterparty_did":"example","counterparty_address":"example","dataset_id":"example","offer_id":"example","purpose":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/negotiations \ --header 'Content-Type: application/json' \ --cookie bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E \ --data '{ "counterparty_did": "example", "counterparty_address": "example", "dataset_id": "example", "offer_id": "example", "purpose": "example" }'As consumer: requests an offer from a provider’s catalog. The provider may need an operator to approve, so the negotiation can stay REQUESTED for a while; it ends FINALIZED with an agreement or TERMINATED.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
The provider.
The provider’s DSP endpoint; default: as the registry of the authority has it.
The dataset (product) in the provider’s catalog.
The offer of that dataset to accept.
The purpose of the use, e.g. bl:climate_control: one the offer
allows. Left out: the offer’s, when it names one.
Example generated
{ "counterparty_did": "example", "counterparty_address": "example", "dataset_id": "example", "offer_id": "example", "purpose": "example"}Responses
Section titled “Responses”OK.
A negotiation as the management API shows it.
object
The DSP endpoint of the counterparty.
The ODRL offer as sent or received.
object
The connection (subscription) this negotiation is part of, if any.
The messages and states so far: at, state, message_type,
direction, evidence_id, note.
object
Deadline of a pending approval.
The counterparty’s name in the registry of the authority.
The ODRL offer, as offer.
object
Our messages of this negotiation that are not delivered yet.
A row of the outbox: a message of ours to a counterparty, until it is delivered or dropped (decisions #56).
object
The negotiation, transfer or delegation the message belongs to.
Provider, single negotiation only: the objects of the product asked for.
Provider, single negotiation only: the points of the product, if it names them.
Provider, single negotiation only: other consumers that already steer
these objects (object, consumer_did, agreement_id).
object
Example
{ "role": "provider", "state": "INITIAL", "approval": "pending"}Unknown participant, the offer is not available to us, or it does not allow the purpose.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}No valid session, DPoP-bound token or API key.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}The caller lacks the role this operation needs; or a change with the session cookie came from a page of another site (cross_site_request, decisions #83).
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}The provider or the authority could not be reached.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}