Files
bookhoard/bruno/ebooks/Create Ebook.bru
T
john-okeefe 66f1eb11a0 feat(ebooks): add ISBN normalization and graceful library requirement handling
- Increase ISBN column from VARCHAR(13) to VARCHAR(17) to support ISBN-13 with hyphens
- Add normalize_isbn() database function to automatically remove hyphens and spaces
- Create trigger to auto-normalize ISBNs on INSERT/UPDATE operations
- Update all Ebook and MediaItem queries to use ISBN normalization
- Add GetEbookLibraryID query to check for existing ebook libraries
- Add graceful error handling when no ebook library exists
- Return helpful error message: 'no ebook library found. Please create an ebook library first'
- Create comprehensive tests for ISBN normalization and library selection
- Add Bruno test files for various ISBN formats and error scenarios
- Update documentation with ISBN normalization details
2026-01-29 10:52:14 -05:00

87 lines
2.6 KiB
Plaintext

meta {
name: Create Ebook
type: http
seq: 8
}
post {
url: {{base_url}}/api/ebooks
body: json
auth: inherit
}
body:json {
{
"title": "Sample Ebook Title",
"author": "Author Name",
"isbn": "9780123456789",
"description": "A sample ebook description",
"file_path": "/path/to/ebook.epub",
"file_size": 1048576,
"mime_type": "application/epub+zip",
"cover_image_path": "/path/to/cover.jpg",
"series": "Sample Series",
"series_number": 1,
"tags": "fiction,adventure",
"asin": "B00EXAMPLE",
"date_published": "2023-01-15",
"publisher": "Sample Publisher",
"contributors": "Contributor Name"
}
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Create Ebook
Creates a new ebook entry in the database.
**Method:** POST
**Endpoint:** /api/ebooks
**Authentication:** Required (Admin only)
**Request Body:** JSON object with:
- `title` (string, required): Ebook title (1-500 characters)
- `author` (string, optional): Author name
- `isbn` (string, optional): ISBN number (will be normalized to remove hyphens and spaces)
- `description` (string, optional): Ebook description
- `file_path` (string, required): Path to ebook file
- `file_size` (integer, required): File size in bytes
- `mime_type` (string, required): MIME type of ebook
- `cover_image_path` (string, optional): Path to cover image
- `series` (string, optional): Series name
- `series_number` (integer, optional): Number in series
- `tags` (string, optional): Comma-separated tags
- `asin` (string, optional): Amazon ASIN
- `date_published` (string, optional): Publication date (YYYY-MM-DD)
- `publisher` (string, optional): Publisher name
- `contributors` (string, optional): Contributors list
**Response:** Complete ebook object with all fields
**Status Codes:**
- 201: Ebook created successfully
- 400: Bad request (invalid data, or no ebook library exists)
- 401: Unauthorized
- 403: Forbidden (admin access required)
- 500: Internal server error
**Features:**
- Admin-only endpoint for creating ebooks
- Full validation of required fields
- Supports all ebook metadata fields
- ISBN normalization: automatically removes hyphens and spaces (e.g., "978-0-12345-678-9" becomes "9780123456789")
- Requires an existing ebook library to create ebooks
- Associates ebook with creating admin user
**ISBN Formats Supported:**
- ISBN-13: `9780123456789` or `978-0-12345-678-9` or `978-0123456789`
- ISBN-10: `0123456789` or `0-12345-678-9`
- All formats are automatically normalized (hyphens and spaces removed)
}