Scopes
Quatre scopes, résolus en direct à chaque requête. Quels endpoints exigent quel scope, et pourquoi marquer comme lu revient à envoyer.
Les scopes sont définis par identifiant : par API key ou par autorisation OAuth2. Il y en a quatre.
| Scope | Autorise |
|---|---|
whatsapp.read | GET /connections, GET /connections/{id}, GET /account, GET /messages |
whatsapp.send | POST /messages, POST /messages/read |
whatsapp.events | GET /webhook, PUT /webhook, POST /webhook/rotate, et la réception des livraisons en général |
whatsapp.manage | POST /connections, POST /connections/{id}/pairing-code, POST /connections/{id}/restart, POST /connections/{id}/logout, DELETE /connections/{id} |
Marquer comme lu est un envoi, pas une lecture
POST /messages/read exige whatsapp.send. Cela ressemble à une opération de lecture, mais
cela transmet un accusé de lecture de votre numéro vers l'appareil du client : c'est un
flux sortant. L'avantage : tout client qui peut déjà envoyer peut aussi marquer comme lu,
sans nouveau scope et sans nouveau consentement.
La résolution se fait en direct
Les scopes et la liste des connexions accessibles sont résolus à chaque requête. Rien n'est mis en cache dans le jeton et rien n'a besoin d'être actualisé. Deux conséquences :
- Révoquer une clé, ou restreindre ses scopes, prend effet dès l'appel suivant.
- Une connexion que vous venez de créer est visible dès l'appel suivant. Il n'y a aucun délai de propagation et rien à réémettre.
Scope insuffisant
Un identifiant qui n'a pas le scope exigé par un endpoint reçoit
403 insufficient_scope. Appuyez-vous sur le code, pas sur le statut : 403 est aussi
ce que renvoie le refus d'une liste d'adresses IP autorisées (ip_not_allowed), et les deux cas demandent
des corrections opposées : l'un exige de modifier les scopes de la clé, l'autre d'ajouter une adresse.
Voir Erreurs et idempotence.
Demandez le minimum
Le scope que vous n'accordez pas est celui dont on ne peut pas abuser si la clé fuite. Une
tâche de reporting en lecture seule n'a besoin que de whatsapp.read ; un service
d'envoi de notifications a besoin de whatsapp.send ; seul un flux de provisionnement a besoin de
whatsapp.manage, qui peut supprimer des connexions.