list_node_groups
const url = 'https://example.com/api/v1/node-groups';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/node-groups \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Every folder group in the inventory tree
One group row returned by the API. group_type is the snake_case key.
object
Where this group sits on the map after inheritance: its own coordinates, else the nearest ancestor’s, else null. Computed on every read; never stored.
These do not add a pin. A group is drawn on the map only when geo_source is own;
for every other group this says which pin its nodes are counted at (geo_group).
The group that supplied the effective position: this group when geo_source is own, the
ancestor it inherited from when inherited, null when unset. This is the pin the group’s
nodes belong to, so a client never has to walk the folder tree itself.
Whether the effective position is the group’s own, inherited from an ancestor, or absent.
The group’s own geo coordinates, as stored (both set ⇒ drawn as a pin). A descendant
folder normally leaves these null and inherits — see the effective_* pair below.
Poll-pool this folder assigns to its nodes (ADR-009/020, migration 0054). null ⇒ inherit
from the nearest ancestor that sets one, else the default pool. A node’s own pool still
wins — see [crate::poolres].
Manual order within the parent scope (the UI sorts siblings by this, then by name).
Example
[ { "geo_source": "own" }]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 View 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" }}This core has no write side (skeleton mode)
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" }}