☰ Μενού · Μενού
Αναφορά API

Μενού

Το QR μενού της επιχείρησης: κατηγορίες, πιάτα, τροποποιητές, τιμές και λίστα εξαντλημένων.

Τα πιάτα, οι κατηγορίες και οι τιμές τροποποιητών μπορούν να έχουν το δικό σας external_id (το SKU σας), μοναδικό ανά επιχείρηση. Όπου μια διαδρομή περιέχει {item} ή {value}, μπορείτε να χρησιμοποιήσετε το δικό μας id ή το δικό σας external_id. Τα ονόματα και οι περιγραφές είναι αντιστοιχίσεις ανά γλώσσα ({"ro": "Zeamă", "en": "Chicken soup"})· προσθέστε ?lang=en σε οποιοδήποτε GET για απλά strings σε μία γλώσσα, με εναλλακτική την κύρια γλώσσα του μενού.

GET/v1/menu
Δικαίωμα: menu:read

Ολόκληρο το μενού ως δέντρο: κατηγορίες, τα πιάτα τους, οι ομάδες τροποποιητών κάθε πιάτου και οι τιμές τους. Οι κρυφές κατηγορίες και τα κρυφά πιάτα παραλείπονται, εκτός αν προσθέσετε ?include_hidden=true.

curl
curl "https://loyaltyfy.io/api/v1/menu?lang=en" \
  -H "Authorization: Bearer sk_test_..."
Απάντηση · 200
{
  "object": "menu",
  "url": "https://loyaltyfy.io/m/your-venue",
  "published": true,
  "currency": "MDL",
  "primary_language": "ro",
  "languages": ["ru", "en"],
  "categories": [
    {
      "object": "menu_category",
      "id": "0b8e4c1d-6f0e-4b8a-9a55-3c1d2e7f9a10",
      "external_id": "CAT-COFFEE",
      "parent_id": null,
      "name": "Coffee",
      "emoji": null,
      "visible": true,
      "items": [
        {
          "object": "menu_item",
          "id": "a48343bd-9f6e-424a-b003-fe790617f4d6",
          "external_id": "1001",
          "category_id": "0b8e4c1d-6f0e-4b8a-9a55-3c1d2e7f9a10",
          "name": "Flat white",
          "description": "Double ristretto, steamed milk",
          "price": 4500,
          "old_price": null,
          "currency": "MDL",
          "available": true,
          "visible": true,
          "photo_url": "https://...",
          "options": [
            {
              "object": "option_group",
              "id": "5c2f...",
              "kind": "addon",
              "name": "Milk",
              "min_select": 0,
              "max_select": 1,
              "values": [
                {
                  "object": "option_value",
                  "id": "9e41...",
                  "external_id": "MOD-OAT",
                  "name": "Oat milk",
                  "price_delta": 800,
                  "available": true,
                  "default": false
                }
              ]
            }
          ],
          "updated_at": "2026-10-06T09:12:44.120+00:00"
        }
      ]
    }
  ]
}
GET/v1/menu/items
Δικαίωμα: menu:read

Επίπεδη λίστα πιάτων χωρίς τροποποιητές, έως 1000, με τη σειρά του μενού. Φίλτρα: ?external_id= για ένα SKU, ?available=false για την τρέχουσα λίστα εξαντλημένων, ?lang=.

GET/v1/menu/items/{item}
Δικαίωμα: menu:read

Ένα πιάτο με τους τροποποιητές του.

POST/v1/menu/items
Δικαίωμα: menu:write

Προσθέτει ένα πιάτο. Με external_id η κλήση επαναλαμβάνεται με ασφάλεια: αν υπάρχει ήδη πιάτο με αυτό το external_id, επιστρέφεται με 200.

categorystring, υποχρεωτικό
Id κατηγορίας ή external_id κατηγορίας. Μια άγνωστη τιμή δημιουργεί κατηγορία με αυτό το όνομα.
nameobject, υποχρεωτικό
Όνομα ανά γλώσσα, τουλάχιστον μία.
priceinteger, υποχρεωτικό
Στη μικρότερη υποδιαίρεση.
external_idstring
Το SKU σας.
descriptionobject
Ανά γλώσσα.
available, visibleboolean
Προεπιλογή true.
curl
curl https://loyaltyfy.io/api/v1/menu/items \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "category": "CAT-SOUPS",
    "external_id": "2040",
    "name": { "ro": "Zeamă", "ru": "Зама", "en": "Chicken soup" },
    "price": 6500
  }'
PATCH/v1/menu/items/{item}
Δικαίωμα: menu:write

Αλλάζει τα price, old_price (εμφανίζεται διαγραμμένη), available, visible, external_id, name ή description. Στέλνει menu.updated.

curl
# the kitchen ran out: hide the "+" button in the menu
curl -X PATCH https://loyaltyfy.io/api/v1/menu/items/2040 \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "available": false }'
POST/v1/menu/items/bulk
Δικαίωμα: menu:write

Έως 500 αλλαγές σε μία κλήση. Κάθε εγγραφή αναφέρεται σε ένα πιάτο με item (id ή external_id) και ορίζει οποιοδήποτε από τα price, old_price, available, visible. Όσες εγγραφές δεν αλλάζουν τίποτα επιστρέφονται στο unchanged, οι άγνωστες στο not_found. Ένα συμβάν menu.updated για όλη την παρτίδα.

curl
curl https://loyaltyfy.io/api/v1/menu/items/bulk \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "item": "1001", "price": 4800 },
      { "item": "2040", "available": false },
      { "item": "3017", "price": 9900, "old_price": 12000 }
    ]
  }'
Απάντηση · 200
{
  "object": "menu_bulk_result",
  "updated": ["1001", "2040"],
  "unchanged": [],
  "not_found": ["3017"],
  "failed": []
}
PATCH/v1/menu/option_values/{value}
Δικαίωμα: menu:write

Αλλάζει μια τιμή τροποποιητή: available, price_delta, external_id.

curl
curl -X PATCH https://loyaltyfy.io/api/v1/menu/option_values/MOD-OAT \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "available": false }'
Ερωτήσεις για μια σύνδεση: api@loyaltyfy.io. Απαντάμε μέσα σε μία εργάσιμη ημέρα.