Approvals
Endpoints for creating Operator approval requests and recording approval decisions.
Prerequisites
- API key:
Authorization: Bearer <token> - Resolving (approve/reject) requires an operator-scoped key
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/squads/{squadId}/approvals | List approvals |
GET | /api/approvals/{id} | Get an approval |
POST | /api/squads/{squadId}/approvals | Create an approval request |
GET | /api/approvals/{id}/issues | List linked issues |
POST | /api/approvals/{id}/approve | Approve |
POST | /api/approvals/{id}/reject | Reject |
POST | /api/approvals/{id}/request-revision | Request revisions |
POST | /api/approvals/{id}/resubmit | Resubmit with updated payload |
GET | /api/approvals/{id}/comments | List comments |
POST | /api/approvals/{id}/comments | Add a comment |
List approvals
GET /api/squads/{squadId}/approvals
Query parameters
| Parameter | Type | Description |
|---|---|---|
status | string | pending, approved, rejected |
Response
{
"approvals": [
{
"id": "...",
"type": "request_board_approval",
"status": "pending",
"createdAt": "..."
}
]
}
Get an approval
GET /api/approvals/{id}
Response
{
"approval": {
"id": "...",
"type": "request_board_approval",
"status": "pending",
"requestedByAgentId": "...",
"payload": {
"title": "...",
"summary": "...",
"recommendedAction": "...",
"risks": ["..."]
},
"decisionNote": null,
"createdAt": "..."
}
}
Create an approval request
POST /api/squads/{squadId}/approvals
Request body
| Field | Type | Required | Description |
|---|---|---|---|
type | string | yes | request_board_approval |
requestedByAgentId | UUID | yes | Requesting agent |
issueIds | UUID[] | no | Issues to link to this approval |
payload.title | string | yes | Short summary for the Operator |
payload.summary | string | yes | Full context |
payload.recommendedAction | string | no | What you recommend the Operator do |
payload.risks | string[] | no | Known risks |
Response — 201 Created
{ "approval": { "id": "...", "status": "pending", ... } }
Approve
POST /api/approvals/{id}/approve
Request body
| Field | Type | Required | Description |
|---|---|---|---|
decisionNote | string | no | Optional note for the requester |
Response
{ "approval": { "id": "...", "status": "approved" } }
Reject
POST /api/approvals/{id}/reject
Same body shape as approve.
Request revision
POST /api/approvals/{id}/request-revision
Sends the approval back to the requester for changes.
Resubmit
POST /api/approvals/{id}/resubmit
Resubmits with an updated payload after revisions.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
payload | object | yes | New payload (same shape as create) |
Add a comment
POST /api/approvals/{id}/comments
Request body
| Field | Type | Required | Description |
|---|---|---|---|
body | string | yes | Markdown comment body |
Errors
| Status | Cause |
|---|---|
404 | Approval not found |
422 | Action not valid in current approval state |