Files
bookhoard/docs/developer/api/collections/test_rule.md
T
john-okeefe 253f56399d docs: restructure documentation into audience-based portals
BREAKING CHANGE: Documentation URLs have changed

New structure:
- user/ - End-user documentation (device setup, sync guides, frontend)
- developer/ - Developer documentation (API reference, protocols, specs)
- operations/ - Operations documentation (deployment, troubleshooting)
- contributing/ - Contribution guides

Changes:
- Created portal INDEX.md files for each audience section
- Moved device guides to user/devices/ (kobo-setup.md, koreader-setup.md)
- Moved API docs to developer/ (api-reference.md, collections-api.md)
- Moved sync guide to user/sync-guide.md
- Moved troubleshooting to operations/troubleshooting.md
- Moved all split API docs to developer/api/
- Renamed protocol files (kobo-protocol.md, koreader-protocol.md)
- Added placeholder user guides (frontend, user-areas, settings, admin)
- Updated all internal links to new paths
- Updated Go code (http_handler.go, navigation.go) for new paths
- Updated main INDEX.md for audience-based navigation

Benefits:
- Clear separation of user and developer documentation
- Scalable structure for future user guide expansion
- Better organization and discoverability
- Audience-specific landing pages

Related to DOCS_IMPLEMENTATION_PLAN.md Phase 2 completion
2026-02-02 15:58:34 -05:00

1.7 KiB

Test Rule

Test which books would match given rules without saving.

Endpoint: POST /api/collections/test-rules Auth: Required Content-Type: application/json

Request Body

Field Type Required Description
rules array Yes Array of rule objects to test

Rule Object

Field Type Required Description
field string Yes Field to match on (genre, author, series, language, publisher, copyright_year, tags)
operator string Yes Comparison operator (equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than)
value string/number Yes Value to compare against

Example Request

{
  "rules": [
    {
      "field": "genre",
      "operator": "equals",
      "value": "Science Fiction"
    },
    {
      "field": "author",
      "operator": "contains",
      "value": "Asimov"
    }
  ]
}

Response (200 OK)

{
  "matches": [
    {
      "media_item_id": "660e8400-e29b-41d4-a716-446655440000",
      "title": "Foundation",
      "author": "Isaac Asimov",
      "cover_image_path": "/covers/foundation.jpg",
      "match_reason": "Matched rule: genre equals Science Fiction"
    }
  ],
  "total": 42
}

Use Case

Test rules before creating a collection to verify correct book matching. This endpoint shows which books would be added without actually modifying any collections.

Error Responses

Code Description
400 Invalid request (validation failed)
401 Authentication required
500 Internal server error

Try It Out