Skip to content

CLI: add remote API commands for Data API and Metadata API #1058

Description

@hotlong

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:

  1. Server URL resolution — --url flag or OBJECTSTACK_URL env var (default: http://localhost:3000)
  2. Authentication — Bearer token from os auth login, stored in ~/.objectstack/credentials.json or OS keychain
  3. Output formatting — --format json|table|yaml flag for all data commands
  4. 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/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions