Alcances
Cuatro alcances, resueltos en vivo en cada solicitud. Qué endpoints necesitan cuál y por qué marcar como leído es un envío.
Los alcances son por credencial: por API key o por concesión de OAuth2. Hay cuatro.
| Alcance | Permite |
|---|---|
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 y, en general, recibir entregas |
whatsapp.manage | POST /connections, POST /connections/{id}/pairing-code, POST /connections/{id}/restart, POST /connections/{id}/logout, DELETE /connections/{id} |
Marcar como leído es un envío, no una lectura
POST /messages/read requiere whatsapp.send. Parece una operación de lectura,
pero transmite un acuse desde su número al dispositivo del cliente: es
saliente. La ventaja es que cualquier cliente que ya pueda enviar también puede
marcar como leído: sin alcance nuevo y sin nuevo consentimiento.
La resolución es en vivo
Los alcances y la lista de conexiones accesibles se resuelven en cada solicitud. Nada se guarda en caché dentro del token y no hay nada que renovar. Esto tiene dos consecuencias:
- Revocar una clave, o reducir sus alcances, surte efecto en la siguiente llamada.
- Una conexión que acaba de crear es visible en la siguiente llamada. No hay retraso de propagación ni nada que volver a emitir.
Alcance insuficiente
Una credencial que no tiene el alcance que necesita un endpoint recibe
403 insufficient_scope. Decida según el código, no según el estado: 403
es también lo que devuelve un rechazo por la lista de IP permitidas
(ip_not_allowed), y los dos casos requieren soluciones opuestas: uno exige
editar los alcances de la clave y el otro, agregar una dirección.
Consulte Errors & idempotency.
Pida menos
El alcance que no concede es el que no se puede aprovechar si la clave se
filtra. Un proceso de reportes de solo lectura necesita whatsapp.read y nada
más; un emisor de notificaciones necesita whatsapp.send; solo un flujo de
aprovisionamiento necesita whatsapp.manage, que puede eliminar conexiones.