# 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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "phase": "specified"
}
```

### POST /projects/{id}/sdlc/features/{slug}/block

Block a feature.

**Request Body:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "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:**
```json
{
  "feature": "auth-flow",
  "provider": "claude"
}
```

### POST /projects/{id}/sdlc/resolve

Resolve a blocker.

**Request Body:**
```json
{
  "feature": "auth-flow"
}
```

### POST /projects/{id}/sdlc/commit

Commit changes in the project.

**Request Body:**
```json
{
  "feature": "auth-flow",
  "message": "feat: implement login handler",
  "push": true
}
```

## Error Responses

All errors return:

```json
{
  "error": "error_code",
  "message": "Human readable message"
}
```

Common error codes:
- `not_initialized` - SDLC not initialized in project
- `feature_not_found` - Feature does not exist
- `feature_exists` - Feature already exists
- `invalid_transition` - Invalid phase transition
- `invalid_phase` - Unknown phase
- `merge_not_ready` - Feature not ready to merge
