# Casos de cadastro dos seus clientes e «Atendido»

`GET /v1/onboarding-cases`

Quando um cliente de um dos seus links trava e escreve na tela do cadastro, nasce um **caso** (`A-<n>`, o mesmo `data.caseId` de `onboarding.help_requested`). Traz o que ele escreveu tal como está, o código da Meta, o diagnóstico (do catálogo ou com IA, com a sua confiança) e se ele enviou uma captura.

**Listá-los.** `GET /v1/onboarding-cases?status=open` (padrão), `acked` ou `all`; o mais recente primeiro.

**Marcar como atendido.** `POST /v1/onboarding-cases/{id}/ack`, quando você já resolveu. É idempotente. Uma entrega 2xx do webhook **não** conta como atendido.

**No painel.** **Cadastros dos seus clientes** (aparece no menu quando você criou links): uma linha por link com o seu estado (aguardando, falhou, conectado, vencido), as tentativas, o último motivo, o diagnóstico, o texto e a captura, o botão «Atendido» e, se venceu, «Gerar um link novo». Filtros: Precisam de atenção (padrão), Todos, Conectados.

## Exemplos

### cURL

```bash
# 1) the open cases (default status=open; also acked | all)
curl "https://api.waiaconnect.com/v1/onboarding-cases?status=open" -H "Authorization: Bearer wc_live_YOUR_API_KEY"
# → { "cases": [ { "id": "A-41", "status": "open", "externalId": "pharmacy-42",
#       "clientText": "…", "metaErrorCode": 3441060, "diagnosis": { "title": "…", "responsible": "client", … } } ] }

# 2) once you sorted it out: mark it handled (idempotent)
curl -X POST https://api.waiaconnect.com/v1/onboarding-cases/A-41/ack -H "Authorization: Bearer wc_live_YOUR_API_KEY"
```

### Node.js

```javascript
const H = { "Authorization": "Bearer wc_live_YOUR_API_KEY" };
const { cases } = await (await fetch("https://api.waiaconnect.com/v1/onboarding-cases?status=open", { headers: H })).json();
for (const c of cases) {
  console.log(c.id, c.externalId, c.diagnosis?.title, c.clientText);
  // … after you helped your customer:
  await fetch(`https://api.waiaconnect.com/v1/onboarding-cases/${c.id}/ack`, { method: "POST", headers: H });
}
```

### PHP

```php
<?php
$h = ["Authorization: Bearer wc_live_YOUR_API_KEY"];
$ch = curl_init("https://api.waiaconnect.com/v1/onboarding-cases?status=open");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $h]);
$cases = json_decode(curl_exec($ch), true)["cases"];
foreach ($cases as $c) {
  $ack = curl_init("https://api.waiaconnect.com/v1/onboarding-cases/" . $c["id"] . "/ack");
  curl_setopt_array($ack, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => $h]);
  curl_exec($ack);
}
```

### Python

```python
import requests
H = {"Authorization": "Bearer wc_live_YOUR_API_KEY"}
cases = requests.get("https://api.waiaconnect.com/v1/onboarding-cases", headers=H, params={"status": "open"}).json()["cases"]
for c in cases:
    print(c["id"], c["externalId"], (c["diagnosis"] or {}).get("title"), c["clientText"])
    requests.post(f"https://api.waiaconnect.com/v1/onboarding-cases/{c['id']}/ack", headers=H)  # after you helped them
```

## Notas

- Um caso de outra conta dá o mesmo `404 ONBOARDING_CASE_NOT_FOUND` que um que não existe.
- Um `status` que não seja `open`, `acked` ou `all` dá `400 ONBOARDING_CASE_STATUS_INVALID`.
- `?lang=es|en|pt|it` escolhe o idioma do diagnóstico do catálogo (padrão: o do link).
