API di FlavosoPubblicazioneModifiche
Modifiche
Cosa è cambiato nell'API, con le date. All'interno di v1 arrivano solo aggiunte compatibili.
Come cambia l'API
All'interno di v1 arrivano solo aggiunte compatibili: nuovi campi, nuovi endpoint, nuovi codici di errore, nuovi eventi. Ciò che rompe la compatibilità arriva solo in una nuova versione, e quella vecchia continua a funzionare per almeno sei mesi. Flavoso-Api-Version e api_version indicano la data di versione.
8 ottobre 2026: rifiniture prima delle prime casse
Prima che le prime casse vadano in produzione, abbiamo reso il contratto più rigoroso in alcuni punti. Alcune cose sono più severe di prima; restano comunque in v1 perché nessuna integrazione era ancora in produzione. Se hai sviluppato su una versione precedente, controlla questi punti.
- Data di versione:
Flavoso-Api-Versioneapi_versiondei nuovi eventi indicano ora2026-10-08. Gli eventi già consegnati o letti mantengono2026-10-04. - Dimensione del corpo: un corpo più grande di quanto l'operazione accetta (64 KB, 2 MB per
PUT /menu, contati in byte) riceve 413payload_too_largeinvece di 400invalid_request. - Ciò che è sconosciuto è un errore: un parametro di query o un campo del corpo sconosciuto dà 400
invalid_requestconparam, in ogni operazione. - Timestamp con fuso orario:
updated_since,created_since,starts_frome gli altri timestamp di una richiesta, ancheuntildiPOST /store/pause, devono avereZo uno scostamento, altrimenti 400. Un+non codificato davanti allo scostamento nella query viene comunque accettato. - La creazione risponde 201:
POST /menu/categories,/menu/products,/menu/option-groups,/menu/option-groups/{id}/optionsePOST /store/closuresper un giorno nuovo (200 se ne sostituisce uno). - Accettare:
POST /orders/{id}/acceptporta un ordinependingallo stato successivo che il locale usa (non sempreconfirmed); un ordine che ha già superatopendingtorna invariato con 200, uno completato o annullato risponde 409invalid_transition. - Opzioni negli ordini:
items[].options[]riportanoid,group_idegroup_name(nullper gli ordini più vecchi). - Menu: nuovo
GET /menu/options; la risposta diPUT /menumettewarningsprima diids; un locale di prova conserva al massimo 50 immagini daimage_url(oltre,PUT /menuavvisa conimages_cappede un singolo piatto riceve 400), e reimpostarlo le elimina;menu.syncedindica ilconnection_idche ha sincronizzato. - Scritture contemporanee: una scrittura sul menu o sul locale (
/store) che collide tre volte di seguito con un'altra modifica risponde 409conflictconRetry-Afterinvece di 500. In quel caso inviala di nuovo invariata. - Eventi:
GET /eventscon unafternon più conservato riprende dall'evento conservato più vecchio e indicagap: trueinvece di rispondere 400;after=latestparte da adesso;next_afterc'è sempre.data.object.updated_atnegli eventi di ordini e prenotazioni è il momento della modifica segnalata.store.pausedestore.resumedriportano il locale inobject;store.updatedsegnala ancheorder_statuses;reservation.updatedsegnala anche unanotemodificata. - Rifiutare invece di troncare: una
notedella pausa oltre 140 caratteri e unreasonoltre 200 danno 400 conparaminvece di essere troncati. - Permessi:
GET /tableseGET /areasfunzionano anche conreservations:read. - Correzioni:
order.paidnon promette più pagamenti registrati in loco (Flavoso non ne registra); un token scaduto o revocato non conta più nel limite per indirizzo IP e riceve sempre 401; unPATCH /reservations/{id}che risponde 409 non ha cambiato nulla; unIdempotency-Keyla cui prima richiesta non è mai terminata torna libero dopo 2 minuti;external_idsegue ovunque la stessa regola (niente spazi all'inizio o alla fine, niente caratteri di controllo).
6 ottobre 2026: la piattaforma per sviluppatori
La grande espansione: casse e altri sistemi ora possono curare il menu, prendere in carico gli ordini, gestire orari e prenotazioni e riconciliare il fatturato.
- Menu:
PUT /menusincronizza tutto il menu (merge,replace,dry_run);POST /menu/availabilitysegnala fino a 500 voci in una volta; categorie, piatti, gruppi di opzioni e opzioni si possono creare, modificare ed eliminare singolarmente;image_url; ogni oggetto haexternal_ideupdated_at. - Ordini:
POST /orders/{id}/acknowledgeprende in carico un ordine con un identificativo proprio; nuovi filtripaid,acknowledged,created_since,created_until,external_id; nuovi campisource,external_id,acknowledged_atetaxcon le righe d'imposta. - Locale:
GET /storeindica contatti, indirizzo, posizione, ordine minimo, tempi di preparazione, orari di consegna e i prossimi giorni speciali; novità:PATCH /store,GETePUT /store/hourse i giorni speciali sotto/store/closures. - Tavoli e aree:
GET /tables,GET /areas. - Prenotazioni:
POST /reservations,PATCH /reservations/{id},GET /reservations/availability; nuovi filtristarts_fromestarts_until. - Report:
GET /reports/saleseGET /reports/products, con il nuovo permessoreports:read. - Recuperare gli eventi:
GET /eventseGET /events/{id}. Gli eventi ora vengono generati per ogni collegamento attivo, anche senza webhook. - Nuovi tipi di evento:
order.paid,store.updated,app.scopes_changed,menu.category.*,menu.product.createde.deleted,menu.option_group.*,menu.option.createde.deleted,menu.synced(un evento per sincronizzazione).menu.product.updatedemenu.option.updatedarrivano a ogni modifica di un campo, conchangedeprevious. - Prova e reale:
livemodeinGET /mee in ogni evento.GET /meindica inoltretenant.country,planerate_limit. - Errori:
paramindica il campo errato; nuovi codiciexternal_id_taken,slot_unavailable,limit_exceeded. - OAuth: un token di aggiornamento già scambiato viene ancora accettato per 60 secondi.
- Webhook: ogni consegna con ogni tentativo nella console, «Rinvia», eventi di prova di ogni tipo;
Flavoso-Delivery-Attemptconta anche gli invii manuali. - Strumenti: registro delle richieste, esploratore API, token di prova, elenco delle app,
postman.json, unoperationIdsu ogni operazione della specifica, e questa documentazione.
5 ottobre 2026: il nuovo indirizzo
L'API ha ora un indirizzo tutto suo: https://api.flavoso.com. Token e risposte restano gli stessi, e i vecchi indirizzi continuano a funzionare. Devi intervenire solo se la tua app confronta iss con un valore fisso.
- Endpoint: ogni endpoint si trova sotto
https://api.flavoso.com/v1, compresiopenapi.jsonepostman.json. - OAuth: token su
https://api.flavoso.com/oauth/token, revoca suhttps://api.flavoso.com/oauth/revoke, metadati suhttps://api.flavoso.com/.well-known/oauth-authorization-server. La schermata di consenso resta suhttps://app.flavoso.com/oauth/authorize, perché è lì che il titolare accede. - Emittente:
issuernei metadati eissal ritorno sono orahttps://api.flavoso.cominvece dihttps://app.flavoso.com. Se la tua app confrontaisscon un valore fisso, aggiornalo; meglio ancora, leggilo dai metadati. - Vecchi indirizzi:
https://app.flavoso.com/api/public/v1/…ehttps://app.flavoso.com/api/oauth/…continuano a rispondere; il vecchio indirizzo dei metadati reindirizza a quello nuovo.
4 ottobre 2026: la prima versione
La prima versione di v1, con accesso tramite OAuth 2.0 e PKCE: leggere, accettare, rifiutare, annullare e far avanzare gli ordini; leggere il menu, segnalare esauriti e prezzi; mettere in pausa il locale; leggere le prenotazioni e impostarne lo stato; webhook firmati.
Qualcosa non è chiaro? Scrivi a support@flavoso.com indicando l'identificativo di X-Request-Id. Così troviamo la tua richiesta nel registro.