1. Docs
  2. API Reference
  3. List hierarchy nodes (scoped, paged)

List hierarchy nodes (scoped, paged)

GET/api/v1/nodes

Returns one page of the caller's hierarchy for the current Environment as a flat list, each node carrying its parent_node_id and annotated with access_state, can_access, can_manage and its identity counts. A caller rebuilding the tree walks every page and links each node to its parent; a node whose parent is not in the listing is a top of the caller's scope. user principals (dashboard), which need the Console capability covering hierarchy.view, see every node; API-key principals see only what their access_mode/scopes grant — full_access unlocks everything, while scoped keys see nodes reachable via hierarchy.view. context_only nodes are the ancestors shown as the path to the caller's scope. Searches names and slugs with q; sorts by name or created (default, oldest first).

Authentication

Bearer TokenAuthorization Option A

JWT access token. Never send alongside X-API-Key: a request carrying both is refused.

API KeyX-API-Key Option B

API key for management-tier access. Never send alongside an Authorization header: a request carrying both is refused.

Query Parameters

pagenumber Optional

Page number (1-based)

min 1

takenumber Optional

Items per page (1-100, default 20)

range 1–100

qstring Optional

Search node names and slugs

max length 200

sort_byenum Optional

Sort column. Defaults to `created`, oldest first.

one of "name" · "created"

orderenum Optional

Sort direction

one of "asc" · "desc"

Headers

  • If-None-Match

    An `ETag` from a previous response for the same page and query. Answers `304 Not Modified` when the hierarchy has not changed since, so a client holding a cached copy can revalidate on a short interval without re-reading it.

Responses

application/json

  • itemsScopedNodeResponseDto[]*
  • paginationPageMetaDto*

The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached copy.

application/json

  • errorApiErrorBodyDto*

application/json

  • errorApiErrorBodyDto*

application/json

  • errorApiErrorBodyDto*

Pagination

This endpoint returns a paginated collection. Use the query parameters below to page through results.

pagenumber

Page number (1-indexed). Defaults to 1.

takenumber

Items per page (1 to 100). Defaults to 20.

Each response includes an items array alongside a pagination object with item_count, page_count, has_previous_page, and has_next_page fields.

Returned object

Request
curl -X GET "https://auth.canopy-io.com/api/v1/nodes?page=0&take=0&q=value&sort_by=name&order=asc" \
  -H "If-None-Match: value" \
  -H "X-API-Key: $CANOPY_API_KEY"
Response
{
  "items": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "slug": "string",
      "node_type": "string",
      "parent_node_id": "string",
      "status": "string",
      "access_state": "accessible",
      "can_access": false,
      "can_manage": false,
      "version": 0,
      "direct_count": 0,
      "inherited_count": 0
    }
  ],
  "pagination": {
    "page": 0,
    "take": 0,
    "item_count": 0,
    "page_count": 0,
    "has_previous_page": false,
    "has_next_page": false
  }
}
Related endpoints
POSTCreate a hierarchy node
GETList the hierarchy as parent edges
GETGet a hierarchy node
PATCHUpdate a hierarchy node
DELETEDelete a hierarchy node
GETGet subtree from a node
GETGet ancestor chain for a node
GETGet direct children of a node
POSTMove (reparent) a node
GETList identities at a node
GETGet identity summary for a node
Was this page helpful?

Tell us how we can improve this guide.