Resources API
The Resources API is the discovery layer for workspace objects — browse neurons, receptors, reflexes, pathways, assets, artifacts, and related kinds from one catalog.
Product-specific routes under /v1/pathways, /v1/neurons, /v1/skills, and similar remain supported CRUD and execution façades; they read and write the same underlying resource model. Use Resources when you need catalog browse (list + resource trees), /v1/search, or POST /v1/resources/.../patch; use vertical routes when their payloads and workflows are a better fit.
Resource routes are workspace-scoped. Most reads also require a brain context via X-Brain-Id, a brain_id body field, or SDK getBrainId.
Browse (cross-kind lists)
For discovery across kinds, use POST /v1/browse. Set full_heads: true to receive full resource documents in heads. Call once per type (e.g. neurons, pathways, receptors) or parallelize browse roots and merge client-side.
| Field | Type | Description |
|---|
type | string | Browse root — same whitelist as hybrid search facets (neurons, pathways, …). |
limit | number | Optional page size (1–200). |
full_heads | boolean | When true, response includes full heads array for list mode. |
const neurons = await auvy.resources.browse.list({
type: 'neurons',
limit: 200,
full_heads: true,
})
Vault Tree
The Vault tree merges folder paths with indexed resource records in one response.
POST /v1/browse/resource-tree
| Field | Type | Description |
|---|
parent_key | string | Folder/resource parent to open. Omit for root. |
parent_keys | string[] | Batch form; mutually exclusive with parent_key. |
brain_id | string | Brain UUID if not supplied by header/client default. |
limit | number | Node cap per parent. |
cursor | string | Cursor for single-parent pagination. |
const root = await auvy.resources.browse.resourceTree({ parent_key: '/' })
const batch = await auvy.resources.browse.resourceTreeBatch({
parent_keys: ['/Research', '/Artifacts'],
})
Folder tree and moves
Folder utilities for assets and artifacts live under /v1/resources:
GET /v1/resources/tree
POST /v1/resources/tree
POST /v1/resources/move
tree returns row lists or folder shapes for path-indexed resources. tree_profile: "document" lists artifacts, vault assets, meetings, and cortex_engagement records by folder path. tree_profile omitted or broad returns a wider catalog slice for HTTP clients. move updates folder paths by resource id; use move_profile: "document" for the same folder surface as the MCP document_tree / document_move tools. The broader resource move profile is admin-only via the dashboard.
Generic Reads
Some resource kinds expose generic SDK list, read-by-id, and history paths. Neurons: list/history/version reads stay under /v1/resources/neurons/...; live record by resource UUID is GET /v1/resources/neurons/:resource_id (SDK resources.catalogGet('neurons', resource_id)). GET /v1/neurons/:resource_id (client.neurons.get) returns the same neuron document shape; pass ?version=N for a full neuron-shaped historical read. Reflexes/receptors/cortex_engagements also expose GET /v1/resources/:catalog/:resource_id for one-shot reads where implemented.
GET /v1/resources/neurons
GET /v1/resources/neurons/:resource_id
GET /v1/neurons/:resource_id
GET /v1/neurons/:resource_id?version=N
GET /v1/resources/neurons/:resource_id/history
GET /v1/resources/neurons/:resource_id/versions/:version
The same generic route family is currently exposed for reflexes and receptors (list + read + history) and cortex_engagements (as documented on each path). Receptor list and UUID read behavior matches GET /v1/receptors (including is_active and core-scope redaction); GET …/:id returns { receptor }. The @auvy-synapse/client receptors.list, receptors.getById, and receptors.get (when the second segment is a UUID) call these catalog routes. Slug-based reads and all mutations still use /v1/receptors/....
Central Patch
POST /v1/resources/:kind/:resource_id/patch
Central patch is intentionally narrow. It currently applies to artifact and meeting patch envelopes.
Live Resource Events
GET /v1/resource-events/stream
Server-sent events carry mutation cursors for resource creates, updates, deletes, and moves. Pass after=<cursor> to resume after a disconnect.
import { subscribeResourceMutationStream } from '@auvy-synapse/client'
const stream = subscribeResourceMutationStream(auvy, {
onEvent(event) {
console.log(event.action, event.resource)
},
})
Browse (list by type)
List-only discovery — no substring pattern. Same shape as POST /v1/browse list mode.
GET /v1/browse?type=neurons
POST /v1/browse
| Field | Type | Description |
|---|
type | string | assets, artifacts, receptors, pathways, neurons, reflexes, … |
full_heads | boolean | When true, response includes full resource documents |
const artifacts = await auvy.resources.browse.list({ type: 'artifacts' })
For type/pattern keyword or hybrid search, use Search below.
Search
Brain-scoped discovery via POST /v1/search (sync) or GET /v1/search (async job).
Searchable types: assets, artifacts, receptors, pathways, neurons, reflexes
| Field | Type | Description |
|---|
query | string | type/pattern or bare term (e.g. neurons/billing, assets/refund policy) |
search_mode | string | hybrid (default), lexical, or vector |
grep_keywords | string[] | Extra AND terms for keyword match (max 12) |
const sync = await auvy.resources.search.searchSemantic({
query: 'artifacts/customer briefing',
search_mode: 'hybrid',
})
const asyncJob = await auvy.resources.search.search({ q: 'renewal risk', types: ['neurons'] })
Async search returns a job_id — poll via Jobs.