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,68 +0,0 @@
meta {
name: Get Progress History
type: http
seq: 3
}
get {
url: {{base_url}}/api/progress/{{mediaItemId}}/history
body: none
auth: inherit
}
headers {
Authorization: Bearer {{jwt}}
Content-Type: application/json
}
script:post-response {
function onResponse(res) {
if (res.getStatus() === 200) {
const body = res.getBody();
tests['Has sessions key'] = body.sessions !== undefined;
}
}
onResponse(res);
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Get Progress History
Retrieves historical reading progress sessions for a specific media item.
**Method:** GET
**Endpoint:** /api/progress/{mediaItemId}/history
**Authentication:** Bearer token
**Path Parameters:**
- `mediaItemId` (string): Media item UUID
**Query Parameters:**
- `limit` (number, optional): Maximum number of sessions to return
- `offset` (number, optional): Offset for pagination
**Response:**
- `sessions` (array): Array of reading sessions
- `session_id` (string): Session UUID
- `start_time` (string): Session start timestamp
- `end_time` (string): Session end timestamp
- `start_percentage` (number): Progress at start
- `end_percentage` (number): Progress at end
- `device_id` (string): Device used
- `duration_seconds` (number): Session duration
- `total_sessions` (number): Total number of sessions
- `total_reading_time` (number): Total reading time in seconds
**Status Codes:**
- 200: Success
- 401: Unauthorized
- 404: Media item not found
- 500: Internal server error
}
@@ -1,55 +0,0 @@
meta {
name: Get Universal Progress
type: http
seq: 1
}
get {
url: {{base_url}}/api/progress/{{mediaItemId}}
body: none
auth: inherit
}
headers {
Authorization: Bearer {{jwt}}
Content-Type: application/json
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Get Universal Progress
Retrieves universal reading progress for a specific media item across all devices.
**Method:** GET
**Endpoint:** /api/progress/{mediaItemId}
**Authentication:** Bearer token
**Path Parameters:**
- `mediaItemId` (string): Media item UUID
**Response:**
- `media_item_id` (string): Media item UUID
- `progress` (object): Universal progress data
- `percentage` (number): Overall progress percentage
- `epubcfi` (string): EPUB location
- `page` (number): Current page
- `chapter` (number): Current chapter
- `devices` (array): Per-device progress data
- `device_id` (string): Device UUID
- `device_name` (string): Device name
- `progress` (object): Device-specific progress
- `last_updated` (string): Last update timestamp
**Status Codes:**
- 200: Success
- 401: Unauthorized
- 404: Media item not found
- 500: Internal server error
}
@@ -1,86 +0,0 @@
meta {
name: Update Universal Progress
type: http
seq: 2
}
post {
url: {{base_url}}/api/progress/{{mediaItemId}}
body: json
auth: inherit
}
headers {
Authorization: Bearer {{jwt}}
Content-Type: application/json
}
body:json {
{
"source": "web",
"location": {
"percentage": 0.45,
"page": 90,
"total_pages": 200
},
"device_metadata": {
"device_type": "web",
"user_agent": "integration-test"
}
}
}
script:post-response {
function onResponse(res) {
if (res.getStatus() === 200) {
const body = res.getBody();
tests['Sync status success'] = body.sync_status === "success";
tests['Progress updated'] = body.progress_updated === true;
}
}
onResponse(res);
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Update Universal Progress
Updates universal reading progress for a media item from a specific device or source.
**Method:** POST
**Endpoint:** /api/progress/{mediaItemId}
**Authentication:** Bearer token
**Path Parameters:**
- `mediaItemId` (string): Media item UUID
**Request Body:**
- `source` (string): Source identifier (web, kobo, koreader, device_id)
- `location` (object): Progress location data
- `percentage` (number): Progress percentage (0-1)
- `page` (number, optional): Current page
- `total_pages` (number, optional): Total pages
- `epubcfi` (string, optional): EPUB location
- `chapter` (number, optional): Current chapter
- `device_metadata` (object): Device metadata
- `device_type` (string): Device type
- `user_agent` (string, optional): User agent string
**Response:**
- `sync_status` (string): Sync status (success, partial)
- `progress_updated` (boolean): Whether progress was updated
- `conflicts_detected` (array, optional): Any conflicts detected
**Status Codes:**
- 200: Success
- 400: Invalid request data
- 401: Unauthorized
- 404: Media item not found
- 500: Internal server error
}