List hierarchy nodes (scoped, paged)
/api/v1/nodesReturns 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
Authorization Option A JWT access token. Never send alongside X-API-Key: a request carrying both is refused.
X-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)
takenumber Optional Items per page (1-100, default 20)
qstring Optional Search node names and slugs
sort_byenum Optional Sort column. Defaults to `created`, oldest first.
orderenum Optional Sort direction
Headers
If-None-MatchAn `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
items *ScopedNodeResponseDto[]pagination *PageMetaDto
The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached copy.
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
Pagination
This endpoint returns a paginated collection. Use the query parameters below to page through results.
pagenumberPage number (1-indexed). Defaults to 1.
takenumberItems 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
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"
{ "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 } }
Tell us how we can improve this guide.