Files
bookhoard/docs/developer/api/media-items/bulk_update_media_items.md
T
john-okeefe 4d321528b2 docs: update comprehensive API documentation and project guides
This commit updates all documentation files throughout the project:

- Updated IMPLEMENTATION_PLAN.md with new implementation details
- Updated PROJECT_GUIDELINES.md with coding standards and practices
- Updated README.md with current project information
- Updated SCREENSHOT_AUTOMATION.md with new automation details
- Added TEST_DATA.md with test fixtures data
- Updated cover_image_serving_plan.md with static URL patterns

Documentation API updates:
- Updated API reference documentation for all endpoints including:
  - Authentication (login, logout, register, refresh_token)
  - Book matching (auto_link, bulk_link, link_book, search)
  - Collections (CRUD operations, shelf mappings, auto-assign rules)
  - Conflicts (bulk operations, resolve/dismiss)
  - Devices (registration, approval, shelf management)
  - Highlights (create, update, delete, get)
  - Kobo sync (bookmark, markup, initialization, sync)
  - KOReader sync (library, metadata, bookmarks, progress)
  - Libraries (CRUD, folders, media items, stats)
  - Media items (bulk operations, CRUD)
  - Notes (CRUD operations)
  - OPDS (acquisition, feeds, publication)
  - Progress (reading progress tracking)
  - Queue (device queue management)
  - Ratings (star ratings)
  - Scanner (watch mode, scan operations)
  - Sync protocols (Kobo, KOReader)
  - Users (profile, password, admin operations)
  - WebSocket protocols

- Updated user guides (admin, dashboard, settings, sync)
- Updated device setup guides (Kobo, KOReader)
- Updated developer guides (testing, contributing, operations)
- Updated scripts/README.md
2026-02-27 17:06:22 -05:00

3.8 KiB

Bulk Update Media Items

Update multiple media items at once (supports ebooks, comics, manga).

Endpoint: POST /api/media-items/bulk-update Auth: Required Content-Type: application/json

Request Body

Field Type Required Description
media_item_updates array of objects Yes Array of update operations
media_item_updates[].media_item_id string (UUID) Yes Media item UUID to update
media_item_updates[].updates object Yes Fields to update

Update Fields

Field Type Required Description
title string No Updated title
author string No Updated author
genre string No Updated genre
language string No Updated language (ISO 639-1 code)
tags array of strings No Updated tags (auto-normalized)

Example Request

{
  "media_item_updates": [
    {
      "media_item_id": "550e8400-e29b-41d4-a716-446655440001",
      "updates": {
        "title": "Updated Title",
        "genre": "Science Fiction",
        "tags": ["science fiction", "space opera", "ACME CORP."]
      }
    },
    {
      "media_item_id": "660e8400-e29b-41d4-a716-446655440002",
      "updates": {
        "author": "Updated Author Name",
        "language": "en"
      }
    }
  ]
}

Response (200 OK)

{
  "results": [
    {
      "media_item_id": "550e8400-e29b-41d4-a716-446655440001",
      "status": "success"
    },
    {
      "media_item_id": "660e8400-e29b-41d4-a716-446655440002",
      "status": "error",
      "error": "Media item not found"
    }
  ],
  "total": 2,
  "updated": 1,
  "failed": 1
}

Response Fields

Field Type Description
results array Individual result for each media item
results[].media_item_id string UUID of the media item
results[].status string "success" or "error"
results[].error string Error message (only present if status is "error")
total number Total number of media items processed
updated number Number of media items successfully updated
failed number Number of media items that failed to update

Tag and Contributor Normalization

The backend automatically normalizes tags:

  • Tags: Titlecased, punctuation preserved, deduplicated
  • Search fields: Lowercase, no punctuation, stored in tags_search

Error Responses

Code Description
400 Invalid request data or empty media_item_updates array
401 Invalid or expired token
403 User does not have permission
404 One or more media items not found
500 Server error during update

Notes

  • Partial success: The operation continues even if some updates fail
  • Invalid UUIDs: Invalid UUID formats are counted as failures
  • Non-existent items: Media items that don't exist are counted as failures
  • No changes: If updates object is empty, the item still counts as success