API Summary

Status: CRUD (Milestone 4), Authentication (Milestone 7), Storage (Milestone 8), Realtime (Milestone 9), Admin API (Milestone 10), and SDKs (Milestone 11) implemented.

REST API (Milestone 4)

Auto-generated CRUD per collection:

GET    /api/{collection}
POST   /api/{collection}
GET    /api/{collection}/:id
PUT    /api/{collection}/:id
DELETE /api/{collection}/:id

Full specification: docs/api/rest-api.md

Authentication (Milestone 7 — implemented)

POST /api/auth/register
POST /api/auth/login
POST /api/auth/refresh
POST /api/auth/logout

Storage (Milestone 8 — implemented)

POST   /api/storage/upload   # multipart: file, visibility (public|protected)
GET    /api/storage/:id      # download (ACL enforced)
DELETE /api/storage/:id      # owner or admin

Upload response: { id, filename, mimeType, size, visibility, userId, createdAt }

Full specification: docs/api/storage.md

WebSocket (Milestone 9 — implemented)

WS /api/realtime?token=<jwt>

Client messages: { "action": "subscribe"|"unsubscribe"|"ping", "channel": "..." }

Channels (all Event Bus types):

  • {collection}.created|updated|deleted (wildcard: {collection}.*)
  • auth.login|logout|register
  • storage.uploaded|deleted
  • function.started|completed|failed
  • job.started|completed|failed
  • system.collection.created

Collection events are filtered by read permission. Full spec: docs/api/websocket-api.md

Admin API (Milestone 10 — implemented)

Dashboard at /_/. Requires admin role.

GET  /api/auth/me
GET  /api/admin/collections
POST /api/admin/collections
PUT  /api/admin/collections/:name
DELETE /api/admin/collections/:name
GET  /api/admin/users
PATCH /api/admin/users/:id
DELETE /api/admin/users/:id
GET  /api/admin/storage
GET  /api/admin/functions
GET  /api/admin/jobs
GET  /api/admin/jobs/:name/runs
GET  /api/admin/logs

Full specification: docs/api/admin-api.md

SDKs (Milestone 11 — implemented)

PackagePath
@bakend/client (JS/TS)sdk/javascript/
bakend (Dart)sdk/dart/
import { BakendClient } from "@bakend/client";
const client = new BakendClient("http://localhost:8080");

Full reference: docs/llm/sdk.md, docs/sdk/javascript.md, docs/sdk/dart.md

Response Format

JSON with consistent error structure. See docs/api/rest-api.md for details.