# 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
