APRO Dokumentation · Stand 6. November 2026

Online Menu API

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

PDF erzeugen

The Online Menu API serves the public menu structure for white-label apps, self-order kiosks and QR-ordering flows. Reading is unauthenticated; every mutating call requires authentication.

  • Host: my.apro.at
  • Content type: application/json

Fetching a menu

GET https://my.apro.at/api/v1/locations/{locationId}/menus

The response is a tree. Levels, from outermost to innermost:

  1. Menu — top-level grouping (e.g. Food, Drinks, Deals).
  2. Category — section inside a menu (e.g. Mains).
  3. MenuEntry — a concrete sellable item.
  4. MenuEntryFeature — add-on / modifier group on an item.
  5. MenuEntryFeatureValue — one option inside a feature.
  6. Hours — availability windows that can attach to menus and categories.

Example response (abridged)

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 }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
]

Download the full, unabridged sample: menu-response.json

1. Menu

Outermost grouping in the menu tree; contains categories. Examples: Food, Drinks, Deals.

Field

Type

Description

name

string

Display name.

badge

enum

Visual badge — see Badges.

imageUrl

string

Header image URL.

description

string

Descriptive text.

categories

Category[]

Categories inside this menu.

orderableHours

Hours[]

When ordering is allowed.

preOrderableHours

Hours[]

When pre-ordering is allowed.

deliverableHours

Hours[]

When delivery is allowed.

priceName

string

Price level to use (e.g. House, Happy Hour).

Mutations (auth required):

Action

Method

Path

Create

POST

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

Update

PUT

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

Delete

DELETE

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

2. Category

Sub-section of a menu. Examples: Non-alcoholic drinks, Beer, Mains, Desserts.

Field

Type

Description

name

string

Display name.

badge

enum

See Badges.

imageUrl

string

Header image URL.

description

string

Descriptive text.

menuEntries

MenuEntry[]

Entries inside this category.

orderableHours

Hours[]

When ordering is allowed.

preOrderableHours

Hours[]

When pre-ordering is allowed.

deliverableHours

Hours[]

When delivery is allowed.

Mutations (auth required):

Action

Method

Path

Create

POST

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

Update

PUT

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

Delete

DELETE

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

3. MenuEntry

A concrete sellable item. Examples: Wiener Schnitzel, Kaiser Bier.

Field

Type

Description

menuEntryID

integer

Unique entry ID; sent back with orders.

name

string

Item name.

badge

enum

See Badges.

imageUrl

string

Item image URL.

subtitle

string

Short tagline.

description

string

Descriptive text.

features

MenuEntryFeature[]

Modifier groups (sides, sizes…).

price

money

Selling price.

Mutations (auth required):

Action

Method

Path

Create

POST

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

Update

PUT

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

Delete

DELETE

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

4. MenuEntryFeature

A modifier group for a menu entry. Examples: Size, Side for main.

Field

Type

Description

name

string

Feature label.

description

string

Descriptive text.

groupName

string

Grouping key for paginated rendering.

isDeselectFeature

boolean

true marks a "leave out" toggle (e.g. no onions).

maxValuesAllowed

number

Max options selectable.

minValuesRequired

number

Min options required.

valuesForFree

number

Options included at no extra charge.

values

MenuEntryFeatureValue[]

Available options.

Mutations (auth required):

Action

Method

Path

Create

POST

/api/v1/menuentryfeature

Update

PUT

/api/v1/menuentryfeature/{featureId}

Delete

DELETE

/api/v1/menuentryfeature/{featureId}

5. MenuEntryFeatureValue

One concrete option inside a feature. Examples: Beer 0.3 l, Beer 0.5 l, Fries, Potatoes.

Field

Type

Description

name

string

Option label.

description

string

Descriptive text.

imageUrl

string

Option image URL.

minAmount

number

Minimum quantity required when selected.

maxAmount

number

Maximum quantity allowed.

freeAmount

number

Quantity included at no extra charge.

priceAdjustment

number

Price change per selected unit.

Mutations (auth required):

Action

Method

Path

Create

POST

/api/v1/menuentryfeaturevalue

Update

PUT

/api/v1/menuentryfeaturevalue/{featureValueId}

Delete

DELETE

/api/v1/menuentryfeaturevalue/{featureValueId}

6. Hours

Availability windows attached to menus or categories. They gate ordering, pre-ordering and delivery.

Field

Type

Description

days

enum bitmask

Bitmask of weekdays — see below.

startDate

date

Absolute start.

endDate

date

Absolute end.

startTime

daytime

Start time on matching days.

endTime

daytime

End time on matching days.

exclude

boolean

Invert the window — exclude instead of include.

Weekday bitmask:

Day

Bit

Value

Monday

1 << 1

2

Tuesday

1 << 2

4

Wednesday

1 << 3

8

Thursday

1 << 4

16

Friday

1 << 5

32

Saturday

1 << 6

64

Sunday

1 << 7

128

Example: Mon–Fri is 2 + 4 + 8 + 16 + 32 = 62.

Badges

Visual flags for menus, categories and entries. Values:

Label

Value

NEW

1

Recommended

2

Reduced

3

Coming Soon

4

Our Tip

5

Special

6

Bestseller

7

HOT

8

SALE

9