API de FlavosoPublicarCambios
Cambios
Qué ha cambiado en la API, con fechas. Dentro de v1 solo hay añadidos compatibles.
Cómo cambia la API
Dentro de v1 solo hay añadidos compatibles: campos nuevos, rutas nuevas, códigos de error nuevos, eventos nuevos. Lo que rompa la compatibilidad solo llega en una versión nueva, y la anterior sigue funcionando al menos seis meses más. Flavoso-Api-Version y api_version indican la fecha de versión.
8 de octubre de 2026: últimos retoques antes de las primeras cajas
Antes de que las primeras cajas pasen a producción, hemos ajustado el contrato en algunos puntos. Algunos cambios son más estrictos que antes; aun así, siguen dentro de v1 porque todavía no había ninguna integración en producción. Si desarrollaste con una versión anterior, revisa estos puntos.
- Fecha de versión:
Flavoso-Api-Versionyapi_versionde los eventos nuevos indican ahora2026-10-08. Los eventos ya entregados o consultados conservan2026-10-04. - Tamaño del cuerpo: un cuerpo más grande de lo que admite la operación (64 KB, 2 MB en
PUT /menu, contados en bytes) recibe 413payload_too_largeen lugar de 400invalid_request. - Lo desconocido es un error: un parámetro de consulta o un campo del cuerpo desconocido da 400
invalid_requestconparam, en cualquier operación. - Fechas con zona horaria:
updated_since,created_since,starts_fromy las demás fechas de una solicitud, incluidountildePOST /store/pause, necesitanZo un desfase; si no, 400. Un+sin codificar en la consulta se acepta delante del desfase. - Crear responde 201:
POST /menu/categories,/menu/products,/menu/option-groups,/menu/option-groups/{id}/optionsyPOST /store/closurespara un día nuevo (200 si sustituye a uno). - Aceptar:
POST /orders/{id}/acceptpasa un pedidopendingal siguiente estado que usa el negocio (no siempreconfirmed); un pedido que ya ha pasado dependingvuelve sin cambios con 200, uno terminado o cancelado responde con 409invalid_transition. - Opciones de los pedidos:
items[].options[]llevanid,group_idygroup_name(nullen pedidos anteriores). - Carta: nuevo
GET /menu/options; la respuesta dePUT /menuponewarningsantes deids; un negocio de prueba guarda como máximo 50 imágenes deimage_url(por encima de ese límite,PUT /menuavisa conimages_cappedy un plato suelto recibe 400), y restablecerlo las borra;menu.syncedindica elconnection_idque sincronizó. - Escrituras simultáneas: una escritura en la carta o en el negocio (
/store) que choca tres veces seguidas con otro cambio responde con 409conflictyRetry-Afteren lugar de 500. Después, vuelve a enviarla sin cambios. - Eventos:
GET /eventscon unafterque ya no se conserva sigue por el evento conservado más antiguo e indicagap: trueen lugar de responder con 400;after=latestempieza en el momento actual;next_aftersiempre está presente.data.object.updated_aten los eventos de pedidos y reservas es el momento del cambio comunicado.store.pausedystore.resumedllevan el negocio enobject;store.updatedtambién comunicaorder_statuses;reservation.updatedtambién comunica unanotecambiada. - Rechazar en vez de recortar: una
notede pausa de más de 140 caracteres y unreasonde más de 200 dan 400 conparamen lugar de recortarse. - Permisos:
GET /tablesyGET /areasfuncionan también conreservations:read. - Correcciones:
order.paidya no promete pagos registrados en el local (Flavoso no registra ninguno); un token caducado o revocado ya no cuenta para el límite por dirección IP y siempre recibe 401; unPATCH /reservations/{id}que responde con 409 no ha cambiado nada; unaIdempotency-Keycuya primera solicitud nunca terminó queda libre de nuevo a los 2 minutos;external_idsigue en todas partes la misma regla (sin espacios al principio ni al final, sin caracteres de control).
6 de octubre de 2026: la plataforma para desarrolladores
La gran ampliación: las cajas y otros sistemas pueden ahora mantener la carta, hacerse cargo de los pedidos, gestionar horarios y reservas y conciliar las ventas.
- Carta:
PUT /menusincroniza toda la carta (merge,replace,dry_run);POST /menu/availabilitycomunica hasta 500 entradas a la vez; las categorías, los platos, los grupos de opciones y las opciones se pueden crear, cambiar y borrar uno a uno;image_url; cada objeto llevaexternal_idyupdated_at. - Pedidos: con
POST /orders/{id}/acknowledgete haces cargo de un pedido con un identificador propio; filtros nuevospaid,acknowledged,created_since,created_until,external_id; campos nuevossource,external_id,acknowledged_atytaxcon líneas de impuestos. - Negocio:
GET /storeindica contacto, dirección, ubicación, pedido mínimo, tiempos de preparación, horarios de reparto y próximos días especiales; novedades:PATCH /store,GETyPUT /store/hoursy los días especiales en/store/closures. - Mesas y zonas:
GET /tables,GET /areas. - Reservas:
POST /reservations,PATCH /reservations/{id},GET /reservations/availability; filtros nuevosstarts_fromystarts_until. - Informes:
GET /reports/salesyGET /reports/products, con el nuevo permisoreports:read. - Recoger eventos:
GET /eventsyGET /events/{id}. Los eventos se producen ahora para cada conexión activa, incluso sin webhook. - Tipos de eventos nuevos:
order.paid,store.updated,app.scopes_changed,menu.category.*,menu.product.createdy.deleted,menu.option_group.*,menu.option.createdy.deleted,menu.synced(un evento por sincronización).menu.product.updatedymenu.option.updatedllegan con cada cambio de campo, conchangedyprevious. - Prueba y real:
livemodeenGET /mey en cada evento.GET /meindica ademástenant.country,planyrate_limit. - Errores:
paramindica el campo erróneo; códigos nuevosexternal_id_taken,slot_unavailable,limit_exceeded. - OAuth: un token de actualización ya intercambiado se sigue aceptando durante 60 segundos.
- Webhooks: cada entrega con cada intento en la consola, «Reenviar», eventos de prueba de cualquier tipo;
Flavoso-Delivery-Attemptcuenta también los envíos manuales. - Herramientas: registro de solicitudes, explorador de API, tokens de prueba, directorio de apps,
postman.json,operationIden cada operación de la especificación, y esta documentación.
5 de octubre de 2026: la nueva dirección
La API tiene ahora su propia dirección: https://api.flavoso.com. Los tokens y las respuestas no cambian, y las direcciones antiguas siguen funcionando. Solo tienes que hacer algo si tu app compara iss con un valor fijo.
- Rutas: todas las rutas están bajo
https://api.flavoso.com/v1, tambiénopenapi.jsonypostman.json. - OAuth: el token en
https://api.flavoso.com/oauth/token, la revocación enhttps://api.flavoso.com/oauth/revokey los metadatos enhttps://api.flavoso.com/.well-known/oauth-authorization-server. La pantalla de consentimiento sigue enhttps://app.flavoso.com/oauth/authorize, porque allí inicia sesión el propietario. - Emisor:
issueren los metadatos eissen la redirección de vuelta son ahorahttps://api.flavoso.comen lugar dehttps://app.flavoso.com. Si tu app comparaisscon un valor fijo, actualízalo; mejor aún, léelo de los metadatos. - Direcciones antiguas:
https://app.flavoso.com/api/public/v1/…yhttps://app.flavoso.com/api/oauth/…siguen respondiendo; la dirección antigua de los metadatos redirige a la nueva.
4 de octubre de 2026: la primera versión
La primera versión de v1, con inicio de sesión mediante OAuth 2.0 y PKCE: leer, aceptar, rechazar, cancelar y hacer avanzar pedidos; leer la carta, comunicar platos agotados y precios; pausar el negocio; leer reservas y fijar su estado; webhooks firmados.
¿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.