Beam added frontmatter + provenance + labeled examples to the 7 conflict and 6 queue docs, fixing real field drift on the way (resolve response keys, bulk result shape, dismiss-all deleted count, queue stats counts). Claude registry verification found TWO Beam catches of Claude's own draft: - queue routes use :device_id / :item_id params (registry first draft said :id) - resolve_conflict DOES take a body (ConflictResolutionRequest) — registry first draft said nil Both fixed; gate then surfaced one real Beam defect: example-request used a nonexistent "resolution" field in resolve + bulk-resolve (real contract: winner=<source|manual> with required manual_data for manual; strategy= most_recent|highest_progress|manual). Fixed in the docs. Pinned by type: ConflictListResponse, ConflictDetailResponse, ConflictResolveResponse, BulkResolveRequest/Response, QueueStatsResponse, ConflictResolutionRequest. dismiss-all deleted is an int count.
1.4 KiB
1.4 KiB
method, path, auth, area
| method | path | auth | area |
|---|---|---|---|
| POST | /api/conflicts/:id/resolve | jwt | conflicts |
Resolve Conflict
Resolve a specific conflict by choosing which version to keep.
Endpoint: POST /api/conflicts/:id/resolve
Auth: Required
Content-Type: application/json
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | Conflict UUID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| resolution | string | Yes | Resolution strategy: "device", "server", or "highest_progress" |
Example Request
{
"winner": "kobo"
}
winner is one of the conflict's source keys (e.g. "kobo", "koreader",
"web") or "manual" — the latter requires manual_data.
Response (200 OK)
{
"conflict_resolved": true,
"applied_to": {},
"devices_synced": []
}
Error Responses
| Code | Description |
|---|---|
| 400 | Invalid resolution strategy |
| 401 | Invalid or expired token |
| 404 | Conflict not found |
| 400 | Conflict already resolved |