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:
1 parent
6fc501b35a
commit
acd82fff0a
353 files changed
+5165
-5293
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in new issue
Block a user