Knowledge Base
Knowledge Hub

Get knowledge hub root nodes

Changed on

Returns root-level nodes (connector apps and Collection apps) or, when filters or search are applied, a flat list of matching nodes across the entire knowledge hub tree.

Overview

The Knowledge Hub provides a unified view across all knowledge sources:

  • Collection — locally uploaded knowledge bases (origin: COLLECTION)
  • Connector app — external connector instances such as Google Drive, Slack, Confluence, Jira (origin: CONNECTOR)

Use this endpoint to build file-browser UIs and sidebar navigation trees.

Browsing vs. searching

When no filters or search query are provided, only top-level app nodes are returned. Adding nodeTypes, q, or other filter params triggers a search across the full tree, returning matching nodes regardless of depth.

For children of a specific node, use GET /knowledgeBase/knowledge-hub/nodes/{parentType}/{parentId}.

Pagination and sorting

Results are always paginated. Default sort is updatedAt descending. The pagination object in the response contains hasNext / hasPrev flags suitable for infinite-scroll or page-based navigation.

Expanding the response

Use the include parameter to request additional sections:

  • availableFilters — adds filters.available with all filter options
  • counts — adds a counts summary broken down by node type
  • breadcrumbs — adds the breadcrumb trail (empty at root level)
  • permissions — adds the caller's permission flags

A connected app with a limit

A token that may see only some sources pages and counts only what its limit lets it see:

  • Limited to whole sources (apps or collections) only: the listing and the search cover those, with exact totals and counts.
  • Limited to any spaces, folders or files, alone or beside whole sources: the listing returns each whole source, space (record group), folder and file the limit names, one item each, to open by its id. totalItems counts those items, not what is inside them. A search reads forward only (prevCursor is always null), and takes a page number up to 5; for later pages, send nextCursor. Its totalItems counts the matches found so far and can grow from page to page; it is final once hasNext is false. counts is returned only when the whole result fits in the first page read, and is null otherwise.
  • An item can sit in a folder the limit leaves out, as a file the limit names does. Its parentId and parent are then null: the item is returned, and the folder above it is not named.
  • A nextCursor or prevCursor belongs to the limit it was read under. A token with a different limit that sends it gets a 400; start that listing again without a cursor.

Access control

Requires a valid bearer token. For OAuth tokens the kb:read scope must be present; regular JWT bearer tokens pass through without scope enforcement. Only nodes the caller can access are listed.

Request checking

This route has no request validator of its own; the query is passed on and checked by the connector service. Query parameters not listed here are ignored. A wrong type for page, limit, onlyContainers or flattened (or page below 1 or limit outside 1-200, or either sent more than once) is answered 422; a refused filter value is answered 400.

get/knowledgeBase/knowledge-hub/nodes

Request

  • Base URL
    https://app.pipeshub.com/api/v1
  • URL
    https://app.pipeshub.com/api/v1/knowledgeBase/knowledge-hub/nodes
  • Auth
    • HTTP bearer
    • or OAuth 2
      Authorization code: /api/v1/oauth2/authorize
      Client credentials
      Token URL: /api/v1/oauth2/token scopes: kb:read

Query parameters

onlyContainersboolean

When true, only nodes that have children are returned (useful for building sidebar / tree navigation). Leaf nodes are excluded. yes/no, on/off and 1/0 are read as booleans too; anything else is answered 422.

pageinteger

Page number (1-indexed, at most 50). Combined with limit to paginate results. Prefer cursor: a page number is reached by reading the pages before it. A search by a connected app whose limit names any spaces, folders or files takes a page number of at most 5; for later pages, send nextCursor.

cursorstring

Opaque cursor from pagination.nextCursor or pagination.prevCursor of a previous response. It decides the listing mode, parent, filters and sort. include and limit come from this request. A next cursor returns the following page, and a previous cursor returns the page before. A cursor whose parent disagrees with the URL, or that was issued for another user, is refused with 400.

limitinteger

Maximum number of items to return per page.

sortBy'name' | 'createdAt' | 'updatedAt' | 'size' | 'type'

Field to sort results by. Omitted → default updatedAt. Any other value is answered 400 ("Invalid sort_by: ...").

sortOrder'asc' | 'desc'

Sort direction. Omitted → default desc. Read case-insensitively; any other value is answered 400 ("Invalid sort_order: ...").

qstring

Full-text search query. Must be between 2 and 500 characters (inclusive) after surrounding whitespace is removed, otherwise 400. When provided, the endpoint searches across the entire node tree regardless of the current browse level. A repeated q is joined with commas into one query, and a q sent as an object (q[a]=b) is refused with 400 ("Search query must be text").

nodeTypesstring

