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
-71
View File
@@ -1,71 +0,0 @@
meta {
name: Get Scan Status
type: http
seq: 4
}
get {
url: {{base_url}}/api/scanner/status/{{job_id}}
auth: inherit
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Get Scan Status
Retrieves the status and progress of an asynchronous scan job.
**Method:** GET
**Endpoint:** /api/scanner/status/:jobId
**Authentication:** Required (Bearer token, Admin only)
**URL Parameters:**
- `jobId` (string, required): The job ID returned from the scan endpoint
- Example: `550e8400-e29b-41d4-a716-446655440000`
**Response:**
```json
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"error": "",
"result": {
"message": "scan completed",
"library_id": "550e8400-e29b-41d4-a716-446655440000"
},
"progress": 1.0
}
```
**Properties:**
- `job_id` (string): Job identifier
- `status` (string): Current status
- `pending`: Job is queued
- `running`: Job is currently processing
- `completed`: Job finished successfully
- `failed`: Job failed with error
- `cancelled`: Job was cancelled
- `error` (string): Error message if status is "failed"
- `result` (object): Scan results when completed
- `message` (string): Completion message
- `library_id` (string): Library that was scanned
- `progress` (number): Progress indicator (0.0 to 1.0)
**Status Codes:**
- 200: Job status retrieved successfully
- 401: Unauthorized
- 403: Forbidden (admin access required)
- 404: Job not found
**Example Workflow:**
1. POST /api/scanner/scan with folder_paths
2. Receive job_id in response
3. Poll GET /api/scanner/status/{job_id} every few seconds
4. When status is "completed" or "failed", stop polling
}
-47
View File
@@ -1,47 +0,0 @@
meta {
name: Get Watch Mode Status
type: http
seq: 7
}
get {
url: {{base_url}}/api/scanner/watch/status
auth: inherit
}
docs {
## Get Watch Mode Status
Retrieves the current status of watch mode for all libraries.
**Method:** GET
**Endpoint:** /api/scanner/watch/status
**Authentication:** Required (Bearer token, Admin only)
**Response:** HTTP 200 (OK)
```json
{
"watching_libraries": [
"550e8400-e29b-41d4-a716-446655440000",
"660e8400-e29b-41d4-a716-446655440001"
],
"total_watching": 2
}
```
**Properties:**
- `watching_libraries` (array of strings): List of library IDs currently being watched
- `total_watching` (number): Total number of libraries being watched
**Status Codes:**
- 200: Status retrieved successfully
- 401: Unauthorized
- 403: Forbidden (admin access required)
**Use cases:**
- Check which libraries are currently being monitored
- Verify that watch mode started successfully after server boot
- Debug file system monitoring issues
}
-62
View File
@@ -1,62 +0,0 @@
meta {
name: Scan Media Items (Background)
type: http
seq: 1
}
post {
url: {{base_url}}/api/scanner/scan
body: json
auth: inherit
}
settings {
encodeUrl: true
timeout: 0
}
body:json {
{
"folder_paths": ["/path/to/media"]
}
}
docs {
## Scan Media Items (Background)
Triggers an asynchronous media items scanning operation. The scan runs in the background and can be monitored using the job ID.
**Method:** POST
**Endpoint:** /api/scanner/scan
**Authentication:** Required (Bearer token, Admin only)
**Request Body:**
- `folder_paths` (array of strings, required): List of folder paths to scan
- Example: `["/path/to/media", "/another/path"]`
**Response:** HTTP 202 (Accepted)
```json
{
"message": "scan job enqueued",
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending"
}
```
**Properties:**
- `message` (string): Confirmation message
- `job_id` (string): Unique job identifier for tracking progress
- `status` (string): Initial job status ("pending")
**Status Codes:**
- 202: Scan job successfully enqueued
- 400: Invalid request (missing folder_paths)
- 401: Unauthorized
- 403: Forbidden (admin access required)
- 500: Failed to enqueue scan job
**Next Steps:**
Use the returned `job_id` with `GET /api/scanner/status/:jobId` to check scan progress.
}
-40
View File
@@ -1,40 +0,0 @@
meta {
name: Start Scanner
type: http
seq: 2
}
post {
url: {{base_url}}/api/scanner/start
auth: inherit
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Start Scanner
Starts the media scanner service for indexing library content.
**Method:** POST
**Endpoint:** /api/scanner/start
**Authentication:** Required (Bearer token)
**Response:**
- JSON object containing scanner status
- `status` (string): Scanner state ("started", "running")
- `message` (string): Status message
- `started_at` (string): Timestamp when scanner started
**Status Codes:**
- 200: Scanner started successfully
- 401: Unauthorized
- 403: Forbidden (insufficient permissions)
- 409: Scanner already running
- 500: Internal server error
}
-61
View File
@@ -1,61 +0,0 @@
meta {
name: Start Watch Mode
type: http
seq: 5
}
post {
url: {{base_url}}/api/scanner/watch/start
body: json
auth: inherit
}
body:json {
{
"library_id": "{{library_id}}"
}
}
docs {
## Start Watch Mode
Starts real-time file system monitoring for a specific library. New media items will be detected and processed almost instantly.
**Method:** POST
**Endpoint:** /api/scanner/watch/start
**Authentication:** Required (Bearer token, Admin only)
**Request Body:**
- `library_id` (string, required): UUID of the library to watch
- Example: `"550e8400-e29b-41d4-a716-446655440000"`
**Response:** HTTP 200 (OK)
```json
{
"message": "watch mode started for library",
"library_id": "550e8400-e29b-41d4-a716-446655440000"
}
```
**How it works:**
- Monitors all folders configured for the library
- Automatically detects new media files (CREATE events)
- Detects modifications to existing files (WRITE events)
- Processes new files within milliseconds of detection
- Automatically watches new subdirectories as they're created
**Supported file types:**
- `.epub`, `.pdf`, `.mobi`, `.azw3`, `.fb2`, `.txt`
**Status Codes:**
- 200: Watch mode started successfully
- 400: Invalid request (missing library_id)
- 401: Unauthorized
- 403: Forbidden (admin access required)
- 409: Already watching this library
- 500: Failed to start watch mode (no folders configured, etc.)
**Note:** Watch mode is automatically started for all libraries when the server starts.
}
-40
View File
@@ -1,40 +0,0 @@
meta {
name: Stop Scanner
type: http
seq: 3
}
post {
url: {{base_url}}/api/scanner/stop
auth: inherit
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Stop Scanner
Stops the currently running media scanner service.
**Method:** POST
**Endpoint:** /api/scanner/stop
**Authentication:** Required (Bearer token)
**Response:**
- JSON object containing scanner status
- `status` (string): Scanner state ("stopped", "idle")
- `message` (string): Status message
- `stopped_at` (string): Timestamp when scanner stopped
**Status Codes:**
- 200: Scanner stopped successfully
- 401: Unauthorized
- 403: Forbidden (insufficient permissions)
- 409: Scanner not running
- 500: Internal server error
}
-51
View File
@@ -1,51 +0,0 @@
meta {
name: Stop Watch Mode
type: http
seq: 6
}
post {
url: {{base_url}}/api/scanner/watch/stop
body: json
auth: inherit
}
body:json {
{
"library_id": "{{library_id}}"
}
}
docs {
## Stop Watch Mode
Stops real-time file system monitoring for a specific library.
**Method:** POST
**Endpoint:** /api/scanner/watch/stop
**Authentication:** Required (Bearer token, Admin only)
**Request Body:**
- `library_id` (string, required): UUID of the library to stop watching
- Example: `"550e8400-e29b-41d4-a716-446655440000"`
**Response:** HTTP 200 (OK)
```json
{
"message": "watch mode stopped for library",
"library_id": "550e8400-e29b-41d4-a716-446655440000"
}
```
**Status Codes:**
- 200: Watch mode stopped successfully
- 400: Invalid request (missing library_id)
- 401: Unauthorized
- 403: Forbidden (admin access required)
- 404: Not watching this library
- 500: Internal server error
**Note:** If no libraries are being watched, the watch mode context is cleaned up automatically.
}