meta { name: List Media Items type: http seq: 1 } get { url: {{base_url}}/api/media-items?library_id={{libraryId}}&limit=20&offset=0 auth: inherit } headers { Content-Type: application/json } tests { test_list_media_items_success(status, headers, body) { if (status !== 200) { throw new Error("Expected status 200, got " + status); } const contentType = headers["content-type"]; if (!contentType || !contentType.includes("application/json")) { throw new Error("Expected content-type to contain application/json, got " + contentType); } // Verify response body is valid JSON and has expected structure let data; try { data = JSON.parse(body); } catch (e) { throw new Error("Response body is not valid JSON"); } if (!Array.isArray(data)) { throw new Error("Expected response body to be an array"); } // Validate each media item in the array data.forEach((item, index) => { if (!item || typeof item !== "object") { throw new Error("Media item at index " + index + " is not an object"); } if (!item.id) { throw new Error("Media item at index " + index + " missing required field: id"); } if (!item.title) { throw new Error("Media item at index " + index + " missing required field: title"); } if (!item.library_id) { throw new Error("Media item at index " + index + " missing required field: library_id"); } }); return true; } } vars:pre-request { libraryId: "8821b703-h29b-71d4-d716-446655440003" } settings { encodeUrl: true timeout: 0 } docs { ## List Media Items Retrieves a paginated list of media items from a specific library. **Method:** GET **Endpoint:** /api/media-items **Authentication:** Required (Bearer token) **Query Parameters:** - `library_id` (string, required): Library UUID to filter items - `limit` (number, optional): Number of results per page (default: 20, max: 100) - `offset` (number, optional): Pagination offset (default: 0) **Response:** Array of media item objects - `id` (string): Media item UUID - `title` (string): Media item title - `library_id` (string): Library UUID - `media_type` (string): Type of media (e.g., "ebook", "audiobook") - `file_path` (string): Path to media file - `created_at` (string): Creation timestamp - `updated_at` (string): Last update timestamp **Status Codes:** - 200: Success - 400: Invalid query parameters - 401: Unauthorized - 403: Forbidden (library access denied) - 404: Library not found - 500: Internal server error }