SynapSynapDocs
Hub REST API

System

The System operations of the Hub REST API (13 operations).

For BuildersOpen-source podSynap CloudGenerated from Synap-core/backend@c31e261ab (main)

Liveness probe

GET
/health

Response Body

OK

application/json
  1. response
status*string
service*string
schemaHash*string
Example Request
curl -X GET 'https://pod.example.com/api/hub/health'
Example Response200
{  "status": "string",  "service": "string",  "schemaHash": "string"}
GET
/manifest

Response Body

Manifest payload

Example Request
curl -X GET 'https://pod.example.com/api/hub/manifest'
Example Response200
Empty
GET
/discover

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Query Parameters

userId*string
Length1 <= length
workspaceId?string
Formatuuid
summary?string
Value in"true""false"
profileSlugs?string

Comma-separated profile slugs to return with property schemas, e.g. task,person. Omit to load every profile schema.

sort?string
Value in"usage""name"
groups?"origin"
Value in"origin"
fill?string
Value in"true""false"

Response Body

Discovery payload

application/json
  1. response
relationTypes?array<>
relationTypesError?string
profiles*array<>
commands*
hint*string
Example Request
curl -X GET 'https://pod.example.com/api/hub/discover?userId=string'
Example Response
{  "relationTypes": [    {      "slug": "string",      "displayName": "string",      "description": "string",      "isDirectional": true,      "inverseLabel": "string",      "workspaceId": "string"    }  ],  "relationTypesError": "string",  "profiles": [    {      "id": "string",      "slug": "string",      "displayName": "string",      "scope": "pod",      "visibility": "system",      "description": "string",      "icon": "string",      "profileKind": "kind",      "applicableKinds": [        "string"      ],      "properties": [        {          "slug": "string",          "displayName": "string",          "type": "string",          "options": [            "string"          ],          "required": true,          "defaultValue": null,          "constraints": {            "property1": null,            "property2": null          },          "targetProfileSlug": "string",          "schemaScope": "base",          "workspaceId": "string",          "displayOrder": 0,          "uiHints": {            "property1": null,            "property2": null          },          "fill": {            "filled": 0,            "sampleSize": 0          }        }      ],      "schemaUnavailable": {        "reason": "slug-resolves-to-another-row",        "resolvedProfileId": "string",        "hint": "string"      },      "slugWritesTo": {        "reason": "slug-resolves-to-another-row",        "profileId": "string",        "hint": "string"      },      "createCommand": "string",      "entityCount": 0    }  ],  "commands": {    "property1": "string",    "property2": "string"  },  "hint": "string"}
GET
/orient

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Lens map

application/json
  1. response
[key: string]?unknown
Example Request
curl -X GET 'https://pod.example.com/api/hub/orient'
Example Response
{  "property1": null,  "property2": null}
GET
/pod/config

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Pod configuration

application/json
  1. response
[key: string]?unknown
Example Request
curl -X GET 'https://pod.example.com/api/hub/pod/config'
Example Response
{  "property1": null,  "property2": null}
POST
/pod/adopt

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Request Body

application/json
  1. body
workspaceId*string
Formatuuid
templateSlug*string
Length1 <= length

Response Body

Adopted

application/json
  1. response
[key: string]?unknown
Example Request
curl -X POST 'https://pod.example.com/api/hub/pod/adopt' \  -H 'Content-Type: application/json' \  -d '{  "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",  "templateSlug": "string"}'
Example Response
{  "property1": null,  "property2": null}
POST
/federation/oidc-config

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Request Body

application/json
  1. body
assertion*string
Length1 <= length

Response Body

Stored

application/json
  1. response
ok*true
Value intrue
Example Request
curl -X POST 'https://pod.example.com/api/hub/federation/oidc-config' \  -H 'Content-Type: application/json' \  -d '{  "assertion": "string"}'
Example Response
{  "ok": true}
GET
/resolve/{id}

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Resolved type information

