-
Notifications
You must be signed in to change notification settings - Fork 1
CLI: add remote API commands for Data API and Metadata API #1058
Copy link
Copy link
Closed
Description
Background
The current CLI (@objectstack/cli) has 16 top-level commands + 8 subcommands, but nearly all are local-only operations (compile, validate, generate, serve, etc.). The platform defines 80+ API endpoints across 13+ domains, yet the CLI only makes 1 remote API call (plugin publish → POST /packages/upload).
This issue tracks adding CLI commands that call the remote Data API and Metadata API, enabling developers to interact with a running ObjectStack server from the terminal.
Current Coverage
| API Domain | Endpoints | CLI Coverage |
|---|---|---|
Data CRUD (/data) |
5 | None (only generated SDK) |
Data Batch (/data/:object/batch) |
4 | None |
Data Export (/data/:object/export) |
2 | None |
Metadata CRUD (/meta) |
10 | None |
Metadata Query (/meta/query) |
1 | None |
Metadata Bulk (/meta/bulk) |
2 | None |
Metadata Overlay (/meta/:type/:name/overlay) |
2 | None |
Metadata Import/Export (/meta/export, /meta/import) |
2 | None |
Metadata Validate (/meta/validate) |
1 | Local only (validate command) |
Metadata Dependencies (/meta/:type/:name/dependencies) |
2 | None |
Auth (/auth) |
14 | None |
Permission (/auth/check) |
3 | None |
UI Views (/ui/views) |
5 | None |
Workflow (/workflow) |
5 | None |
Realtime (/realtime) |
6 | None |
Notifications (/notifications) |
7 | None |
AI (/ai) |
3 | None |
i18n (/i18n) |
3 | None |
Analytics (/analytics) |
2 | None |
Automation (/automation) |
9 | None |
Storage (/storage) |
6 | None |
Packages (/packages) |
8 | 1 (plugin publish) |
Feed / Chatter (/data/:obj/:id/feed) |
14 | None |
Discovery (/discovery) |
1 | None |
Proposed Commands (Priority Order)
P0 — Core
-
os data query <object>— Query records (GET /api/v1/data/:object) -
os data get <object> <id>— Get single record (GET /api/v1/data/:object/:id) -
os data create <object>— Create record (POST /api/v1/data/:object) -
os data update <object> <id>— Update record (PATCH /api/v1/data/:object/:id) -
os data delete <object> <id>— Delete record (DELETE /api/v1/data/:object/:id) -
os meta list [type]— List metadata types or items (GET /api/v1/meta,GET /api/v1/meta/:type) -
os meta get <type> <name>— Get metadata item (GET /api/v1/meta/:type/:name) -
os meta register <type>— Register metadata (POST /api/v1/meta/:type) -
os meta delete <type> <name>— Delete metadata (DELETE /api/v1/meta/:type/:name) -
os auth login— Authenticate and store session/token -
os auth logout— Clear stored credentials -
os auth whoami— Show current session info (GET /auth/get-session)
P1 — Deployment & Metadata Lifecycle
-
os meta export— Export metadata bundle (POST /api/v1/meta/export) -
os meta import— Import metadata bundle (POST /api/v1/meta/import) -
os meta validate— Remote validation (POST /api/v1/meta/validate) -
os meta deps <type> <name>— Show dependencies (GET /api/v1/meta/:type/:name/dependencies) -
os deploy— Deploy metadata to target environment (combine export + import) -
os package install— Install package (POST /api/v1/packages/install) -
os package upgrade— Upgrade package (POST /api/v1/packages/upgrade) -
os package list— List installed packages (GET /api/v1/packages) -
os package rollback— Rollback package (POST /api/v1/packages/:id/rollback)
P2 — Extended Operations
-
os data export <object>— Export data (POST /api/v1/data/:object/export) -
os data import <object>— Bulk create from file (POST /api/v1/data/:object/createMany) -
os automation list— List automation flows (GET /api/automation) -
os automation trigger <name>— Trigger a flow (POST /api/automation/:name/trigger) -
os automation toggle <name>— Enable/disable flow (POST /api/automation/:name/toggle) -
os discover— Service discovery & health check (GET /api/v1/discovery)
P3 — Nice to Have
-
os ai query— Natural language query (POST /api/v1/ai/nlq) -
os storage upload— Upload file (POST /api/v1/storage/upload) -
os analytics query— Run analytics query (POST /api/v1/analytics/query) -
os i18n— Get translations (GET /api/v1/i18n/translations/:locale)
Common Infrastructure Needed
All remote commands will need:
- Server URL resolution —
--urlflag orOBJECTSTACK_URLenv var (default:http://localhost:3000) - Authentication — Bearer token from
os auth login, stored in~/.objectstack/credentials.jsonor OS keychain - Output formatting —
--format json|table|yamlflag for all data commands - Error handling — Consistent HTTP error → CLI error mapping
Reference
- API spec definitions:
packages/spec/src/api/plugin-rest-api.zod.ts - Metadata API schemas:
packages/spec/src/api/metadata.zod.ts - OpenAPI spec:
packages/spec/json-schema/openapi.json - Current CLI commands:
packages/cli/src/commands/
Reactions are currently unavailable