- Add auth.RequireScope() to all handler routes for proper authorization - Add SDLC OpenAPI endpoint documentation (state, features, tasks, branches, merge, archive, orchestrator) - Add SDLC documentation guides (getting-started, cli-reference, api-reference, command-catalog) - Add artifact_test.go for SDLC artifact coverage - Add CLAUDE.md rules: auth scopes requirement, error wrapping with %w - Fix error wrapping to use %w instead of %v throughout codebase - Improve CLI merge command with conflict detection and resolution - Fix handler tests to include auth middleware for RequireScope - Add cookbook tree runner scripts for automated testing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4.5 KiB
SDLC API Reference
The rdev API provides REST endpoints for SDLC orchestration within project pods.
Authentication
All endpoints require API key authentication:
X-API-Key: rdev_sk_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Base Path
All SDLC endpoints are prefixed with /projects/{id}/sdlc/.
State Endpoints
GET /projects/{id}/sdlc/state
Get the global SDLC state for a project.
Response:
{
"data": {
"version": 1,
"project": {"name": "My Project"},
"active_work": {"features": [...]},
"blocked": [],
"last_updated": "2026-01-15T10:00:00Z"
}
}
GET /projects/{id}/sdlc/next
Get the classifier's recommended next action.
Query Parameters:
feature- Feature slug (optional, defaults to active feature)
Response:
{
"data": {
"action": "CREATE_SPEC",
"feature": "auth-flow",
"message": "Create specification document",
"next_command": "/spec-feature auth-flow"
}
}
Feature Endpoints
GET /projects/{id}/sdlc/features
List all features.
Response:
{
"data": [
{
"slug": "auth-flow",
"title": "User Authentication Flow",
"phase": "draft",
"created_at": "2026-01-15T10:00:00Z"
}
]
}
POST /projects/{id}/sdlc/features
Create a new feature.
Request Body:
{
"slug": "auth-flow",
"title": "User Authentication Flow"
}
GET /projects/{id}/sdlc/features/{slug}
Get feature details.
DELETE /projects/{id}/sdlc/features/{slug}
Delete a feature.
POST /projects/{id}/sdlc/features/{slug}/transition
Transition feature to a new phase.
Request Body:
{
"phase": "specified"
}
POST /projects/{id}/sdlc/features/{slug}/block
Block a feature.
Request Body:
{
"reason": "Waiting for API design"
}
POST /projects/{id}/sdlc/features/{slug}/unblock
Unblock a feature.
Artifact Endpoints
GET /projects/{id}/sdlc/features/{slug}/artifacts
Get artifact statuses for a feature.
POST /projects/{id}/sdlc/features/{slug}/artifacts/{type}/approve
Approve an artifact.
POST /projects/{id}/sdlc/features/{slug}/artifacts/{type}/reject
Reject an artifact.
Task Endpoints
GET /projects/{id}/sdlc/features/{slug}/tasks
List tasks for a feature.
POST /projects/{id}/sdlc/features/{slug}/tasks
Add a new task.
Request Body:
{
"title": "Implement login handler"
}
POST /projects/{id}/sdlc/features/{slug}/tasks/{taskId}/start
Start a task.
POST /projects/{id}/sdlc/features/{slug}/tasks/{taskId}/complete
Complete a task.
POST /projects/{id}/sdlc/features/{slug}/tasks/{taskId}/block
Block a task.
Branch Endpoints
POST /projects/{id}/sdlc/features/{slug}/branch
Create a feature branch.
GET /projects/{id}/sdlc/features/{slug}/branch
Get branch status and merge checklist.
Response:
{
"data": {
"branch": {
"name": "feature/auth-flow",
"base_branch": "main",
"created_at": "2026-01-15T10:00:00Z"
},
"checklist": [],
"ready": true
}
}
POST /projects/{id}/sdlc/features/{slug}/branch/sync
Sync feature branch with base.
Merge and Archive Endpoints
POST /projects/{id}/sdlc/features/{slug}/merge
Merge a feature branch.
Request Body:
{
"strategy": "squash"
}
POST /projects/{id}/sdlc/features/{slug}/archive
Archive a released feature.
Query Endpoints
GET /projects/{id}/sdlc/query/blocked
List blocked features.
GET /projects/{id}/sdlc/query/ready
List features ready for work.
GET /projects/{id}/sdlc/query/needs-approval
List features awaiting approval.
Orchestrator Endpoints
POST /projects/{id}/sdlc/execute
Execute the next classifier action.
Request Body:
{
"feature": "auth-flow",
"provider": "claude"
}
POST /projects/{id}/sdlc/resolve
Resolve a blocker.
Request Body:
{
"feature": "auth-flow"
}
POST /projects/{id}/sdlc/commit
Commit changes in the project.
Request Body:
{
"feature": "auth-flow",
"message": "feat: implement login handler",
"push": true
}
Error Responses
All errors return:
{
"error": "error_code",
"message": "Human readable message"
}
Common error codes:
not_initialized- SDLC not initialized in projectfeature_not_found- Feature does not existfeature_exists- Feature already existsinvalid_transition- Invalid phase transitioninvalid_phase- Unknown phasemerge_not_ready- Feature not ready to merge