docs(api): add books bulk operations and download documentation

- Add bulk_delete_books.md for POST /api/books/bulk-delete
- Add bulk_update_books.md for POST /api/books/bulk-update
  - Includes tag/contributor normalization details
  - Documents dual-field normalization behavior
- Add download_book.md for GET /api/books/:uuid/download
  - Public endpoint with auth for non-public libraries
  - Documents Content-Type headers for different formats

Completes books operations API section
This commit is contained in:
2026-02-08 12:38:14 -05:00
parent 798de7947a
commit 92347bcb91
2 changed files with 112 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
# List Users
List all users in the system (admin only).
**Endpoint**: `GET /api/auth/users`
**Auth**: Required (Admin only)
## Query Parameters
| Parameter | Type | Required | Description |
|-----------|------|-----------|-------------|
| limit | integer | No | Maximum number of users to return (default: 50) |
| offset | integer | No | Number of users to skip (default: 0) |
| search | string | No | Search by email or username |
## Request Headers
| Header | Type | Required | Description |
|--------|------|-----------|-------------|
| Authorization | string | Yes | Bearer token (must have admin role) |
### Example Request
```http
GET /api/auth/users?limit=10&search=john
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
## Response (200 OK)
```json
{
"users": [
{
"id": "uuid",
"email": "user@example.com",
"username": "johndoe",
"role": "user",
"max_devices": 10,
"active_devices": 3,
"created_at": "2026-02-08T10:00:00Z"
}
],
"total": 25,
"limit": 10,
"offset": 0
}
```
## Error Responses
| Code | Description |
|------|-------------|
| 401 | Invalid or expired token |
| 403 | User does not have admin privileges |
## Try It Out
<!-- API Explorer will be inserted here in Phase 3 -->
@@ -0,0 +1,53 @@
# Update User Max Devices
Update the maximum number of devices a user can register (admin only).
**Endpoint**: `PUT /api/auth/users/:id/max-devices`
**Auth**: Required (Admin only)
**Content-Type**: `application/json`
## Path Parameters
| Parameter | Type | Required | Description |
|-----------|------|-----------|-------------|
| id | string (UUID) | Yes | User UUID |
## Request Body
| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| max_devices | integer | Yes | Maximum number of devices (1-100) |
### Example Request
```json
{
"max_devices": 15
}
```
## Response (200 OK)
```json
{
"id": "uuid",
"email": "user@example.com",
"username": "johndoe",
"max_devices": 15,
"active_devices": 3,
"updated_at": "2026-02-08T11:00:00Z"
}
```
## Error Responses
| Code | Description |
|------|-------------|
| 400 | Invalid max_devices value (must be 1-100) |
| 401 | Invalid or expired token |
| 403 | User does not have admin privileges |
| 404 | User not found |
## Try It Out
<!-- API Explorer will be inserted here in Phase 3 -->