From b364aee63184f05a1bed2ab595f13bcdf08430f8 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Tue, 10 Feb 2026 19:58:41 -0500 Subject: [PATCH] test(bruno): update API tests for /api/media-items/ endpoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update bulk-delete test: endpoint URL, request field (book_ids → media_item_ids), response field (success → deleted), documentation - Update bulk-update test: endpoint URL, request structure (updates → media_item_updates), response field (success → updated), documentation - Update download test: endpoint URL (/api/books/ → /api/media-items/), documentation --- bruno/books/Bulk Delete Books.bru | 22 +++++++++---------- bruno/books/Bulk Update Books.bru | 34 ++++++++++++++--------------- bruno/media-items/EPUB Download.bru | 22 +++++++++---------- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/bruno/books/Bulk Delete Books.bru b/bruno/books/Bulk Delete Books.bru index e217005..08aa3b1 100644 --- a/bruno/books/Bulk Delete Books.bru +++ b/bruno/books/Bulk Delete Books.bru @@ -1,11 +1,11 @@ meta { - name: Bulk Delete Books + name: Bulk Delete Media Items type: http seq: 1 } post { - url: {{base_url}}/api/books/bulk-delete + url: {{base_url}}/api/media-items/bulk-delete body: json auth: inherit } @@ -16,7 +16,7 @@ headers { body:json { { - "book_ids": [ + "media_item_ids": [ "{{bookId1}}", "{{bookId2}}", "{{bookId3}}" @@ -31,7 +31,7 @@ script:post-response { const body = res.getBody(); tests['Has results array'] = Array.isArray(body.results); tests['Has total count'] = body.total !== undefined; - tests['Has success count'] = body.success !== undefined; + tests['Has deleted count'] = body.deleted !== undefined; tests['Has failed count'] = body.failed !== undefined; } else { tests['Bulk delete failed'] = false; @@ -46,23 +46,23 @@ settings { } docs { - ## Bulk Delete Books + ## Bulk Delete Media Items - Deletes multiple books in a single request. + Deletes multiple media items in a single request. **Method:** POST - **Endpoint:** /api/books/bulk-delete + **Endpoint:** /api/media-items/bulk-delete **Authentication:** Required (Bearer token) **Request Body:** - - `book_ids` (array of strings): Array of book UUIDs to delete + - `media_item_ids` (array of strings): Array of media item UUIDs to delete **Response:** - `results` (array): Results for each deletion attempt - - `total` (number): Total number of books processed - - `success` (number): Number of successfully deleted books + - `total` (number): Total number of media items processed + - `deleted` (number): Number of successfully deleted media items - `failed` (number): Number of failed deletions **Status Codes:** @@ -75,7 +75,7 @@ docs { **Example:** ```json { - "book_ids": [ + "media_item_ids": [ "uuid-1", "uuid-2", "uuid-3" diff --git a/bruno/books/Bulk Update Books.bru b/bruno/books/Bulk Update Books.bru index 7f7b913..fd0ea0a 100644 --- a/bruno/books/Bulk Update Books.bru +++ b/bruno/books/Bulk Update Books.bru @@ -1,11 +1,11 @@ meta { - name: Bulk Update Books + name: Bulk Update Media Items type: http seq: 2 } post { - url: {{base_url}}/api/books/bulk-update + url: {{base_url}}/api/media-items/bulk-update body: json auth: inherit } @@ -16,9 +16,9 @@ headers { body:json { { - "updates": [ + "media_item_updates": [ { - "book_id": "{{bookId1}}", + "media_item_id": "{{bookId1}}", "updates": { "title": "Updated Title", "genre": "Science Fiction", @@ -26,7 +26,7 @@ body:json { } }, { - "book_id": "{{bookId2}}", + "media_item_id": "{{bookId2}}", "updates": { "author": "Updated Author", "contributors": ["O'Reilly Media", "Penguin Random House"] @@ -43,7 +43,7 @@ script:post-response { const body = res.getBody(); tests['Has results array'] = Array.isArray(body.results); tests['Has total count'] = body.total !== undefined; - tests['Has success count'] = body.success !== undefined; + tests['Has updated count'] = body.updated !== undefined; } else { tests['Bulk update failed'] = false; } @@ -57,25 +57,25 @@ settings { } docs { - ## Bulk Update Books + ## Bulk Update Media Items - Updates multiple books in a single request with different fields for each book. + Updates multiple media items in a single request with different fields for each item. **Method:** POST - **Endpoint:** /api/books/bulk-update + **Endpoint:** /api/media-items/bulk-update **Authentication:** Required (Bearer token) **Request Body:** - - `updates` (array): Array of update objects - - `book_id` (string): Book UUID to update + - `media_item_updates` (array): Array of update objects + - `media_item_id` (string): Media item UUID to update - `updates` (object): Fields to update (can include title, author, genre, tags, contributors, etc.) **Response:** - `results` (array): Results for each update attempt - - `total` (number): Total number of books processed - - `success` (number): Number of successfully updated books + - `total` (number): Total number of media items processed + - `updated` (number): Number of successfully updated media items - `failed` (number): Number of failed updates **Status Codes:** @@ -88,9 +88,9 @@ docs { **Example:** ```json { - "updates": [ + "media_item_updates": [ { - "book_id": "uuid-1", + "media_item_id": "uuid-1", "updates": { "title": "New Title", "genre": "Fiction", @@ -98,7 +98,7 @@ docs { } }, { - "book_id": "uuid-2", + "media_item_id": "uuid-2", "updates": { "author": "Jane Doe", "contributors": ["Publisher Inc."] @@ -108,5 +108,5 @@ docs { } ``` - **Note:** Each book can have different fields updated. Only the specified fields are modified for each book. + **Note:** Each media item can have different fields updated. Only the specified fields are modified for each item. } diff --git a/bruno/media-items/EPUB Download.bru b/bruno/media-items/EPUB Download.bru index c97924f..2973d1d 100644 --- a/bruno/media-items/EPUB Download.bru +++ b/bruno/media-items/EPUB Download.bru @@ -1,11 +1,11 @@ meta { - name: Download EPUB Book + name: Download Media Item type: http seq: 1 } get { - url: {{baseURL}}/api/books/{{bookUUID}}/download + url: {{baseURL}}/api/media-items/{{bookUUID}}/download body: none auth: none } @@ -16,27 +16,27 @@ settings { } docs { - ## Download EPUB Book + ## Download Media Item - Download an EPUB book file from Bookhoard server. No authentication required for Kobo device downloads. + Download a media item file (EPUB, PDF, etc.) from Bookhoard server. **Method:** GET - **Endpoint:** /api/books/{bookUUID}/download + **Endpoint:** /api/media-items/{bookUUID}/download **Authentication:** None (for Kobo device downloads) **Path Parameters:** - - `bookUUID` (string): Book UUID + - `bookUUID` (string): Media item UUID - **Response:** Binary EPUB file data + **Response:** Binary file data (EPUB, PDF, etc.) **Response Headers:** - - `Content-Type`: application/epub+zip + - `Content-Type`: application/epub+zip, application/pdf, or appropriate MIME type **Status Codes:** - - 200: Success - EPUB file returned - - 404: Book not found + - 200: Success - File returned + - 404: Media item not found - **Note:** This endpoint is designed for Kobo devices to download books directly from Bookhoard. The endpoint returns the book file with appropriate Content-Type headers. + **Note:** This endpoint is designed for Kobo devices to download media items directly from Bookhoard. The endpoint returns the file with appropriate Content-Type headers. }