Verkaufsartikel (authentifiziert)


Datenstruktur von Verkaufsartikeln 

Nachfolgende Liste beschreibt die Daten, welche von der API abgerufen werden oder welche beim Anlegen oder Aktualisieren von Rezepten geschickt werden müssen.

FeldDatentypBeschreibung
idnull, integerID des Artikels; wird von Amadeus 360 generiert. Beim Anlegen eines neuen Artikels wird dieser Wert automatisch gesetzt.
numberintegerArtikelnummer des Artikels
namestringName des Artikels
activebooleanStatus des Artikels (aktiv oder inaktiv)
functionstringArtikelfunktion; kann folgende Werte annehmen:
  • MAIN -> Hauptartikel
  • TENDER -> Tender
  • COURSE_COMPILATION -> Menüzusammenstellung
  • INFORMATION -> Information
detailcategoryintegerNummer der Feinsparte
meccodenull, integerNummer des Meccodes
productUsedoubleWareneinsatz; ist nur ein ReadOnly-Wert. Wird dieses Attribut beim Anlegen oder
pricesarrayArray von Preisen
prices[].activebooleanStatus des Preises (aktiv oder inaktiv)
prices[].priceperunitdoubleAuf zwei Nachkommastellen beschränkter Preis pro Einheit (Standardpreis)
prices[].pricefixeddoubleAuf zwei Nachkommastellen beschränkter fixierter Preis
prices[].menucardintegerNummer des Angebots
prices[].siteintegerNummer der Verkaufsstelle
prices[].vat1null, integerNummer der Steuer 1
prices[].vat2null, integerNummer der Steuer 2
prices[].vat3null, integerNummer der Steuer 3
prices[].pricelevelsarrayArray von Preisen im Zusammenhang mit den Preisleveln
prices[].pricelevels[].numberintegerNummer des Preislevels
prices[].pricelevels[].pricedoublePreis mit zwei Nachkommastellen
attributesarrayArray der Attribute (Zusatzstoffe und Allergene)
attributes[].attributeintegerID des Attributs (siehe nachfolgende Tabelle)
attributes[].valueintegerFalls das Attribut Ja/Nein ist, dann kann der Wert 0 oder 1 sein. Ansonsten kann eine Nummer angegeben werden.


Attributarten

AttributTypEinheitIDErlaubte Werte
mit FarbstoffAdditiv-1int: 0, 1
mit KonservierungsstoffAdditiv-2int: 0, 1
mit AntioxidationsmittelAdditiv-3int: 0, 1
mit GeschmacksverstärkerAdditiv-4int: 0, 1
geschwefeltAdditiv-5int: 0, 1
geschwärztAdditiv-6int: 0, 1
gewachstAdditiv-7int: 0, 1
mit SüßungsmittelAdditiv-8int: 0, 1
Aspartam- PhenylalaninquelleAdditiv-9int: 0, 1
mit PhosphatAdditiv-10int: 0, 1
coffeinhaltigAdditiv-11int: 0, 1
chininhaltigAdditiv-12int: 0, 1
glutenhaltigAllergen-46int: 0, 1
enthält KrebstiereAllergen-47int: 0, 1
enthält EierAllergen-48int: 0, 1
enthält FischAllergen-49int: 0, 1
enthält ErdnüsseAllergen-50int: 0, 1
enthält SojaAllergen-51int: 0, 1
enthält MilchAllergen-52int: 0, 1
enthält SchalenfrüchteAllergen-53int: 0, 1
enthält SellerieAllergen-54int: 0, 1
enthält SenfAllergen-55int: 0, 1
enthält SesamsamenAllergen-56int: 0, 1
enthält Schwefeldioxid/ SulfiteAllergen-57int: 0, 1
enthält LupinenAllergen-58int: 0, 1
enthält WeichtiereAllergen-59int: 0, 1
EnergieNährwertkcal60float
FettNährwertg61float
davon gesättigte FettsäurenNährwertg62float
KohlenhydrateNährwertg63float
davon ZuckerNährwertg64float
BallaststoffeNährwertg65float
EiweißNährwertg66float
SalzNährwertg67float


Alle Rezepte auflisten

Um die Rezepte abzufragen werden keine speziellen Parameter benötigt.


Aufruf:

GET https://login.amadeus360.de/extern/merchandiseman/recipe


Antwort-Beispiel:

[
    {
        "id": "jvAE-T6I7gYp8p0BVREbCcnzmoI",
        "number": 1234,
        "name": "Testartikel",
        "active": false,
        "function": "MAIN",
        "detailcategory": 0,
        "meccode": null,
        "productUse": 0,
        "prices": [
            {
                "active": true,
                "priceperunit": 0,
                "pricefixed": 0,
                "menucard": 0,
                "site": 0,
                "vat1": null,
                "vat2": null,
                "vat3": null,
                "pricelevels": [
                    {
                        "number": 1,
                        "price": "0"
                    },
                    {
                        "number": 2,
                        "price": "0"
                    },
                    {
                        "number": 3,
                        "price": "0"
                    }
                ]
            }
        ],
        "attributes": [
            {
                "attribute": 53,
                "value": 1
            },
            {
                "attribute": 54,
                "value": 1
            }
        ]
    }
]


