docs: add Carousel dashboard implementation plan
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user