Skip to content

Commit 978289b

Browse files
Claudehotlong
andauthored
Add documentation for remote API commands
Agent-Logs-Url: https://github.com/objectstack-ai/framework/sessions/205a6eab-27f7-46cf-aee8-b628c23b3490 Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 4a4652b commit 978289b

2 files changed

Lines changed: 208 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- **CLI: Remote API Commands** - Added 12 new CLI commands for interacting with remote ObjectStack servers:
13+
- **Authentication**: `os auth login`, `os auth logout`, `os auth whoami`
14+
- **Data API**: `os data query`, `os data get`, `os data create`, `os data update`, `os data delete`
15+
- **Metadata API**: `os meta list`, `os meta get`, `os meta register`, `os meta delete`
16+
- All commands support `--url` and `--token` flags, or use stored credentials from `~/.objectstack/credentials.json`
17+
- Multiple output formats: `--format json|table|yaml`
18+
- Environment variable support: `OBJECTSTACK_URL`, `OBJECTSTACK_TOKEN`
19+
- See [REMOTE_API_COMMANDS.md](./REMOTE_API_COMMANDS.md) for full documentation
20+
1021
### Changed
1122
- **i18n: `I18nLabelSchema` now accepts `string` only**`label`, `description`, `title`,
1223
and other display-text fields across all UI schemas (`AppSchema`, `NavigationArea`,

REMOTE_API_COMMANDS.md

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
# Remote API Commands
2+
3+
The ObjectStack CLI now includes commands to interact with a running ObjectStack server via its REST APIs.
4+
5+
## Authentication
6+
7+
Before using remote API commands, you need to authenticate:
8+
9+
```bash
10+
# Login and store credentials
11+
os auth login --url https://api.example.com
12+
13+
# Show current session
14+
os auth whoami
15+
16+
# Logout (clear stored credentials)
17+
os auth logout
18+
```
19+
20+
Credentials are stored in `~/.objectstack/credentials.json` and automatically used for subsequent commands.
21+
22+
Alternatively, you can provide credentials via environment variables or flags:
23+
24+
```bash
25+
# Using environment variables
26+
export OBJECTSTACK_URL=https://api.example.com
27+
export OBJECTSTACK_TOKEN=your-token-here
28+
29+
# Using flags
30+
os data query project_task --url https://api.example.com --token your-token-here
31+
```
32+
33+
## Data API Commands
34+
35+
### Query Records
36+
37+
```bash
38+
# Query all records
39+
os data query project_task
40+
41+
# Filter records
42+
os data query project_task --filter '{"status":"open"}'
43+
44+
# Limit and pagination
45+
os data query project_task --limit 10 --offset 0
46+
47+
# Select specific fields
48+
os data query project_task --fields name,status,created_at
49+
50+
# Sort results
51+
os data query project_task --sort -created_at # descending
52+
os data query project_task --sort created_at # ascending
53+
54+
# Output formats
55+
os data query project_task --format json
56+
os data query project_task --format yaml
57+
os data query project_task --format table # default
58+
```
59+
60+
### Get a Single Record
61+
62+
```bash
63+
os data get project_task abc123
64+
os data get project_task abc123 --format json
65+
```
66+
67+
### Create a Record
68+
69+
```bash
70+
# From JSON string
71+
os data create project_task '{"name":"New Task","status":"open"}'
72+
73+
# From JSON file
74+
os data create project_task --data task.json
75+
```
76+
77+
### Update a Record
78+
79+
```bash
80+
# From JSON string
81+
os data update project_task abc123 '{"status":"completed"}'
82+
83+
# From JSON file
84+
os data update project_task abc123 --data update.json
85+
```
86+
87+
### Delete a Record
88+
89+
```bash
90+
os data delete project_task abc123
91+
```
92+
93+
## Metadata API Commands
94+
95+
### List Metadata Types
96+
97+
```bash
98+
# List all available metadata types
99+
os meta list
100+
101+
# List items of a specific type
102+
os meta list object
103+
os meta list plugin
104+
os meta list view
105+
```
106+
107+
### Get Metadata Item
108+
109+
```bash
110+
os meta get object project_task
111+
os meta get plugin my-plugin --format json
112+
```
113+
114+
### Register Metadata
115+
116+
```bash
117+
# Register from JSON file
118+
os meta register object --data object-definition.json
119+
os meta register plugin --data plugin-manifest.json
120+
```
121+
122+
The metadata file must include a `name` field:
123+
124+
```json
125+
{
126+
"name": "my_custom_object",
127+
"label": "My Custom Object",
128+
"fields": {
129+
"name": {
130+
"type": "text",
131+
"label": "Name"
132+
}
133+
}
134+
}
135+
```
136+
137+
### Delete Metadata
138+
139+
```bash
140+
os meta delete object my_custom_object
141+
os meta delete plugin my-plugin
142+
```
143+
144+
## Output Formats
145+
146+
Most commands support multiple output formats via the `--format` flag:
147+
148+
- `json` - Machine-readable JSON output
149+
- `yaml` - Human-readable YAML output
150+
- `table` - Formatted table output (default for most commands)
151+
152+
## Environment Variables
153+
154+
The following environment variables are supported:
155+
156+
- `OBJECTSTACK_URL` - Default server URL (default: `http://localhost:3000`)
157+
- `OBJECTSTACK_TOKEN` - Authentication token (alternative to `os auth login`)
158+
159+
## Examples
160+
161+
### Complete Workflow
162+
163+
```bash
164+
# 1. Login
165+
os auth login --url https://api.example.com
166+
Email: user@example.com
167+
Password: ********
168+
169+
# 2. Query data
170+
os data query project_task --filter '{"status":"open"}' --limit 5
171+
172+
# 3. Create a new record
173+
os data create project_task '{"name":"Implement feature","status":"open","priority":"high"}'
174+
175+
# 4. Update the record
176+
os data update project_task abc123 '{"status":"in_progress"}'
177+
178+
# 5. List metadata
179+
os meta list object
180+
181+
# 6. Get object definition
182+
os meta get object project_task --format yaml
183+
```
184+
185+
### CI/CD Integration
186+
187+
```bash
188+
# Use token authentication in CI/CD pipelines
189+
export OBJECTSTACK_URL=https://api.production.com
190+
export OBJECTSTACK_TOKEN=${{ secrets.OBJECTSTACK_TOKEN }}
191+
192+
# Deploy metadata
193+
os meta register object --data objects/project_task.json
194+
195+
# Verify deployment
196+
os meta get object project_task --format json
197+
```

0 commit comments

Comments
 (0)