# Oratrix API - Interativo UazAPI

## Status

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

Este grupo contem endpoints interativos exclusivos para canais do tipo **UazAPI**.

Para o Wezapp Shots, estes endpoints sao recursos auxiliares para mensagens com interacao em canais UazAPI. Nao substituem os endpoints principais de disparo em massa.

## Base URL

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

## Autenticacao

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

## Restricao do provedor

```text
Uazapi only
```

Exige canal do tipo `uazapi`.

## Endpoints do grupo

Total documentado nesta parte: 7 endpoints.

---

## 1. Botoes de resposta rapida via UazAPI

```http
POST /sendInteractive/uazapi/button
```

Nome na documentacao Oratrix:

```text
UazapiButton
```

Descricao:

Enviar botoes de resposta rapida via UazAPI, com ate 3 opcoes.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "text": "Escolha uma opcao:",
  "choices": [
    "Opcao 1",
    "Opcao 2",
    "Opcao 3"
  ],
  "footerText": "Rodape opcional",
  "imageButton": "https://exemplo.com/img.png"
}
```

---

## 2. Lista de opcoes via UazAPI

```http
POST /sendInteractive/uazapi/list
```

Nome na documentacao Oratrix:

```text
UazapiList
```

Descricao:

Enviar lista de opcoes com botao de abertura via UazAPI.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "text": "Escolha uma opcao:",
  "choices": [
    "Item 1",
    "Item 2",
    "Item 3",
    "Item 4"
  ],
  "listButton": "Ver opcoes",
  "footerText": "Selecione uma opcao"
}
```

---

## 3. Enquete via UazAPI

```http
POST /sendInteractive/uazapi/poll
```

Nome na documentacao Oratrix:

```text
UazapiPoll
```

Descricao:

Enviar enquete com multiplas opcoes via UazAPI.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "text": "Qual sua preferencia?",
  "choices": [
    "Opcao A",
    "Opcao B",
    "Opcao C"
  ],
  "selectableCount": 1
}
```

---

## 4. Carrossel via UazAPI

```http
POST /sendInteractive/uazapi/carousel
```

Nome na documentacao Oratrix:

```text
UazapiCarousel
```

Descricao:

Enviar carrossel de cards com botoes via UazAPI.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "text": "Confira nossas opcoes:",
  "carousel": [
    {
      "text": "Produto A",
      "image": "https://exemplo.com/a.png",
      "buttons": [
        {
          "text": "Ver detalhes",
          "type": "REPLY"
        }
      ]
    },
    {
      "text": "Produto B",
      "image": "https://exemplo.com/b.png",
      "buttons": [
        {
          "text": "Comprar",
          "type": "URL"
        }
      ]
    }
  ]
}
```

---

## 5. Botao PIX via UazAPI

```http
POST /sendInteractive/uazapi/pixButton
```

Nome na documentacao Oratrix:

```text
UazapiPixButton
```

Descricao:

Enviar botao PIX nativo via UazAPI.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "pixType": "EVP",
  "pixKey": "chave-aleatoria-uuid",
  "pixName": "Nome Beneficiario"
}
```

---

## 6. Botao de localizacao via UazAPI

```http
POST /sendInteractive/uazapi/locationButton
```

Nome na documentacao Oratrix:

```text
UazapiLocationButton
```

Descricao:

Enviar botao de compartilhar localizacao via UazAPI.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "text": "Por favor, compartilhe sua localizacao:"
}
```

---

## 7. Cobranca interativa via UazAPI

```http
POST /sendInteractive/uazapi/requestPayment
```

Nome na documentacao Oratrix:

```text
UazapiRequestPayment
```

Descricao:

Enviar cobranca interativa via UazAPI. Suporta PIX, boleto, link de pagamento e anexo.

URL completa:

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

Body JSON:

```json
{
  "ticketId": 1262,
  "amount": 150,
  "title": "Pedido #001",
  "text": "Sua cobranca esta pronta:",
  "footer": "Vencimento em 3 dias",
  "itemName": "Produto X",
  "invoiceNumber": "NF-001",
  "pixType": "EVP",
  "pixKey": "chave-aleatoria-uuid",
  "pixName": "Nome Beneficiario"
}
```

## Mapeamento sugerido com Wezapp Shots

| Wezapp Shots | Oratrix |
|---|---|
| Canal com provider UazAPI | Endpoints `/sendInteractive/uazapi/*` |
| Ticket externo | `ticketId` |
| Campanha com interacao | Mensagem interativa enviada pelo Oratrix |
| Enquete futura | `poll` |
| CTA financeiro futuro | `pixButton` ou `requestPayment` |

## Observacoes para arquitetura

Estes endpoints usam `ticketId`, indicando dependencia de ticket/conversa existente no Oratrix.

Para o Shots, o uso em disparo em massa precisa validar antes como criar ou obter `ticketId` e se estes endpoints funcionam como follow-up, e nao primeiro envio.

## Pendencias tecnicas para validar

- Confirmar se todos exigem canal UazAPI.
- Confirmar se `ticketId` e obrigatorio em todos.
- Confirmar limite de opcoes em `button`, `list` e `poll`.
- Confirmar tipos aceitos em botoes do `carousel`.
- Confirmar se `imageButton` e `image` aceitam URL publica, upload ou base64.
- Confirmar regras de PIX e cobranca em `requestPayment`.
- Confirmar se `amount` usa centavos ou valor decimal.
- Confirmar formato dos eventos de resposta.

## Regras recomendadas para o Wezapp Shots

1. Nao usar endpoints UazAPI como motor principal de disparo em massa.
2. Usar apenas em fluxos que tenham ticket externo valido.
3. Validar canal antes de chamar endpoint UazAPI.
4. Registrar payload enviado e retorno recebido.
5. Tratar recursos financeiros como PIX/cobranca com regra propria antes de usar no Shots.
