API di FlavosoPrimi passiLocale di prova

Locale di prova

Un ristorante gratuito solo per provare l'API, gestito dalla console: ordinare e prenotare come cliente, rispondere come locale, sincronizzare il menu e seguire ogni evento fino alla tua app. Non può mai andare online.

Che cos'è un locale di prova

Un locale di prova è un ristorante su Flavoso che esiste solo per l'API. Non costa nulla, non richiede abbonamento e di base è aperto giorno e notte. Per l'API vale come piano Pro: tutti gli endpoint sono disponibili, prenotazioni comprese.

Ogni account ha al massimo un locale di prova, e tutte le tue app lo condividono. Include un menu di esempio con categorie, piatti e un gruppo di opzioni, più alcuni tavoli. Lo gestisci nella console, in Locale di prova, in cinque schede: Locale, Ordini, Prenotazioni, Menu ed Eventi.

Creare e usare

  1. 1

    Crea

    «Crea locale di prova»: un clic ed è pronto. Nell'assistente di configurazione è il secondo passo.

    Console › Locale di prova

  2. 2

    Collega l'app

    Con un token di prova o con il flusso OAuth, scegliendo il locale di prova. Solo allora vengono generati eventi: senza un'app collegata con il permesso adatto, nessuno è in ascolto.

  3. 3

    Prova

    Ordina e prenota come cliente, rispondi come locale: fai avanzare gli ordini, metti in pausa, cambia gli orari, segna i piatti come esauriti. Ogni modifica arriva come evento alle tue app collegate.

    Console › Locale di prova

Come un locale reale

Per la tua app il locale di prova si comporta come un locale reale: stessi endpoint, stessi eventi, stessi errori. Ordini e prenotazioni di prova seguono lo stesso percorso di quelli di un cliente, e far avanzare un ordine nella console ha lo stesso effetto che in cucina. Ogni modifica arriva alla tua app come evento, via webhook o tramite GET /events. Ci sono tre differenze:

  • livemode è false, in GET /me e in ogni evento. Un locale di prova non può mai andare online.
  • I pagamenti online sono simulati: un ordine di prova che crei come pagato online genera order.created e subito dopo order.paid, senza fornitore di pagamento e senza denaro.
  • Il locale di prova conserva al massimo 50 immagini da image_url. Oltre questo limite PUT /menu non ne scarica altre e avvisa con images_capped; reimpostarlo le elimina.

Gli strumenti

Le schede del locale di prova nella console fanno ciò che altrimenti farebbero clienti, cucina, accoglienza e dashboard. Si aggiornano da sole appena qualcosa cambia nel locale di prova, anche quando è la tua app a fare la modifica tramite l'API.

StrumentoCosa faDove
Ordini di provaA caso, anche più di uno alla volta, oppure composti come farebbe un cliente: piatti con opzioni, asporto, consegna o al tavolo, subito o in preordine, con mancia se vuoi. Genera order.created.Console › Locale di prova › Ordini
Pagato online (simulato)A scelta per un ordine composto: vale subito come pagato online, senza fornitore di pagamento e senza denaro. Genera order.created e subito dopo order.paid.Console › Locale di prova › Ordini
Prenotazione di provaUna prenotazione come la farebbe un cliente, all'orario scelto o al prossimo libero. Genera reservation.created.Console › Locale di prova › Prenotazioni
Far avanzare e annullare gli ordiniCome la cucina: accettato, in preparazione, pronto, concluso. Genera order.status_changed, un annullamento anche order.cancelled.Console › Locale di prova › Ordini
Prenotazioni come localeI pulsanti dell'accoglienza: conferma, rifiuta, arrivato, andato via, non presentato, annulla, elimina, assegna un tavolo; inoltre annulla come cliente e anticipa ad adesso. Genera reservation.updated con changed. Una prenotazione presa al telefono o un cliente senza prenotazione genera reservation.created.Console › Locale di prova › Prenotazioni
Orari e pausaMettere in pausa gli ordini online (da 15 minuti a 3 ore, con un motivo) e riaprire, orari di apertura da tre modelli, chiudere oggi o domani, attivare e disattivare tipi di ordine e preordine. Genera store.paused, store.resumed e store.updated con changed.Console › Locale di prova › Locale
Collegamenti come localeScollegare un'app come farebbe il suo titolare, o toglierle permessi. Genera app.disconnected con il motivo owner, oppure app.scopes_changed.Console › Locale di prova › Locale
MenuIl menu come GET /menu lo mostra a un'app, con i suoi identificativi. Segnare piatti e opzioni come esauriti e offrirli di nuovo, cambiare i prezzi. Genera menu.product.updated e menu.option.updated. In più, tutto per la sincronizzazione.Console › Locale di prova › Menu
EventiGli ultimi 30 eventi e, per ogni app, cosa ne ha fatto il suo webhook e se li ha recuperati. Vedi Seguire gli eventi.Console › Locale di prova › Eventi
ReimpostaCancella ordini e prenotazioni e ripristina il menu di esempio e le impostazioni. Tavoli e collegamenti restano. Vedi Reimpostare.Console › Locale di prova › Locale
EliminaElimina il locale di prova con tutto il suo contenuto; i token di prova delle tue app smettono di funzionare. Puoi crearne uno nuovo in qualsiasi momento.Console › Locale di prova › Locale
Crea token di provaToken di accesso e token di aggiornamento per il locale di prova, senza flusso OAuth: il token di accesso vale un'ora, quello di aggiornamento 180 giorni; la console li mostra entrambi una sola volta. Se hai tolto permessi all'app come locale, il collegamento li riottiene, segnalato con app.scopes_changed.Console › App › Credenziali
Esploratore APIProva ogni operazione sul locale di prova, con richiesta e risposta. I corpi di esempio usano identificativi e orari del tuo locale di prova, ad esempio il prossimo orario libero per POST /reservations.Console › App › Esploratore API
Registro delle richiesteOgni richiesta della tua app, per il locale di prova con i corpi di richiesta e risposta.Console › App › Registro
«Invia un evento di prova» e «Rinvia»Invia al tuo webhook un evento di qualsiasi tipo, con i dati del locale di prova; ripete una consegna. In tutto al massimo 10 volte al minuto per app.Console › App › Webhook

