Files
bookhoard/bruno/media-items/Combined Search and Filters.yml
T
john-okeefe fc617c3e46 docs: update Bruno collection with unified search endpoints
- Update Search All Libraries.yml with expanded documentation
- Add Fuzzy Author Filter.yml (author_filter=asimov example)
- Add Fuzzy Genre Filter.yml (genre_filter=scifi example)
- Add Combined Search and Filters.yml (q=foundation&author_filter=asimov example)
- Add Exact Match With Quotes.yml (q="Foundation and Empire" example)
- Add Field Values Search - Authors.yml (autocomplete dropdown example)
- Add Field Values Search - Genres.yml (autocomplete dropdown example)
- Add Field Values Search - Series.yml (autocomplete dropdown example)
- Add Field Values Search - Languages.yml (autocomplete dropdown example)
- Remove deprecated Filter Media Items.yml scenario

All files include request config, params, examples, expected responses, and success criteria for API interaction during development.
2026-03-23 22:38:28 -04:00

98 lines
2.5 KiB
YAML

info:
name: Combined Search and Filters
type: http
seq: 1
http:
method: GET
url: "{{base_url}}/api/media-items/search"
params:
- name: library_id
value: "{{library_id}}"
type: query
disabled: false
- name: q
value: "foundation"
type: query
disabled: false
- name: author_filter
value: "asimov"
type: query
disabled: false
- name: genre_filter
value: "scifi"
type: query
disabled: false
- name: year_min
value: "1950"
type: query
disabled: false
- name: year_max
value: "2000"
type: query
disabled: false
- name: sort
value: "title ASC"
type: query
disabled: false
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Combined Search and Filters
Combines a search query with multiple filters to find specific media items.
**Method:** GET
**Endpoint:** /api/media-items/search
**Authentication:** Required (Bearer token)
**Query Parameters:**
- `library_id` (string, required): Library UUID to search within
- `q` (string, required): Search query for title/author/series/tags (fuzzy match)
- `author_filter` (string, optional): Fuzzy match author field
- `genre_filter` (string, optional): Fuzzy match genre field
- `year_min` (integer, optional): Minimum copyright year (exact match)
- `year_max` (integer, optional): Maximum copyright year (exact match)
- `sort` (string, optional): Sort order (e.g., "title ASC", "author DESC", "created_at DESC")
**How Combined Search Works:**
- All filters are AND'd together (must match ALL conditions)
- Search query (`q`) uses fuzzy matching across title, author, series, tags
- Text filters (author, genre) use fuzzy matching
- Year filters use exact range matching
- Results sorted by relevance first, then by sort parameter
**Response:** HTTP 200 (OK)
```json
[
{
"id": "uuid",
"title": "Foundation",
"author": "Asimov, Isaac",
"genre": "Sci-Fi",
"copyright_year": 1951,
"library_id": "uuid",
"library_name": "E-Books"
}
]
```
**Example Use Cases:**
- Find "Foundation" by "Asimov" in "Sci-Fi" genre from 1950-2000
- Search "potter" with genre "fantasy" published after 2000
- Find "mars" books by "sci-fi" authors sorted by date
**Success Criteria:**
- Status: 200
- Returns items matching all filters
- Results sorted by relevance then by sort parameter
- Only returns items matching ALL specified conditions