Einzelnes Rezept abfragen

Mittels ID besteht die Möglichkeit ein einzelnes Rezept abzufragen. Die Struktur bleibt gegenüber der Liste aller Rezepte unverändert. Statt einem Array von Rezepten wird nur ein einzelnes Rezept (Objekt) zurückgegeben.


Aufruf:

GET https://login.amadeus360.de/extern/merchandiseman/recipe/id/{id}

Der Teil {id} muss hierbei durch die Artikel-ID ersetzt werden.


Einzelnes Rezept updaten

Mithilfe einer ID, welche in der URL übergeben wird, kann ein einzelnes Rezept bearbeitet werden.


Aufruf:

PUT https://login.amadeus360.de/extern/merchandiseman/recipe/id/{id}

Der Teil {id} muss hierbei durch die Artikel-ID ersetzt werden. Bei der Abfrage muss der Content-Type auf application/json stehen.


Daten:

{
"number": 22000,
"name": "Testartikel2",
"active": true,
"function": "MAIN",
"detailcategory": 5,
"meccode": 2
}

Alle Attribute, welche ausgegeben werden beim Abfragen der Artikel (siehe Rezept auflisten) können auch aktualisiert werden - mit Ausnahme des Wareneinsatzes (productUse), welcher errechnet wird. Werden bestimmte Attribute nicht übermittelt, so werden diese nicht aktualisiert.


Antwort-Beispiel (Status 200):

Falls alles erfolgreich war, wird der Status 200 zurückgegeben.

{
"status": "success",
"message": "Item update was successful",
"url": "https://login.amadeus360.de/extern/merchandiseman/recipe/id/qDgJh-5JGiFzAQb9cXP3g1giAvI"
}


Mehrere Rezepte anlegen oder bearbeiten

Durch übermitteln einer ähnlichen Struktur, welche beim Auflisten der Rezepte ausgegeben wird, können mehrere Rezepte aktualisiert werden.


Aufruf:

GET https://login.amadeus360.de/extern/merchandiseman/recipe


Daten:

[
    {
        "id": "qDgJh-5JGiFzAQb9scXP3g1giAvI",
        "number": 22000,
        "name": "Testartikel2",
        "active": true,
        "function": "MAIN",
        "detailcategory": 5,
        "meccode": 2
    }, {
        "number": 22001,
        "name": "Testartikel3",
        "active": true,
        "function": "MAIN",
        "detailcategory": 5,
        "meccode": 2
    },
]

Hierbei gelten die gleichen Regeln wie beim Bearbeiten eines einzelnen Artikels. Zusätzlich besteht die Möglichkeit neue Rezepte hinzuzufügen, falls keine ID übermittelt wird. Werden neue Artikel mit fehlenden Attributen angegeben, dann werden die gleichen Standardwerte wie beim Anlegen eines neuen Artikels über die Oberfläche von Amadeus 360 verwendet.


Antwort-Beispiel (Status 201):

Falls alles erfolgreich war, wird der Status 201 zurückgegeben.

{
    "status": "success",
    "message": "Item create or update was successful"
}


Fehlerbehandlung für Rezepte

Nachfolgende Liste gibt einen Überblick über die möglichen Fehler, die von Amadeus 360 zurückgegeben werden.


Antwort-Beispiel (Status 400):

Falls der Content-Type falsch gesetzt wurde, oder keine Daten übermittelt wurde, wird der Fehler 400 ausgegeben.

{
"status": "error",
"message": "Content-Type is not application/json"
}


Antwort-Beispiel (Status 403):

Falls das Hochladen von Artikeln nicht als Modul in Amadeus 360 gebucht ist, dann wird der Fehler 403 ausgegeben.

{
"status": "error",
"message": "Module is not enabled for payment"
}

Möglicher Fehler bei: POST, PUT


Antwort-Beispiel (Status 404):

Falls das Rezept nicht gefunden wird, erhält man bei der Abfrage den Status 404.

{
"status": "error",
"message": "Resource not found"
}

Möglicher Fehler bei: GET (mit ID), PUT


Antwort-Beispiel (Status 405):

Falls etwas anderes als GET, PUT oder POST übergeben wird, antwortet der Server mit Status 405.

{
"status": "error",
"message": "Verb not allowed"
}


Antwort-Beispiel (Status 500):

Falls ein oder mehrere Artikel wegen eines Serverfehlers nicht gespeichert werden können, wird Status 500 zurückgegeben.

{
"status": "success",
"message": "Processing data (partially) failed"
}