← gwada.app

Dokumentation

Anmelden

Speisekarte

Aktive Gerichte, Kategorien, Tags und Optionsgruppen als JSON — gleiche Datenbasis wie das Speisekarten-Embed.

Liest die veröffentlichte Speisekarte des Restaurants, das am API-Schlüssel hängt. Es gibt keine Query-Parameter — die Antwort enthält nur aktive Kategorien und Gerichte im aktuell gültigen Datumsfenster.

Modul-ID im Schlüssel: menu. Restaurant muss veröffentlicht sein.

Methoden: GET, OPTIONS · Endpunkt: GET /api/v1/menu

Endpunkt

curl -s "https://gwada.app/api/v1/menu" \
  -H "Authorization: Bearer gwada_sk_live_…" \
  -H "Accept: application/json"

Antwort (Auszug)

{
  "data": {
    "restaurantId": "uuid",
    "name": "Restaurant Name",
    "slug": "mein-slug",
    "accentHex": "#c45c26",
    "currencyCode": "EUR",
    "mainCategories": [
      { "id": "main-1", "name": "Speisen", "active": true }
    ],
    "categories": [
      {
        "id": "cat-1",
        "name": "Vorspeisen",
        "active": true,
        "mainCategoryId": "main-1"
      }
    ],
    "items": [
      {
        "id": "uuid",
        "name": "Vorspeise",
        "description": "Kurztext",
        "price": 12.5,
        "category": "cat-1",
        "imageUrl": "https://…",
        "tags": ["tag-id", "allergen-id"],
        "active": true,
        "listNumber": 1,
        "recipe": null,
        "optionGroupIds": ["group-id"],
        "availableFrom": "2026-01-01",
        "availableTo": null
      }
    ],
    "tagDefinitions": [
      {
        "id": "tag-id",
        "name": "Vegan",
        "active": true,
        "backgroundColor": "#64748b"
      }
    ],
    "optionGroups": [
      {
        "id": "group-id",
        "name": "Beilagen",
        "active": true,
        "minSelect": 0,
        "maxSelect": 2,
        "choices": [
          {
            "id": "choice-id",
            "name": "Pommes",
            "priceDelta": 2.5,
            "active": true
          }
        ]
      }
    ],
    "guestOrderingEnabled": false
  }
}

Wichtige Felder

FeldBedeutung
mainCategories / categoriesHierarchie der Speisekarte
items[].categoryID der Kategorie
items[].tagsTag- und Allergen-IDs (gemergt)
items[].optionGroupIdsVerknüpfte Optionsgruppen
items[].availableFrom / availableToOptionales Sichtbarkeitsfenster (Datum)
optionGroups[].choices[].priceDeltaAufpreis zur Basis
currencyCodeWährung für Preise
guestOrderingEnabledDerzeit immer false (kein Gast-Bestellen über API)

Hinweise

  • Nur aktive Einträge im gültigen Zeitraum — Entwürfe und abgelaufene Gerichte fehlen
  • Keine Pagination und keine Filter-Query auf /api/v1/menu
  • Gleiche Struktur wie das öffentliche Speisekarten-Embed

Gut zu wissen

Fehler

Auth- und Limit-Fehler sind einheitlich — siehe Rate Limits & Fehler. Typisch: 401 invalid_api_key, 403 module_not_enabled, 403 restaurant_not_published, 404 not_found, 429 rate_limit_exceeded.

Weiterlesen