ObjectStackObjectStack

Plugin Endpoints

REST endpoints that become available when the corresponding plugin is installed — auth, workflow, automation, views, realtime, notifications, AI, i18n, GraphQL, and file storage.

Plugin Endpoints

These REST endpoints are only available when the corresponding plugin is installed. Check the discovery manifest services map before calling them; all paths are relative to the base URL (defaults to /api/v1).

Authentication (Plugin Required)

These endpoints are only available when an auth plugin is installed. Check discovery.services.auth.enabled first.

POST /auth/sign-in/email

Authenticate with email and password (better-auth's email sign-in route, mounted under the auth plugin's /auth prefix) and receive a session token. There is no /auth/login route.

Body: { email: "admin@example.com", password: "secret" }
Response: { token: "jwt...", user: { ... } }


Plugin-Provided Service Endpoints

The following endpoints become available when the corresponding plugin is installed and registered with the kernel. Use the discovery services map to check availability.

Workflow (/workflow) — Plugin Required

MethodEndpointDescription
GET/workflow/:object/configGet workflow configuration
GET/workflow/:object/:recordId/stateGet record's workflow state
POST/workflow/:object/:recordId/transitionExecute state transition

Approve/reject are not workflow routes (ADR-0019): approval is a flow node, and decisions are recorded on the approvals runtime via POST /approvals/requests/:id/approve and POST /approvals/requests/:id/reject.

Automation (/automation) — Plugin Required

MethodEndpointDescription
POST/automation/:name/triggerTrigger an automation flow by name (legacy alias: /automation/trigger/:name)

The automation dispatcher also exposes flow CRUD (GET/POST /automation, GET/PUT/DELETE /automation/:name) and run observability/resume routes — see Durable pause & resume.

Views (/ui) — Plugin Required

MethodEndpointDescription
GET/ui/views/:objectList views for an object
GET/ui/views/:object/:viewIdGet a view definition
POST/ui/views/:objectCreate a new view
PATCH/ui/views/:object/:viewIdUpdate a view
DELETE/ui/views/:object/:viewIdDelete a view

The auto-generated (non-CRUD) view resolver GET /ui/view/:object/:type is always available and provided by the kernel — see Metadata API. It is a separate route from the /ui/views CRUD above.

Realtime (/realtime) — Plugin Required

MethodEndpointDescription
POST/realtime/connectEstablish WebSocket/SSE connection
POST/realtime/disconnectClose connection
POST/realtime/subscribeSubscribe to channel
POST/realtime/unsubscribeUnsubscribe
PUT/realtime/presence/:channelSet presence
GET/realtime/presence/:channelGet channel presence

Notifications (/notifications) — Plugin Required

MethodEndpointDescription
GET/notificationsList notifications (inbox)
POST/notifications/readMark notifications as read (body: { ids: string[] })
POST/notifications/read/allMark all as read

The core dispatcher implements only the list / read / read-all routes above. Device-registration and preference endpoints are provided by specific notification plugins, if any.

AI (/ai) — Plugin Required

MethodEndpointDescription
POST/ai/nlqNatural language → query
POST/ai/suggestGet value suggestions
POST/ai/insightsGet data insights

There is no /ai/chat route — the AI chat route was removed so the wire protocol aligns with the Vercel AI SDK. Use useChat() (@ai-sdk/react) directly against the streaming chat endpoint rather than the client SDK's ai namespace, which intentionally does not expose a chat method.

i18n (/i18n) — Plugin Required

MethodEndpointDescription
GET/i18n/localesList available locales
GET/i18n/translations/:localeGet translation bundle
GET/i18n/labels/:object/:localeGet field labels

GraphQL (/graphql) — Plugin Required

MethodEndpointDescription
POST/graphqlExecute GraphQL query/mutation

File Storage (/storage) — Plugin Required

MethodEndpointDescription
POST/storage/uploadUpload a file
GET/storage/file/:idDownload a file

See also

  • API Overview — discovery, error handling, and protocol types
  • Client SDK — service-aware TypeScript client that adapts to installed plugins

On this page