Record a decision about a link, replacing any previous decision of the same kind for that pair.
const url = 'https://example.com/api/v1/topology/link-overrides';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"a_node":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","action":"pin","b_node":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","direction":"a_parent","note":"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/topology/link-overrides \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "a_node": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "action": "pin", "b_node": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "direction": "a_parent", "note": "example" }'The decision takes effect on the next derivation cycle. A pinned link is re-emitted by every run, so it never expires the way an unobserved derived link does.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”A decision to record about one link.
object
One endpoint. Order is not significant — the pair is canonicalized before storing, and a
direction is re-expressed to match.
pin, hide or direction.
The other endpoint.
Free-text note for whoever reads this decision later.
Responses
Section titled “Responses”The decision was recorded
The id of a freshly created resource — the whole body of a 201.
Deliberately one shape for every creator. The json!({"id": …}) literal it replaces was written
out per handler, which is how {"id": …} and {"node_id": …} both ended up in this API for the
same idea; a client then needs to know which creator it called to read the id back.
object
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}The two endpoints are the same node, or direction disagrees with action
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}No valid bearer token
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Role lacks the manage-config permission
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}One of the endpoints is not a node the caller can see
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Skeleton mode has no write side
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}