bruno: regenerate collection from canonical docs + permanent docs↔Bruno parity gate

WO4. The old collection was the drifted artifact AGENTS.md warned about:
bodies pre-truncated at their first {{var}}, routes renamed server-side
but not here (/api/notes/:media_id, /api/book-matching/search,
/api/collections/:id/rules/test), an orphan universal-progress suite for
routes that no longer exist.

scripts/gen_bruno_from_docs.py emits one OpenCollection request per
frontmatter'd endpoint doc (191 requests): gate-verified example-request
JSON as body, {{env}} params per the environment file, device-token
routes get an explicit Bearer {{device_token}} header, login/register/
refresh keep the token-capture after-response scripts that chain the
collection. Old 1:1 mirrors deleted (128); hand-authored NewDevDBSetup,
environments, and edge-case suites kept. 30 scenario files with
truncated bodies (the documented corruption) deleted — they could not
run.

internal/docs/drift_test.go gains TestBrunoMirrorsDocs: every
frontmatter'd doc must have a Bruno request with matching method+URL
shape — the collection can never silently drift from the docs again.
opencollection.yml README block replaced with the real run instructions.

make test green (9 pkgs, parity test included in internal/docs).
This commit is contained in:
John O'Keefe committed 2026-10-24 18:35:51 -04:00
1 parent 6fc501b35a
commit acd82fff0a
353 files changed
+5165 -5293

No files matched your search

