Skip to content

Declare a role on a standard

PATCH
/standards/{id}/roles/{role}
curl --request PATCH \
--url https://example.com/api/v1/standards/example/roles/example \
--header 'Content-Type: application/json' \
--data '{ "accepted_types": [ "example" ], "alternate": "example", "capacity": 1, "impact": "outage", "label": "example", "pinned_products": [ "example" ], "position_labels": [ "example" ], "quorum": 1, "update_mask": [ "example" ] }'

Declares a role every conforming system needs filled, or revises it in place (the role is addressed by name, so the write is idempotent and declaring is this same route). Partial by default: the fields present in the body change and the rest of the declaration is left alone. update_mask overrides that, writing exactly the fields it names, which is how a field is cleared, and [”*”] replaces the whole declaration. An unknown standard, type, or product is a 422, as is a mask naming a field this resource does not patch. Gated by standard:update.

id
required

The standard id

string

The standard id

role
required

The role name

string

The role name

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
accepted_types

The component_types a filling component’s product must be classified within (self or a descendant); replaces the accepted set wholesale when written, and an empty set accepts any type. Clearing it means naming accepted_types in update_mask

Array<string> | null
alternate

The choice/alternate this role joins, addressed as “choice-name/alternate-name” (#626). An empty string detaches the role, making it unconditional; an unknown choice or alternate is a 422

string
capacity

The most components the role will accept; must be at least quorum, and unbounded on first declare. Name capacity in update_mask with no value here to clear it back to unbounded

integer format: int64
>= 1
impact

What an impaired role means for its system; degraded on first declare. The same broken component matters differently depending on the slot it was filling: a dead confidence monitor is not a dead main display

string
Allowed values: outage degraded none
label

The role’s human label; defaults to the role name on first declare

string
pinned_products

If set, a filling component’s product must be one of these; replaces the pinned set wholesale when written, and an empty set accepts any product of an accepted type. Clearing it means naming pinned_products in update_mask

Array<string> | null
position_labels

Human labels for each position within the role, by index; replaces the label set wholesale when written. An empty list is not a populated field, so clearing the labels means naming position_labels in update_mask

Array<string> | null
quorum

How many components must fill the role; one on first declare

integer format: int64
update_mask

Which fields this write changes (AIP-134). Omit it and the fields present in the body change and nothing else; name a field here and it is written even when the body leaves it empty, which is how a field is CLEARED; send [”*”] for full replacement, where every field the body omits goes back to its default. A field this resource does not patch is a 422 naming it

Array<string> | null

OK

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
accepted_types
required

The component_types a filling component’s product must be classified within (self or a descendant); empty accepts any type

Array<string> | null
alternate

The choice/alternate this role joins, addressed as “choice-name/alternate-name” (#626); absent when the role is unconditional. The same form the write body takes, so a read round-trips into a write

string
capacity

The most components the role will accept; null means no upper bound beyond quorum

integer format: int64
impact
required

What an impaired role means for its system: outage, degraded, or none

string
label
required

The role’s human label

string
name
required

The role’s name within its owner (the address)

string
pinned_products
required

If set, a filling component’s product must be one of these; empty accepts any product of an accepted type

Array<string> | null
position_labels
required

Human labels for each position within the role, by index; empty when unlabeled

Array<string> | null
quorum
required

How many components must fill the role

integer format: int64
Example
{
"$schema": "/api/v1/schemas/SystemRoleBody.json"
}

Error

Media type application/problem+json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
Example
{
"$schema": "/api/v1/schemas/ErrorModel.json",
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}