Ambiti
Quattro ambiti, risolti in tempo reale a ogni richiesta. Quali endpoint richiedono quale ambito e perché segnare come letto equivale a un invio.
Gli ambiti sono associati alla singola credenziale: a una API key o a una concessione OAuth2. Sono quattro.
| Ambito | Consente |
|---|---|
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 e, in generale, la ricezione delle consegne |
whatsapp.manage | POST /connections, POST /connections/{id}/pairing-code, POST /connections/{id}/restart, POST /connections/{id}/logout, DELETE /connections/{id} |
Segnare come letto è un invio, non una lettura
POST /messages/read richiede whatsapp.send. Sembra un'operazione di lettura, ma
trasmette una conferma di lettura dal Suo numero al dispositivo del cliente: è
un'operazione in uscita. Il vantaggio è che qualsiasi client già in grado di inviare
può anche segnare come letto: nessun nuovo ambito, nessun nuovo consenso.
La risoluzione avviene in tempo reale
Gli ambiti e l'elenco delle connessioni raggiungibili vengono risolti a ogni richiesta. Nulla viene memorizzato nel token e nulla deve essere aggiornato. Ne derivano due conseguenze:
- La revoca di una chiave, o la riduzione dei suoi ambiti, ha effetto già alla chiamata successiva.
- Una connessione appena creata è visibile alla chiamata successiva. Non c'è alcun ritardo di propagazione e non occorre riemettere nulla.
Ambito insufficiente
Una credenziale priva dell'ambito richiesto da un endpoint riceve
403 insufficient_scope. Si basi sul codice, non sullo stato: 403 è anche
la risposta a un rifiuto dovuto alla lista di IP consentiti (ip_not_allowed) e i due casi richiedono
rimedi opposti: nel primo si modificano gli ambiti della chiave, nel secondo si aggiunge un indirizzo.
Vedere Errori e idempotenza.
Richieda il minimo
L'ambito che non concede è quello di cui non si può abusare se la chiave viene divulgata. Un
processo di reportistica in sola lettura richiede whatsapp.read e nient'altro; un
sistema di invio notifiche richiede whatsapp.send; solo un flusso di provisioning ha bisogno di
whatsapp.manage, che può eliminare le connessioni.