DREI EBENEN: eine KARTE (Speisekarte, Weinkarte, Mittagskarte), darin KATEGORIEN (die Gänge) und darin GERICHTE. Ein Gericht trägt neben `categoryId` auch `menuId`, damit Sie nicht zwei Abfragen brauchen, um zu wissen, auf welcher Karte es steht.
`priceCents` IST DER VERKAUFSPREIS BRUTTO IN GANZEN CENT. Der Name trägt die Einheit, weil das Feld in der Datenbank schlicht `price` heisst — wer daraus Euro liest, schreibt „1200 €" auf die Tafel. `1200` sind zwölf Euro.
DIE KALKULATION DES HAUSES GEHT NIE HINAUS. Einkaufspreis, Nettopreis und Steuersatz sind in keiner Antwort dieses Bereichs enthalten. Der Grund ist der Anwendungsfall: ein Schlüssel für die Speisekarte liegt zwangsläufig im Code einer fremden Website — dort darf der Deckungsbeitrag des Betriebs nicht mitliegen. Selbst `vatRate` fehlt, obwohl es harmlos klingt: aus Bruttopreis und Steuersatz rechnet jeder den Nettopreis in einer Zeile aus.
ALLERGENE WERDEN GEPRÜFT AUSGELIEFERT. Die Spalte ist freier Text; ausgeliefert werden nur bekannte LMIV-Schlüssel, alles andere fällt weg. Eine Website, die daraus eine Allergenkennzeichnung baut, darf keinen erfundenen Schlüssel angezeigt bekommen — falsche Allergenangaben sind ein Gesundheitsrisiko und kein Darstellungsfehler.
`isAvailable` IST DER SCHALTER FÜR DIE TAFEL. `?available=true` liefert genau das, was heute angeboten wird. Ohne den Filter enthält die Liste auch, was gerade aus ist — für eine Website fast nie gemeint. Ein Tippfehler wie `?avaliable=true` ist übrigens 400 und nicht eine Liste mit allem: die Abfrageschemata sind streng, gerade weil dieser Fehler still wäre und wochenlang die falschen Gerichte anzeigte.
`menuId` IM PFAD WIRD ZUERST GEGEN DEN BETRIEB GEPRÜFT. Eine fremde Kennung ergibt 404 und nicht eine leere Liste — sonst wäre der Unterschied zwischen „gibt es nicht" und „gehört jemand anderem" unsichtbar, und die Folgeabfrage hinge allein am Mandantenprädikat.
KEIN PLAN-MERKMAL. Die Speisekarte gehört zur Website UND zur Reservierung; sie hängt im Dashboard an keinem Merkmal, und die API spiegelt das. Ein Betrieb ohne Website-Plan pflegt trotzdem seine Karte.