APRO Dokumentation · Stand 6. November 2026

Menükarten API

Zuletzt aktualisiert: 5. November 2026ca. 3 Min. Lesezeit

PDF erzeugen

Die Menükarten-API liefert die öffentliche Menüstruktur für White-Label-Apps, Selbstbedienungskiosks und QR-Ordering-Flows. Das Lesen erfordert keine Authentifizierung; jede schreibende Aktion schon.

  • Host: my.apro.at
  • Content type: application/json
GET https://my.apro.at/api/v1/locations/{locationId}/menus

Die Antwort ist ein Baum. Ebenen von außen nach innen:

  1. Menu — oberste Gruppierung (z. B. Speisen, Getränke, Angebote).
  2. Category — Abschnitt innerhalb eines Menüs (z. B. Hauptspeisen).
  3. MenuEntry — konkreter verkaufbarer Artikel.
  4. MenuEntryFeature — Beilagen-/Modifier-Gruppe zu einem Artikel.
  5. MenuEntryFeatureValue — einzelne Option innerhalb einer Gruppe.
  6. Hours — Gültigkeitsfenster, die an Menüs und Kategorien hängen.

Beispielantwort (gekürzt)

GET /api/v1/locations/{locationId}/menus

[
  {
    "name": "Speisen",
    "badge": 7,
    "imageUrl": "https://cdn.smorder.at/locations/7236/menus/speisen.jpg",
    "description": "Klassiker aus der österreichischen Küche.",
    "priceName": "Hauspreis",
    "orderableHours": [
      { "days": 254, "startTime": "11:00", "endTime": "22:00" }
    ],
    "categories": [
      {
        "name": "Hauptspeisen",
        "menuEntries": [
          {
            "menuEntryID": 4001,
            "name": "Wiener Schnitzel",
            "badge": 7,
            "price": 22.9,
            "features": [
              {
                "name": "Beilage",
                "groupName": "Beilage",
                "minValuesRequired": 1,
                "maxValuesAllowed": 1,
                "valuesForFree": 1,
                "values": [
                  { "name": "Erdäpfelsalat", "priceAdjustment": 0 },
                  { "name": "Pommes frites",  "priceAdjustment": 0 },
                  { "name": "Reis",           "priceAdjustment": 0 }
                ]
              },
              {
                "name": "Ohne",
                "isDeselectFeature": true,
                "values": [
                  { "name": "Preiselbeeren", "priceAdjustment": 0 }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
]

Vollständiges, ungekürztes Beispiel herunterladen: menu-response.json

1. Menu

Oberste Gruppierung im Menübaum; enthält Kategorien. Beispiele: Speisen, Getränke, Angebote.

Feld

Typ

Beschreibung

name

string

Anzeigename.

badge

enum

Optischer Badge — siehe Badges.

imageUrl

string

URL zum Titelbild.

description

string

Beschreibungstext.

categories

Category[]

Kategorien in diesem Menü.

orderableHours

Hours[]

Zeiten, in denen Bestellungen möglich sind.

preOrderableHours

Hours[]

Zeiten, für die Vorbestellungen möglich sind.

deliverableHours

Hours[]

Zeiten, in denen Zustellung möglich ist.

priceName

string

Zu verwendende Preisebene (z. B. Hauspreis, Happy Hour).

Mutationen (Auth erforderlich):

Aktion

Methode

Pfad

Anlegen

POST

/api/v1/customer/locations/{locationId}/menu

Aktualisieren

PUT

/api/v1/customer/menus/{menuId}

Löschen

DELETE

/api/v1/customer/menus/{menuId}

2. Category

Unterpunkt eines Menüs. Beispiele: Alkoholfreie Getränke, Bier, Hauptspeisen, Nachspeisen.

Feld

Typ

Beschreibung

name

string

Anzeigename.

badge

enum

Siehe Badges.

imageUrl

string

URL zum Titelbild.

description

string

Beschreibungstext.

menuEntries

MenuEntry[]

Einträge in dieser Kategorie.

orderableHours

Hours[]

Bestellzeiten.

preOrderableHours

Hours[]

Vorbestellzeiten.

deliverableHours

Hours[]

Lieferzeiten.

Mutationen (Auth erforderlich):

Aktion

Methode

Pfad

Anlegen

POST

/api/v1/customer/menus/{menuId}/category

Aktualisieren

PUT

/api/v1/customer/menus/{menuId}/category/{id}

Löschen

DELETE

/api/v1/customer/menus/{menuId}/category/{id}

3. MenuEntry

Konkret verkaufbarer Artikel. Beispiele: Wiener Schnitzel, Kaiser Bier.

Feld

Typ

Beschreibung

menuEntryID

integer

Eindeutige ID; wird mit der Bestellung zurückgeschickt.

name

string

Artikelname.

badge

enum

Siehe Badges.

imageUrl

string

URL zum Artikelbild.

subtitle

string

Kurzbeschreibung.

description

string

Beschreibungstext.

features

MenuEntryFeature[]

Beilagen-Gruppen (Größen, Beilagen …).

price

money

Verkaufspreis.

Mutationen (Auth erforderlich):

Aktion

Methode

Pfad

Anlegen

POST

/api/v1/customer/categories/{categoryId}/menuEntry

Aktualisieren

PUT

/api/v1/customer/menuEntries/{id}

Löschen

DELETE

/api/v1/customer/menuEntries/{id}

4. MenuEntryFeature

Beilagen-/Modifier-Gruppe eines MenuEntry. Beispiele: Gebindegröße, Beilage zur Hauptspeise.

Feld

Typ

Beschreibung

name

string

Bezeichnung der Beilage.

description

string

Beschreibungstext.

groupName

string

Gruppierungsschlüssel für seitenweise Anzeige.

isDeselectFeature

boolean

true markiert eine Abwahl-Option (z. B. Ohne Zwiebeln).

maxValuesAllowed

number

Maximalanzahl auswählbarer Optionen.

minValuesRequired

number

Mindestanzahl auswählbarer Optionen.

valuesForFree

number

Anzahl der Optionen ohne Aufpreis.

values

MenuEntryFeatureValue[]

Verfügbare Optionen.

Mutationen (Auth erforderlich):

Aktion

Methode

Pfad

Anlegen

POST

/api/v1/menuentryfeature

Aktualisieren

PUT

/api/v1/menuentryfeature/{featureId}

Löschen

DELETE

/api/v1/menuentryfeature/{featureId}

5. MenuEntryFeatureValue

Einzelne Ausprägung einer Beilage. Beispiele: Bier 0,3 l, Bier 0,5 l, Pommes, Kartoffeln.

Feld

Typ

Beschreibung

name

string

Bezeichnung.

description

string

Beschreibungstext.

imageUrl

string

URL zum Optionsbild.

minAmount

number

Mindeststückzahl bei Auswahl.

maxAmount

number

Maximale Stückzahl.

freeAmount

number

Stückzahl ohne Aufpreis.

priceAdjustment

number

Preisanpassung pro Stück.

Mutationen (Auth erforderlich):

Aktion

Methode

Pfad

Anlegen

POST

/api/v1/menuentryfeaturevalue

Aktualisieren

PUT

/api/v1/menuentryfeaturevalue/{featureValueId}

Löschen

DELETE

/api/v1/menuentryfeaturevalue/{featureValueId}

6. Hours

Gültigkeitsfenster an Menüs oder Kategorien. Sie steuern, wann bestellt, vorbestellt oder geliefert werden darf.

Feld

Typ

Beschreibung

days

enum bitmask

Bitmaske der Wochentage — siehe unten.

startDate

date

Absolutes Startdatum.

endDate

date

Absolutes Enddatum.

startTime

daytime

Startzeit an gültigen Tagen.

endTime

daytime

Endzeit an gültigen Tagen.

exclude

boolean

Fenster ausschließen statt einschließen.

Wochentags-Bitmaske:

Tag

Bit

Wert

Montag

1 << 1

2

Dienstag

1 << 2

4

Mittwoch

1 << 3

8

Donnerstag

1 << 4

16

Freitag

1 << 5

32

Samstag

1 << 6

64

Sonntag

1 << 7

128

Beispiel: Mo–Fr ergibt 2 + 4 + 8 + 16 + 32 = 62.

Badges

Optische Hervorhebungen für Menüs, Kategorien und Einträge:

Bezeichnung

Wert

NEU

1

Empfehlung

2

Reduziert

3

Coming Soon

4

Unser Tip

5

Special

6

Bestseller

7

HOT

8

SALE

9