application/json
  1. response
type*string

Browser-routable label for the given ID — an object-nav.ts case label, one of: agent, automation, capability, channel, document, entity, playbook, project, proposal, run, session, skill, tool, view, workspace, unknown. Never a free string: see resolve-browser-route.ts.

id*string

The id to open (may differ from the queried id)

displayName?string|null
workspaceId?string|null
updatedAt?|

When the object last changed (ISO 8601); null if untracked

profileSlug?string|null
openable*boolean

Whether type names a surface the browser can open

params?
Example Request
curl -X GET 'https://pod.example.com/api/hub/resolve/{id}'
Example Response
{  "type": "string",  "id": "string",  "displayName": "string",  "workspaceId": "string",  "updatedAt": "string",  "profileSlug": "string",  "openable": true,  "params": {    "property1": "string",    "property2": "string"  }}
GET
/resolve

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Query Parameters

kind*string
name*string
subtype?string

Response Body

Matches

application/json
  1. response
matches*array<>
unique*boolean
Example Request
curl -X GET 'https://pod.example.com/api/hub/resolve?kind=string&name=string'
Example Response
{  "matches": [    {      "kind": "string",      "id": "string",      "name": "string",      "subtype": "string",      "workspaceId": "string"    }  ],  "unique": true}
GET
/graph/{type}/{id}

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Graph envelope

application/json
  1. response
object*
neighbors*array<>
counts*
found*boolean
Example Request
curl -X GET 'https://pod.example.com/api/hub/graph/{type}/{id}'
Example Response
{  "object": {    "kind": "string",    "id": "string",    "name": "string",    "subtype": "string",    "subtypes": [      "string"    ],    "workspaceId": "string"  },  "neighbors": [    {      "kind": "string",      "id": "string",      "name": "string",      "subtype": "string",      "subtypes": [        "string"      ],      "workspaceId": "string",      "edgeType": "string",      "direction": "outgoing",      "via": "links"    }  ],  "counts": {    "total": 0,    "byKind": {      "property1": 0,      "property2": 0    },    "byVia": {      "property1": 0,      "property2": 0    }  },  "found": true}
GET
/centrality/status

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Centrality status

application/json
  1. response
computed*boolean
rows*number
lastComputedAt*string|null
oldestComputedAt*string|null
top*array<>
note?string
Example Request
curl -X GET 'https://pod.example.com/api/hub/centrality/status'
Example Response
{  "computed": true,  "rows": 0,  "lastComputedAt": "string",  "oldestComputedAt": "string",  "top": [    {      "id": "string",      "title": "string",      "score": 0    }  ],  "note": "string"}
POST
/centrality/recompute

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Response Body

Recompute enqueue result

application/json
  1. response
triggered*boolean
note?string
Example Request
curl -X POST 'https://pod.example.com/api/hub/centrality/recompute'
Example Response
{  "triggered": true,  "note": "string"}
GET
/health/dependencies

Authorization

bearerAuth
headerAuthorizationBearer <API key>

Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.

Query Parameters

workspaceId?string

Resolve the IS as this workspace would — matches the routing a capture from that workspace gets. Omit for pod-level resolution.

Formatuuid

Response Body

Dependency report. 200 even when a dependency is down — read status.

application/json
  1. response
status*string
Value in"ok""degraded"
service*"hub-protocol"
Value in"hub-protocol"
checkedAt*string
resolution*
dependencies*array<>
Example Request
curl -X GET 'https://pod.example.com/api/hub/health/dependencies'
Example Response
{  "status": "ok",  "service": "hub-protocol",  "checkedAt": "string",  "resolution": {    "workspaceId": "string",    "capability": "string"  },  "dependencies": [    {      "name": "intelligence-service",      "state": "reachable",      "reachable": true,      "reason": "string",      "endpoint": "string",      "serviceId": "string",      "httpStatus": 0,      "latencyMs": 0    }  ]}