In der LINA Third Party API (TPAPI) werden an den verschiedenen Endpunkten Daten gelesen/geschrieben. Die Webkasse hat direkte Befehle zum Senden einer Bestellung, oder die Kasse kann komplett gesteuert werden.

Das ratelimit der Webkasse kann durch die Lizenzierung mehrerer Module erhöht werden. Nach der Freigabe für den Zugriff, erfolgreiche Anmeldung und Konfiguration der Webkasse werden Befehle in Amadeus SQL (ASQL) meist auf dem abgefragten Tisch ausgeführt. Wie die Webkasse in der LINA Kasse eingerichtet wird, finden Sie hier (identisch zu LINA Shop): Kassen konfigurieren.


Der Aufruf für die LINA Data API ist geändert, die alte URL amadeus360 ist noch erreichbar. Bitte auf die neue URL umstellen.

https://api.lina.de/ ...



VoraussetzungKonfigurationErgebnis
Lizenzierung LINAEndpunkt "Webkasse POS-API"monatliche Buchung
Client Schnittstellemit URIClient-ID und Access-Token
Client-BerechtigungDaten lesen/schreibenLese- /Schreibberechtigung Client
Scopewebcashregister_write
Nutzer-BerechtigungAnmeldung mit BenutzerSchreiben der Daten mit den Berechtigungen des Benutzers
Konfiguration WebkasseKassen konfigurierenTPAPI kann ASQL Befehle über das AOI an die Kasse senden und Aktionen (meist auf dem Tisch) ausführen


ratelimit und Erweiterung

In der LINA Data API "Webkasse" ist ein ratelimit von 100 Datenanfragen pro Laden und 15 Minuten gesetzt. 

Das ratelimit wird als gleitende Summe berechnet. Alle Anfragen innerhalb der letzten 15 min werden summiert, keine anderen Limits. Zusätzliche Anfragen werden von unserer Firewall geblockt.
Die Fehlermeldung beim Überschreiten des ratelimit ist 

HTTP-Code 429, status: error, message: "API-Calls exhausted: 100 Calls per 15 minutes" 

Davon ist die Authentifizierung nicht betroffen.

Dieses ratelimit kann erweitert werden durch die mehrfache Lizenzierung von LINA Data POS (Webkasse). Mit jeder Buchung wird das ratelimit um die gleiche Zahl von Anfragen erweitert auf maximal 1000 Anfragen je 15 Minuten.


Zurück zum Inhaltsverzeichnis

Verfügbarkeitsprüfung (Ping)

Um die Erreichbarkeit einer Kasse zu prüfen, gibt es einen eigenen Endpunkt ping. Es sind keine weiteren Header oder Parameter notwendig.

Aufruf ping:

GET ... /extern/webcashregister/ping

Antwort-Beispiel:

{
    "status": "success",
    "pos_online": false,
    "last_send": null
}

Bestellen mit LINA POS 

 In der LINA POS Kasse selbst werden Befehle in Amadeus SQL (ASQL) ausgeführt. Meist werden die ASQL Befehle zum Tisch angewendet, um zu bonieren, zu reservieren, Kundendaten zu schreiben, zu bezahlen. Für vollständige und bezahlte Bestellungen reicht der placeorder Befehl aus. Die Basis-URL webcashregister lautet wie folgt:

... /extern/webcashregister

Alle Daten können erst nach erfolgreicher Authentifizierung abgefragt werden. Antwort ist immer ein JSON-Objekt.

API-Doku: https://documenter.getpostman.com/'id' 

ASQL-Befehl senden (command)

Mögliche ASQL Befehle: ASQL Programmierung: Übersicht. Der Aufruf erfolgt mit POST, die ASQL Befehle werden als Objekt gesendet, siehe Dokumentation im Postman.

Aufruf command:

POST ... /extern/webcashregister/command

POST-Parameter ASQL:

  • command: ASQL-Befehl, der ausgeführt werden soll; Bsp.: table 999;
  • terminal: Kassennummer der Kasse, an die der ASQL-Befehl gesendet wird

Antwort-Beispiel (Fehler: Kasse nicht online):

{
    "status": "error",
    "message": "pos not online"
}

Antwort-Beispiel (Kasse online):

{
  "status": "success",
  "response": {
    "document": {
      "name": "screen",
      "messageid": "1",
      "section": [
        {
          "name": "status",
          "dataset": [
            {
              "waiter.name": "AmaGo",
              "organization.currency": "EUR",
              "organization.businessdate": "07.04.2020",
              "terminal.tapster": "inactive",
              "table.balance": 0,
              "pricelevel.number": 1,
              "table.pickupdatetime": "2020-04-07T09:13:00.000+02:00",
              "profile.name": "Außer Haus",
              "table.adults": 0,
              "table.sales": 17.8,
              "table.kids": 0,
              "terminal.number": 2,
              "site.name": "Außer Haus",
              "terminal.name": "AmadeusGo",
              "table.number": "A121",
              "table.firstbookdatetime": "2020-04-07T09:13:01.000+02:00",
              "table.ordertype": "Abholung",
              "waiter.number": 10,
              "execution.severity": "I",
              "situation.number": 1,
              "situation.name": "Außer Haus",
              "execution.code": 23600070,
              "organization.name": "Gastro MIS DEMO",
              "pricelevel.name": "Standardpreis",
              "site.color": "notset",
              "master": false,
              "table.lastbookdatetime": "2020-04-07T09:13:01.000+02:00",
              "table.infants": 0,
              "execution.message": "17.8 Bar gegeben.",
              "terminal.status": "open",
              "site.number": 1,
              "organization.number": 2571,
              "situation.color": "notset",
              "profile.number": 2
            }
          ]
        },
        {
          "name": "table.details",
          "dataset": [
            {
              "article.number": 382,
              "vat.name": "7% Mwst",
              "mecgroup.colorcode": "#00bfff",
              "sortorder.name": "Ohne Sortierung",
              "mecgroup.color": "hellblau",
              "article.name": "Hähnchenbrust",
              "type": "article",
              "site.name": "Außer Haus",
              "action": {
                "standard": "book plu 382;"
              },
              "mec.number": 140,
              "finance.categorynumber": 1,
              "sortorder.number": 0,
              "mecgroup.number": 3,
              "article.count": 1,
              "mecgroup.name": "Speisen",
              "article.balance": 17.8,
              "finance.categoryname": "Umsatz",
              "mec.name": "Fleischgerichte",
              "finance.name": "Boniert",
              "site.color": "notset",
              "tabledata.id": "148",
              "finance.number": 1,
              "article.amount": 1,
              "vat.factor": 7,
              "article.priceperunit": 17.8,
              "site.number": 1,
              "finance.categorytype": "SALES"
            },
            {
              "finance.number": 20,
              "finance.balance": -17.8,
              "type": "finance",
              "finance.categoryname": "Bargeld",
              "finance.categorynumber": 20,
              "finance.name": "Bar gegeben",
              "tabledata.id": "149",
              "finance.categorytype": "CASH"
            }
          ]
        },
        {
          "name": "bill.list",
          "dataset": [
            {
              "bill.number": 0,
              "bill.name": "Kein Druck",
              "action": {
                "standard": "print 0;table;"
              },
              "type": "bill"
            },
            {
              "bill.number": 1,
              "bill.name": "Rechnung",
              "action": {
                "standard": "print 1;table;"
              },
              "type": "bill"
            },
            {
              "bill.number": 2,
              "bill.name": "Bewirtungsbeleg",
              "action": {
                "standard": "print 2;table;"
              },
              "type": "bill"
            }
          ]
        }
      ]
    }
  }
}