Skip to main content

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.
POST /v1/browse
FieldTypeDescription
typestringBrowse root — same whitelist as hybrid search facets (neurons, pathways, …).
limitnumberOptional page size (1–200).
full_headsbooleanWhen 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
FieldTypeDescription
parent_keystringFolder/resource parent to open. Omit for root.
parent_keysstring[]Batch form; mutually exclusive with parent_key.
brain_idstringBrain UUID if not supplied by header/client default.
limitnumberNode cap per parent.
cursorstringCursor 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
FieldTypeDescription
typestringassets, artifacts, receptors, pathways, neurons, reflexes, …
full_headsbooleanWhen 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. Brain-scoped discovery via POST /v1/search (sync) or GET /v1/search (async job). Searchable types: assets, artifacts, receptors, pathways, neurons, reflexes
FieldTypeDescription
querystringtype/pattern or bare term (e.g. neurons/billing, assets/refund policy)
search_modestringhybrid (default), lexical, or vector
grep_keywordsstring[]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.