Zum Inhalt springen

OAC Open Standard

Eine anbieterneutrale JSON-Spezifikation für Betriebsdaten — Restaurants wie Geschäfte. Ein einziger Endpunkt liefert alles, was Sie zum Anzeigen, Routen oder Reservieren benötigen.

Schnelles Beispiel

curl https://www.openalacarte.com/api/standard/v1/restaurants/<slug>

Keine Authentifizierung. 5 Minuten am Edge zwischengespeichert. CORS offen — vom Browser aus aufrufbar.

Was die Antwort enthält

restaurant.*

Identität, Kontakt, Währung, Adresse mit lat/lng, Öffnungszeiten pro Tag, was sie akzeptieren (Reservierungen / Lieferung / Abholung).

menu.sections[].items[]

Die primäre aktive Speisekarte des Betriebs (niedrigste `sortOrder`) — Name, Beschreibung, Preis, Währung, Allergene, Bild — nach Abschnitten gruppiert. Ein Betrieb mit mehreren Karten veröffentlicht eine; Payloads mit mehreren Karten sind für v2 vorgesehen.

spec + fetched

Versionierter Umschlag (`openalacarte.standard/v1`) + ISO-Zeitstempel, damit nachgelagerte Caches wissen, was sie haben.

Stabile IDs

Der `slug` des Betriebs ist die kanonische Kennung. Slugs werden bei der Erstellung vergeben und nie umgeschrieben — ein gespeicherter Slug bleibt also gültig.

restaurant.venueType

Entweder `restaurant` oder `shop`, in jeder Antwort. Verzweigen Sie darüber — nicht darüber, welche anderen Felder zufällig leer sind.

Restaurants und Geschäfte

Bäckereien, Metzgereien, Feinkostläden, Gemüsehändler und Weinhandlungen sind auf OpenALaCarte eine eigene Betriebsklasse, und dieser Endpunkt liefert sie ebenfalls aus:

  • Beide Klassen antworten auf demselben Pfad /v1/restaurants/ und kommen unter demselben Schlüssel restaurant der obersten Ebene an. Beides ist festgeschrieben — v1 verspricht, dass dagegen geschriebener Code weiter funktioniert, und ein Umzug der Geschäfte würde genau das brechen.
  • restaurant.venueType ist das Unterscheidungsmerkmal. Es ist in jeder Antwort vorhanden, Sie können es also ohne Rückfallwert auslesen.
  • Ein Geschäft meldet immer acceptsReservations: false. Geschäfte nehmen in keinem Tarif Reservierungen an, das ist also eine Tatsache über die Betriebsklasse — nie ein Restaurant, das Reservierungen abgeschaltet hat.
  • Das Feld cuisine eines Geschäfts trägt seine Handelskategorie (Bäckerei, Metzgerei, Gemüsehändler), und sein menu ist sein Produktkatalog, in derselben Form aus Abschnitten und Artikeln.
  • Ein Geschäft, das von Marktständen statt von einer festen Adresse aus verkauft, veröffentlicht address: null und ein leeres hours-Array. Seine Adresszeile ist ein Lager und seine Verkaufszeiten gehören zu einer Tour — keines von beidem beschreibt eine Tür, an der ein Kunde erscheinen kann.

Versionierung

SemVer auf URL-Ebene. v1.*-Ergänzungen sind abwärtskompatibel (neue Felder, niemals entfernt/umbenannt). Inkompatible Änderungen wandern nach /v2/ mit einer Überschneidung von 12 Monaten.

Veraltungen werden im Entwickler-Änderungsprotokoll dieser Seite + über den Antwort-Header Deprecation angekündigt.

Wo diese Daten ebenfalls erscheinen

Dieselben Betriebsdaten werden in mehreren Formen veröffentlicht. Genau genommen sind dies parallele Darstellungen und keine Konsumenten dieses Endpunkts:

  • Unser JSON-LD für Google Maps Reserve und Apple Business Connect — dieselben Daten, aus der Datenbank erzeugt statt über diesen Feed abgerufen.
  • Eingebettete Widgets (/restaurants/[slug]) — dieselbe Nutzlast, als HTML gerendert.
  • (Zukünftig) Drittanbieter-Integratoren — DoorDash, Uber Eats, Tock — wenn sie kanonische OAC-Daten möchten

Bauen Sie darauf auf? Schreiben Sie an devs@openalacarte.com und wir listen Sie hier auf.

Warum „Open“ Standard?

Weil die Spezifikation dokumentiert + versioniert + stabil ist. Wir verpflichten uns, sie nicht zu brechen. Wenn Sie Code gegen /v1/ schreiben, funktioniert dieser Code weiter — selbst wenn OAC pivotiert, selbst wenn wir übernommen werden.