# Books Book metadata, series, authors, and reading progress ## Endpoints ### GET /api/v1/books List all books with optional search filters **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | ----------- | ----- | -------- | ------------------- | | `isbn` | query | No | Filter by ISBN | | `author` | query | No | Filter by author | | `series` | query | No | Filter by series | | `publisher` | query | No | Filter by publisher | | `language` | query | No | Filter by language | | `offset` | query | No | Pagination offset | | `limit` | query | No | Pagination limit | #### Responses | Status | Description | | ------ | --------------------- | | 200 | List of books | | 401 | Unauthorized | | 500 | Internal server error | --- ### GET /api/v1/books/authors List all authors with book counts **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | -------- | ----- | -------- | ----------------- | | `offset` | query | No | Pagination offset | | `limit` | query | No | Pagination limit | #### Responses | Status | Description | | ------ | ------------------------ | | 200 | Authors with book counts | | 401 | Unauthorized | --- ### GET /api/v1/books/authors/{name}/books Get books by a specific author **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | -------- | ----- | -------- | ----------------- | | `name` | path | Yes | Author name | | `offset` | query | No | Pagination offset | | `limit` | query | No | Pagination limit | #### Responses | Status | Description | | ------ | --------------- | | 200 | Books by author | | 401 | Unauthorized | --- ### GET /api/v1/books/reading-list Get user's reading list **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | -------- | ----- | -------- | ------------------------ | | `status` | query | No | Filter by reading status | #### Responses | Status | Description | | ------ | ------------ | | 200 | Reading list | | 401 | Unauthorized | --- ### GET /api/v1/books/series List all series with book counts **Authentication:** Required (Bearer JWT) #### Responses | Status | Description | | ------ | -------------------------- | | 200 | List of series with counts | | 401 | Unauthorized | --- ### GET /api/v1/books/series/{name} Get books in a specific series **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | ------ | ---- | -------- | ----------- | | `name` | path | Yes | Series name | #### Responses | Status | Description | | ------ | --------------- | | 200 | Books in series | | 401 | Unauthorized | --- ### GET /api/v1/books/{id}/metadata Get book metadata by media ID **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | ---- | ---- | -------- | ------------- | | `id` | path | Yes | Media item ID | #### Responses | Status | Description | | ------ | ------------- | | 200 | Book metadata | | 401 | Unauthorized | | 404 | Not found | --- ### GET /api/v1/books/{id}/progress Get reading progress for a book **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | ---- | ---- | -------- | ------------- | | `id` | path | Yes | Media item ID | #### Responses | Status | Description | | ------ | ---------------- | | 200 | Reading progress | | 401 | Unauthorized | | 404 | Not found | --- ### PUT /api/v1/books/{id}/progress Update reading progress for a book **Authentication:** Required (Bearer JWT) #### Parameters | Name | In | Required | Description | | ---- | ---- | -------- | ------------- | | `id` | path | Yes | Media item ID | #### Request Body `Content-Type: application/json` See `docs/api/openapi.json` for the full schema. #### Responses | Status | Description | | ------ | ---------------- | | 204 | Progress updated | | 400 | Bad request | | 401 | Unauthorized | ---