Di più sugli strumenti della tua app in Strumenti.

Seguire gli eventi

La scheda Eventi mostra gli ultimi 30 eventi del locale di prova. Per ogni app collegata indica cosa ne ha fatto il suo webhook (consegnato, in attesa del prossimo tentativo, fallito o saltato, con il motivo) e se l'ha già recuperato con GET /events.

  • Busta: una riga si apre e mostra l'evento esattamente come lo riceve l'app scelta.
  • Invia di nuovo: invia ancora una consegna, con lo stesso identificativo di evento.
  • Invia al webhook: invia al webhook di un'app un evento senza consegna, ad esempio uno precedente alla configurazione del webhook o di un tipo a cui non è iscritto.
  • Recupera da qui: copia la chiamata GET /events la cui risposta inizia esattamente con questo evento.

Al massimo dieci invii al minuto per app, contando «Rinvia» e «Invia un evento di prova» in Webhook. Gli eventi di prova e ping non compaiono mai in GET /events; la scheda lo indica nel punto giusto.

Reimpostare

«Reimposta il locale di prova» cancella tutti gli ordini e le prenotazioni, ricrea il menu di esempio, termina una pausa, cancella i giorni speciali e riporta orari di apertura, tipi di ordine, tempi di preparazione, preordine, ordine minimo, mance, zona di consegna e prenotazioni come alla creazione. Le immagini scaricate da image_url vengono eliminate. Tavoli e collegamenti restano.

  • Il menu genera gli stessi eventi di «Reimposta il menu»: ogni oggetto cancellato con menu.*.deleted, ogni nuovo con menu.*.created. Una cassa che rispecchia il menu vede così che i piatti con i suoi identificativi non ci sono più.
  • Se cambiano orari, giorni speciali, tempi di preparazione, tipi di ordine, preordine o ordine minimo, arriva store.updated, e store.resumed se c'era una pausa in corso.
  • Per ordini e prenotazioni cancellati non arriva alcun evento.

Puoi reimpostare al massimo cinque volte in dieci minuti, contando anche «Reimposta il menu».

Distinguere prova e reale

livemode compare in GET /me e in ogni evento. Nel locale di prova è false, in ogni locale reale true. Controllalo nel punto in cui la tua app fa qualcosa di reale: un ordine di prova non deve finire in nessuna cassa reale.

// Test and live share one API, one address and one token format. livemode tells them apart.
const me = await fetch("https://api.flavoso.com/v1/me", {
  headers: { Authorization: `Bearer ${accessToken}` },
}).then((r) => r.json());
if (!me.livemode) console.log(`Connected to the test restaurant "${me.tenant.name}"`);

// In the webhook handler: never book a test order into a real till
export function handleEvent(event) {
  if (!event.livemode) return handleTestEvent(event);
  return handleLiveEvent(event);
}

Provare con un locale reale

Già prima dell'approvazione la tua app si collega anche ai locali di cui sei tu stesso titolare. È pensato per l'ultima prova con un menu reale.

A quel punto non è più una prova: livemode è true, i clienti ricevono messaggi e una pausa ferma la vera ricezione degli ordini.

Qualcosa non è chiaro? Scrivi a support@flavoso.com indicando l'identificativo di X-Request-Id. Così troviamo la tua richiesta nel registro.