# Oratrix API - Templates WABA

## Status

Documentacao parcial baseada na parte enviada para o projeto Wezapp Shots.

Este grupo e estrategico para o **Wezapp Shots**, porque templates WABA aprovados podem ser necessarios para iniciar conversas oficiais fora da janela permitida do WhatsApp Business API.

## Base URL

```text
https://api-pro1.oratrixchat.com.br/v2/api/external/{ApiID}
```

## Autenticacao

```http
Authorization: Bearer {token}
```

## Endpoints do grupo

Total documentado nesta parte: 3 endpoints.

---

## 1. Enviar template aprovado WABA

```http
POST /template
```

Nome na documentacao Oratrix:

```text
SendTemplateWaba
```

Descricao:

Enviar template aprovado do WhatsApp Business API.

URL completa:

```text
https://api-pro1.oratrixchat.com.br/v2/api/external/{ApiID}/template
```

Body JSON:

```json
{
  "number": "5511999999999",
  "isClosed": false,
  "templateData": {
    "messaging_product": "whatsapp",
    "to": "5511999999999",
    "type": "template",
    "template": {
      "name": "hello_world",
      "language": {
        "code": "pt_BR"
      }
    }
  }
}
```

---

## 2. Enviar template WABA com parametros de body

```http
POST /templateBody
```

Nome na documentacao Oratrix:

```text
SendTemplateWabaBody
```

Descricao:

Enviar template WABA com parametros personalizados no body.

URL completa:

```text
https://api-pro1.oratrixchat.com.br/v2/api/external/{ApiID}/templateBody
```

Body JSON:

```json
{
  "number": "5511999999999",
  "isClosed": false,
  "templateData": {
    "messaging_product": "whatsapp",
    "to": "5511999999999",
    "type": "template",
    "template": {
      "name": "hello_world",
      "language": {
        "code": "pt_BR"
      },
      "components": [
        {
          "type": "body",
          "parameters": [
            {
              "type": "text",
              "text": "valor1"
            }
          ]
        }
      ]
    }
  }
}
```

---

## 3. Enviar template WABA de marketing com header e body

```http
POST /templateMarketingBody
```

Nome na documentacao Oratrix:

```text
SendTemplateWabaMarketing
```

Descricao:

Enviar template de marketing WABA com componentes de header e body.

URL completa:

```text
https://api-pro1.oratrixchat.com.br/v2/api/external/{ApiID}/templateMarketingBody
```

Body JSON:

```json
{
  "number": "5511999999999",
  "isClosed": false,
  "templateData": {
    "messaging_product": "whatsapp",
    "to": "5511999999999",
    "type": "template",
    "template": {
      "name": "nome_template_marketing",
      "language": {
        "code": "pt_BR"
      },
      "components": [
        {
          "type": "header",
          "parameters": [
            {
              "type": "image",
              "image": {
                "link": "https://exemplo.com/img.png"
              }
            }
          ]
        },
        {
          "type": "body",
          "parameters": [
            {
              "type": "text",
              "text": "valor1"
            }
          ]
        }
      ]
    }
  }
}
```

## Mapeamento sugerido com Wezapp Shots

| Wezapp Shots | Oratrix |
|---|---|
| Campanha WABA | Template aprovado |
| `wezapp_contacts.phone` | `number` e `templateData.to` |
| Variaveis por contato | `components.parameters` |
| Midia de header | `components.header.parameters.image.link` |
| Log interno | Payload e resposta do endpoint |

## Observacoes para arquitetura

Templates WABA devem ser tratados como caminho oficial para mensagens iniciadas fora da janela de conversa permitida.

O Wezapp deve ter controle interno de:

- Nome do template.
- Idioma.
- Tipo/categoria do template.
- Parametros necessarios.
- Midias usadas no header.
- Status de aprovacao, se essa informacao estiver disponivel.

## Pendencias tecnicas para validar

- Confirmar se a API retorna `wamid` ou identificador externo ao enviar template.
- Confirmar se `number` e `templateData.to` precisam ser iguais.
- Confirmar se `isClosed` cria/fecha ticket apos envio.
- Confirmar se exige `externalKey` mesmo nao aparecendo nos exemplos.
- Confirmar resposta em erro de template inexistente ou nao aprovado.
- Confirmar limites e formatos de parametros.
- Confirmar se templates de marketing possuem controle diferente de templates utilitarios.
- Confirmar se existe endpoint para listar templates aprovados.

## Regras recomendadas para o Wezapp Shots

1. Usar templates WABA como rota preferencial para campanhas oficiais fora da janela.
2. Nao montar template livre sem validar nome, idioma e parametros.
3. Registrar payload completo enviado e resposta recebida.
4. Controlar consumo de shots no Wezapp.
5. Tratar erro de template como falha operacional do item, nao como envio concluido.
6. Criar futuramente tabela local de templates aprovados/suportados pelo Wezapp.
