bruno+docs: status asserts on generated mirrors, OpenAPI spec, safe negative scenarios

Three follow-ups from the smoke run, all additive:

1. Status asserts: bruno_gen.go parses each doc's documented success
   status (## Response (2NN), 'Success is **201**', '**204 No Content**')
   and emits a runtime tests script (expect(res.status).to.eql(N)) on
   148 of 191 mirrors. GETs default to 200 (uniform across this API);
   mutating verbs stay assert-less unless documented — no guessed
   asserts. Verified live: asserts execute and fail loudly (deliberate
   999 probe), pass on real responses.

2. OpenAPI: the same -update run now also writes
   docs/developer/openapi.yaml (141 paths, tags from docs areas,
   security schemes per auth label, request examples literal, no
   invented schemas — the docs site remains the shape reference).
   Verify mode fails when the file is missing.

3. Scenarios: 7 safe negative scenarios rebuilt (auth registration
   matrix 409/403/400, invalid-uuid 400, unknown 404 x2, invalid range
   400) — all no-mutation, repeatable, run via bru: 7/7 tests pass.
   These replace a fraction of the deleted broken suite; mutations-
   heavy scenarios stay out until a design for setup chains exists.

created_at RFC3339 deliberately NOT done — it is the one item that
would break things (Android parses current formats; plan reserves it
as a compat decision).bru run of mutating mirrors also proven to touch
live data (a 'To Read' collection was created and deleted in testing);
only id-less GET mirrors and negative scenarios are safe for blanket
runs.

make test green; generation idempotent (byte-identical re-runs);
no stray smoke rows in users.
This commit is contained in:
John O'Keefe committed 2026-10-24 19:20:13 -04:00
1 parent 0c45137f5b
commit 983980d07a
166 files changed
+4040 -8

No files matched your search

+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Hash Conflicts (API) # Hash Conflicts (API)
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Users # List Users
+8
View File
@@ -19,6 +19,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Update User Max Devices # Update User Max Devices
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Reading Statistics # Get Reading Statistics
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device Usage # Get Device Usage
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Popular Books # Get Popular Books
+6
View File
@@ -43,6 +43,12 @@ runtime:
} }
onResponse(); onResponse();
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Login User # Login User
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Logout User # Logout User
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Password Rules # Password Rules
+6
View File
@@ -42,6 +42,12 @@ runtime:
} }
onResponse(); onResponse();
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Refresh Token # Refresh Token
+6
View File
@@ -46,6 +46,12 @@ runtime:
} }
onResponse(); onResponse();
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Register User # Register User
@@ -0,0 +1,40 @@
info:
name: Register - Admin Role Unauthenticated (403)
type: http
seq: 2
http:
method: POST
url: '{{base_url}}/api/auth/register'
auth: inherit
body:
type: json
data: |-
{
"email": "smoke-admin-attempts@tests.bookhoard.internal",
"username": "smokeadminattempts",
"password": "Sm0ke@Pass123!",
"role": "admin"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 403", function() {
expect(res.status).to.eql(403);
});
docs:
content: |-
# Register - Admin Role Unauthenticated (403)
With admins already present, an unauthenticated register attempt
carrying role=admin must be rejected with 403 and create nothing.
Repeats safely.
type: text/markdown
@@ -0,0 +1,39 @@
info:
name: Register - Duplicate Email (409)
type: http
seq: 1
http:
method: POST
url: '{{base_url}}/api/auth/register'
auth: inherit
body:
type: json
data: |-
{
"email": "testuser@tests.bookhoard.internal",
"username": "testuser",
"password": "Wh4t3v3r@Pass!"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 409", function() {
expect(res.status).to.eql(409);
});
docs:
content: |-
# Register - Duplicate Email (409)
Registering with an email that already exists must fail with 409 and
create nothing. Negative scenario — hand-authored (the generated set
covers only happy paths). Repeats safely.
type: text/markdown
@@ -0,0 +1,38 @@
info:
name: Register - Weak Password (400)
type: http
seq: 3
http:
method: POST
url: '{{base_url}}/api/auth/register'
auth: inherit
body:
type: json
data: |-
{
"email": "smoke-weak-attempts@tests.bookhoard.internal",
"username": "smokeweakattempts",
"password": "weak"
}
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 400", function() {
expect(res.status).to.eql(400);
});
docs:
content: |-
# Register - Weak Password (400)
Passwords below the configured complexity rules (see
GET /api/auth/password-rules) must be rejected with 400. Repeats safely.
type: text/markdown
+8
View File
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Auto Link Books # Auto Link Books
+8
View File
@@ -30,6 +30,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bulk Link Books # Bulk Link Books
@@ -21,6 +21,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Create Device File Alias # Create Device File Alias
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Device File Alias # Delete Device File Alias
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Book Matches # Get Book Matches
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device File Aliases # Get Device File Aliases
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Unlinked Book Suggestions # Get Unlinked Book Suggestions
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Unlinked Books # Get Unlinked Books
+8
View File
@@ -25,6 +25,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Link Book # Link Book
+8
View File
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Search Books for Matching # Search Books for Matching
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Update Device File Alias # Update Device File Alias
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Add Auto-Assign Rule # Add Auto-Assign Rule
+8
View File
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Bulk Assign Books # Bulk Assign Books
@@ -21,6 +21,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Create Shelf Mapping # Create Shelf Mapping
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Collection # Delete Collection
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Shelf Mapping # Delete Shelf Mapping
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Collection # Get Collection
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Book Collections # Get Book Collections
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Collections # List Collections
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Remove Auto-Assign Rule # Remove Auto-Assign Rule
+8
View File
@@ -30,6 +30,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Test Rule # Test Rule
@@ -22,6 +22,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bulk Dismiss Conflicts # Bulk Dismiss Conflicts
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bulk Resolve Conflicts # Bulk Resolve Conflicts
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Conflict # Delete Conflict
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Dismiss All Resolved # Dismiss All Resolved
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Conflict Details # Get Conflict Details
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Conflicts # List Conflicts
+8
View File
@@ -19,6 +19,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Resolve Conflict # Resolve Conflict
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Dashboard Preferences # Get Dashboard Preferences
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Dashboard Sections # Get Dashboard Sections
+8
View File
@@ -21,6 +21,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Add to Shelf # Add to Shelf
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Approve Device Registration # Approve Device Registration
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Clear Shelf # Clear Shelf
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Device # Delete Device
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Download Sidecar Config # Download Sidecar Config
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device # Get Device
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device Collection Mappings # Get Device Collection Mappings
+8
View File
@@ -19,6 +19,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device / Check Registration Status # Get Device / Check Registration Status
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Shelf # Get Shelf
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Device Sidecar Config # Get Device Sidecar Config
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List User Devices # List User Devices
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Pending Device Registrations:<|end|><|start|><|start|>assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path"> # List Pending Device Registrations:<|end|><|start|><|start|>assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path">
+8
View File
@@ -21,6 +21,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Register Device # Register Device
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Reject Device Registration # Reject Device Registration
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Remove from Shelf # Remove from Shelf
+8
View File
@@ -22,6 +22,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Update Device # Update Device
+8
View File
@@ -24,6 +24,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Create Highlight # Create Highlight
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Highlight # Delete Highlight
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Highlights # Get Highlights
+8
View File
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Update Highlight # Update Highlight
+8
View File
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 202", function() {
expect(res.status).to.eql(202);
});
docs: docs:
content: |- content: |-
# Create Job # Create Job
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Job Status # Get Job Status
+8
View File
@@ -22,6 +22,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Analytics GetTests # Analytics GetTests
+8
View File
@@ -30,6 +30,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bookmark Sync # Bookmark Sync
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Kobo Initialization # Kobo Initialization
+8
View File
@@ -34,6 +34,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Markup Sync # Markup Sync
+8
View File
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Sync From Server # Sync From Server
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library # Get Library
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Metadata # Get Metadata
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get KOReader Rating # Get KOReader Rating
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get KOReader Review # Get KOReader Review
+8
View File
@@ -16,6 +16,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Resolve Book:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path"> # Resolve Book:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path">
+8
View File
@@ -45,6 +45,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Sync Bookmarks # Sync Bookmarks
+8
View File
@@ -39,6 +39,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 202", function() {
expect(res.status).to.eql(202);
});
docs: docs:
content: |- content: |-
# Sync Progress # Sync Progress
+8
View File
@@ -19,6 +19,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Add Library Folder # Add Library Folder
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Browse Library Folders # Browse Library Folders
+8
View File
@@ -21,6 +21,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Create Library # Create Library
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Library # Delete Library
@@ -19,6 +19,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Library Folder # Delete Library Folder
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library Details:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path"> # Get Library Details:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path">
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library Folders # Get Library Folders
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library Media Items # Get Library Media Items
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library Statistics # Get Library Statistics
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Library Types # Get Library Types
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Processing Issue Stats # Get Processing Issue Stats
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Scan Settings # Get Scan Settings
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Get Visible Libraries # Get Visible Libraries
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Libraries (Admin) # List Libraries (Admin)
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# List Processing Issues # List Processing Issues
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Set Library Visibility # Set Library Visibility
+8
View File
@@ -20,6 +20,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Update Library # Update Library
@@ -23,6 +23,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bulk Delete Media Items # Bulk Delete Media Items
@@ -35,6 +35,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 200", function() {
expect(res.status).to.eql(200);
});
docs: docs:
content: |- content: |-
# Bulk Update Media Items # Bulk Update Media Items
+8
View File
@@ -31,6 +31,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 201", function() {
expect(res.status).to.eql(201);
});
docs: docs:
content: |- content: |-
# Create Media Item # Create Media Item
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Media Bookmark # Delete Media Bookmark
+8
View File
@@ -13,6 +13,14 @@ settings:
followRedirects: true followRedirects: true
maxRedirects: 5 maxRedirects: 5
runtime:
scripts:
- type: tests
code: |-
test("status is 204", function() {
expect(res.status).to.eql(204);
});
docs: docs:
content: |- content: |-
# Delete Media Item # Delete Media Item
Loaded 100 of 166 files, more files were not shown because too many files have changed in this diff. Show more