Files
bookhoard/bruno/conflicts/api.bru
T
john-okeefe 96825e3bc2 Rename API test collection references: Bookmann → Bookhoard
Bruno API test updates:
- Update test assertions: X-Bookmann-* → X-Bookhoard-*
- Update variable names and references in test scripts
- Update documentation and comments in API tests

This is part 4 of the project rename to Bookhoard.
2026-02-01 16:12:05 -05:00

128 lines
3.4 KiB
Plaintext

meta {
name: "Bookhoard Conflicts API"
type: "collection"
environment: {
development: {
base_url: "http://localhost:8765/api"
},
production: {
base_url: "https://your-domain.com/api"
}
}
}
# List Conflicts
@name("List Unresolved Conflicts")
GET {{environment.base_url}}/conflicts?status=unresolved
Authorization: Bearer {{jwt_token}}
@name("List All Conflicts")
GET {{environment.base_url}}/conflicts?status=all
Authorization: Bearer {{jwt_token}}
@name("List Resolved Conflicts")
GET {{environment.base_url}}/conflicts?status=resolved
Authorization: Bearer {{jwt_token}}
@name("List Progress Conflicts")
GET {{environment.base_url}}/conflicts?status=unresolved&type=progress
Authorization: Bearer {{jwt_token}}
@name("List Note Conflicts")
GET {{environment.base_url}}/conflicts?status=unresolved&type=note
Authorization: Bearer {{jwt_token}}
@name("List Highlight Conflicts")
GET {{environment.base_url}}/conflicts?status=unresolved&type=highlight
Authorization: Bearer {{jwt_token}}
# Get Conflict Details
@name("Get Conflict Details")
GET {{environment.base_url}}/conflicts/{{conflict_id}}
Authorization: Bearer {{jwt_token}}
# Resolve Conflict
@name("Resolve - Keep KOReader Progress")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "koreader",
"apply_to_all_future_conflicts": false,
"reason": "KOReader was most recently updated"
}
@name("Resolve - Keep Kobo Progress")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "kobo",
"apply_to_all_future_conflicts": false,
"reason": "Kobo has more progress"
}
@name("Resolve - Keep Web Progress")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "web",
"apply_to_all_future_conflicts": false,
"reason": "Web interface has most recent data"
}
@name("Resolve - Manual Override")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "manual",
"manual_data": {
"percentage": 0.43,
"epubcfi": "epubcfi(/6/4/2:20)",
"chapter": 3
},
"apply_to_all_future_conflicts": false,
"reason": "User specified custom progress"
}
@name("Resolve - Manual Override with Page")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "manual",
"manual_data": {
"percentage": 0.43,
"page": 89,
"epubcfi": "epubcfi(/6/4/2:20)"
},
"apply_to_all_future_conflicts": false,
"reason": "User specified page number"
}
@name("Resolve - Apply to All Future Conflicts")
POST {{environment.base_url}}/conflicts/{{conflict_id}}/resolve
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"winner": "koreader",
"apply_to_all_future_conflicts": true,
"reason": "Always prefer KOReader for future conflicts"
}
# Delete Conflict
@name("Delete Conflict")
DELETE {{environment.base_url}}/conflicts/{{conflict_id}}
Authorization: Bearer {{jwt_token}}
@name("Dismiss Conflict")
DELETE {{environment.base_url}}/conflicts/{{conflict_id}}
Authorization: Bearer {{jwt_token}}
# Batch Operations
@name("Dismiss All Resolved Conflicts")
DELETE {{environment.base_url}}/conflicts/dismiss-resolved
Authorization: Bearer {{jwt_token}}