# Pagina introduttiva del link: completa o minima

`PATCH /v1/onboarding-links/{id}`

Prima di aprire la finestra di Meta, il link di attivazione mostra una pagina introduttiva. Sono due:

**`full` (quella di sempre, più corta).** Tre passi numerati —tenere il telefono a portata di mano, il numero su WhatsApp Business e non su un'altra API, aspettare che la finestra si chiuda da sola—, il pulsante subito sotto e il resto in «Più dettagli».

**`minimal`.** Un solo pulsante grande, «Collega WhatsApp», e una riga: «Si apre la finestra ufficiale di Meta. Alla fine, aspetta che si chiuda da sola.» Per quando hai già spiegato tutto al tuo cliente prima di mandargli il link. Il pulsante non si può saltare: il browser lascia aprire la finestra di Meta solo con un tocco della persona.

**Dove si sceglie.** Per link, con `intro` in `POST /v1/onboarding-links` (e `PATCH /v1/onboarding-links/{id}` su un link attivo; `null` = quella dell'account). Per tutti i tuoi link, `linkIntro` in `PUT /v1/branding` o nel pannello: **Impostazioni › Marchio › Attivazione via link → Pagina introduttiva**. Vince il link; se non dice nulla, l'account; altrimenti `full`.

**Cosa misuriamo.** `GET /v1/onboarding-links/{id}` restituisce `introEffective` e `introClick`: su quale pagina il tuo cliente ha toccato «Collega» la prima volta e quanto ci ha messo da quando la pagina è apparsa (`timeToClickMs`).

## Esempi

### cURL

```bash
# 1) per link: the page before Meta's window is just one button and one line
curl -X POST https://api.waiaconnect.com/v1/onboarding-links \
  -H "Authorization: Bearer wc_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"externalId": "pharmacy-42", "intro": "minimal", "historyDelivery": false}'

# 2) change it on a live link (null = the account's)
curl -X PATCH https://api.waiaconnect.com/v1/onboarding-links/onb_… \
  -H "Authorization: Bearer wc_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"intro": "full"}'

# 3) or for every link of the account that does not say it
curl -X PUT https://api.waiaconnect.com/v1/branding \
  -H "Authorization: Bearer wc_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"linkIntro": "minimal"}'

# 4) how long your customer took to tap «Connect»
curl https://api.waiaconnect.com/v1/onboarding-links/onb_… -H "Authorization: Bearer wc_live_YOUR_API_KEY"
# → { "link": { "intro": null, "introEffective": "minimal",
#       "introClick": { "mode": "minimal", "timeToClickMs": 4200, "at": "…" }, … } }
```

### Node.js

```javascript
const H = { "Authorization": "Bearer wc_live_YOUR_API_KEY", "Content-Type": "application/json" };

// per link
const link = await (await fetch("https://api.waiaconnect.com/v1/onboarding-links", {
  method: "POST", headers: H,
  body: JSON.stringify({ externalId: "pharmacy-42", intro: "minimal", historyDelivery: false })
})).json();

// or the account default (a link that sets "intro" wins)
await fetch("https://api.waiaconnect.com/v1/branding", { method: "PUT", headers: H, body: JSON.stringify({ linkIntro: "minimal" }) });

// later: how long it took to tap «Connect»
const { link: view } = await (await fetch(`https://api.waiaconnect.com/v1/onboarding-links/${link.publicId}`, { headers: H })).json();
console.log(view.introEffective, view.introClick?.timeToClickMs);
```

### PHP

```php
<?php
$h = ["Authorization: Bearer wc_live_YOUR_API_KEY", "Content-Type: application/json"];
$ch = curl_init("https://api.waiaconnect.com/v1/onboarding-links");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => $h,
  CURLOPT_POSTFIELDS => json_encode(["externalId" => "pharmacy-42", "intro" => "minimal", "historyDelivery" => false]),
]);
$link = json_decode(curl_exec($ch), true);
echo $link["url"];
```

### Python

```python
import requests
H = {"Authorization": "Bearer wc_live_YOUR_API_KEY"}

# per link
link = requests.post("https://api.waiaconnect.com/v1/onboarding-links", headers=H,
                     json={"externalId": "pharmacy-42", "intro": "minimal", "historyDelivery": False}).json()

# or the account default (a link that sets "intro" wins)
requests.put("https://api.waiaconnect.com/v1/branding", headers=H, json={"linkIntro": "minimal"})

# later: how long it took to tap «Connect»
view = requests.get(f"https://api.waiaconnect.com/v1/onboarding-links/{link['publicId']}", headers=H).json()["link"]
print(view["introEffective"], (view["introClick"] or {}).get("timeToClickMs"))
```

## Note

- Con la Coesistenza, se non mandi `historyDelivery`, la pagina chiede comunque prima se vuoi ricevere lo storico: è il consenso del tuo cliente. Mandalo e in `minimal` resta solo il pulsante.
- Gli avvisi che compaiono solo quando servono restano in entrambe: il browser di Facebook o Instagram (aprire in Chrome o Safari) e quello dopo vari tentativi uguali.
- Un valore diverso da `full`, `minimal` o `null` dà `400 ONBOARDING_INTRO_INVALID`; un link usato, scaduto o revocato non si modifica (`410`).
