This commit captures the current state before implementing the composable monorepo template system. Key changes included: Infrastructure: - Add CockroachDB provisioner adapter for database provisioning - Add Redis provisioner adapter for cache provisioning - Add build events system with PostgreSQL storage - Add WebSocket endpoint for real-time build progress Code agent improvements: - Fix Claude Code adapter to use default allowed tools instead of dangerously-skip-permissions - Add context-aware stream closing for cancellation support - Improve parser tests for edge cases Build system: - Add build event constants and metrics - Remove deprecated git_operations.go (replaced by pod_git_operations.go) - Add rollback logic for multi-step provisioning operations Documentation: - Add composable-monorepo feature documentation - Add DNS/Cloudflare service documentation - Update deployment and troubleshooting guides Cookbooks: - Add fullstack-app cookbook - Refactor landing-test with shared library Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
rdev API Documentation
rdev provides a REST API for remote development environments with SSE streaming support.
Quick Start
1. Get an API Key
Contact your administrator to get an API key, or create one if you have admin access:
curl -X POST https://rdev.example.com/keys \
-H "X-API-Key: your-admin-key" \
-H "Content-Type: application/json" \
-d '{
"name": "my-key",
"scopes": ["projects:read", "projects:execute"]
}'
2. List Projects
curl https://rdev.example.com/projects \
-H "X-API-Key: your-key"
3. Execute a Command
curl -X POST https://rdev.example.com/projects/my-project/shell \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"command": "ls -la"}'
4. Stream Output
curl -N https://rdev.example.com/projects/my-project/events?stream_id=cmd-001 \
-H "X-API-Key: your-key"
Base URL
https://rdev.masq-ops.orchard9.ai
Authentication
See authentication.md for details.
All requests (except /health, /ready, /metrics) require authentication.
Header:
X-API-Key: rdev_xxxx...
Or:
Authorization: Bearer rdev_xxxx...
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /projects |
List all projects |
| GET | /projects/{id} |
Get project details |
| POST | /projects/{id}/claude |
Run Claude command |
| POST | /projects/{id}/shell |
Run shell command |
| POST | /projects/{id}/git |
Run git command |
| GET | /projects/{id}/events |
SSE event stream |
| GET | /keys |
List API keys |
| POST | /keys |
Create API key |
| DELETE | /keys/{id} |
Revoke API key |
| GET | /health |
Liveness check |
| GET | /ready |
Readiness check |
| GET | /metrics |
Prometheus metrics |
Response Format
All responses follow this format:
Success
{
"data": { ... },
"meta": {
"request_id": "req-abc123",
"timestamp": "2024-01-15T10:30:00Z"
}
}
Error
{
"error": {
"code": "NOT_FOUND",
"message": "Project not found: my-project"
},
"meta": {
"request_id": "req-abc123",
"timestamp": "2024-01-15T10:30:00Z"
}
}
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
BAD_REQUEST |
400 | Invalid request body or parameters |
UNAUTHORIZED |
401 | Missing or invalid API key |
FORBIDDEN |
403 | Insufficient permissions |
NOT_FOUND |
404 | Resource not found |
TOO_MANY_REQUESTS |
429 | Rate limit exceeded |
INTERNAL_ERROR |
500 | Server error |
Rate Limiting
Requests are rate limited per API key:
| Limit Type | Default |
|---|---|
| Requests/second | 10 |
| Concurrent commands | 5 |
Headers:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1642089600