# Atualizar regra de auto-resposta

`PUT /auto-reply/rule/{{id}}`

Pasta: **Auto-Reply**

## Autenticação

```http
token: {{token}}
```

## Descrição

# Atualizar regra de auto-resposta

Substitui os campos da regra pelo corpo enviado. Use para corrigir o match, a resposta ou o escopo.

## Endpoint

`PUT {{baseUrl}}/auto-reply/rule/{{id}}`

## Autenticação

Envie o token da instância no header `token: {{token}}`.

## Corpo da requisição

| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `name` | string | Não | Nome amigável da regra (ex.: "Horário de Atendimento"). |
| `match_type` | string | Não* | Como casar a mensagem: `keywords`, `exact` ou `pattern`. |
| `match_value` | string[] | Não* | Lista de palavras-chave (usado quando `match_type` = `keywords`). |
| `pattern` | string | Não* | Texto exato (`exact`) ou regex (`pattern`). |
| `response_type` | string | Não | Tipo da resposta: `text`, `media`, `location`, `contact` ou `interactive`. |
| `response_payload` | object | Não | Conteúdo da resposta (ex.: `{ "text": "..." }` para texto). |
| `scope` | string | Não | Escopo: `all` (padrão), `groups` ou `private`. |
| `allowed_jids` | string[] | Não | Se preenchido, só responde a esses JIDs de remetente. |
| `blocked_jids` | string[] | Não | JIDs de remetente que nunca disparam a regra. |
| `priority` | number | Não | Prioridade (maior = avaliada primeiro na ordenação do serviço). |
| `cooldown_ms` | number | Não | Intervalo mínimo (ms) entre disparos da regra para o mesmo remetente. |
| `quoted` | boolean | Não | Se `true`, responde citando a mensagem original. |
| `simulate_typing` | boolean | Não | Simula "digitando..." antes de enviar. |
| `typing_duration_ms` | number | Não | Duração (ms) da simulação de digitação. |
| `active` | boolean | Não | Se `true`, a regra fica ativa. Se omitido, chega como `false`. |


Nota: pelo menos o critério de match deve fazer sentido: `keywords` + `match_value`, ou `exact`/`pattern` + `pattern`.

## Exemplo de Requisição

```bash
curl --request PUT '{{baseUrl}}/auto-reply/rule/{{id}}' \
  --header 'token: {{token}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Horário de Atendimento",
  "match_type": "keywords",
  "match_value": [
    "horario",
    "atendimento",
    "funcionamento"
  ],
  "pattern": "",
  "response_type": "text",
  "response_payload": {
    "text": "Olá {{pushName}}! Nosso horário é de segunda a sexta, das 08h às 18h."
  },
  "scope": "private",
  "allowed_jids": [],
  "blocked_jids": [],
  "priority": 20,
  "cooldown_ms": 120000,
  "quoted": true,
  "simulate_typing": true,
  "typing_duration_ms": 2000,
  "active": true
}'
```

## Resposta de Sucesso

```json
{
  "success": true,
  "rule": {
    "id": "01HXYZABCDEFGHJKLMNPQRSTUV",
    "client_name": "develop",
    "instance_id": "01HINSTANCEIDEXAMPLE00001",
    "name": "Horário de Atendimento",
    "match_type": "keywords",
    "match_value": ["horario", "atendimento"],
    "pattern": "",
    "response_type": "text",
    "response_payload": {
      "text": "Nosso horário de atendimento é de segunda a sexta, das 08h às 18h."
    },
    "scope": "all",
    "allowed_jids": [],
    "blocked_jids": [],
    "priority": 10,
    "cooldown_ms": 60000,
    "quoted": true,
    "simulate_typing": true,
    "typing_duration_ms": 1500,
    "active": true
  }
}
```

## Erros comuns

- `401 Unauthorized`: o header `token` não foi enviado ou é inválido.
- `400 Bad Request`: o JSON está malformado.
- `404 Not Found`: regra inexistente (`rule not found`).
- `500 Internal Server Error`: falha ao salvar a regra.

## Observações

- O handler sobrescreve **todos** os campos listados; envie o estado completo desejado.
- Esta rota **não** exige modo mobile.

## Corpo (exemplo)

```json
{
  "name": "Horário de Atendimento",
  "match_type": "keywords",
  "match_value": [
    "horario",
    "atendimento",
    "funcionamento"
  ],
  "pattern": "",
  "response_type": "text",
  "response_payload": {
    "text": "Olá {{pushName}}! Nosso horário é de segunda a sexta, das 08h às 18h."
  },
  "scope": "private",
  "allowed_jids": [],
  "blocked_jids": [],
  "priority": 20,
  "cooldown_ms": 120000,
  "quoted": true,
  "simulate_typing": true,
  "typing_duration_ms": 2000,
  "active": true
}
```

## cURL

```bash
curl -X PUT "{{baseUrl}}/auto-reply/rule/{{id}}" \
  -H "token: {{token}}" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Horário de Atendimento",
  "match_type": "keywords",
  "match_value": [
    "horario",
    "atendimento",
    "funcionamento"
  ],
  "pattern": "",
  "response_type": "text",
  "response_payload": {
    "text": "Olá {{pushName}}! Nosso horário é de segunda a sexta, das 08h às 18h."
  },
  "scope": "private",
  "allowed_jids": [],
  "blocked_jids": [],
  "priority": 20,
  "cooldown_ms": 120000,
  "quoted": true,
  "simulate_typing": true,
  "typing_duration_ms": 2000,
  "active": true
}'
```

---

[Índice da pasta](./index.md) · [Índice geral](../index.md) · [UI](https://gozap.dev/docs?op=auto-reply/atualizar-regra-de-auto-resposta)
