# Add Auto-Assign Rule Add an automatic book assignment rule to a collection. **Endpoint**: `POST /api/collections/{id}/rules` **Auth**: Required **Content-Type**: `application/json` ## Path Parameters | Parameter | Type | Required | Description | | --------- | ------------- | -------- | --------------- | | id | string (UUID) | Yes | Collection UUID | ## Request Body | Field | Type | Required | Description | | -------- | ------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | field | string | Yes | Field to match on (genre, author, series, language, publisher, copyright_year, tags) | | operator | string | Yes | Comparison operator (equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than) | | value | string/number | Yes | Value to compare against | | priority | integer | No | Rule priority (1 = highest, default: 1) | | enabled | boolean | No | Whether rule is active (default: true) | ### Supported Fields | Field | Type | Description | | -------------- | ------ | ------------------------------------- | | genre | string | Book genre | | author | string | Book author | | series | string | Book series name | | language | string | Book language | | publisher | string | Publisher name | | copyright_year | number | Publication year (numeric comparison) | | tags | string | Book tags | ### Supported Operators | Operator | Type | Description | | ------------ | ------ | ------------------------------------- | | equals | all | Exact match | | not_equals | all | Not equal | | contains | string | Contains substring (case-insensitive) | | not_contains | string | Does not contain | | starts_with | string | Starts with (case-insensitive) | | ends_with | string | Ends with (case-insensitive) | | greater_than | number | Greater than | | less_than | number | Less than | ### Example Request ```json { "field": "genre", "operator": "equals", "value": "Science Fiction", "priority": 1, "enabled": true } ``` ## Response (201 Created) ```json { "id": "rule-uuid-here", "field": "genre", "operator": "equals", "value": "Science Fiction", "priority": 1, "enabled": true, "created_at": "2026-02-01T10:00:00Z" } ``` ## Error Responses | Code | Description | | ---- | ----------------------------------- | | 400 | Invalid request (validation failed) | | 401 | Authentication required | | 404 | Collection not found | | 500 | Internal server error | ## Try It Out