OPENAPI 3.1
Référence API
La spécification versionnée est la source de cette référence.
| Méthode | Endpoint | Rôle |
|---|---|---|
| GET | /authorize | Create a 90-second login session |
| POST | /authorize/activate | Activate before opening WhatsApp |
| GET | /authorize/status | Poll every two seconds using the original session |
| POST | /authorize/sandbox | Simulate an inbound message for TEST clients only |
| POST | /token | Exchange one code exactly once; validates client, redirect and PKCE |
| POST | /internal/verify | SMSV HMAC proof; loopback only, never publicly proxied |
| GET | /.well-known/jwks.json | Active and previous public RSA keys |
| GET | /.well-known/oauth-authorization-server | OAuth authorization server metadata |
| GET | /healthz | PostgreSQL and Redis health |
| POST | /manage/login | Redeem tenant invitation key for one-hour session |
| POST | /manage/logout | Revoke the current dashboard session |
| GET | /manage/overview | Own clients and 50 most recent redacted events |
| POST | /manage/clients | Create client; confidential secret shown once |
| PATCH | /manage/clients/{id} | Update exact redirect allowlist and activation |
| POST | /manage/clients/{id}/rotate | Replace client secret immediately |
Exemple d’échange
POST /token
Content-Type: application/json
{
"grant_type": "authorization_code",
"client_id": "pk_test_...",
"client_secret": "secret_serveur",
"code": "CODE_RECU",
"code_verifier": "VERIFICATEUR_CONSERVE",
"redirect_uri": "http://localhost:3000/auth/callback"
}Le secret est absent pour un client public. La réponse contient token, un alias access_token, expires_in, subject, issued_at et profile. Validez le JWT côté serveur avant de faire confiance au profil.
Cookies et appels navigateur
Le cookie de session est HttpOnly, SameSite=Lax et Secure en production. Les mutations du navigateur exigent une origine identique à celle du service. Le polling se fait toutes les deux secondes. Les réponses d’authentification ne sont pas mises en cache.
Contrat SMSV → Auth
L’appel interne signe les octets JSON exacts avec HMAC SHA-256 dans X-SMSV-Signature. Le corps inclut loginKeyId, phoneE164, displayName optionnel, messageId, timestamp en millisecondes, receiverPhoneId et matchingWords. Les deux derniers champs lient la preuve au destinataire prévu et au message affiché.
Erreurs
Consultez les codes et pistes de résolution. Le code OAuth est dans error ; le diagnostic précis dans error_code.