API FlavosoPremiers pasÉtablissement de test

Établissement de test

Un restaurant gratuit, rien que pour essayer l'API, géré depuis la console : commander et réserver en tant que client, répondre en tant qu'établissement, synchroniser la carte et suivre chaque événement jusqu'à votre application. Il ne peut jamais passer en ligne.

Ce qu'est un établissement de test

Un établissement de test est un restaurant sur Flavoso qui n'existe que pour l'API. Il ne coûte rien, ne nécessite aucun abonnement et est ouvert jour et nuit par défaut. Pour l'API, il est traité comme un établissement en offre Pro : toutes les routes sont ouvertes, réservations incluses.

Chaque compte a au plus un établissement de test, et toutes vos applications le partagent. Il est livré avec une carte d'exemple (catégories, plats et un groupe d'options) et des tables. Vous le gérez dans la console, sous Établissement de test, dans cinq onglets : Établissement, Commandes, Réservations, Carte et Événements.

Créer et utiliser

  1. 1

    Créer

    « Créer l'établissement de test » : un clic, et il est prêt. Dans l'assistant de configuration, c'est la deuxième étape.

    Console › Établissement de test

  2. 2

    Connecter votre application

    Avec un jeton de test ou via le parcours OAuth, en choisissant l'établissement de test. Avant cela, aucun événement n'est créé : sans application connectée disposant du droit correspondant, personne n'écoute.

  3. 3

    Essayer

    Commander et réserver en tant que client, répondre en tant qu'établissement : faire avancer les commandes, mettre en pause, changer les horaires, marquer des plats comme épuisés. Chaque changement parvient à vos applications connectées sous forme d'événement.

    Console › Établissement de test

Comme un vrai établissement

Pour votre application, l'établissement de test se comporte comme un vrai établissement : mêmes routes, mêmes événements, mêmes erreurs. Les commandes et réservations test suivent le même chemin que celles d'un client, et quand vous faites avancer une commande dans la console, vous faites exactement ce que fait la cuisine. Chaque changement parvient à votre application sous forme d'événement, par webhook ou via GET /events. Trois choses diffèrent :

  • livemode vaut false, dans GET /me et dans chaque événement. Un établissement de test ne peut jamais passer en ligne.
  • Les paiements en ligne sont simulés : une commande test que vous créez comme payée en ligne déclenche order.created puis aussitôt order.paid, sans prestataire de paiement et sans argent réel.
  • Il conserve au plus 50 images provenant de image_url. Au-delà, PUT /menu n'en télécharge plus et avertit avec images_capped ; la réinitialisation les supprime.

Les outils

Dans la console, les onglets de l'établissement de test tiennent le rôle des clients, de la cuisine, de l'accueil et du tableau de bord. Ils se mettent à jour d'eux-mêmes dès que quelque chose change dans l'établissement de test, y compris quand c'est votre application qui fait le changement via l'API.

OutilCe qu'il faitOù
Commandes testAu hasard, plusieurs à la fois si vous le souhaitez, ou composées comme le ferait un client : plats avec options, à emporter, en livraison ou sur place, tout de suite ou en précommande, avec pourboire si vous le souhaitez. Déclenche order.created.Console › Établissement de test › Commandes
Payé en ligne (simulé)Option d'une commande composée : elle est aussitôt considérée comme payée en ligne, sans prestataire de paiement et sans argent réel. Déclenche order.created puis aussitôt order.paid.Console › Établissement de test › Commandes
Réservation testUne réservation comme celle d'un client, à l'heure choisie ou au prochain créneau libre. Déclenche reservation.created.Console › Établissement de test › Réservations
Faire avancer et annuler les commandesComme en cuisine : acceptée, en préparation, prête, terminée. Déclenche order.status_changed, et une annulation aussi order.cancelled.Console › Établissement de test › Commandes
Réservations côté établissementLes boutons de l'accueil : confirmer, refuser, arrivé, parti, absent, annuler, supprimer, attribuer une table ; ainsi qu'annuler en tant que client et « Avancer à maintenant ». Déclenche reservation.updated avec changed. Une réservation prise par téléphone ou un client de passage déclenche reservation.created.Console › Établissement de test › Réservations
Horaires et pauseMettre en pause la prise de commandes (de 15 minutes à 3 heures, avec un motif) puis la rouvrir, choisir les horaires d'ouverture parmi trois modèles, fermer aujourd'hui ou demain, activer ou désactiver les modes de commande et la précommande. Déclenche store.paused, store.resumed et store.updated avec changed.Console › Établissement de test › Établissement
Connexions côté établissementDéconnecter une application comme le ferait le propriétaire de l'établissement, ou lui retirer des droits. Déclenche app.disconnected avec le motif owner, ou app.scopes_changed.Console › Établissement de test › Établissement
CarteLa carte telle que GET /menu la montre à une application, avec ses identifiants. Marquer plats et options comme épuisés puis les remettre en vente, changer les prix. Déclenche menu.product.updated et menu.option.updated. Ainsi que tout le nécessaire pour la synchronisation.Console › Établissement de test › Carte
ÉvénementsLes 30 derniers événements, et pour chaque application ce que son webhook en a fait et si elle les a récupérés. Voir Suivre les événements.Console › Établissement de test › Événements
RéinitialiserSupprime commandes et réservations, rétablit la carte d'exemple et les réglages. Les tables et les connexions sont conservées. Voir Réinitialiser.Console › Établissement de test › Établissement
SupprimerSupprime l'établissement de test avec tout son contenu ; les jetons de test de vos applications ne fonctionnent plus. Vous pouvez en créer un nouveau à tout moment.Console › Établissement de test › Établissement
Créer un jeton de testJeton d'accès et jeton de rafraîchissement pour l'établissement de test, sans parcours OAuth : le jeton d'accès est valable une heure, le jeton de rafraîchissement 180 jours ; la console affiche les deux une seule fois. Si vous avez retiré des droits à l'application côté établissement, la connexion les retrouve, ce que signale app.scopes_changed.Console › Application › Identifiants
Explorateur d'APIEssayer n'importe quelle opération sur l'établissement de test, avec requête et réponse. Les corps d'exemple reprennent les identifiants et les horaires de votre établissement de test, par exemple le prochain créneau libre pour POST /reservations.Console › Application › Explorateur d'API
Journal des requêtesChaque requête de votre application, avec, pour l'établissement de test, les corps de la requête et de la réponse.Console › Application › Journal
« Envoyer un événement de test » et « Renvoyer »Envoyer un événement de n'importe quel type à votre webhook, avec des données de l'établissement de test ; renvoyer une livraison. Au total, 10 fois par minute et par application au maximum.Console › Application › Webhooks

