> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lfautomatiza.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Regras de automação

> CRUD de regras event-driven que automatizam ações na plataforma.

Regras de automação seguem o padrão **Evento → Condições → Ações**. Toda vez que
um evento de tipo configurado acontece, a plataforma avalia as condições da regra —
se passarem, executa as ações.

## Listar regras

```http theme={null}
GET /api/v1/accounts/{account_id}/automation_rules
```

```bash theme={null}
curl https://chat.lfautomatiza.com/api/v1/accounts/1/automation_rules \
  -H "api_access_token: $TOKEN"
```

## Criar regra

```http theme={null}
POST /api/v1/accounts/{account_id}/automation_rules
```

### Payload completo

```json theme={null}
{
  "name": "Mensagem com boleto vai pro Financeiro",
  "description": "Roteia automaticamente menções a boleto",
  "event_name": "message_created",
  "conditions": [
    {
      "attribute_key": "content",
      "filter_operator": "contains",
      "values": ["boleto"],
      "query_operator": "and"
    },
    {
      "attribute_key": "message_type",
      "filter_operator": "equal_to",
      "values": ["incoming"]
    }
  ],
  "actions": [
    {
      "action_name": "assign_team",
      "action_params": [3]
    },
    {
      "action_name": "add_label",
      "action_params": ["financeiro", "aguardando-pagamento"]
    },
    {
      "action_name": "change_priority",
      "action_params": ["high"]
    }
  ],
  "active": true
}
```

### Eventos disponíveis (`event_name`)

| Evento                 | Quando dispara                             |
| ---------------------- | ------------------------------------------ |
| `conversation_created` | Nova conversa aberta                       |
| `conversation_updated` | Qualquer campo da conversa muda            |
| `message_created`      | Mensagem nova (incoming ou outgoing)       |
| `conversation_opened`  | Status muda pra `open` (reabertura também) |

### Atributos consultáveis em `conditions`

`content`, `status`, `inbox_id`, `team_id`, `assignee_id`, `labels`, `priority`,
`message_type`, `country_code`, `browser_language`, `referer`, `campaign_id`,
qualquer `custom_attributes.{chave}`.

### Operadores em `conditions`

| Operador                       | Aplica-se a     |
| ------------------------------ | --------------- |
| `equal_to`, `not_equal_to`     | Tudo            |
| `contains`, `does_not_contain` | Strings, arrays |
| `greater_than`, `less_than`    | Números         |
| `is_present`, `is_not_present` | Tudo            |
| `starts_with`, `ends_with`     | Strings         |

### Ações disponíveis (`action_name`)

| Ação                   | `action_params`                                            |
| ---------------------- | ---------------------------------------------------------- |
| `assign_agent`         | `[agent_id]`                                               |
| `assign_team`          | `[team_id]`                                                |
| `assign_best_agent`    | `[]` (round-robin entre disponíveis)                       |
| `remove_assigned_team` | `[]`                                                       |
| `add_label`            | `[label1, label2, ...]`                                    |
| `remove_label`         | `[label1, label2, ...]`                                    |
| `send_message`         | `["Texto da resposta"]`                                    |
| `send_email_to_team`   | `[{ "team_ids": [3], "subject": "..." }]`                  |
| `change_status`        | `["resolved"]` ou `["open"]`, `["pending"]`, `["snoozed"]` |
| `change_priority`      | `["urgent"]`                                               |
| `send_webhook_event`   | `["https://meu-webhook.com/endpoint"]`                     |
| `mute_conversation`    | `[]`                                                       |
| `snooze_conversation`  | `["1_week"]` ou outra duração                              |
| `send_attachment`      | `[attachment_id]`                                          |
| `add_private_note`     | `["Texto da nota interna"]`                                |

## Detalhe / atualizar / excluir

```http theme={null}
GET    /api/v1/accounts/{account_id}/automation_rules/{id}
PATCH  /api/v1/accounts/{account_id}/automation_rules/{id}
DELETE /api/v1/accounts/{account_id}/automation_rules/{id}
```

## Clonar regra

```http theme={null}
POST /api/v1/accounts/{account_id}/automation_rules/{id}/clone
```

Útil pra testar variações sem mexer na original.

## Ativar / desativar via toggle

```http theme={null}
POST /api/v1/accounts/{account_id}/automation_rules/{id}/active
```

Alterna o campo `active`. Útil pra pausar regra temporariamente sem perder configuração.

## Ordem de execução

Quando múltiplas regras casam com o mesmo evento, elas executam **na ordem em que
foram criadas** (mais antiga primeiro). Cada ação afeta o estado pras próximas
regras avaliarem.

<Tip>
  Use o campo `description` pra deixar claro o propósito de cada regra. Em contas
  com 20+ regras, o nome sozinho não conta a história toda.
</Tip>

## Códigos de resposta

| Código                     | Quando acontece                  |
| -------------------------- | -------------------------------- |
| `200 OK`                   | Listagem / leitura / atualização |
| `201 Created`              | Regra criada                     |
| `204 No Content`           | Excluída                         |
| `403 Forbidden`            | Apenas administrador             |
| `422 Unprocessable Entity` | Condição ou ação inválida        |
