Files
bookhoard/bruno/conflicts/Bulk Resolve Conflicts.bru
T
john-okeefe 26070e4000 Refactor: rename baseUrl to base_url in .bru files
Update configuration key naming convention to use snake_case
consistently.
Applies changes recursively across all subdirectories.
2026-02-08 21:26:31 -05:00

94 lines
2.3 KiB
Plaintext

meta {
name: Bulk Resolve Conflicts
type: http
seq: 1
}
post {
url: {{base_url}}/api/conflicts/bulk-resolve
body: json
auth: inherit
}
headers {
Content-Type: application/json
Authorization: Bearer {{authToken}}
}
body:json {
{
"conflict_ids": [
"{{conflictId1}}",
"{{conflictId2}}",
"{{conflictId3}}"
],
"strategy": "most_recent"
}
}
script:post-response {
function onResponse(res) {
if (res.getStatus() === 200) {
tests['Bulk resolve successful'] = true;
const body = res.getBody();
tests['Has results array'] = Array.isArray(body.results);
tests['Has total count'] = body.total !== undefined;
tests['Has success count'] = body.success !== undefined;
tests['Has failed count'] = body.failed !== undefined;
tests['Total equals sum of success and failed'] = body.total === body.success + body.failed;
} else {
tests['Bulk resolve failed'] = false;
}
}
onResponse(res);
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Bulk Resolve Conflicts
Resolves multiple sync conflicts in a single request using a specified resolution strategy.
**Method:** POST
**Endpoint:** /api/conflicts/bulk-resolve
**Authentication:** Bearer token
**Request Body:**
- `conflict_ids` (array): Array of conflict UUIDs to resolve
- `strategy` (string): Resolution strategy
- `most_recent`: Use the most recently updated progress
- `highest_progress`: Use the reading progress with the highest percent read
- `server`: Always prefer server-side data
- `device`: Always prefer device-side data
**Response:**
- `results` (array): Results for each conflict resolution
- `total` (number): Total number of conflicts processed
- `success` (number): Number of successfully resolved conflicts
- `failed` (number): Number of failed resolutions
**Status Codes:**
- 200: Success (with partial results if some failed)
- 400: Invalid request data
- 401: Unauthorized
- 403: Forbidden
- 404: One or more conflicts not found
- 500: Internal server error
**Example:**
```json
{
"conflict_ids": ["uuid-1", "uuid-2", "uuid-3"],
"strategy": "most_recent"
}
```
**Note:** Conflicts are resolved atomically per conflict. If one resolution fails, others may still succeed.
}