# Casos del alta de tus clientes y «Atendido»

`GET /v1/onboarding-cases`

Cuando un cliente de uno de tus enlaces se traba y escribe en la pantalla del alta, nace un **caso** (`A-<n>`, el mismo `data.caseId` de `onboarding.help_requested`). Trae lo que escribió tal cual, el código de Meta, el diagnóstico (del catálogo o con IA, con su confianza) y si subió una captura.

**Listarlos.** `GET /v1/onboarding-cases?status=open` (por defecto), `acked` o `all`; el más reciente primero.

**Marcarlo atendido.** `POST /v1/onboarding-cases/{id}/ack`, cuando ya lo resolviste. Es idempotente. Una entrega 2xx del webhook **no** cuenta como atendido.

**En el panel.** **Altas de tus clientes** (aparece en el menú cuando creaste enlaces): una fila por enlace con su estado (esperando, falló, conectado, vencido), los intentos, el último motivo, el diagnóstico, el texto y la captura, el botón «Atendido» y, si venció, «Generar un enlace nuevo». Filtros: Necesitan atención (por defecto), Todas, Conectadas.

## Ejemplos

### 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

- Un caso de otra cuenta da el mismo `404 ONBOARDING_CASE_NOT_FOUND` que uno que no existe.
- Un `status` que no sea `open`, `acked` o `all` da `400 ONBOARDING_CASE_STATUS_INVALID`.
- `?lang=es|en|pt|it` elige el idioma del diagnóstico del catálogo (por defecto, el del enlace).