Comma-separated list of node types to include. An unknown value is answered 400 ("Invalid node_types value(s): ..."). Maximum 100 items.

Valid values: folder, app, recordGroup, record

recordTypesstring

Comma-separated list of record types to include. An unknown value is answered 400 ("Invalid record_types value(s): ..."). Maximum 100 items.

Valid values: FILE, DRIVE, WEBPAGE, DATABASE, DATASOURCE, MESSAGE, MAIL, GROUP_MAIL, TICKET, COMMENT, INLINE_COMMENT, CONFLUENCE_PAGE, CONFLUENCE_BLOGPOST, SHAREPOINT_PAGE, SHAREPOINT_LIST, SHAREPOINT_LIST_ITEM, SHAREPOINT_DOCUMENT_LIBRARY, LINK, PROJECT, PULL_REQUEST, MEETING, PRODUCT, DEAL, CASE, TASK, ARTIFACT, CODE_FILE, SQL_TABLE, SQL_VIEW, OTHERS

originsstring

Comma-separated list of origin types to include. An unknown value is answered 400 ("Invalid origins value(s): ..."). Maximum 100 items.

Valid values: COLLECTION, CONNECTOR

connectorIdsstring

Comma-separated list of connector instance IDs (UUIDs) to filter by. Maximum 100 items. No enum validation — any string is accepted, but non-existent IDs simply yield zero results.

indexingStatusstring

Comma-separated list of indexing statuses to include. An unknown value is answered 400 ("Invalid indexing_status value(s): ..."). Maximum 100 items.

Valid values: NOT_STARTED, PAUSED, IN_PROGRESS, COMPLETED, FAILED, FILE_TYPE_NOT_SUPPORTED, AUTO_INDEX_OFF, EMPTY, ENABLE_MULTIMODAL_MODELS, QUEUED, SKIPPED, PASSWORD_PROTECTED

createdAtstring

Created-date range filter. Format: gte:<epochMs>,lte:<epochMs>. Both bounds are optional (you may send just gte:... or just lte:...). Timestamps must be in the range 0 to 9999999999999 and gte must be less than or equal to lte when both are present; a bound that is not a whole number, is out of range, or an inverted range is answered 400. A value with no gte:/lte: part is ignored.

updatedAtstring

Updated-date range filter. Same format and constraints as createdAt.

sizestring

File-size range filter in bytes. Format: gte:<bytes>,lte:<bytes>. Both bounds are optional. Values must be non-negative and at most 1099511627776 (1 TB). gte must be less than or equal to lte when both are present.

flattenedboolean

Force flattened/recursive search (true) or direct top-level listing (false). When omitted, it's computed from whether any of q, nodeTypes, recordTypes, origins, connectorIds, indexingStatus, createdAt, updatedAt, or size are present — if any are, results are flattened automatically; otherwise only top-level nodes are returned.

includestring

Comma-separated list of additional response sections to include. An unknown value is answered 400 ("Invalid include value(s): ..."). Maximum 100 items.

Valid values: breadcrumbs, counts, availableFilters, permissions

Response

Paginated list of root hub nodes (connector apps and Collections). HTTP 200 returns success: true and error: null. Field-level detail and required keys are defined on KnowledgeHubNodesResponse.

Use include for optional sections: availableFilters, counts, permissions — each stays JSON null when not asked for. breadcrumbs stays null at this route (no parent in the path), even if include lists breadcrumbs; use the child route for trails. id, currentNode, and parentNode are null here.

maxFolderDepthinteger required

Deepest a collection folder may be nested; a folder directly in the collection is depth 1.

successtrue required

Always true on HTTP 200. Failures use 4xx/5xx error envelopes, not this body shape.

errorstring nullable required

Always null on HTTP 200.

errorCodeinteger nullable

Status the connector service turns a failed lookup into. Always null on HTTP 200: a failure is answered with that status and the error envelope instead of this body.

typed_recordsobject nullable

Full record documents keyed by record ID. Filled only for in-process callers (the agent's knowledge navigator); always null over HTTP.

idstring nullable required

Current parent node ID when browsing children; null at root.

Changes

    • breaking

      the response property / became nullable for the status

    • breaking

      the response property / became nullable for the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      removed the HTTP_BAD_REQUEST enum value from the / response property for the response status

    • info

      removed the HTTP_FORBIDDEN enum value from the / response property for the response status

    • info

      removed the HTTP_INTERNAL_SERVER_ERROR enum value from the / response property for the response status

    • info

      removed the HTTP_UNAUTHORIZED enum value from the / response property for the response status

    • info

      added the non-success response with the status

    • info

      added the non-success response with the status

    • info

      added the optional property // to the response with the status