docs: update media item bruno docs with normalization info

Update Update Media Item.bru to document normalization behavior:
- Note that tags and contributors are auto-normalized (same as Create)
- Document response includes updated search fields

Relates to Tags & Contributors Migration documentation updates
This commit is contained in:
2026-02-08 11:27:39 -05:00
parent 018a576188
commit 798de7947a
6 changed files with 134 additions and 93 deletions
+22 -5
View File
@@ -23,11 +23,11 @@ body:json {
"cover_image_path": "/path/to/cover.jpg",
"series": "Series Name",
"series_number": 1,
"tags": ["fiction", "adventure"],
"tags": ["science fiction", "ACME CORP.", "non-fiction"],
"asin": "B08XYZ123",
"date_published": "2023-01-15",
"publisher": "Publisher Name",
"contributors": ["Contributor Name"],
"contributors": ["O'Reilly Media", "acme corp"],
"language": "en",
"edition": "First Edition",
"page_count": 350,
@@ -93,11 +93,11 @@ docs {
- `cover_image_path` (string, optional): Path to cover image
- `series` (string, optional): Series name
- `series_number` (integer, optional): Number in series
- `tags` (array of string, optional): Tags or categories
- `tags` (array of string, optional): Tags or categories (auto-normalized) (automatically normalized)
- `asin` (string, optional): Amazon ASIN
- `date_published` (string, optional): Publication date
- `publisher` (string, optional): Publisher name
- `contributors` (array of string, optional): List of contributors
- `contributors` (array of string, optional): List of contributors (auto-normalized) (automatically normalized)
- `language` (string, optional): Language code (ISO 639-1)
- `edition` (string, optional): Edition information
- `page_count` (integer, optional): Total page count
@@ -108,7 +108,24 @@ docs {
- `google_books_id` (string, optional): Google Books identifier
**Response:** Created media item object
- All fields above plus system-generated fields
- All fields above plus:
- `tags_search` (array): Normalized for search (lowercase, no punctuation)
- `contributors_search` (array): Normalized for search (lowercase, no punctuation)
**Normalization Behavior:**
Tags are automatically normalized:
- Trim whitespace
- Titlecased (preserves hyphenation: "non-fiction" → "Non-Fiction")
- Case-insensitive deduplication (keeps version with punctuation if exists)
- Example: `["science fiction", "SCIENCE-FICTION"]` → `["Science-Fiction"]`
Contributors are automatically normalized:
- Trim whitespace
- Preserve original casing (CAPSLOCK companies, Title Case, etc.)
- Preserve punctuation for display
- Case-insensitive deduplication (keeps version with punctuation if exists)
- Example: `["acme corp", "ACME CORP.", "acme corp"]` → `["ACME CORP."]`
**Status Codes:**
- 201: Media item created successfully
+3
View File
@@ -86,8 +86,11 @@ docs {
- `id` (string): Media item UUID
**Request Body:** All media item fields (same as Create)
- Tags and contributors are auto-normalized (see Create Media Item docs)
**Response:** Updated media item object
- Includes normalized `tags` and `contributors` fields
- Includes updated `tags_search` and `contributors_search` fields
**Status Codes:**
- 200: Media item updated successfully
@@ -39,7 +39,10 @@ Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
"cover_image_path": "/path/to/cover.jpg",
"series": "Series Name",
"series_number": 1,
"tags": "sci-fi, space opera",
"tags": ["sci-fi", "space opera"],
"tags_search": ["sci fi", "space opera"],
"contributors": ["Author Name", "ACME CORP."],
"contributors_search": ["author name", "acme corp"],
"language": "en",
"page_count": 350,
"genre": "Science Fiction",
@@ -43,7 +43,10 @@ Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
"cover_image_path": "/path/to/cover.jpg",
"series": "Series Name",
"series_number": 1,
"tags": "sci-fi, space opera",
"tags": ["sci-fi", "space opera"],
"tags_search": ["sci fi", "space opera"],
"contributors": ["Author Name", "ACME CORP."],
"contributors_search": ["author name", "acme corp"],
"language": "en",
"page_count": 350,
"genre": "Science Fiction",
@@ -1,6 +1,13 @@
# Search Media Items
Search for media items by title, author, or description.
Search for media items by title, author, series, tags, or contributors.
**Note:** Search is case-insensitive and punctuation-agnostic. The search query is matched against normalized tags_search and contributors_search fields, allowing users to find matches regardless of casing or punctuation.
Examples:
- Search "acme corp" finds items with "ACME CORP." or "Acme Corp"
- Search "oreilly" finds items with "O'Reilly Media" or "OReilly Media"
- Search "science fiction" finds items with "Science-Fiction" or "science-fiction"
**Endpoint**: `GET /api/media-items/search`
**Auth**: Required
@@ -21,6 +21,14 @@ Update media item metadata (Admin only).
| description | string | No | Updated description |
| series | string | No | Series name |
| series_number | integer | No | Number in series |
| tags | array of string | No | Updated tags (auto-normalized) |
| contributors | array of string | No | Updated contributors (auto-normalized) |
**Tag/Contributor Normalization:**
- Tags are titlecased and deduplicated (case-insensitive)
- Contributors preserve original casing and punctuation
- Punctuation-preferred deduplication (keeps "ACME CORP." over "acme corp")
- Search fields auto-generated for case-insensitive search
### Example Request