-52
View File
@@ -1,52 +0,0 @@
info:
name: Create Media Item
type: http
seq: 3
http:
method: POST
url: "{{base_url}}/api/media-items"
headers:
- name: ""
value: application/json
body:
type: json
data: |-
{
"library_id": "{{library_id}}",
"title": "Test Book",
"author": "Test Author",
"file_path": "/path/to/book.epub",
"file_size": 1024,
"mime_type": "application/epub+zip"
}
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_create_media_item_success(status, headers, body) {
if (status !== 201) {
throw new Error("Expected status 201, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Create Media Item
Creates a new media item in a library with full metadata.
**Method:** POST
**Endpoint:** /api/media-items
**Authentication:** Required (Bearer token, admin only)
**Prerequisites**
- Library must have at least one folder configured before media items can be added
- Use `POST /api/libraries/{library_id
-33
View File
@@ -1,33 +0,0 @@
info:
name: Create Media Rating
type: http
seq: 4
http:
method: POST
url: "{{base_url}}/api/media-items/{{media_item_id}}/rating"
headers:
- name: ""
value: application/json
body:
type: json
data: |-
{
"rating": 7
}
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Create Media Rating
Creates or updates the authenticated user's rating for a specific media item.
**Method:** POST
**Endpoint:** /api/media-items/{id
-35
View File
@@ -1,35 +0,0 @@
info:
name: Delete Media Item
type: http
seq: 11
http:
method: DELETE
url: "{{base_url}}/api/media-items/{{media_item_id}}"
headers:
- name: ""
value: application/json
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_delete_media_item_success(status, headers, body) {
if (status !== 204) {
throw new Error("Expected status 204, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Delete Media Item
Deletes a media item from the library.
**Method:** DELETE
**Endpoint:** /api/media-items/{id
-35
View File
@@ -1,35 +0,0 @@
info:
name: Delete Media Rating
type: http
seq: 13
http:
method: DELETE
url: "{{base_url}}/api/media-items/{{media_item_id}}/rating"
headers:
- name: ""
value: application/json
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_delete_media_rating_success(status, headers, body) {
if (status !== 204) {
throw new Error("Expected status 204, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Delete Media Rating
Deletes a user's rating for a specific media item.
**Method:** DELETE
**Endpoint:** /api/media-items/{id
-23
View File
@@ -1,23 +0,0 @@
info:
name: Download Media Item
type: http
seq: 5
http:
method: GET
url: "{{base_url}}/api/media-items/{{media_item_id}}/download"
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Download Media Item
Download a media item file (EPUB, PDF, etc.) from Bookhoard server.
**Method:** GET
**Endpoint:** /api/media-items/{bookUUID
-31
View File
@@ -1,31 +0,0 @@
info:
name: Get Audio Chapters
type: http
seq: 30
http:
method: GET
url: "{{base_url}}/api/media-items/{{media_item_id}}/chapters"
headers:
- name: ""
value: application/json
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Get Audio Chapters
The format-abstraction chapter list for audiobooks
(media_items.audio_metadata). Single-file books return `layout: ""` and
an empty `tracks` array; folder-of-tracks books return `layout:
"folder"` and zip books `layout: "zip"`, each with one `tracks` entry
per playable file (global-seconds start/end plus the per-track `url`).
**Method:** GET
**Endpoint:** /api/media-items/{id}/chapters
-31
View File
@@ -1,31 +0,0 @@
info:
name: Get Audio Track
type: http
seq: 31
http:
method: GET
url: "{{base_url}}/api/media-items/{{media_item_id}}/audio/{{track_index}}"
headers:
- name: Range
value: bytes=0-1023
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Get Audio Track
Streams one track of a multi-file audiobook (folder or zip layout).
Range requests are honored: folder tracks are served from the real
file; zip tracks are extracted in place (backward seeks re-open the
entry). Requires the item's library to be visible to the requester
(403 otherwise). Single-file books have no track manifest — 404.
**Method:** GET
**Endpoint:** /api/media-items/{id}/audio/{trackIndex}
-35
View File
@@ -1,35 +0,0 @@
info:
name: Get Media Item
type: http
seq: 8
http:
method: GET
url: "{{base_url}}/api/media-items/{{media_item_id}}"
headers:
- name: ""
value: application/json
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_get_media_item_success(status, headers, body) {
if (status !== 200) {
throw new Error("Expected status 200, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Get Media Item
Retrieves detailed information about a specific media item.
**Method:** GET
**Endpoint:** /api/media-items/{id
-35
View File
@@ -1,35 +0,0 @@
info:
name: Get Media Rating
type: http
seq: 12
http:
method: GET
url: "{{base_url}}/api/media-items/{{media_item_id}}/rating"
headers:
- name: ""
value: application/json
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_get_media_rating_success(status, headers, body) {
if (status !== 200) {
throw new Error("Expected status 200, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Get Media Rating
Retrieves a user's rating for a specific media item.
**Method:** GET
**Endpoint:** /api/media-items/{id
@@ -1,81 +0,0 @@
info:
name: List Media Items with Sorting
type: http
seq: 2
http:
method: GET
url: "{{base_url}}/api/media-items?library_id={{ebook_library_id}}&sort=title+ASC&limit=10&offset=0"
headers:
- name: ""
value: application/json
params:
- name: library_id
value: "{{ebook_library_id}}"
type: query
- name: sort
value: title+ASC
type: query
- name: limit
value: "10"
type: query
- name: offset
value: "0"
type: query
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## List Media Items with Sorting
**Method:** GET
**Endpoint:** /api/media-items
**Authentication:** Required (Bearer token)
**Query Parameters:**
- `library_id` (string, required): UUID of the library
- `sort` (string, optional): Sort field and direction
- Available options:
- `created_at ASC` - Oldest added first
- `created_at DESC` - Newest added first (default)
- `title ASC` - Title A-Z
- `title DESC` - Title Z-A
- `author ASC` - Author A-Z
- `author DESC` - Author Z-A
- `series ASC` - Series order
- `series DESC` - Series reverse order
- `date_published ASC` - Oldest published first
- `date_published DESC` - Newest published first
- `copyright_year ASC` - Oldest copyright first
- `copyright_year DESC` - Newest copyright first
- `page_count ASC` - Shortest first
- `page_count DESC` - Longest first
- `tags ASC` - Genre A-Z
- `tags DESC` - Genre Z-A
- `limit` (integer, optional): Number of items to return (default: 50, max: 1000)
- `offset` (integer, optional): Number of items to skip (default: 0)
**Response:** Object containing array of media items
**Status Codes:**
- 200: Success
- 400: Bad request (invalid parameters)
- 401: Unauthorized
- 500: Internal server error
**Examples:**
- Sort by title: `/api/media-items?library_id=xxx&sort=title+ASC`
- Sort by author descending: `/api/media-items?library_id=xxx&sort=author+DESC`
- Sort by page count: `/api/media-items?library_id=xxx&sort=page_count+ASC`
**Sorting Behavior:**
- All sorts are secondary-sorted by series_number then title for consistency
- NULL values are sorted last for ascending, first for descending
- Sorting is case-insensitive for text fields
-61
View File
@@ -1,61 +0,0 @@
info:
name: List Media Items
type: http
seq: 1
http:
method: GET
url: "{{base_url}}/api/media-items?library_id={{ebook_library_id}}&limit=20&offset=0"
headers:
- name: ""
value: application/json
params:
- name: library_id
value: "{{ebook_library_id}}"
type: query
- name: limit
value: "20"
type: query
- name: offset
value: "0"
type: query
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## List Media Items
Retrieves a paginated list of media items from a specific library.
**Method:** GET
**Endpoint:** /api/media-items
**Authentication:** Required (Bearer token)
**Query Parameters:**
- `library_id` (string, required): Library UUID to filter items
- `limit` (number, optional): Number of results per page (default: 20, max: 100)
- `offset` (number, optional): Pagination offset (default: 0)
**Response:** Array of media item objects
- `id` (string): Media item UUID
- `title` (string): Media item title
- `library_id` (string): Library UUID
- `media_type` (string): Type of media (e.g., "ebook", "audiobook")
- `file_path` (string): Path to media file
- `created_at` (string): Creation timestamp
- `updated_at` (string): Last update timestamp
**Status Codes:**
- 200: Success
- 400: Invalid query parameters
- 401: Unauthorized
- 403: Forbidden (library access denied)
- 404: Library not found
- 500: Internal server error
-35
View File
@@ -1,35 +0,0 @@
info:
name: Rescan Media Item
type: http
seq: 9
http:
method: POST
url: "{{base_url}}/api/media-items/{{media_item_id}}/rescan"
headers:
- name: ""
value: application/json
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_rescan_media_item_success(status, headers, body) {
if (status !== 200) {
throw new Error("Expected status 200, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Rescan Media Item
Re-extracts metadata and cover art for a single media item from the file on disk.
**Method:** POST
**Endpoint:** /api/media-items/{id}/rescan
-43
View File
@@ -1,43 +0,0 @@
info:
name: Update Media Item
type: http
seq: 10
http:
method: PUT
url: "{{base_url}}/api/media-items/{{media_item_id}}"
headers:
- name: ""
value: application/json
body:
type: json
data: |-
{
"title": "Updated Book Title",
"author": "Updated Author",
"description": "Updated description"
}
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_update_media_item_success(status, headers, body) {
if (status !== 200) {
throw new Error("Expected status 200, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Update Media Item
Updates an existing media item's metadata.
**Method:** PUT
**Endpoint:** /api/media-items/{id
-66
View File
@@ -1,66 +0,0 @@
info:
name: Update Media Rating
type: http
seq: 9
http:
method: PUT
url: "{{base_url}}/api/media-items/{{media_item_id}}/rating"
headers:
- name: ""
value: application/json
body:
type: json
data: |-
{
"rating": 9,
"review": "Updated review text"
}
auth: inherit
runtime:
scripts:
- type: tests
code: |-
test_update_media_rating_success(status, headers, body) {
if (status !== 200) {
throw new Error("Expected status 200, got " + status);
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
## Update Media Rating
Updates an existing rating for a media item.
**Method:** PUT
**Endpoint:** /api/media-items/:id/rating
**Authentication:** Required (Bearer token)
**Path Parameters:**
- `id` (string, required): Media item UUID
**Request Body:**
- `rating` (number, required): Rating value (1-10 integer scale; displayed as 1-5 stars with half-star precision)
- `review` (string, optional): Review text
**Response:** Updated rating object
- `id` (string): Rating ID
- `media_item_id` (string): Media item UUID
- `rating` (number): Rating value
- `review` (string): Review text
- `created_at` (string): Creation timestamp
- `updated_at` (string): Last update timestamp
**Status Codes:**
- 200: Success
- 400: Invalid request body
- 401: Unauthorized
- 404: Media item or rating not found
- 500: Internal server error
@@ -0,0 +1,31 @@
info:
name: Bulk Delete Media Items
type: http
seq: 1
http:
method: POST
url: '{{base_url}}/api/media-items/bulk-delete'
auth: inherit
body:
type: json
data: |-
{
"media_item_ids": [
"550e8400-e29b-41d4-a716-446655440001",
"660e8400-e29b-41d4-a716-446655440002",
"770e8400-e29b-41d4-a716-446655440003"
]
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Bulk Delete Media Items
`POST /api/media-items/bulk-delete` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/bulk_delete_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,43 @@
info:
name: Bulk Update Media Items
type: http
seq: 2
http:
method: POST
url: '{{base_url}}/api/media-items/bulk-update'
auth: inherit
body:
type: json
data: |-
{
"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"
}
}
]
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Bulk Update Media Items
`POST /api/media-items/bulk-update` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/bulk_update_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,35 @@
info:
name: Create Media Bookmark
type: http
seq: 3
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/bookmarks'
auth: inherit
body:
type: json
data: |-
{
"title": "Chapter 3",
"position": "kindle:pos:1:2",
"notes": "revisit this",
"cfi_position": "epubcfi(/6/4)",
"page_number": 42,
"chapter_number": 3,
"percentage": 35.5,
"chapter_reference": 3,
"origin": "android"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Create Media Bookmark
`POST /api/media-items/:id/bookmarks` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/create_media_bookmark.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+39
View File
@@ -0,0 +1,39 @@
info:
name: Create Media Item
type: http
seq: 4
http:
method: POST
url: '{{base_url}}/api/media-items'
auth: inherit
body:
type: json
data: |-
{
"library_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Example Book Title",
"author": "Jane Doe",
"isbn": "978-0-123456-78-9",
"description": "A great book about technology",
"file_path": "/library/books/example.epub",
"file_size": 1048576,
"mime_type": "application/epub+zip",
"series": "Tech Series",
"series_number": 1,
"tags": ["science-fiction", "technology", "ACME CORP."],
"publisher": "O'Reilly Media",
"contributors": ["John Smith", "ACME CORP."]
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Create Media Item
`POST /api/media-items` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/create_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Delete Media Bookmark
type: http
seq: 5
http:
method: DELETE
url: '{{base_url}}/api/media-items/{{media_item_id}}/bookmarks/{{bookmarkid}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Delete Media Bookmark
`DELETE /api/media-items/:id/bookmarks/:bookmarkId` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/delete_media_bookmark.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Delete Media Item
type: http
seq: 6
http:
method: DELETE
url: '{{base_url}}/api/media-items/{{media_item_id}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Delete Media Item
`DELETE /api/media-items/:id` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/delete_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Delete Media Review
type: http
seq: 7
http:
method: DELETE
url: '{{base_url}}/api/media-items/{{media_item_id}}/review'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Delete Media Review
`DELETE /api/media-items/:id/review` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/delete_media_review.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Deleted Annotations History
type: http
seq: 8
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/annotations/deleted'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Deleted Annotations History
`GET /api/media-items/:id/annotations/deleted` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/deleted_annotations.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Download Media Item File
type: http
seq: 9
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/download'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Download Media Item File
`GET /api/media-items/:id/download` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/download_media_item_file.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Filter Count
type: http
seq: 10
http:
method: GET
url: '{{base_url}}/api/media-items/filter-count'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Filter Count
`GET /api/media-items/filter-count` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/filter_count.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Audio Chapters
type: http
seq: 11
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/chapters'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Audio Chapters
`GET /api/media-items/:id/chapters` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_audio_chapters.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Audio Track
type: http
seq: 12
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/audio/{{track_index}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Audio Track
`GET /api/media-items/:id/audio/:trackIndex` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_audio_track.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Item Facets
type: http
seq: 13
http:
method: GET
url: '{{base_url}}/api/media-items/facets'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Item Facets
`GET /api/media-items/facets` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_facets.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Bookmarks
type: http
seq: 14
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/bookmarks'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Bookmarks
`GET /api/media-items/:id/bookmarks` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_media_bookmarks.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Highlight
type: http
seq: 15
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/highlights/{{highlight_id}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Highlight
`GET /api/media-items/:id/highlights/:highlightId` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_media_highlight.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Item
type: http
seq: 16
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Item
`GET /api/media-items/:id` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Note
type: http
seq: 17
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/notes/{{note_id}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Note
`GET /api/media-items/:id/notes/:noteId` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_media_note.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Get Media Review
type: http
seq: 18
http:
method: GET
url: '{{base_url}}/api/media-items/{{media_item_id}}/review'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Get Media Review
`GET /api/media-items/:id/review` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/get_media_review.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: List Media Items
type: http
seq: 19
http:
method: GET
url: '{{base_url}}/api/media-items'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# List Media Items
`GET /api/media-items` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/list_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,27 @@
info:
name: Merge Archived Media Item
type: http
seq: 20
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/merge'
auth: inherit
body:
type: json
data: |-
{
"target_id": "550e8400-e29b-41d4-a716-446655440000"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Merge Archived Media Item
`POST /api/media-items/:id/merge` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/merge_archived_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Purge Archived Media Items
type: http
seq: 21
http:
method: POST
url: '{{base_url}}/api/media-items/purge-archived'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Purge Archived Media Items
`POST /api/media-items/purge-archived` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/purge_archived_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Purge Deleted Annotation
type: http
seq: 22
http:
method: DELETE
url: '{{base_url}}/api/media-items/{{media_item_id}}/annotations/{{annotation_id}}'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Purge Deleted Annotation
`DELETE /api/media-items/:id/annotations/:annotationId` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/purge_deleted_annotation.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Rescan Media Item
type: http
seq: 23
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/rescan'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Rescan Media Item
`POST /api/media-items/:id/rescan` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/rescan_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Restore Deleted Annotation
type: http
seq: 24
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/annotations/{{annotation_id}}/restore'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Restore Deleted Annotation
`POST /api/media-items/:id/annotations/:annotationId/restore` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/restore_deleted_annotation.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+21
View File
@@ -0,0 +1,21 @@
info:
name: Search Media Items (Unified):<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/create_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/update_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|channel|>Edited docs/developer/api/media-items/delete_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/search_media_items.md (1 replacement)
type: http
seq: 25
http:
method: GET
url: '{{base_url}}/api/media-items/search'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Search Media Items (Unified):<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/create_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/update_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|channel|>Edited docs/developer/api/media-items/delete_media_item.md (1 replacement)<|end|><|start|>edit to=assistant<|channel|>analysis<|message|>Edited docs/developer/api/media-items/search_media_items.md (1 replacement)
`GET /api/media-items/search` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/search_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+27
View File
@@ -0,0 +1,27 @@
info:
name: Set Audio Speed
type: http
seq: 26
http:
method: PUT
url: '{{base_url}}/api/media-items/{{media_item_id}}/audio-speed'
auth: inherit
body:
type: json
data: |-
{
"speed": 1.5
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Set Audio Speed
`PUT /api/media-items/:id/audio-speed` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/set_audio_speed.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,21 @@
info:
name: Unarchive Media Item
type: http
seq: 27
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/unarchive'
auth: inherit
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Unarchive Media Item
`POST /api/media-items/:id/unarchive` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/unarchive_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
@@ -0,0 +1,29 @@
info:
name: Update Media Bookmark
type: http
seq: 28
http:
method: PUT
url: '{{base_url}}/api/media-items/{{media_item_id}}/bookmarks/{{bookmarkid}}'
auth: inherit
body:
type: json
data: |-
{
"title": "Chapter 3 (renamed)",
"notes": "updated note",
"position": "kindle:pos:1:2"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Update Media Bookmark
`PUT /api/media-items/:id/bookmarks/:bookmarkId` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/update_media_bookmark.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+31
View File
@@ -0,0 +1,31 @@
info:
name: Update Media Item
type: http
seq: 29
http:
method: PUT
url: '{{base_url}}/api/media-items/{{media_item_id}}'
auth: inherit
body:
type: json
data: |-
{
"title": "Updated Title",
"author": "Updated Author",
"description": "Updated description",
"series": "Series",
"series_number": 2
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Update Media Item
`PUT /api/media-items/:id` — auth: jwt+admin.
Canonical reference: `docs/developer/api/media-items/update_media_item.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
+27
View File
@@ -0,0 +1,27 @@
info:
name: Upsert Media Review
type: http
seq: 30
http:
method: POST
url: '{{base_url}}/api/media-items/{{media_item_id}}/review'
auth: inherit
body:
type: json
data: |-
{
"review": "A slow start, but the second act earns it."
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
docs: |-
# Upsert Media Review
`POST /api/media-items/:id/review` — auth: jwt.
Canonical reference: `docs/developer/api/media-items/upsert_media_review.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.