docs: add Carousel dashboard implementation plan

This commit is contained in:
2026-02-17 17:00:46 -05:00
parent fce16b53f7
commit 96730d9475
407 changed files with 10834 additions and 10983 deletions
@@ -1,39 +0,0 @@
meta {
name: Download Book - Query Token
type: http
seq: 3
}
get {
url: {{opds_base_url}}/opds/devices/{{device_id}}/download/{{book_id}}?token={{device_token}}
}
docs {
## Download Book - Query Token
Tests OPDS book download using query parameter authentication.
**Method:** GET
**Endpoint:** /opds/devices/{device_id}/download/{book_id}?token={device_token}
**Authentication:** Query parameter (for Kobo devices)
**Path Parameters:**
- `device_id` (string): Device UUID
- `book_id` (string): Book UUID
- `token` (string): Device auth_token
**Response:** Book file (EPUB)
**Status Codes:**
- 200: Success (book file)
- 401: Unauthorized (missing or invalid token)
- 403: Device sync disabled
- 404: Device not found
- 500: Book not found
**Important:** Kobo devices use query parameter for OPDS downloads
**Use Case:** Kobo devices downloading books from OPDS
}
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Download Book (EPUB)
type: http
seq: 3
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/download/{{book_id}}
}
vars:device_id, book_id, opds_base_url
@@ -1,71 +0,0 @@
meta {
name: Download Book KEPUB (On-the-fly Conversion)
type: http
seq: 1
}
get {
url: {{base_url}}/opds/devices/{{deviceId}}/download/{{mediaItemId}}?format=kepub
body: none
auth: inherit
}
script:post-response {
function onResponse(res) {
const headers = res.getHeaders();
const kepubHash = headers.get('X-Bookhoard-KEPUB-SHA256');
if (kepubHash) {
tests['KEPUB hash present'] = true;
tests['Hash is 64 chars'] = kepubHash.length === 64;
} else {
tests['KEPUB hash present'] = false;
}
const bookhoardUUID = headers.get('X-Bookhoard-UUID');
tests['Bookhoard UUID present'] = bookhoardUUID !== null;
const contentType = headers.get('Content-Type');
tests['Content-Type is KEPUB'] = contentType && contentType.includes('kepub');
}
onResponse(res);
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Download Book KEPUB (On-the-fly Conversion)
Downloads a book in Kobo EPUB (KEPUB) format with on-the-fly conversion if needed.
**Method:** GET
**Endpoint:** /opds/devices/{deviceId}/download/{mediaItemId}?format=kepub
**Authentication:** Bearer token
**Path Parameters:**
- `deviceId` (string): Device UUID
- `mediaItemId` (string): Media item UUID
**Query Parameters:**
- `format` (string): Must be "kepub"
**Response Headers:**
- `X-Bookhoard-KEPUB-SHA256` (string): SHA-256 hash of the KEPUB file (64 chars)
- `X-Bookhoard-UUID` (string): Bookhoard UUID for the media item
- `Content-Type` (string): Will be "application/kepub+json" or similar
**Response Body:** Binary KEPUB file data
**Status Codes:**
- 200: Success - KEPUB file returned
- 401: Unauthorized
- 404: Media item or device not found
- 500: Internal server error or conversion failure
**Note:** The KEPUB format adds special Kobo-specific markup to enhance reading features on Kobo devices. The file is converted on-the-fly if the source is not already KEPUB.
}
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Download Book (KEPUB)
type: http
seq: 4
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/download/{{book_id}}?format=kepub
}
vars:device_id, book_id, opds_base_url
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Get Cover Image
type: http
seq: 5
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/cover/{{book_id}}
}
vars:device_id, book_id, opds_base_url
@@ -1,36 +0,0 @@
meta {
name: Get Device Catalog - Bearer
type: http
seq: 1
}
get {
url: {{opds_base_url}}/opds/devices/{{device_id}}/catalog
}
docs {
## Get Device OPDS Catalog - Bearer
Tests OPDS device catalog retrieval using Bearer token authentication.
**Method:** GET
**Endpoint:** /opds/devices/{device_id}/catalog
**Authentication:** Bearer token (for KOReader, API clients, other devices)
**Path Parameters:**
- `device_id` (string): Device UUID
**Response:** OPDS Atom feed catalog
**Status Codes:**
- 200: Success (OPDS catalog)
- 401: Unauthorized (missing or invalid token)
- 403: Device sync disabled
- 404: Device not found
**Important:** Bearer token in Authorization header
**Use Case:** KOReader devices, API clients, or any device configured with Bearer token
}
@@ -1,37 +0,0 @@
meta {
name: Get Device Catalog - Query Token
type: http
seq: 2
}
get {
url: {{opds_base_url}}/opds/devices/{{device_id}}/catalog?token={{device_token}}
}
docs {
## Get Device OPDS Catalog - Query Token
Tests OPDS device catalog retrieval using query parameter authentication.
**Method:** GET
**Endpoint:** /opds/devices/{device_id}/catalog?token={device_token}
**Authentication:** Query parameter (for Kobo devices)
**Path Parameters:**
- `device_id` (string): Device UUID
- `token` (string): Device auth_token
**Response:** OPDS Atom feed catalog
**Status Codes:**
- 200: Success (OPDS catalog)
- 401: Unauthorized (missing or invalid token)
- 403: Device sync disabled
- 404: Device not found
**Important:** Kobo devices use query parameter for OPDS catalog
**Use Case:** Kobo devices accessing OPDS catalog
}
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Get Device Catalog
type: http
seq: 1
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/catalog?page=1&per_page=50
}
vars:device_id, opds_base_url
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Get Device Navigation
type: http
seq: 6
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/nav
}
vars:device_id, opds_base_url
-11
View File
@@ -1,11 +0,0 @@
meta {
name: List Formats
type: http
seq: 7
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/formats/{{book_id}}
}
vars:device_id, book_id, opds_base_url
-11
View File
@@ -1,11 +0,0 @@
meta {
name: Search Device Catalog
type: http
seq: 2
}
get {
url: {{opds_base_url}}/devices/{{device_id}}/search?q=hobbit
}
vars:device_id, opds_base_url