bruno: regenerate collection from canonical docs + permanent docs↔Bruno parity gate
WO4. The old collection was the drifted artifact AGENTS.md warned about:
bodies pre-truncated at their first {{var}}, routes renamed server-side
but not here (/api/notes/:media_id, /api/book-matching/search,
/api/collections/:id/rules/test), an orphan universal-progress suite for
routes that no longer exist.
scripts/gen_bruno_from_docs.py emits one OpenCollection request per
frontmatter'd endpoint doc (191 requests): gate-verified example-request
JSON as body, {{env}} params per the environment file, device-token
routes get an explicit Bearer {{device_token}} header, login/register/
refresh keep the token-capture after-response scripts that chain the
collection. Old 1:1 mirrors deleted (128); hand-authored NewDevDBSetup,
environments, and edge-case suites kept. 30 scenario files with
truncated bodies (the documented corruption) deleted — they could not
run.
internal/docs/drift_test.go gains TestBrunoMirrorsDocs: every
frontmatter'd doc must have a Bruno request with matching method+URL
shape — the collection can never silently drift from the docs again.
opencollection.yml README block replaced with the real run instructions.
make test green (9 pkgs, parity test included in internal/docs).
This commit is contained in:
1 parent
6fc501b35a
commit
acd82fff0a
353 files changed
+5165
-5293
No files matched your search
@@ -0,0 +1,27 @@
|
||||
info:
|
||||
name: Add Library Folder
|
||||
type: http
|
||||
seq: 1
|
||||
|
||||
http:
|
||||
method: POST
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/folders'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"folder_path": "/path/to/comics"
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Add Library Folder
|
||||
|
||||
`POST /api/libraries/:id/folders` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/add_library_folder.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Browse Library Folders
|
||||
type: http
|
||||
seq: 2
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/browse'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Browse Library Folders
|
||||
|
||||
`GET /api/libraries/browse` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/browse-folders.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,29 @@
|
||||
info:
|
||||
name: Create Library
|
||||
type: http
|
||||
seq: 3
|
||||
|
||||
http:
|
||||
method: POST
|
||||
url: '{{base_url}}/api/libraries'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"name": "Comics Collection",
|
||||
"description": "Digital comics",
|
||||
"type": "comics"
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Create Library
|
||||
|
||||
`POST /api/libraries` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/create_library.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Delete Library
|
||||
type: http
|
||||
seq: 4
|
||||
|
||||
http:
|
||||
method: DELETE
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Delete Library
|
||||
|
||||
`DELETE /api/libraries/:id` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/delete_library.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,27 @@
|
||||
info:
|
||||
name: Delete Library Folder
|
||||
type: http
|
||||
seq: 5
|
||||
|
||||
http:
|
||||
method: DELETE
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/folders'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"folder_path": "/path/to/library/folder"
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Delete Library Folder
|
||||
|
||||
`DELETE /api/libraries/:id/folders` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/delete_library_folder.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Delete Processing Issue
|
||||
type: http
|
||||
seq: 6
|
||||
|
||||
http:
|
||||
method: DELETE
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/issues/{{issueid}}'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Delete Processing Issue
|
||||
|
||||
`DELETE /api/libraries/:id/issues/:issueId` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/delete_processing_issue.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Library Details:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path">
|
||||
type: http
|
||||
seq: 7
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Library Details:<|end|><|start|> assistant to=edit<|channel|>analysis <|constrain|>xml<|message|><rfl:parameter name="path">
|
||||
|
||||
`GET /api/libraries/:id` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_library.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Library Folders
|
||||
type: http
|
||||
seq: 8
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/folders'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Library Folders
|
||||
|
||||
`GET /api/libraries/:id/folders` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_library_folders.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Library Media Items
|
||||
type: http
|
||||
seq: 9
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/media-items'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Library Media Items
|
||||
|
||||
`GET /api/libraries/:id/media-items` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_library_media_items.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Library Statistics
|
||||
type: http
|
||||
seq: 10
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/stats'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Library Statistics
|
||||
|
||||
`GET /api/libraries/:id/stats` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_library_stats.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Library Types
|
||||
type: http
|
||||
seq: 11
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/types'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Library Types
|
||||
|
||||
`GET /api/libraries/types` — auth: none.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_library_types.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Processing Issue Stats
|
||||
type: http
|
||||
seq: 12
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/issues/stats'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Processing Issue Stats
|
||||
|
||||
`GET /api/libraries/:id/issues/stats` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_processing_issue_stats.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Scan Settings
|
||||
type: http
|
||||
seq: 13
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/scan-settings'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Scan Settings
|
||||
|
||||
`GET /api/libraries/scan-settings` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_scan_settings.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Get Visible Libraries
|
||||
type: http
|
||||
seq: 14
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/visibility'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Get Visible Libraries
|
||||
|
||||
`GET /api/libraries/visibility` — auth: jwt.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/get_visible_libraries.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: List Libraries (Admin)
|
||||
type: http
|
||||
seq: 15
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# List Libraries (Admin)
|
||||
|
||||
`GET /api/libraries` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/list_libraries.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: List Processing Issues
|
||||
type: http
|
||||
seq: 16
|
||||
|
||||
http:
|
||||
method: GET
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/issues/list'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# List Processing Issues
|
||||
|
||||
`GET /api/libraries/:id/issues/list` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/list_processing_issues.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Resolve Processing Issue
|
||||
type: http
|
||||
seq: 17
|
||||
|
||||
http:
|
||||
method: POST
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/issues/{{issueid}}/{{mediaitemid}}/resolve'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Resolve Processing Issue
|
||||
|
||||
`POST /api/libraries/:id/issues/:issueId/:mediaItemId/resolve` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/resolve_processing_issue.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,21 @@
|
||||
info:
|
||||
name: Scan Library
|
||||
type: http
|
||||
seq: 18
|
||||
|
||||
http:
|
||||
method: POST
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}/scan'
|
||||
auth: inherit
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Scan Library
|
||||
|
||||
`POST /api/libraries/:id/scan` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/scan_library.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,28 @@
|
||||
info:
|
||||
name: Set Library Visibility
|
||||
type: http
|
||||
seq: 19
|
||||
|
||||
http:
|
||||
method: POST
|
||||
url: '{{base_url}}/api/libraries/visibility'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"library_id": "library-uuid",
|
||||
"is_visible": true
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Set Library Visibility
|
||||
|
||||
`POST /api/libraries/visibility` — auth: jwt.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/set_library_visibility.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,28 @@
|
||||
info:
|
||||
name: Update Library
|
||||
type: http
|
||||
seq: 20
|
||||
|
||||
http:
|
||||
method: PUT
|
||||
url: '{{base_url}}/api/libraries/{{ebook_library_id}}'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"name": "My Updated Library",
|
||||
"description": "Updated description"
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Update Library
|
||||
|
||||
`PUT /api/libraries/:id` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/update_library.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
@@ -0,0 +1,28 @@
|
||||
info:
|
||||
name: Update Scan Settings
|
||||
type: http
|
||||
seq: 21
|
||||
|
||||
http:
|
||||
method: PUT
|
||||
url: '{{base_url}}/api/libraries/scan-settings'
|
||||
auth: inherit
|
||||
body:
|
||||
type: json
|
||||
data: |-
|
||||
{
|
||||
"scan_poll_interval_seconds": 3600,
|
||||
"auto_scan_enabled": true
|
||||
}
|
||||
settings:
|
||||
encodeUrl: true
|
||||
timeout: 0
|
||||
followRedirects: true
|
||||
maxRedirects: 5
|
||||
|
||||
docs: |-
|
||||
# Update Scan Settings
|
||||
|
||||
`PUT /api/libraries/scan-settings` — auth: jwt+admin.
|
||||
|
||||
Canonical reference: `docs/developer/api/libraries/update_scan_settings.md` (docs site → Developer → API). This request is GENERATED from that doc; edit the doc, not this file.
|
||||
Reference in new issue
Block a user