For the complete documentation index, see llms.txt. This page is also available as Markdown.

Registry V3 Tree View

V3 tree view endpoints for hierarchical navigation

List node children

get

Lists immediate children of a specific node (package/version/folder). Returns child nodes for tree navigation.

Path parameters
node_idstringRequired

Unique identifier for the node.

Query parameters
account_identifierstringRequired

Unique identifier for the Harness account.

org_identifierstringOptional

Unique identifier for the organization within the account.

Example: default or engineering_org

project_identifierstringOptional

Unique identifier for the project within the organization.

Example: my_project or frontend_services

cursorstringOptional

Cursor for pagination in tree view endpoints. Base64-encoded JSON containing pagination state.

sizeinteger · min: 1 · max: 1000Optional

Number of items to return per page in tree view.

Default: 50
deleted_filterstring · enumOptional

Filter for deleted items in tree view. Applied at the root (registry) level only, where registries.registry_deleted_at is authoritative. Levels below the root always return every node regardless of soft-delete state - use isDeleted on each node to render deleted state. See TreeNodeItemV3.isDeleted for why per-node filtering is not supported yet.

Default: exclude_deletedPossible values:
compactbooleanOptional

Collapses a run of single-child folders into one row, e.g. io/harness/platform/api renders as one node instead of four levels. A collapsed row carries the deepest folder's id (what an expand call must use) and a display name joining every segment in the run. Collapsing stops at the first node with more than one child, and never absorbs a file - the chain always ends at the last folder.

No-op for Docker and Helm: those tiers are synthetic (built from images/tags/manifest references) and cannot form a single-child folder chain, so the parameter is accepted and ignored rather than rejected. Not declared on /tree/roots - registries are never collapsed into each other - and ignored if sent there.

Default: false
Responses
200

Response for tree view endpoints

application/json

Response body for tree view endpoints

get/v3/tree/nodes/{node_id}/children
GET /api/v3/tree/nodes/{node_id}/children?account_identifier=text HTTP/1.1
Accept: */*
{
  "items": [
    {
      "createdAt": 1,
      "deletedAt": 1,
      "hasChildren": true,
      "id": "text",
      "isDeleted": true,
      "name": "text",
      "packageType": "text",
      "path": "text",
      "type": "registry"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "text",
    "size": 1,
    "total": 1
  }
}

List registry nodes

get

Lists top-level packages/folders under a specific registry. Returns immediate children of the registry for tree navigation.

Path parameters
registry_idstringRequired

Unique identifier for the registry.

Query parameters
account_identifierstringRequired

Unique identifier for the Harness account.

org_identifierstringOptional

Unique identifier for the organization within the account.

Example: default or engineering_org

project_identifierstringOptional

Unique identifier for the project within the organization.

Example: my_project or frontend_services

cursorstringOptional

Cursor for pagination in tree view endpoints. Base64-encoded JSON containing pagination state.

sizeinteger · min: 1 · max: 1000Optional

Number of items to return per page in tree view.

Default: 50
deleted_filterstring · enumOptional

Filter for deleted items in tree view. Applied at the root (registry) level only, where registries.registry_deleted_at is authoritative. Levels below the root always return every node regardless of soft-delete state - use isDeleted on each node to render deleted state. See TreeNodeItemV3.isDeleted for why per-node filtering is not supported yet.

Default: exclude_deletedPossible values:
compactbooleanOptional

Collapses a run of single-child folders into one row, e.g. io/harness/platform/api renders as one node instead of four levels. A collapsed row carries the deepest folder's id (what an expand call must use) and a display name joining every segment in the run. Collapsing stops at the first node with more than one child, and never absorbs a file - the chain always ends at the last folder.

No-op for Docker and Helm: those tiers are synthetic (built from images/tags/manifest references) and cannot form a single-child folder chain, so the parameter is accepted and ignored rather than rejected. Not declared on /tree/roots - registries are never collapsed into each other - and ignored if sent there.

Default: false
Responses
200

Response for tree view endpoints

application/json

Response body for tree view endpoints

get/v3/tree/registries/{registry_id}/nodes
GET /api/v3/tree/registries/{registry_id}/nodes?account_identifier=text HTTP/1.1
Accept: */*
{
  "items": [
    {
      "createdAt": 1,
      "deletedAt": 1,
      "hasChildren": true,
      "id": "text",
      "isDeleted": true,
      "name": "text",
      "packageType": "text",
      "path": "text",
      "type": "registry"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "text",
    "size": 1,
    "total": 1
  }
}

List tree roots (registries)

get

Lists all registries at the root level with optional search and filters. Returns a hierarchical view of registries for tree navigation.

scope is only accepted here, and is resolved exactly as it is for ListRegistriesV3: the current space, plus its ancestors or descendants. It has no equivalent on the levels below, because those are already bounded to the single registry named in the path.

Query parameters
account_identifierstringRequired

Unique identifier for the Harness account.

org_identifierstringOptional

Unique identifier for the organization within the account.

Example: default or engineering_org

project_identifierstringOptional

Unique identifier for the project within the organization.

Example: my_project or frontend_services

scopestring · enumOptional

Scope of registries to list

  • none – current space only (default) * ancestors – current space plus all parent spaces * descendants – current space plus all child spaces
    If omitted, none is assumed.
Possible values:
cursorstringOptional

Cursor for pagination in tree view endpoints. Base64-encoded JSON containing pagination state.

sizeinteger · min: 1 · max: 1000Optional

Number of items to return per page in tree view.

Default: 50
deleted_filterstring · enumOptional

Filter for deleted items in tree view. Applied at the root (registry) level only, where registries.registry_deleted_at is authoritative. Levels below the root always return every node regardless of soft-delete state - use isDeleted on each node to render deleted state. See TreeNodeItemV3.isDeleted for why per-node filtering is not supported yet.

Default: exclude_deletedPossible values:
searchstringOptional

Search term to filter registries by name (case-insensitive substring match). Search is supported at the root (registry) level only - there is no search across artifacts, images, versions or files, since that requires scanning unbounded subtrees. Cross-node search is planned via the Elasticsearch-backed index.

registry_typestringOptional

Filter by registry type

package_typestringOptional

Filter by package type

Responses
200

Response for tree view endpoints

application/json

Response body for tree view endpoints

get/v3/tree/roots
GET /api/v3/tree/roots?account_identifier=text HTTP/1.1
Accept: */*
{
  "items": [
    {
      "createdAt": 1,
      "deletedAt": 1,
      "hasChildren": true,
      "id": "text",
      "isDeleted": true,
      "name": "text",
      "packageType": "text",
      "path": "text",
      "type": "registry"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "text",
    "size": 1,
    "total": 1
  }
}

Last updated

Was this helpful?