Ga naar inhoud

Create a connection

POST
/api/v1/connections
curl --request POST \
--url https://example.com/api/v1/connections \
--header 'Content-Type: application/json' \
--cookie bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E \
--data '{ "alias": "example", "provider_did": "example", "dataset_id": "example", "offer_id": "example", "purpose": "example" }'

Makes a dataset of another participant available to our applications under an alias: the connector negotiates an agreement, starts a transfer and hands the data address to the gateway of our data plane. This runs in the background; the connection goes through negotiating, awaiting_approval (when the provider approves by hand) and transferring to active, or ends failed or expired. A connection that ended may be requested again under the same alias, for the same dataset.

Media typeapplication/json
object
alias
required

2 to 63 lower-case letters, digits or -: the name in the gateway address.

string
provider_did
required

The provider.

string
dataset_id
required

The dataset in the provider’s catalog.

string
offer_id
required

The offer of that dataset to accept.

string
purpose

The purpose of the use, e.g. bl:climate_control: one the offer allows. Left out: the offer’s, when it names one.

string | null

Example generated

{
"alias": "example",
"provider_did": "example",
"dataset_id": "example",
"offer_id": "example",
"purpose": "example"
}

Started; follow the state.

Media typeapplication/json

A connection (subscription) as the management API shows it.

object
alias
required
string
provider_did
required
string
provider_name
string | null
dataset_id
required
string
dataset_title
string | null
building_id
string | null
objects
required
Array<string>
points

The points the agreement covers; null: all points of the objects.

Array<string> | null
read_only

The agreement allows reading only.

boolean | null
delivered_by

The supplier that delivers on the provider’s behalf, if any.

string | null
delivered_by_name
string | null
own_use
required

An own subscription of an aanwijzing (decisions #74).

boolean
own_use_topology
required

An own subscription to the indeling rather than the data.

boolean
delegation_id
string | null
offer_id
required
string
purpose
string | null
state
required

One of negotiating, awaiting_approval, transferring, active, suspended, terminated, failed or expired.

string
negotiation_id
string | null
approval_expires_at

Until when the provider can approve the request.

string | null format: date-time
agreement_id
string | null
transfer_id
string | null
error
string | null
gateway_url
required

The address applications use: {data plane}/gateway/{alias}.

string
gateway_browser_url
required

The same address as a browser reaches it.

string
created_at
required
string format: date-time
updated_at
required
string format: date-time
stats
required
object
requests_24h
required

Requests through the gateway in the last 24 hours.

integer format: int64
last_request_at
string | null format: date-time

Example generated

{
"alias": "example",
"provider_did": "example",
"provider_name": "example",
"dataset_id": "example",
"dataset_title": "example",
"building_id": "example",
"objects": [
"example"
],
"points": [
"example"
],
"read_only": true,
"delivered_by": "example",
"delivered_by_name": "example",
"own_use": true,
"own_use_topology": true,
"delegation_id": "example",
"offer_id": "example",
"purpose": "example",
"state": "example",
"negotiation_id": "example",
"approval_expires_at": "2026-04-15T12:00:00Z",
"agreement_id": "example",
"transfer_id": "example",
"error": "example",
"gateway_url": "example",
"gateway_browser_url": "example",
"created_at": "2026-04-15T12:00:00Z",
"updated_at": "2026-04-15T12:00:00Z",
"stats": {
"requests_24h": 1,
"last_request_at": "2026-04-15T12:00:00Z"
}
}

An invalid alias, or the provider is not a registered participant.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

No valid session, DPoP-bound token or API key.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

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).

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

A connection with this alias exists.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}

The authority could not be reached.

Media typeapplication/json

The body of every failed call to a management API.

object
error
required
object
code
required

Stable, machine-readable: invalid_request, unauthenticated, forbidden, not_found, conflict, upstream_unavailable, unavailable, internal, or a more specific code of the operation.

string
message
required

For people; may change between versions.

string

Example

{
"error": {
"code": "not_found",
"message": "unknown negotiation"
}
}