Plus de détails sur les outils de votre application sous Outils.

Suivre les événements

L'onglet Événements montre les 30 derniers événements de l'établissement de test. Pour chaque application connectée, il indique ce que son webhook en a fait (livré, en attente de la prochaine tentative, échoué ou ignoré, avec le motif) et si elle l'a déjà récupéré via GET /events.

  • Enveloppe : une ligne se déplie et montre l'événement exactement comme l'application choisie le reçoit.
  • Renvoyer : relancer une livraison, avec le même identifiant d'événement.
  • Envoyer au webhook : envoyer au webhook d'une application un événement sans livraison, par exemple un événement antérieur à la configuration du webhook ou d'un type auquel il n'est pas abonné.
  • Récupérer à partir d'ici : copier l'appel GET /events dont la réponse commence exactement par cet événement.

Les envois sont limités à dix par minute et par application, « Renvoyer » et « Envoyer un événement de test » sous Webhooks compris. Les événements de test et ping ne figurent jamais dans GET /events ; l'onglet le précise à l'endroit concerné.

Réinitialiser

« Réinitialiser l'établissement de test » supprime toutes les commandes et réservations, recrée la carte d'exemple, met fin à une éventuelle pause, efface les jours particuliers et remet dans leur état initial les horaires d'ouverture, les modes de commande, les délais de préparation, la précommande, le montant minimum, le pourboire, la zone de livraison et les réservations. Les images téléchargées depuis image_url sont supprimées. Les tables et les connexions sont conservées.

  • Pour la carte, les événements sont les mêmes qu'avec « Réinitialiser la carte » : menu.*.deleted pour chaque objet supprimé, menu.*.created pour chaque nouvel objet. Une caisse qui reflète la carte voit ainsi que les plats portant ses identifiants ont disparu.
  • Si les horaires, les jours particuliers, les délais de préparation, les modes de commande, la précommande ou le montant minimum changent, vous recevez store.updated, et store.resumed si une pause était en cours.
  • La suppression des commandes et des réservations ne génère aucun événement.

Vous pouvez réinitialiser au plus cinq fois en dix minutes, « Réinitialiser la carte » compris.

Distinguer test et réel

livemode figure dans GET /me et dans chaque événement. Il vaut false dans l'établissement de test et true dans tout établissement réel. Vérifiez-le là où votre application fait quelque chose de réel : une commande test n'a rien à faire dans une vraie caisse.

// 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);
}

Tester avec un établissement réel

Même avant la validation, votre application peut aussi se connecter aux établissements dont vous êtes vous-même propriétaire. C'est prévu pour un dernier test avec une vraie carte.

Ce n'est alors plus un test : livemode vaut true, les clients reçoivent des messages, et une pause interrompt réellement la prise de commandes.

Une question reste ouverte ? Écrivez à support@flavoso.com en indiquant l'identifiant de X-Request-Id. Il nous permet de retrouver votre requête dans le journal.