API de FlavosoFundamentosPermisos
Permisos
Nueve permisos controlan lo que puede hacer tu app. El permiso de escritura incluye el de lectura; las reservas están disponibles a partir del plan Pro.
Cómo funcionan los permisos
En la consola indicas qué permisos puede solicitar tu app; durante la autorización, la app los pide con scope, separados por espacios. El propietario los ve en lenguaje claro y acepta todos o ninguno.
El permiso de escritura incluye el de lectura: con orders:write, una app también puede leer pedidos. Los permisos de una conexión figuran en la respuesta del endpoint de token, en scope, y en GET /me, en scopes.
Solicita solo lo que tu app necesita para su finalidad. Eso es justo lo que comprueba la revisión, y un propietario acepta con más facilidad si la lista es corta.
Los nueve permisos
| Permiso | Lo que lee el propietario | Qué permite | Plan |
|---|---|---|---|
orders:read | Ver los pedidos | GET /orders, GET /orders/{id}; eventos order.*. | todos los planes |
orders:write | Aceptar, rechazar y hacer avanzar los pedidos | Además aceptar, rechazar, cancelar, hacer avanzar y hacerse cargo: POST /orders/{id}/accept, reject, cancel, status y acknowledge. | todos los planes |
menu:read | Ver la carta | GET /menu y las listas de la carta; eventos menu.*. | todos los planes |
menu:write | Editar la carta: platos, categorías, opciones, precios y disponibilidad | Además PUT /menu, POST /menu/availability y crear, cambiar y borrar categorías, platos, grupos de opciones y opciones. | todos los planes |
store:read | Ver horarios, estado y mesas | GET /store, horarios de apertura, días especiales, GET /tables, GET /areas; eventos store.*. | todos los planes |
store:write | Pausar los pedidos online, cambiar horarios y tiempos de preparación | Además pausar y reanudar, PATCH /store, PUT /store/hours y días especiales. | todos los planes |
reservations:read | Ver las reservas | GET /reservations, reservas individuales, horas libres, además de GET /tables y GET /areas para resolver table_ids; eventos reservation.*. | a partir de Pro |
reservations:write | Crear, confirmar y cambiar reservas | Además crear, cambiar y fijar el estado. | a partir de Pro |
reports:read | Ver ventas y facturación | GET /reports/sales, GET /reports/products. | todos los planes |
Cuando falta un permiso
Si falta un permiso, la API responde con 403 insufficient_scope, y la cabecera WWW-Authenticate indica el permiso que falta. La conexión solo obtiene el permiso si el propietario vuelve a conectar tu app con ese permiso.
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer realm="flavoso", error="insufficient_scope", scope="menu:write"
Content-Type: application/json
{
"error": {
"code": "insufficient_scope",
"message": "This connection lacks the 'menu:write' scope.",
"request_id": "req_4f0c2a9d1e7b3c5a8f6d2e10"
}
}Permisos y eventos
Un evento muestra datos, así que una conexión solo lo recibe con el permiso de lectura correspondiente (o el de escritura del mismo grupo). Esto se aplica por igual a los webhooks y a GET /events.
| Eventos | Permiso necesario |
|---|---|
order.* | orders:read |
reservation.* | reservations:read |
menu.* | menu:read |
store.* | store:read |
app.* | ninguno, solo la propia conexión |
Permisos y planes
La API forma parte de todos los planes y no cuesta nada extra. Las reservas están disponibles a partir del plan Pro: en un negocio con el plan Starter, las rutas de reservas responden con 403 plan_required, aunque la conexión tenga el permiso. La pantalla de consentimiento lo advierte, y GET /me indica el plan en plan.
Si la suscripción de un negocio no está activa, todas las rutas salvo GET /me y DELETE /connection responden con 403 account_inactive.
Cambiar los permisos
Los permisos que tu app puede solicitar los cambias en la consola. Tras la aprobación, los permisos adicionales esperan una nueva revisión; hasta entonces se aplica la lista revisada.
Las conexiones existentes conservan sus permisos. Una conexión solo obtiene más permisos si el propietario vuelve a conectar tu app con el nuevo scope. Después llega app.scopes_changed con previous_scopes.
¿Algo no ha quedado claro? Escribe a support@flavoso.com e indica el identificador de X-Request-Id. Así podremos encontrar tu solicitud en el registro.