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.
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
---
|
|
method: POST
|
|
path: /api/conflicts/:id/resolve
|
|
auth: jwt
|
|
area: conflicts
|
|
---
|
|
<!-- source: internal/handlers/conflicts.go:208 ConflictHandler.ResolveConflict -->
|
|
|
|
# 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
|
|
|
|
```json 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)
|
|
|
|
```json example-response
|
|
{
|
|
"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 |
|