Skip to main content
Plutôt que de demander au restaurant de créer une clé API et de la coller dans votre produit, votre application peut envoyer l’utilisateur sur EatNow, le laisser choisir un restaurant et approuver les permissions, puis recevoir un jeton. EatNow met en œuvre le flux OAuth 2 code d’autorisation (RFC 6749) avec PKCE S256 (RFC 7636), obligatoire. Le jeton d’accès obtenu est une clé de l’API partenaire pour un restaurant : il fonctionne avec toutes les routes de l’API partenaire permises par ses scopes, exactement comme une clé créée à la main. Il n’expire pas et il n’y a pas de jeton de rafraîchissement ; il cesse de fonctionner lorsqu’il est révoqué.

Enregistrer votre application

Les applications sont enregistrées par EatNow. Envoyez-nous le nom de votre application, son logo, les URI de redirection (comparées caractère par caractère : schéma, hôte, port, chemin et paramètres) et les scopes nécessaires. Vous recevez un client_id et un client_secret, affiché une seule fois : gardez le secret sur votre serveur uniquement.
Une application éditée par EatNow (comme ClubNow) fonctionne sur tous les restaurants. Une application tierce exige en plus l’option API du restaurant, comme une clé créée à la main.

1. Envoyer l’utilisateur sur la page de consentement

Générez un code_verifier (43 à 128 caractères parmi A-Z a-z 0-9 - . _ ~) et un state aléatoire, gardez-les dans la session de l’utilisateur, puis redirigez le navigateur vers :
L’utilisateur se connecte si besoin, voit votre application et les permissions demandées, choisit un restaurant parmi ceux où il peut gérer les intégrations, puis clique sur Autoriser ou Refuser.

2. Traiter le retour

EatNow redirige le navigateur vers votre redirect_uri avec state et soit un code, soit une error : Un client_id inconnu ou désactivé, ou une redirect_uri non enregistrée, n’est jamais redirigé : l’utilisateur voit l’erreur sur EatNow. Le code est valable 5 minutes et une seule fois.

3. Échanger le code contre un jeton

Depuis votre serveur, POST https://app.eat-now.io/api/oauth/token en application/x-www-form-urlencoded (le JSON est aussi accepté). Authentifiez le client par HTTP Basic (client_id:client_secret, chacun encodé comme un formulaire) ou par client_id et client_secret dans le corps, pas les deux.
La réponse porte Cache-Control: no-store. Conservez le jeton côté serveur, avec l’id du restaurant.
Un code présenté une seconde fois est refusé et le jeton qu’il a émis est révoqué. Ne rejouez jamais un échange qui a pu réussir : si la réponse s’est perdue, renvoyez l’utilisateur sur la page de consentement.

4. Appeler l’API partenaire

Avec WEBHOOKS_WRITE, abonnez une URL HTTPS à des événements avec POST /api/partner/v1/webhook-endpoints. Le secret de signature n’est renvoyé que dans cette réponse. Chaque type d’événement demande le scope de lecture correspondant, et les coordonnées ne figurent dans les charges utiles qu’avec RESERVATIONS_READ_SENSITIVE. Voir Gérer les endpoints par l’API.

Cycle de vie d’une connexion

  • Reconnexion. Une nouvelle autorisation pour le même restaurant ne révoque pas le jeton précédent : une fois la nouvelle connexion en place, révoquez l’ancien jeton avec POST /api/oauth/revoke (ci-dessous). Au plus 3 jetons restent actifs par restaurant et par application : l’émission d’un quatrième révoque le plus ancien et supprime les endpoints de webhooks qu’il a créés.
  • Déconnexion par le restaurant. Paramètres › Intégrations › Applications connectées liste les applications connectées ; Déconnecter révoque tous les jetons actifs de l’application sur ce restaurant et supprime leurs endpoints de webhooks. Vos appels reçoivent alors 401 INVALID_AUTHENTICATION : proposez à l’utilisateur de se reconnecter.
  • Déconnexion par votre application. POST /api/oauth/revoke (RFC 7009) avec token et la même authentification du client que pour l’échange. La réponse est 200, même pour un jeton inconnu ou déjà révoqué.