{
  "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
  "_quelle": {
    "default": {
      "sha256": "ca4d4b3b682333ac6dc4345e5876323c60ee7e00896ccbe1c5f3d49ce37a52aa",
      "head": [],
      "inputsSha256": "f48c36d18384af53982b84dcdcff2d9e95f8be3756e3eb39d22977cff454715a",
      "backendPackage": "@kreiseck/kasseneck-api@0.35.0",
      "inputs": [
        "functions-kasse/test/unit/fixtures/kassen-welt.js",
        "functions/gemeinsam/api-rand.js",
        "functions/gemeinsam/api-vokabular-v3.js",
        "functions/test/unit/fixtures/kassenweg/faelle-v3.js",
        "functions/test/unit/fixtures/kassenweg/faelle.js",
        "functions/test/unit/fixtures/kassenweg/welt.js",
        "functions/test/unit/fixtures/vertrag-v3/ablage.js",
        "functions/test/unit/fixtures/vertrag-v3/kassenweg.js",
        "functions/test/unit/v3-vertrag-export-kassenweg.test.js"
      ]
    },
    "kasse": {
      "sha256": "de42edbec8757863eadac3cefca79e66cecf17186ee7ce617f5ea70baa53a99c",
      "head": [
        "channel",
        "note"
      ],
      "inputsSha256": "a368b145b5d753a33042488972e79bffaecb436cf72ce0fae1854842adf7e1d0",
      "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
      "inputs": [
        "functions-kasse/gemeinsam/api-rand.js",
        "functions-kasse/gemeinsam/api-vokabular-v3.js",
        "functions-kasse/test/unit/fixtures/kassen-faelle-v3.js",
        "functions-kasse/test/unit/fixtures/kassen-faelle.js",
        "functions-kasse/test/unit/fixtures/kassen-welt.js",
        "functions-kasse/test/unit/v3-vertrag-export.test.js",
        "functions/test/unit/fixtures/vertrag-v3/ablage.js",
        "functions/test/unit/fixtures/vertrag-v3/kassenweg.js"
      ]
    }
  },
  "channel": "app",
  "note": "Kanal app: kasse.kasseneck.at/api/v3/<name>. Je Endpunkt die Faelle der Kassen-Welt (Erfolg und jeder Fehler mit Code), Anfrage mit englischen Parametern. sig, signaturePreviousReceipt und die Signatursegmente des QR-Codes sind Platzhalter; Zugangsdaten (Tokens, Geraetegeheimnisse, PINs, fullReceiptId) sind formgerecht und erkennbar falsch ersetzt (EXAMPLE).",
  "endpoints": {
    "pairRegisterDevice": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "none",
          "params": {
            "code": "EXMPXV29"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "code_missing",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: code",
            "data": {
              "errors": [
                {
                  "field": "code",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "code_no_text",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": 12345678
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: code",
            "data": {
              "errors": [
                {
                  "field": "code",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "code_format",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "exmpxwe6"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code unbekannt.",
            "data": {
              "code": "pairing_code_unknown"
            },
            "code": "pairing_code_unknown"
          }
        },
        {
          "case": "code_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPNDRY"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code unbekannt.",
            "data": {
              "code": "pairing_code_unknown"
            },
            "code": "pairing_code_unknown"
          }
        },
        {
          "case": "code_revoked",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPJYCX"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code unbekannt.",
            "data": {
              "code": "pairing_code_unknown"
            },
            "code": "pairing_code_unknown"
          }
        },
        {
          "case": "code_used",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPE3QL"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code wurde bereits verwendet.",
            "data": {
              "code": "pairing_code_used"
            },
            "code": "pairing_code_used"
          }
        },
        {
          "case": "code_expired",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPTMWM"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code ist abgelaufen.",
            "data": {
              "code": "pairing_code_expired"
            },
            "code": "pairing_code_expired"
          }
        },
        {
          "case": "code_without_cashregister",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMP66A2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kopplungs-Code unbekannt.",
            "data": {
              "code": "pairing_code_unknown"
            },
            "code": "pairing_code_unknown"
          }
        },
        {
          "case": "cashregister_decommissioned",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPZ89M"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Registrierkasse nicht gefunden.",
            "data": {
              "code": "cashregister_not_found"
            },
            "code": "cashregister_not_found"
          }
        },
        {
          "case": "permanent_in_use",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPCN9S",
            "label": "Neues Tablet"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist auf „Tablet vorne“ geöffnet. Hier übernehmen schließt sie dort.",
            "data": {
              "deviceLabel": "Tablet vorne",
              "code": "device_takeover_required"
            },
            "code": "device_takeover_required"
          }
        },
        {
          "case": "permanent_takeover",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPCN9S",
            "label": "Neues Tablet",
            "takeover": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "Theke 1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "license_full",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPXV29"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "4 von 2 Lizenzplätzen dieser Kasse sind vergeben – zuerst ein Gerät entkoppeln (Kassen-Geräte) oder Lizenzen erweitern.",
            "data": {
              "pairedDevices": 4,
              "licenses": 2,
              "code": "licenses_exhausted"
            },
            "code": "licenses_exhausted"
          }
        },
        {
          "case": "license_full_singular",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPXV29"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "4 von 1 Lizenzplatz dieser Kasse sind vergeben – zuerst ein Gerät entkoppeln (Kassen-Geräte) oder Lizenzen erweitern.",
            "data": {
              "pairedDevices": 4,
              "licenses": 1,
              "code": "licenses_exhausted"
            },
            "code": "licenses_exhausted"
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPXV29",
            "label": "Tablet Bar",
            "client": {
              "userAgent": "Mozilla/5.0 Kasse",
              "platform": "iPad",
              "language": "de-AT",
              "tz": "Europe/Vienna",
              "app": "kasse-app/1.0.3+34",
              "screen": {
                "w": 1024,
                "h": 768
              }
            },
            "geo": {
              "lat": 48.2083,
              "lng": 16.3739,
              "acc": 10
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "Theke 1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "success_lowercase",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": " exmpxv29 "
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "Theke 1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "success_without_cashregister_label",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPXV29"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "KASSE1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "success_test_environment",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "EXMPXV29"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "test_kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt (Test)",
              "cashregisterLabel": "Test-Theke",
              "testEnvironment": true
            }
          }
        },
        {
          "case": "body_as_text",
          "method": "POST",
          "caller": "none",
          "params": {
            "$body": "{\"params\":{\"code\":\"EXMPXV29\"}}"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "Theke 1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "params_as_text",
          "method": "POST",
          "caller": "none",
          "params": {
            "$body": {
              "params": "{\"code\":\"EXMPXV29\"}"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "deviceId": "auto1",
              "deviceSecret": "EXAMPLEB59E65C4AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
              "ownerUid": "kw_betrieb1",
              "cashregisterId": "KASSE1",
              "companyName": "Café Welt",
              "cashregisterLabel": "Theke 1",
              "testEnvironment": false
            }
          }
        },
        {
          "case": "body_broken",
          "method": "POST",
          "caller": "none",
          "params": {
            "$body": "{kein json"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "code": "validation",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "params",
                  "message": "Kein JSON-Objekt."
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listRegisterUsersForDevice": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: ownerUid, deviceId, deviceSecret",
            "data": {
              "errors": [
                {
                  "field": "deviceId",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "deviceSecret",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "format",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "a/b",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE2D711642AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gibtsnicht",
            "deviceSecret": "EXAMPLEAE539BF8AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "secret_wrong",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLEB3C3E0F5AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_locked",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gesperrt",
            "deviceSecret": "EXAMPLE2E5E4EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "success_only_pin",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "left",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm58",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": true
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "success_select",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "select_user",
              "users": [
                {
                  "id": "ru_chef",
                  "name": "Anna Chef",
                  "kind": "person"
                },
                {
                  "id": "ru_kellner",
                  "name": "Ben Kellner",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_alt",
                  "name": "Dora Alt",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_gesperrt_pin",
                  "name": "Emil Sperre",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_fremd",
                  "name": "Fritz Fremd",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_ohnestorno",
                  "name": "Gerda Ohne",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "geraet_bar",
                  "name": "Bar-Tablet",
                  "kind": "device",
                  "pinPolicyOutdated": true
                }
              ],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": true
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "cashregister_decommissioned",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_kasse2",
            "deviceSecret": "EXAMPLE4897525EAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "select_user",
              "users": [
                {
                  "id": "ru_chef",
                  "name": "Anna Chef",
                  "kind": "person"
                },
                {
                  "id": "ru_kellner",
                  "name": "Ben Kellner",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_alt",
                  "name": "Dora Alt",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_gesperrt_pin",
                  "name": "Emil Sperre",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_fremd",
                  "name": "Fritz Fremd",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "ru_ohnestorno",
                  "name": "Gerda Ohne",
                  "kind": "person",
                  "pinPolicyOutdated": true
                },
                {
                  "id": "geraet_bar",
                  "name": "Bar-Tablet",
                  "kind": "device",
                  "pinPolicyOutdated": true
                }
              ],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": false,
                "reason": "Registrierkasse wurde außer Betrieb genommen und bei FinanzOnline abgemeldet — es können keine Belege mehr erstellt werden."
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "cashregister_without_signature",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_kasse3",
            "deviceSecret": "EXAMPLEC41B43CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": false,
                "reason": "Der Kasse ist keine Signaturkarte zugeordnet — bitte im Panel zuweisen."
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "cashregister_without_start_receipt",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_kasse4",
            "deviceSecret": "EXAMPLE972CD15BAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": false,
                "reason": "Der Startbeleg fehlt noch — die Kasse ist nicht in Betrieb genommen. Startbeleg im Panel erstellen."
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "cashregister_with_receipt_without_marker",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_kasse4",
            "deviceSecret": "EXAMPLE972CD15BAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": true
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "cashregister_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_kassex",
            "deviceSecret": "EXAMPLE79ECF1E3AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": false,
                "reason": "Registrierkasse nicht gefunden."
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "legacy_without_cashregister_with_lock",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#222222",
                  "theme": "night",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "right",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm80",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": "Hauptplatz 1",
                "zip": "1010",
                "city": "Wien",
                "is_small_business": false,
                "footer1": "Danke für Ihren Besuch",
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": true,
              "cashregister": {
                "ready": true
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "account_without_settings",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "loginMode": "pin",
              "users": [],
              "policy": {
                "length": 4,
                "charset": "digits"
              },
              "settings": {
                "business": {
                  "logoText": "K",
                  "logoEnabled": true,
                  "logoSize": "M",
                  "watermark": "login",
                  "color": "#136B6B",
                  "theme": "clear",
                  "fontSize": "M",
                  "settingsFontSize": "S",
                  "tileStyle": "stripe",
                  "clock": true,
                  "lockScreen": true,
                  "staffPhotos": true,
                  "autoLogoutMinutes": 0,
                  "logoutAfterSale": false,
                  "fastLogin": true,
                  "showPrices": true,
                  "showVat": false,
                  "emoji": true,
                  "categoryColors": true,
                  "customAmountAllowed": true,
                  "vatRates": {
                    "0": true,
                    "10": true,
                    "13": true,
                    "19": false,
                    "20": true,
                    "4.9": true
                  },
                  "quantity": "x",
                  "note": false,
                  "search": false,
                  "discount": "off",
                  "payCash": true,
                  "payCard": false,
                  "paySplit": false,
                  "cardProvider": "none",
                  "tip": false,
                  "tipMode": "both",
                  "tipSteps": {
                    "5": true,
                    "10": true,
                    "15": false,
                    "20": false
                  },
                  "tipSplit": true,
                  "change": true,
                  "tipChips": [
                    5,
                    10
                  ],
                  "exactCash": false,
                  "checkoutMode": "panel",
                  "receiptOutput": "ask",
                  "doneScreenSeconds": 0,
                  "logoImage": "",
                  "watermarkSide": "center",
                  "watermarkX": 50,
                  "watermarkY": 50,
                  "watermarkStrength": 6,
                  "logoScale": "M",
                  "watermarkScale": "M",
                  "glass": true,
                  "hints": true,
                  "discountChips": [
                    5,
                    10,
                    15,
                    20
                  ]
                },
                "device": {
                  "layout": "left",
                  "categoryPosition": "top",
                  "extraColumns": 0,
                  "tileHeight": "M",
                  "touch": false,
                  "shortcuts": {
                    "checkout": [
                      "Enter"
                    ],
                    "complete": [
                      "Enter"
                    ],
                    "cancel": [
                      "Escape"
                    ],
                    "customAmount": [
                      "Mod+D"
                    ],
                    "cash": [
                      "Mod+B"
                    ],
                    "card": [
                      "Mod+K"
                    ],
                    "exactAmount": [
                      "Mod+P"
                    ],
                    "receipts": [
                      "Mod+J"
                    ],
                    "undoLast": [
                      "Mod+Backspace"
                    ],
                    "settings": [
                      "Mod+S"
                    ],
                    "logout": [
                      "Mod+L"
                    ],
                    "tip": [
                      "Mod+G"
                    ],
                    "fullscreen": [
                      "Mod+F"
                    ],
                    "clearTendered": [
                      "Mod+C"
                    ],
                    "clearCart": [
                      "Mod+C"
                    ],
                    "splitPayment": []
                  },
                  "printerEnabled": false,
                  "printerType": "sdp",
                  "printerIp": "",
                  "printerPort": 9100,
                  "printerBluetoothId": "",
                  "printerName": "",
                  "printerId": "",
                  "printerDeviceId": "local_printer",
                  "connectPrinterId": "",
                  "paperSize": "mm58",
                  "codePage": "CP1252",
                  "cut": "partial",
                  "qrMode": "auto",
                  "drawerEnabled": false,
                  "drawerAutoOpen": "cash",
                  "terminalIp": "",
                  "terminalPort": 8080,
                  "terminalTid": "",
                  "terminalVia": "direct",
                  "terminalType": "none",
                  "shortcutHints": true
                }
              },
              "receiptHeader": {
                "company": "Café Welt",
                "phone": "+43 1 234 56",
                "street": null,
                "zip": null,
                "city": null,
                "is_small_business": false,
                "footer1": null,
                "footer2": null,
                "footer3": null,
                "footer4": null,
                "thanks_message": "Bis bald",
                "logo_url": "https://example.invalid/logo.png",
                "vatId": "ATU12345678",
                "taxNumber": "12-345/6789"
              },
              "locationLock": false,
              "cashregister": {
                "ready": true
              },
              "testEnvironment": false
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listRegisterSessionsForDevice": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: ownerUid, deviceId, deviceSecret",
            "data": {
              "errors": [
                {
                  "field": "deviceId",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "deviceSecret",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "format",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "x y",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLEB3C3E0F5AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "without_cashregister_binding",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "success_only_pin",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "licenses": 5,
              "sessions": [
                {
                  "id": "sess_chef",
                  "deviceId": "dev_pin",
                  "deviceLabel": "Tablet vorne",
                  "startedAt": 1790409000000,
                  "expiresAt": 1790409660000,
                  "own": true
                },
                {
                  "id": "sess_kellner",
                  "deviceId": "dev_auswahl",
                  "deviceLabel": "Tablet hinten",
                  "startedAt": 1790409300000,
                  "expiresAt": 1790409660000,
                  "own": false
                }
              ]
            }
          }
        },
        {
          "case": "success_select",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "licenses": 5,
              "sessions": [
                {
                  "id": "sess_chef",
                  "deviceId": "dev_pin",
                  "deviceLabel": "Tablet vorne",
                  "startedAt": 1790409000000,
                  "expiresAt": 1790409660000,
                  "userName": "Anna Chef",
                  "own": false
                },
                {
                  "id": "sess_kellner",
                  "deviceId": "dev_auswahl",
                  "deviceLabel": "Tablet hinten",
                  "startedAt": 1790409300000,
                  "expiresAt": 1790409660000,
                  "userName": "Ben Kellner",
                  "own": true
                }
              ]
            }
          }
        },
        {
          "case": "success_without_license_field",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "licenses": 1,
              "sessions": [
                {
                  "id": "sess_chef",
                  "deviceId": "dev_pin",
                  "deviceLabel": "Tablet vorne",
                  "startedAt": 1790409000000,
                  "expiresAt": 1790409660000,
                  "userName": "Anna Chef",
                  "own": false
                },
                {
                  "id": "sess_kellner",
                  "deviceId": "dev_auswahl",
                  "deviceLabel": null,
                  "startedAt": 1790409300000,
                  "expiresAt": 1790409660000,
                  "userName": "Ben Kellner",
                  "own": false
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "registerUserLogin": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "pin_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: pin",
            "data": {
              "errors": [
                {
                  "field": "pin",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "cashregister_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": ""
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: cashregisterId",
            "data": {
              "errors": [
                {
                  "field": "cashregisterId",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "format",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "../x",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEB3C3E0F5AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "user_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_gibtsnicht",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "user_locked",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_gesperrt",
            "pin": "0003",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieser Benutzer ist gesperrt.",
            "data": {
              "code": "user_disabled"
            },
            "code": "user_disabled"
          }
        },
        {
          "case": "user_lockout_steps",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_gesperrt_pin",
            "pin": "0004",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Zu viele Fehlversuche. Bitte 25 Sekunden warten.",
            "data": {
              "retryAfterSec": 25,
              "code": "too_many_attempts"
            },
            "code": "too_many_attempts"
          }
        },
        {
          "case": "pin_wrong",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0005",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "pin_wrong_locks",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0005",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "cashregister_not_assigned",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "device_other_cashregister",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieses Gerät ist an eine andere Kasse gekoppelt.",
            "data": {
              "code": "device_bound_elsewhere"
            },
            "code": "device_bound_elsewhere"
          }
        },
        {
          "case": "location_without_location",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist auf den Betriebsstandort beschränkt. Bitte die Ortung im Browser erlauben (oder die Standortsperre im Panel ausschalten).",
            "data": {
              "code": "location_required"
            },
            "code": "location_required"
          }
        },
        {
          "case": "location_far",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "geo": {
              "lat": 47.0707,
              "lng": 15.4395,
              "acc": 10
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung außerhalb des Betriebsstandorts (145 km entfernt). Die Standortsperre lässt sich im Panel ausschalten.",
            "data": {
              "distanceM": 144560,
              "code": "location_outside"
            },
            "code": "location_outside"
          }
        },
        {
          "case": "cashregister_exists_not",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSEX",
            "geo": {
              "lat": 48.2083,
              "lng": 16.3739,
              "acc": 10
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die angegebene cashregisterId existiert nicht.",
            "data": {
              "code": "cashregister_not_found"
            },
            "code": "cashregister_not_found"
          }
        },
        {
          "case": "credential_failed",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung derzeit nicht möglich – bitte den Betreiber verständigen.",
            "data": {
              "code": "login_unavailable"
            },
            "code": "login_unavailable"
          }
        },
        {
          "case": "in_use",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse wird gerade auf „Tablet vorne“ verwendet. Übernehmen darf nur ein Kassen-Chef.",
            "data": {
              "deviceLabel": "Tablet vorne",
              "takeoverAllowed": false,
              "code": "cashregister_in_use"
            },
            "code": "cashregister_in_use"
          }
        },
        {
          "case": "in_use_takeover_without_permission",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1",
            "takeover": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse wird gerade auf „Tablet vorne“ verwendet. Übernehmen darf nur ein Kassen-Chef.",
            "data": {
              "deviceLabel": "Tablet vorne",
              "takeoverAllowed": false,
              "code": "cashregister_in_use"
            },
            "code": "cashregister_in_use"
          }
        },
        {
          "case": "in_use_device_without_label",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse wird gerade auf „einem anderen Gerät“ verwendet. Übernehmen darf nur ein Kassen-Chef.",
            "data": {
              "deviceLabel": null,
              "takeoverAllowed": false,
              "code": "cashregister_in_use"
            },
            "code": "cashregister_in_use"
          }
        },
        {
          "case": "takeover",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "takeover": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-EDD9CF49",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_chef",
                "name": "Anna Chef",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "all",
                  "articles": true,
                  "layout": true,
                  "reports": true,
                  "takeover": true,
                  "drawer": true,
                  "discount": true,
                  "tipAssign": true,
                  "receiptsScope": "all",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": true
                }
              }
            }
          }
        },
        {
          "case": "takeover_chosen",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "takeover": true,
            "takeoverSessionId": "sess_kellner"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-EDD9CF49",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_chef",
                "name": "Anna Chef",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "all",
                  "articles": true,
                  "layout": true,
                  "reports": true,
                  "takeover": true,
                  "drawer": true,
                  "discount": true,
                  "tipAssign": true,
                  "receiptsScope": "all",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": true
                }
              }
            }
          }
        },
        {
          "case": "takeover_session_gone",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "takeover": true,
            "takeoverSessionId": "sess_gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Sitzung läuft nicht mehr. Bitte die Liste neu laden.",
            "data": {
              "code": "session_not_running"
            },
            "code": "session_not_running"
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_kellner",
            "pin": "0002",
            "cashregisterId": "KASSE1",
            "client": {
              "userAgent": "Mozilla/5.0 Kasse",
              "platform": "iPad",
              "language": "de-AT",
              "tz": "Europe/Vienna",
              "app": "kasse-app/1.0.3+34",
              "screen": {
                "w": 1024,
                "h": 768
              }
            },
            "geo": {
              "lat": 48.2083,
              "lng": 16.3739,
              "acc": 10
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-AC4B000A",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_kellner",
                "name": "Ben Kellner",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "own",
                  "articles": false,
                  "layout": false,
                  "reports": false,
                  "takeover": false,
                  "drawer": false,
                  "discount": true,
                  "tipAssign": false,
                  "receiptsScope": "own",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": false
                }
              }
            }
          }
        },
        {
          "case": "success_location_near",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_alt",
            "deviceSecret": "EXAMPLEB2EBF955AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "userId": "ru_chef",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "geo": {
              "lat": 48.2083,
              "lng": 16.3739,
              "acc": 10
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-EDD9CF49",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_chef",
                "name": "Anna Chef",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "all",
                  "articles": true,
                  "layout": true,
                  "reports": true,
                  "takeover": true,
                  "drawer": true,
                  "discount": true,
                  "tipAssign": true,
                  "receiptsScope": "all",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": true
                }
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "registerPinLogin": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "pin_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: pin",
            "data": {
              "errors": [
                {
                  "field": "pin",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "format",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "K/1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gibtsnicht",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_revoked",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gesperrt",
            "deviceSecret": "EXAMPLE2E5E4EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gekoppelt oder widerrufen.",
            "data": {
              "code": "device_not_paired"
            },
            "code": "device_not_paired"
          }
        },
        {
          "case": "device_select",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse verwendet die Benutzerauswahl – bitte die Seite neu laden.",
            "data": {
              "code": "login_mode_select_user"
            },
            "code": "login_mode_select_user"
          }
        },
        {
          "case": "device_other_cashregister",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieses Gerät ist an eine andere Kasse gekoppelt.",
            "data": {
              "code": "device_bound_elsewhere"
            },
            "code": "device_bound_elsewhere"
          }
        },
        {
          "case": "device_locked_steps",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_sperre",
            "deviceSecret": "EXAMPLE517F3E1DAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Zu viele Fehlversuche. Bitte 42 Sekunden warten.",
            "data": {
              "retryAfterSec": 42,
              "code": "too_many_attempts"
            },
            "code": "too_many_attempts"
          }
        },
        {
          "case": "pin_wrong",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0006",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "pin_wrong_locks",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0006",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "pin_of_one_locked",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0003",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung fehlgeschlagen.",
            "data": {
              "code": "login_failed"
            },
            "code": "login_failed"
          }
        },
        {
          "case": "pin_with_whitespace",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": " 0002 ",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-AC4B000A",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_kellner",
                "name": "Ben Kellner",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "own",
                  "articles": false,
                  "layout": false,
                  "reports": false,
                  "takeover": false,
                  "drawer": false,
                  "discount": true,
                  "tipAssign": false,
                  "receiptsScope": "own",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": false
                }
              }
            }
          }
        },
        {
          "case": "location_without_location",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist auf den Betriebsstandort beschränkt. Bitte die Ortung im Browser erlauben (oder die Standortsperre im Panel ausschalten).",
            "data": {
              "code": "location_required"
            },
            "code": "location_required"
          }
        },
        {
          "case": "in_use",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse wird gerade auf „Tablet vorne“ verwendet. Übernehmen darf nur ein Kassen-Chef.",
            "data": {
              "deviceLabel": "Tablet vorne",
              "takeoverAllowed": false,
              "code": "cashregister_in_use"
            },
            "code": "cashregister_in_use"
          }
        },
        {
          "case": "takeover",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_frei",
            "deviceSecret": "EXAMPLE1342203FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0001",
            "cashregisterId": "KASSE1",
            "takeover": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-EDD9CF49",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_chef",
                "name": "Anna Chef",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "all",
                  "articles": true,
                  "layout": true,
                  "reports": true,
                  "takeover": true,
                  "drawer": true,
                  "discount": true,
                  "tipAssign": true,
                  "receiptsScope": "all",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": true
                }
              }
            }
          }
        },
        {
          "case": "body_as_text",
          "method": "POST",
          "caller": "none",
          "params": {
            "$body": "{\"params\":{\"ownerUid\":\"kw_betrieb1\",\"deviceId\":\"dev_pin\",\"deviceSecret\":\"EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"pin\":\"0002\",\"cashregisterId\":\"KASSE1\"}}"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-AC4B000A",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_kellner",
                "name": "Ben Kellner",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "own",
                  "articles": false,
                  "layout": false,
                  "reports": false,
                  "takeover": false,
                  "drawer": false,
                  "discount": true,
                  "tipAssign": false,
                  "receiptsScope": "own",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": false
                }
              }
            }
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1",
            "client": {
              "userAgent": "Mozilla/5.0 Kasse",
              "platform": "iPad",
              "language": "de-AT",
              "tz": "Europe/Vienna",
              "app": "kasse-app/1.0.3+34",
              "screen": {
                "w": 1024,
                "h": 768
              }
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-AC4B000A",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_kellner",
                "name": "Ben Kellner",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "own",
                  "articles": false,
                  "layout": false,
                  "reports": false,
                  "takeover": false,
                  "drawer": false,
                  "discount": true,
                  "tipAssign": false,
                  "receiptsScope": "own",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": false
                }
              }
            }
          }
        },
        {
          "case": "success_after_failed_attempts",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "pin": "0002",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "customToken": "EXAMPLE-custom-token-AC4B000A",
              "sessionId": "auto1",
              "expiresAt": 1790409690000,
              "user": {
                "id": "ru_kellner",
                "name": "Ben Kellner",
                "perms": {
                  "sell": true,
                  "cancel": true,
                  "cancelScope": "own",
                  "articles": false,
                  "layout": false,
                  "reports": false,
                  "takeover": false,
                  "drawer": false,
                  "discount": true,
                  "tipAssign": false,
                  "receiptsScope": "own",
                  "voucherSell": true,
                  "voucherRedeem": true,
                  "voucherManage": false
                }
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "renewRegisterSession": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "token_invalid",
          "method": "POST",
          "caller": "invalid_id_token",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung abgelaufen oder ungültig – bitte neu einloggen.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Nur für Kassen-Benutzer.",
            "data": {
              "code": "register_user_only"
            },
            "code": "register_user_only"
          }
        },
        {
          "case": "user_locked",
          "method": "POST",
          "caller": "register_user_disabled",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieser Kassen-Benutzer ist gesperrt.",
            "data": {
              "code": "user_disabled"
            },
            "code": "user_disabled"
          }
        },
        {
          "case": "session_expired",
          "method": "POST",
          "caller": "register_user_session_expired",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "production_locked",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Live-Umgebung noch nicht freigeschaltet.",
            "data": {
              "code": "live_not_enabled"
            },
            "code": "live_not_enabled"
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "expiresAt": 1790409690000
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "endRegisterSession": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "token_invalid",
          "method": "POST",
          "caller": "invalid_id_token",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung abgelaufen oder ungültig – bitte neu einloggen.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Nur für Kassen-Benutzer.",
            "data": {
              "code": "register_user_only"
            },
            "code": "register_user_only"
          }
        },
        {
          "case": "user_locked",
          "method": "POST",
          "caller": "register_user_disabled",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieser Kassen-Benutzer ist gesperrt.",
            "data": {
              "code": "user_disabled"
            },
            "code": "user_disabled"
          }
        },
        {
          "case": "session_expired",
          "method": "POST",
          "caller": "register_user_session_expired",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "production_locked",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Live-Umgebung noch nicht freigeschaltet.",
            "data": {
              "code": "live_not_enabled"
            },
            "code": "live_not_enabled"
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "ok": true
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "unpairRegisterDevice": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: ownerUid, deviceId, deviceSecret",
            "data": {
              "errors": [
                {
                  "field": "deviceSecret",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "format",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev/pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gefunden.",
            "data": {
              "code": "device_not_found"
            },
            "code": "device_not_found"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gibtsnicht",
            "deviceSecret": "EXAMPLEAE539BF8AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gefunden.",
            "data": {
              "code": "device_not_found"
            },
            "code": "device_not_found"
          }
        },
        {
          "case": "secret_wrong",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLEB3C3E0F5AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gefunden.",
            "data": {
              "code": "device_not_found"
            },
            "code": "device_not_found"
          }
        },
        {
          "case": "success",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_pin",
            "deviceSecret": "EXAMPLE6BEF019FAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "id": "dev_pin"
            }
          }
        },
        {
          "case": "success_already_locked",
          "method": "POST",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_gesperrt",
            "deviceSecret": "EXAMPLE2E5E4EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "id": "dev_gesperrt"
            }
          }
        },
        {
          "case": "get_without_check",
          "method": "GET",
          "caller": "none",
          "params": {
            "ownerUid": "kw_betrieb1",
            "deviceId": "dev_auswahl",
            "deviceSecret": "EXAMPLEC99E0B91AAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "id": "dev_auswahl"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: ownerUid, deviceId, deviceSecret",
            "data": {
              "errors": [
                {
                  "field": "ownerUid",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "deviceId",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "deviceSecret",
                  "message": "Pflichtfeld fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        }
      ]
    },
    "listMyCashregisters": {
      "codebase": "default",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "token_invalid",
          "method": "POST",
          "caller": "invalid_id_token",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung abgelaufen oder ungültig – bitte neu einloggen.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "user_locked",
          "method": "POST",
          "caller": "register_user_disabled",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieser Kassen-Benutzer ist gesperrt.",
            "data": {
              "code": "user_disabled"
            },
            "code": "user_disabled"
          }
        },
        {
          "case": "production_locked",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Live-Umgebung noch nicht freigeschaltet.",
            "data": {
              "code": "live_not_enabled"
            },
            "code": "live_not_enabled"
          }
        },
        {
          "case": "owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cashregisters": [
                {
                  "id": "KASSE1",
                  "label": "Theke 1",
                  "description": null,
                  "create_time": "2026-01-02T08:00:00.000Z",
                  "signature_id": "sig1",
                  "token": "cb_test_EXAMPLE47A0D266",
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": true,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": "2026-01-02T09:00:00.000Z",
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                },
                {
                  "id": "KASSE2",
                  "label": "Theke 2",
                  "description": null,
                  "create_time": null,
                  "signature_id": "sig1",
                  "token": "cb_test_EXAMPLE36051D42",
                  "final_receipt_id": null,
                  "decommissioned": true,
                  "licenses": 5,
                  "monthly_report_journal": false,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": null,
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                },
                {
                  "id": "KASSE3",
                  "label": "Theke 3",
                  "description": null,
                  "create_time": null,
                  "signature_id": null,
                  "token": "cb_test_EXAMPLE4FFC195D",
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": false,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": null,
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                },
                {
                  "id": "KASSE4",
                  "label": "Theke 4",
                  "description": null,
                  "create_time": null,
                  "signature_id": "sig1",
                  "token": "cb_test_EXAMPLE19E83434",
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": false,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": null,
                    "start_receipt_created": false,
                    "start_receipt_transmitted": false,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                }
              ]
            }
          }
        },
        {
          "case": "manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cashregisters": [
                {
                  "id": "KASSE1",
                  "label": "Theke 1",
                  "description": null,
                  "create_time": "2026-01-02T08:00:00.000Z",
                  "signature_id": "sig1",
                  "token": null,
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": true,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": "2026-01-02T09:00:00.000Z",
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                },
                {
                  "id": "KASSE3",
                  "label": "Theke 3",
                  "description": null,
                  "create_time": null,
                  "signature_id": null,
                  "token": null,
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": false,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": null,
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                },
                {
                  "id": "KASSE4",
                  "label": "Theke 4",
                  "description": null,
                  "create_time": null,
                  "signature_id": "sig1",
                  "token": null,
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": false,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": null,
                    "start_receipt_created": false,
                    "start_receipt_transmitted": false,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                }
              ]
            }
          }
        },
        {
          "case": "cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cashregisters": [
                {
                  "id": "KASSE1",
                  "label": "Theke 1",
                  "description": null,
                  "create_time": "2026-01-02T08:00:00.000Z",
                  "signature_id": "sig1",
                  "token": null,
                  "final_receipt_id": null,
                  "decommissioned": false,
                  "licenses": 5,
                  "monthly_report_journal": true,
                  "onboarding": {
                    "cashbox_registered": true,
                    "cashbox_registered_at": "2026-01-02T09:00:00.000Z",
                    "start_receipt_created": true,
                    "start_receipt_transmitted": true,
                    "start_receipt_created_at": null,
                    "start_receipt_transmitted_at": null
                  }
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyReceipts": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "cashregister_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: cashregisterId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "cashregisterId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "limit_type",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "limit": "5"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Typen stimmen nicht überein: limit",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "limit",
                  "message": "Falscher Typ."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "cashregister_not_assigned",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "cashregister_unknown",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSEX"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Registrierkasse nicht gefunden.",
            "data": {
              "code": "cashregister_not_found"
            },
            "code": "cashregister_not_found"
          }
        },
        {
          "case": "success_empty",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "receipts": [],
              "stats": {
                "trendPct": null,
                "today": {
                  "count": 0,
                  "revenue": 0
                },
                "days": [
                  {
                    "date": "2026-09-20",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-21",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-22",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-23",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-24",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-25",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-26",
                    "revenue": 0
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "limit": 2
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "receipts": [
                {
                  "receiptId": "KASSE1-ID-3",
                  "counter": 3,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-26T09:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true,
                  "items": [
                    {
                      "name": "Kaffee",
                      "quantity": 2
                    }
                  ],
                  "operator": {
                    "uid": "ru_kellner",
                    "name": "Ben Kellner"
                  },
                  "cancellationOf": null,
                  "cancellationReason": null,
                  "zeroKind": null,
                  "cancellationStatus": "none"
                },
                {
                  "receiptId": "KASSE1-ID-2",
                  "counter": 2,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-25T12:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true,
                  "items": [
                    {
                      "name": "Kaffee",
                      "quantity": 2
                    }
                  ],
                  "operator": {
                    "uid": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "cancellationOf": null,
                  "cancellationReason": null,
                  "zeroKind": null,
                  "cancellationStatus": "none"
                }
              ],
              "stats": {
                "trendPct": 100,
                "today": {
                  "count": 1,
                  "revenue": 640
                },
                "days": [
                  {
                    "date": "2026-09-20",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-21",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-22",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-23",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-24",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-25",
                    "revenue": 320
                  },
                  {
                    "date": "2026-09-26",
                    "revenue": 640
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_cashier_own",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "receipts": [
                {
                  "receiptId": "KASSE1-ID-3",
                  "counter": 3,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-26T09:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true,
                  "items": [
                    {
                      "name": "Kaffee",
                      "quantity": 2
                    }
                  ],
                  "operator": {
                    "uid": "ru_kellner",
                    "name": "Ben Kellner"
                  },
                  "cancellationOf": null,
                  "cancellationReason": null,
                  "zeroKind": null,
                  "cancellationStatus": "none"
                }
              ],
              "stats": {
                "trendPct": 100,
                "today": {
                  "count": 1,
                  "revenue": 640
                },
                "days": [
                  {
                    "date": "2026-09-20",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-21",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-22",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-23",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-24",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-25",
                    "revenue": 320
                  },
                  {
                    "date": "2026-09-26",
                    "revenue": 640
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_owner_window",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "from": "2026-09-25",
            "to": "2026-09-25"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "receipts": [
                {
                  "receiptId": "KASSE1-ID-2",
                  "counter": 2,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-25T12:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true
                }
              ],
              "stats": {
                "trendPct": 100,
                "today": {
                  "count": 1,
                  "revenue": 640
                },
                "days": [
                  {
                    "date": "2026-09-20",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-21",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-22",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-23",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-24",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-25",
                    "revenue": 320
                  },
                  {
                    "date": "2026-09-26",
                    "revenue": 640
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_window_too_old",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "from": "2020-01-01"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "receipts": [
                {
                  "receiptId": "KASSE1-ID-3",
                  "counter": 3,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-26T09:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true
                },
                {
                  "receiptId": "KASSE1-ID-2",
                  "counter": 2,
                  "receiptType": "standard",
                  "timeStamp": "2026-09-25T12:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true
                },
                {
                  "receiptId": "KASSE1-ID-1",
                  "counter": 1,
                  "receiptType": "start",
                  "timeStamp": "2026-09-20T08:00:00",
                  "total": 0,
                  "paymentMethod": "cash",
                  "transmission_status": null,
                  "ts_transmission": null,
                  "signature_ok": true
                }
              ],
              "stats": {
                "trendPct": 100,
                "today": {
                  "count": 1,
                  "revenue": 640
                },
                "days": [
                  {
                    "date": "2026-09-20",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-21",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-22",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-23",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-24",
                    "revenue": 0
                  },
                  {
                    "date": "2026-09-25",
                    "revenue": 320
                  },
                  {
                    "date": "2026-09-26",
                    "revenue": 640
                  }
                ]
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "getReceipt": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "receiptId": "KASSE1-ID-2",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "receiptId": "KASSE1-ID-99",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die angegebene receiptId existiert nicht.",
            "data": {
              "code": "receipt_not_found"
            },
            "code": "receipt_not_found"
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "receiptId": "KASSE1-ID-2",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "company": "Café Welt",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "phone": "+43 1 234 56",
              "is_small_business": false,
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "thanks_message": "Bis bald",
              "kreiseck_logo": false,
              "logo_url": "https://example.invalid/logo.png",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
                "operator": {
                  "uid": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "6,40 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zahlungsart:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "Barzahlung",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              },
              "outputs": []
            }
          }
        },
        {
          "case": "success_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "receiptId": "KASSE1-ID-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "company": "Café Welt",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "phone": "+43 1 234 56",
              "is_small_business": false,
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "thanks_message": "Bis bald",
              "kreiseck_logo": false,
              "logo_url": "https://example.invalid/logo.png",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
                "operator": {
                  "uid": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "6,40 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zahlungsart:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "Barzahlung",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              },
              "outputs": []
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "createReceipt": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "receiptType": "standard",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "cashregister_missing",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "paymentMethod": "cash"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: cashregisterId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "cashregisterId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "session_other_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "paymentMethod": "cash",
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung gehört zu einer anderen Kasse – bitte dort neu anmelden.",
            "data": {
              "code": "session_other_cashregister"
            },
            "code": "session_other_cashregister"
          }
        },
        {
          "case": "receipt_type_unknown",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "rechnung",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: receiptType keine von: start, standard, zero, cancellation, training",
            "data": {
              "code": "receipt_type_invalid"
            },
            "code": "receipt_type_invalid"
          }
        },
        {
          "case": "tip_on_start",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "receiptType": "start",
            "tip": 100
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Trinkgeld ist nur auf Standard- und Trainingsbelegen möglich",
            "data": {
              "code": "tip_not_allowed"
            },
            "code": "tip_not_allowed"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "paymentMethod": "cash",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "payments_conflict",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "paymentMethod": "cash",
            "payments": [
              {
                "method": "cash",
                "amountCents": 640
              }
            ],
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "paymentMethod wird unter /v3 nicht mehr unterstützt – bitte payments verwenden.",
            "data": {
              "code": "payment_method_not_supported"
            },
            "code": "payment_method_not_supported"
          }
        },
        {
          "case": "sum_wrong",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "payments": [
              {
                "method": "cash",
                "amountCents": 600
              }
            ],
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Summe der Zahlungen (600) entspricht nicht dem Zahlbetrag (640).",
            "data": {
              "code": "payments_sum_mismatch",
              "expectedCents": 640
            },
            "code": "payments_sum_mismatch"
          }
        },
        {
          "case": "start_receipt",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "receiptType": "start"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "is_small_business": false,
              "company": "Café Welt",
              "phone": "+43 1 234 56",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "logo_url": "https://example.invalid/logo.png",
              "kreiseck_logo": false,
              "thanks_message": "Bis bald",
              "receipt": {
                "counter": 1,
                "receiptType": "start",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-1",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 0,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "+kPM0FaIk0SfypManHdseA==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000a64bcb18",
                "payments": [],
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-1_2026-09-26T10:00:00_0,00_0,00_0,00_0,00_0,00_+kPM0FaI_ABC123_<verkettung>_<signatur>",
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": []
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "STARTBELEG",
                    "tone": "receipt_type"
                  },
                  {
                    "kind": "text",
                    "text": "Nullbeleg zur Inbetriebnahme",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "text",
                    "text": "Prüfangaben",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Barumsatz:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "0,00 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Signatur:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "signiert",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Signaturkarte:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "0xABC123",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zertifizierungsdienst:",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "Testsignatur (AT100)",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-1_2026-09-26T10:00:00_0,00_0,00_0,00_0,00_0,00_+kPM0FaI_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              }
            }
          }
        },
        {
          "case": "sale_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "cashregisterId": "KASSE1",
            "payments": [
              {
                "method": "cash",
                "amountCents": 640
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "is_small_business": false,
              "company": "Café Welt",
              "phone": "+43 1 234 56",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "logo_url": "https://example.invalid/logo.png",
              "kreiseck_logo": false,
              "thanks_message": "Bis bald",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "payments": [
                  {
                    "id": "p1",
                    "method": "cash",
                    "amountCents": 640
                  }
                ],
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
                "operator": {
                  "uid": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "6,40 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zahlungsart:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "Barzahlung",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              }
            }
          }
        },
        {
          "case": "sale_payments",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "payments": [
              {
                "method": "cash",
                "amountCents": 400
              },
              {
                "method": "creditCard",
                "amountCents": 240,
                "provider": "custom",
                "providerPaymentId": "pi_7"
              }
            ],
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "is_small_business": false,
              "company": "Café Welt",
              "phone": "+43 1 234 56",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "logo_url": "https://example.invalid/logo.png",
              "kreiseck_logo": false,
              "thanks_message": "Bis bald",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "mixed",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "payments": [
                  {
                    "id": "p1",
                    "method": "cash",
                    "amountCents": 400
                  },
                  {
                    "id": "p2",
                    "method": "creditCard",
                    "amountCents": 240,
                    "provider": "custom",
                    "providerPaymentId": "pi_7"
                  }
                ],
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
                "operator": {
                  "uid": "ru_chef",
                  "name": "Anna Chef"
                },
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "6,40 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "text",
                    "text": "Zahlungsarten:",
                    "align": "left",
                    "bold": false
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "1. Barzahlung",
                        "width": 8,
                        "align": "left"
                      },
                      {
                        "text": "4,00 €",
                        "width": 4,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2. Kartenzahlung",
                        "width": 8,
                        "align": "left"
                      },
                      {
                        "text": "2,40 €",
                        "width": 4,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              }
            }
          }
        },
        {
          "case": "sale_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "receiptType": "standard",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "payments": [
              {
                "method": "cash",
                "amountCents": 640
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "is_small_business": false,
              "company": "Café Welt",
              "phone": "+43 1 234 56",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "logo_url": "https://example.invalid/logo.png",
              "kreiseck_logo": false,
              "thanks_message": "Bis bald",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 0,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUk2DiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "payments": [
                  {
                    "id": "p1",
                    "method": "cash",
                    "amountCents": 640
                  }
                ],
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>",
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "6,40 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zahlungsart:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "Barzahlung",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_XVyQJUk2_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              }
            }
          }
        },
        {
          "case": "sale_tip_kept",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "receiptType": "standard",
            "cashregisterId": "KASSE1",
            "items": [
              {
                "name": "Kaffee",
                "amount": 2,
                "priceOneCents": 320,
                "vat": 20
              }
            ],
            "payments": [
              {
                "method": "cash",
                "amountCents": 800
              }
            ],
            "tip": {
              "cents": 160,
              "keptByEmployee": true
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "is_small_business": false,
              "company": "Café Welt",
              "phone": "+43 1 234 56",
              "street": "Hauptplatz 1",
              "zip": "1010",
              "city": "Wien",
              "footer1": "Danke für Ihren Besuch",
              "footer2": null,
              "footer3": null,
              "footer4": null,
              "logo_url": "https://example.invalid/logo.png",
              "kreiseck_logo": false,
              "thanks_message": "Bis bald",
              "receipt": {
                "counter": 2,
                "receiptType": "standard",
                "zeroKind": null,
                "receiptId": "KASSE1-ID-2",
                "cashregisterId": "KASSE1",
                "timeStamp": "2026-09-26T10:00:00",
                "vouchers": [],
                "paymentMethod": "cash",
                "customerDetails": null,
                "legalMessage": null,
                "customProjectId": null,
                "creditCardProvider": null,
                "cardPaymentId": null,
                "cardPaymentData": null,
                "amountRateStandard": 6.4,
                "amountRateReduced1": 0,
                "amountRateReduced2": 0,
                "amountRateZero": 1.6,
                "amountRateSpecial": 0,
                "turnoverCounterAES256ICM": "XVyQJUiWDiM4NjAKsiguYw==",
                "signaturePreviousReceipt": "<signatur>",
                "certificateSerialNumber": "ABC123",
                "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2",
                "payments": [
                  {
                    "id": "p1",
                    "method": "cash",
                    "amountCents": 800
                  }
                ],
                "sig": "<signatur>",
                "signatureSuccess": true,
                "qr": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_1,60_0,00_XVyQJUiW_ABC123_<verkettung>_<signatur>",
                "operator": {
                  "uid": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "tipCents": 160,
                "headerVersionId": "auto1",
                "layoutRuleset": 2,
                "items": [
                  {
                    "name": "Kaffee",
                    "amount": 2,
                    "priceOneCents": 320,
                    "vat": 20,
                    "priceOne": 3.2
                  },
                  {
                    "kind": "tip",
                    "name": "Trinkgeld Personal",
                    "amount": 1,
                    "quantity": 1,
                    "priceOne": 1.6,
                    "priceOneCents": 160,
                    "unitPriceCents": 160,
                    "vat": 0,
                    "vatRate": 0,
                    "paymentMethod": "cash",
                    "recipient": {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner"
                    },
                    "receivedImmediately": true,
                    "keptByEmployee": true
                  }
                ]
              },
              "taxNumber": "12-345/6789",
              "vatId": "ATU12345678",
              "headerVersionId": "auto1",
              "registrationInfo": null,
              "testCashregister": false,
              "testSignature": true,
              "logo_scale": "M",
              "layout": {
                "paperSize": "mm80",
                "ruleset": 2,
                "lines": [
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  },
                  {
                    "kind": "text",
                    "text": "Café Welt",
                    "align": "center",
                    "bold": true
                  },
                  {
                    "kind": "text",
                    "text": "Hauptplatz 1",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "1010 Wien",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "ATU12345678",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "+43 1 234 56",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Datum:",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "26.09.2026 10:00:00",
                        "width": 8,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Kassen-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Beleg-ID:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "KASSE1-ID-2",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "2  x Kaffee je 3,20",
                        "width": 7,
                        "align": "left"
                      },
                      {
                        "text": "6,40 A",
                        "width": 5,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Trinkgeld Personal",
                        "width": 8,
                        "align": "left"
                      },
                      {
                        "text": "1,60 D",
                        "width": 4,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "MwSt%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "MwSt",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "Netto",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "Brutto",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "A 20%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,07",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "5,33",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "6,40",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "D 0%",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "0,00",
                        "width": 4,
                        "align": "left"
                      },
                      {
                        "text": "1,60",
                        "width": 3,
                        "align": "left"
                      },
                      {
                        "text": "1,60",
                        "width": 2,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "rule",
                    "char": "-"
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Gesamt:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "8,00 €",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "columns",
                    "columns": [
                      {
                        "text": "Zahlungsart:",
                        "width": 6,
                        "align": "left"
                      },
                      {
                        "text": "Barzahlung",
                        "width": 6,
                        "align": "right"
                      }
                    ]
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "qr",
                    "data": "_R1-AT100_KASSE1_KASSE1-ID-2_2026-09-26T10:00:00_6,40_0,00_0,00_1,60_0,00_XVyQJUiW_ABC123_<verkettung>_<signatur>"
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "text",
                    "text": "Bis bald",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "text",
                    "text": "Danke für Ihren Besuch",
                    "align": "center",
                    "bold": false
                  },
                  {
                    "kind": "space",
                    "lines": 1
                  },
                  {
                    "kind": "banner",
                    "text": "TESTSIGNATUR — kein gültiger Beleg",
                    "tone": "warning"
                  }
                ]
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "generateFullReceiptId": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "receiptId": "KASSE1-ID-2",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: receiptId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "receiptId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "receiptId": "KASSE1-ID-2",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2"
            }
          }
        },
        {
          "case": "success_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "receiptId": "KASSE1-ID-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "fullReceiptId": "00000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000019d51dc2"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "cancelReceipt": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: cashregisterId, originalReceiptId, reason",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "originalReceiptId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_other_cashregister",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "without_cancellation_permission",
          "method": "POST",
          "caller": "register_user_without_cancel_permission",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für Stornos.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "reason_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "laune"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno-Grund fehlt oder ist unbekannt.",
            "data": {
              "code": "unknown_reason"
            },
            "code": "unknown_reason"
          }
        },
        {
          "case": "note_too_long",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "note": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmerkung ist zu lang (höchstens 200 Zeichen).",
            "data": {
              "code": "note_too_long"
            },
            "code": "note_too_long"
          }
        },
        {
          "case": "items_no_array",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "items": {
              "index": 0
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: items sollte eine Liste sein",
            "data": {
              "code": "invalid_items"
            },
            "code": "invalid_items"
          }
        },
        {
          "case": "payments_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "paymentMethod": "cash",
            "payments": [
              {
                "method": "cash",
                "amountCents": -1090
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "paymentMethod wird unter /v3 nicht mehr unterstützt – bitte payments verwenden.",
            "data": {
              "code": "payment_method_not_supported"
            },
            "code": "payment_method_not_supported"
          }
        },
        {
          "case": "receipt_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg nicht gefunden.",
            "data": {
              "code": "receipt_not_found"
            },
            "code": "receipt_not_found"
          }
        },
        {
          "case": "training_receipt",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Trainingsbelege werden nicht storniert.",
            "data": {
              "code": "training_receipt"
            },
            "code": "training_receipt"
          }
        },
        {
          "case": "cancellation_receipt",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno-Belege lassen sich nicht stornieren.",
            "data": {
              "code": "receipt_type_not_cancellable"
            },
            "code": "receipt_type_not_cancellable"
          }
        },
        {
          "case": "only_own",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno nur für selbst kassierte Belege.",
            "data": {
              "code": "own_receipts_only"
            },
            "code": "own_receipts_only"
          }
        },
        {
          "case": "card_data_without_card",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "cardPaymentId": "pi_1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "cardPaymentId wird unter /v3 nicht mehr unterstützt – bitte payments verwenden.",
            "data": {
              "code": "payment_method_not_supported"
            },
            "code": "payment_method_not_supported"
          }
        },
        {
          "case": "cashregister_incomplete",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse unvollständig (api_key/token).",
            "data": {
              "code": "cashregister_incomplete"
            },
            "code": "cashregister_incomplete"
          }
        },
        {
          "case": "already_cancelled",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg ist bereits vollständig storniert.",
            "data": {
              "code": "already_cancelled"
            },
            "code": "already_cancelled"
          }
        },
        {
          "case": "partial_too_much",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "items": [
              {
                "index": 0,
                "quantity": 5
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno-Menge übersteigt die verbleibende Menge (Position 1).",
            "data": {
              "code": "quantity_exceeds_remaining"
            },
            "code": "quantity_exceeds_remaining"
          }
        },
        {
          "case": "success_full",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "note": "Gast wollte Tee"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                0,
                0
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": {
                  "uid": "ru_chef",
                  "name": "Anna Chef"
                },
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 2,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  },
                  {
                    "name": "Kuchen",
                    "quantity": 1,
                    "unitPriceCents": -450,
                    "vatRate": 10
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_partial",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "items": [
              {
                "index": 0,
                "quantity": 1
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                1,
                1
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": {
                  "uid": "ru_chef",
                  "name": "Anna Chef"
                },
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 1,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_own_receipt_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                0,
                0
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": {
                  "uid": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 2,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  },
                  {
                    "name": "Kuchen",
                    "quantity": 1,
                    "unitPriceCents": -450,
                    "vatRate": 10
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_api_key",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                0,
                0
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": null,
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 2,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  },
                  {
                    "name": "Kuchen",
                    "quantity": 1,
                    "unitPriceCents": -450,
                    "vatRate": 10
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_without_tip",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "refundTip": false
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                0,
                0,
                1
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": {
                  "uid": "ru_chef",
                  "name": "Anna Chef"
                },
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 2,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  },
                  {
                    "name": "Kuchen",
                    "quantity": 1,
                    "unitPriceCents": -450,
                    "vatRate": 10
                  }
                ]
              }
            }
          }
        },
        {
          "case": "success_tip_employee",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "refundTip": true,
            "tipRefundSource": "employee"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cancellationOf": {
                "receiptId": "KASSE1-ID-7",
                "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                "timeStamp": "2026-09-26T09:30:00"
              },
              "remaining": [
                0,
                0,
                0
              ],
              "receipt": {
                "receiptId": "KASSE1-ID-8",
                "cashregisterId": "KASSE1",
                "receiptType": "cancellation",
                "counter": 8,
                "timeStamp": "2026-09-26T10:00:00",
                "legalMessage": "STORNO zu KASSE1-ID-7 – Fehleingabe",
                "paymentMethod": "cash",
                "cancellationOf": {
                  "receiptId": "KASSE1-ID-7",
                  "fullReceiptId": "INVALID_EXAMPLE_A18474AB",
                  "timeStamp": "2026-09-26T09:30:00"
                },
                "cancellationReason": "input_error",
                "operator": {
                  "uid": "ru_chef",
                  "name": "Anna Chef"
                },
                "qr": "_R1-AT0_KASSE1_KASSE1-ID-8_...",
                "items": [
                  {
                    "name": "Kaffee",
                    "quantity": 2,
                    "unitPriceCents": -320,
                    "vatRate": 20
                  },
                  {
                    "name": "Kuchen",
                    "quantity": 1,
                    "unitPriceCents": -450,
                    "vatRate": 10
                  },
                  {
                    "name": "Trinkgeld Personal",
                    "quantity": 1,
                    "unitPriceCents": -150,
                    "vatRate": 0,
                    "kind": "tip",
                    "recipient": {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner"
                    },
                    "paymentMethod": "cash",
                    "receivedImmediately": true,
                    "keptByEmployee": true
                  }
                ]
              }
            }
          }
        },
        {
          "case": "tip_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "items": [
              {
                "index": 2,
                "quantity": 1
              }
            ],
            "refundTip": false
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Trinkgeld soll nicht zurück, steht aber im Storno.",
            "data": {
              "code": "tip_refund_conflict"
            },
            "code": "tip_refund_conflict"
          }
        },
        {
          "case": "tip_voucher",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "refundTip": false
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg mit Wertgutschein: das Trinkgeld lässt sich nicht zurückbehalten – es wird mitstorniert.",
            "data": {
              "code": "tip_keep_not_possible_with_voucher"
            },
            "code": "tip_keep_not_possible_with_voucher"
          }
        },
        {
          "case": "tip_source_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error",
            "tipRefundSource": "tasche"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Trinkgeld-Quelle ist ungültig (lade oder mitarbeiter).",
            "data": {
              "code": "invalid_tip_refund_source"
            },
            "code": "invalid_tip_refund_source"
          }
        },
        {
          "case": "self_call_error",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno fehlgeschlagen: Signatureinheit nicht erreichbar.",
            "data": {
              "code": "cancellation_failed"
            },
            "code": "cancellation_failed"
          }
        },
        {
          "case": "self_call_without_response",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "originalReceiptId": "KASSE1-ID-7",
            "reason": "input_error"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Storno fehlgeschlagen: Ergebnis unklar – bitte in einigen Minuten die Belegliste prüfen.",
            "data": {
              "code": "cancellation_outcome_unknown"
            },
            "code": "cancellation_outcome_unknown"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "sendReceiptEmail": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "to": "gast@example.at"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: fullReceiptId, to",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "fullReceiptId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "address_wrong",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "kein-at-zeichen",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die E-Mail-Adresse ist ungültig.",
            "data": {
              "code": "invalid_address"
            },
            "code": "invalid_address"
          }
        },
        {
          "case": "token_unreadable",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_DE2278DC",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg nicht gefunden.",
            "data": {
              "code": "receipt_not_found"
            },
            "code": "receipt_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_402FD082",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg nicht gefunden.",
            "data": {
              "code": "receipt_not_found"
            },
            "code": "receipt_not_found"
          }
        },
        {
          "case": "receipt_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg nicht gefunden.",
            "data": {
              "code": "receipt_not_found"
            },
            "code": "receipt_not_found"
          }
        },
        {
          "case": "too_often",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Zu viele Versandversuche – bitte später erneut versuchen.",
            "data": {
              "code": "too_many_requests"
            },
            "code": "too_many_requests"
          }
        },
        {
          "case": "sending_failed",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Beleg konnte nicht versendet werden.",
            "data": {
              "code": "send_failed"
            },
            "code": "send_failed"
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at",
            "cashregisterId": "KASSE1",
            "language": "de"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "to": "gast@example.at",
              "at": "2026-09-26T10:00:00+02:00",
              "via": "platform"
            }
          }
        },
        {
          "case": "success_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "fullReceiptId": "INVALID_EXAMPLE_4CFDBE34",
            "to": "gast@example.at"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "to": "gast@example.at",
              "at": "2026-09-26T10:00:00+02:00",
              "via": "platform"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyArticleGroups": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "module_inventory",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "groups": [
                {
                  "id": "grp_kalt",
                  "name": "Kalt",
                  "color": "#0000aa",
                  "sort": 1
                },
                {
                  "id": "grp_warm",
                  "name": "Warm",
                  "color": "#aa0000",
                  "sort": 2
                }
              ]
            }
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "groups": [
                {
                  "id": "grp_kalt",
                  "name": "Kalt",
                  "color": "#0000aa",
                  "sort": 1
                },
                {
                  "id": "grp_warm",
                  "name": "Warm",
                  "color": "#aa0000",
                  "sort": 2
                }
              ]
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "groups": [
                {
                  "id": "grp_kalt",
                  "name": "Kalt",
                  "color": "#0000aa",
                  "sort": 1
                },
                {
                  "id": "grp_warm",
                  "name": "Warm",
                  "color": "#aa0000",
                  "sort": 2
                }
              ]
            }
          }
        },
        {
          "case": "success_empty",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "groups": []
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyArticles": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "module_inventory",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "articles": [
                {
                  "id": "art_kaffee",
                  "name": "Kaffee",
                  "vatRate": 20,
                  "unit": "Stk",
                  "active": true,
                  "groupId": "grp_warm",
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                },
                {
                  "id": "art_kuchen",
                  "name": "Kuchen",
                  "vatRate": 10,
                  "unit": "Stk",
                  "active": true,
                  "groupId": null,
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                }
              ]
            }
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "articles": [
                {
                  "id": "art_kaffee",
                  "name": "Kaffee",
                  "vatRate": 20,
                  "unit": "Stk",
                  "active": true,
                  "groupId": "grp_warm",
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                },
                {
                  "id": "art_kuchen",
                  "name": "Kuchen",
                  "vatRate": 10,
                  "unit": "Stk",
                  "active": true,
                  "groupId": null,
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                }
              ]
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "articles": [
                {
                  "id": "art_kaffee",
                  "name": "Kaffee",
                  "vatRate": 20,
                  "unit": "Stk",
                  "active": true,
                  "groupId": "grp_warm",
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                },
                {
                  "id": "art_kuchen",
                  "name": "Kuchen",
                  "vatRate": 10,
                  "unit": "Stk",
                  "active": true,
                  "groupId": null,
                  "revenueGroupId": null,
                  "tile": {
                    "visible": true,
                    "sort": 0
                  }
                }
              ]
            }
          }
        },
        {
          "case": "success_empty",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "articles": []
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "getKasseSettings": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "get",
          "method": "GET",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        },
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "token_invalid",
          "method": "POST",
          "caller": "invalid_id_token",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Anmeldung abgelaufen oder ungültig – bitte neu einloggen.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_expired",
          "method": "POST",
          "caller": "register_user_session_expired",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "user_locked",
          "method": "POST",
          "caller": "register_user_disabled",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dieser Kassen-Benutzer ist gesperrt.",
            "data": {
              "code": "user_disabled"
            },
            "code": "user_disabled"
          }
        },
        {
          "case": "device_id_type",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": 7
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Typen stimmen nicht überein: deviceId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "deviceId",
                  "message": "Falscher Typ."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "night",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              },
              "device": {
                "layout": "right",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm80",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              },
              "vouchers": {
                "sale": false,
                "valueVoucherType": null,
                "vatRateBp": null,
                "label": {
                  "layout": "a",
                  "size": "40x30",
                  "fields": {
                    "logo": true,
                    "qr": true,
                    "business": true,
                    "value": true,
                    "validity": true,
                    "checkPage": true
                  },
                  "freeText": []
                }
              }
            }
          }
        },
        {
          "case": "owner_with_device",
          "method": "POST",
          "caller": "owner",
          "params": {
            "deviceId": "dev_pin"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "night",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              },
              "device": {
                "layout": "left",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm58",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              },
              "vouchers": {
                "sale": false,
                "valueVoucherType": null,
                "vatRateBp": null,
                "label": {
                  "layout": "a",
                  "size": "40x30",
                  "fields": {
                    "logo": true,
                    "qr": true,
                    "business": true,
                    "value": true,
                    "validity": true,
                    "checkPage": true
                  },
                  "freeText": []
                }
              }
            }
          }
        },
        {
          "case": "owner_production_locked",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Live-Umgebung noch nicht freigeschaltet. Bitte im Test-Modus arbeiten – die Freischaltung erfolgt durch Kasseneck.",
            "data": {
              "code": "live_not_enabled"
            },
            "code": "live_not_enabled"
          }
        },
        {
          "case": "cashregister_production_locked",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Live-Umgebung noch nicht freigeschaltet.",
            "data": {
              "code": "live_not_enabled"
            },
            "code": "live_not_enabled"
          }
        },
        {
          "case": "manager_with_device",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_pin"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "night",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              },
              "device": {
                "layout": "left",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm58",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              },
              "vouchers": {
                "sale": false,
                "valueVoucherType": null,
                "vatRateBp": null,
                "label": {
                  "layout": "a",
                  "size": "40x30",
                  "fields": {
                    "logo": true,
                    "qr": true,
                    "business": true,
                    "value": true,
                    "validity": true,
                    "checkPage": true
                  },
                  "freeText": []
                }
              }
            }
          }
        },
        {
          "case": "cashier_unknown_device",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "deviceId": "dev_gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "night",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              },
              "device": {
                "layout": "right",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm80",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              },
              "vouchers": {
                "sale": false,
                "valueVoucherType": null,
                "vatRateBp": null,
                "label": {
                  "layout": "a",
                  "size": "40x30",
                  "fields": {
                    "logo": true,
                    "qr": true,
                    "business": true,
                    "value": true,
                    "validity": true,
                    "checkPage": true
                  },
                  "freeText": []
                }
              }
            }
          }
        },
        {
          "case": "body_as_text",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "$body": "{\"params\":{\"deviceId\":\"dev_pin\"}}"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "night",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              },
              "device": {
                "layout": "left",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm58",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              },
              "vouchers": {
                "sale": false,
                "valueVoucherType": null,
                "vatRateBp": null,
                "label": {
                  "layout": "a",
                  "size": "40x30",
                  "fields": {
                    "logo": true,
                    "qr": true,
                    "business": true,
                    "value": true,
                    "validity": true,
                    "checkPage": true
                  },
                  "freeText": []
                }
              }
            }
          }
        },
        {
          "case": "body_broken",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "$body": "params=1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "code": "validation",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "params",
                  "message": "Kein JSON-Objekt."
                }
              ]
            }
          }
        },
        {
          "case": "cashier_foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "deviceId": "dev_kasse3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "setMyKasseSettings": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "business": {
              "theme": "clear"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "business_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: business",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "business",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "business_text",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "business": "clear"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: business",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "business",
                  "message": "Pflichtfeld fehlt oder hat den falschen Typ."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "business": {
              "theme": "clear"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für Kassen-Einstellungen.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "nothing_valid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "business": {
              "gibtsnicht": 1,
              "theme": "neon"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "business.gibtsnicht",
                  "message": "Unbekanntes Feld."
                },
                {
                  "field": "business.theme",
                  "message": "Ungültiger Wert."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "business": {
              "theme": "clear",
              "clock": false
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#222222",
                "theme": "clear",
                "fontSize": "M",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": false,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              }
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {
            "business": {
              "color": "#136B6B",
              "fontSize": "L"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "business": {
                "logoText": "K",
                "logoEnabled": true,
                "logoSize": "M",
                "watermark": "login",
                "color": "#136B6B",
                "theme": "night",
                "fontSize": "L",
                "settingsFontSize": "S",
                "tileStyle": "stripe",
                "clock": true,
                "lockScreen": true,
                "staffPhotos": true,
                "autoLogoutMinutes": 0,
                "logoutAfterSale": false,
                "fastLogin": true,
                "showPrices": true,
                "showVat": false,
                "emoji": true,
                "categoryColors": true,
                "customAmountAllowed": true,
                "vatRates": {
                  "0": true,
                  "10": true,
                  "13": true,
                  "19": false,
                  "20": true,
                  "4.9": true
                },
                "quantity": "x",
                "note": false,
                "search": false,
                "discount": "off",
                "payCash": true,
                "payCard": false,
                "paySplit": false,
                "cardProvider": "none",
                "tip": false,
                "tipMode": "both",
                "tipSteps": {
                  "5": true,
                  "10": true,
                  "15": false,
                  "20": false
                },
                "tipSplit": true,
                "change": true,
                "tipChips": [
                  5,
                  10
                ],
                "exactCash": false,
                "checkoutMode": "panel",
                "receiptOutput": "ask",
                "doneScreenSeconds": 0,
                "logoImage": "",
                "watermarkSide": "center",
                "watermarkX": 50,
                "watermarkY": 50,
                "watermarkStrength": 6,
                "logoScale": "M",
                "watermarkScale": "M",
                "glass": true,
                "hints": true,
                "discountChips": [
                  5,
                  10,
                  15,
                  20
                ]
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "setMyKasseLogo": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "image": "data:image/png;base64,iVBORw0KGgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE="
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "image_type",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": 5
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Typen stimmen nicht überein: image",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "image",
                  "message": "Falscher Typ."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "image": "data:image/png;base64,iVBORw0KGgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE="
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für Kassen-Einstellungen.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "remove",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "remove": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "logoImage": ""
            }
          }
        },
        {
          "case": "no_image",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte ein PNG, JPEG oder SVG hochladen.",
            "data": {
              "code": "logo_invalid_type"
            },
            "code": "logo_invalid_type"
          }
        },
        {
          "case": "wrong_kind",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "data:image/gif;base64,R0lGODlh"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte ein PNG, JPEG oder SVG hochladen.",
            "data": {
              "code": "logo_invalid_type"
            },
            "code": "logo_invalid_type"
          }
        },
        {
          "case": "empty",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "data:image/png;base64,"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Das Logo ist leer.",
            "data": {
              "code": "logo_invalid"
            },
            "code": "logo_invalid"
          }
        },
        {
          "case": "too_large",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "<1398127 Zeichen, gekuerzt>"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Das Logo darf höchstens 1 MB groß sein.",
            "data": {
              "code": "logo_too_large"
            },
            "code": "logo_too_large"
          }
        },
        {
          "case": "magic_wrong",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "data:image/png;base64,a2VpbiBwbmcsIG51ciB0ZXh0"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Datei sieht nicht nach einem gültigen Bild aus.",
            "data": {
              "code": "logo_invalid"
            },
            "code": "logo_invalid"
          }
        },
        {
          "case": "svg_with_script",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "data:image/svg+xml;base64,PHN2ZyBvbmxvYWQ9ImFsZXJ0KDEpIj48c2NyaXB0Png8L3NjcmlwdD48L3N2Zz4="
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Datei sieht nicht nach einem gültigen Bild aus.",
            "data": {
              "code": "logo_invalid"
            },
            "code": "logo_invalid"
          }
        },
        {
          "case": "success_png",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "image": "data:image/png;base64,iVBORw0KGgoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE="
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "logoImage": "https://firebasestorage.googleapis.com/v0/b/kasseneck.appspot.com/o/users%2Fkw_betrieb1%2Fkasse%2Flogo.png?alt=media&token=11111111-2222-4333-8444-555555555555"
            }
          }
        },
        {
          "case": "success_svg_owner",
          "method": "POST",
          "caller": "owner",
          "params": {
            "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48L3N2Zz4="
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "logoImage": "https://firebasestorage.googleapis.com/v0/b/kasseneck.appspot.com/o/users%2Fkw_betrieb1%2Fkasse%2Flogo.svg?alt=media&token=11111111-2222-4333-8444-555555555555"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "setMyRegisterDeviceSettings": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "deviceId": "dev_pin",
            "device": {
              "layout": "right"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_pin"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: deviceId, device",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "device",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "deviceId": "dev_pin",
            "device": {
              "layout": "right"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für Kassen-Einstellungen.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "device_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_gibtsnicht",
            "device": {
              "layout": "right"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Gerät nicht gefunden.",
            "data": {
              "code": "device_not_found"
            },
            "code": "device_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_kasse2",
            "device": {
              "layout": "right"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "nothing_valid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_pin",
            "device": {
              "layout": "oben-links"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "device.layout",
                  "message": "Ungültiger Wert."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "deviceId": "dev_pin",
            "device": {
              "layout": "right",
              "paperSize": "mm80",
              "printerEnabled": true
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "device": {
                "layout": "right",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "M",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": true,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm80",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              }
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {
            "deviceId": "dev_kasse2",
            "device": {
              "tileHeight": "L"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "device": {
                "layout": "right",
                "categoryPosition": "top",
                "extraColumns": 0,
                "tileHeight": "L",
                "touch": false,
                "shortcuts": {
                  "checkout": [
                    "Enter"
                  ],
                  "complete": [
                    "Enter"
                  ],
                  "cancel": [
                    "Escape"
                  ],
                  "customAmount": [
                    "Mod+D"
                  ],
                  "cash": [
                    "Mod+B"
                  ],
                  "card": [
                    "Mod+K"
                  ],
                  "exactAmount": [
                    "Mod+P"
                  ],
                  "receipts": [
                    "Mod+J"
                  ],
                  "undoLast": [
                    "Mod+Backspace"
                  ],
                  "settings": [
                    "Mod+S"
                  ],
                  "logout": [
                    "Mod+L"
                  ],
                  "tip": [
                    "Mod+G"
                  ],
                  "fullscreen": [
                    "Mod+F"
                  ],
                  "clearTendered": [
                    "Mod+C"
                  ],
                  "clearCart": [
                    "Mod+C"
                  ],
                  "splitPayment": []
                },
                "printerEnabled": false,
                "printerType": "sdp",
                "printerIp": "",
                "printerPort": 9100,
                "printerBluetoothId": "",
                "printerName": "",
                "printerId": "",
                "printerDeviceId": "local_printer",
                "connectPrinterId": "",
                "paperSize": "mm80",
                "codePage": "CP1252",
                "cut": "partial",
                "qrMode": "auto",
                "drawerEnabled": false,
                "drawerAutoOpen": "cash",
                "terminalIp": "",
                "terminalPort": 8080,
                "terminalTid": "",
                "terminalVia": "direct",
                "terminalType": "none",
                "shortcutHints": true
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyPrinters": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_expired",
          "method": "POST",
          "caller": "register_user_session_expired",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "cashier_without_url",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "printers": [
                {
                  "id": "dr_theke",
                  "name": "Theke",
                  "kind": "epson-sdp",
                  "paperSize": "mm80",
                  "active": true,
                  "createdAt": 1790323200000,
                  "lastSeenAt": 1790409595000,
                  "lastResult": {
                    "code": "",
                    "success": true,
                    "at": 1790409595000
                  },
                  "printerSerial": "TM-T20"
                }
              ]
            }
          }
        },
        {
          "case": "manager_with_url",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "printers": [
                {
                  "id": "dr_theke",
                  "name": "Theke",
                  "sdpUrl": "https://europe-west1-kasseneck.cloudfunctions.net/epsonDirectPrint/druckertoken1",
                  "kind": "epson-sdp",
                  "paperSize": "mm80",
                  "active": true,
                  "createdAt": 1790323200000,
                  "lastSeenAt": 1790409595000,
                  "lastResult": {
                    "code": "",
                    "success": true,
                    "at": 1790409595000
                  },
                  "printerSerial": "TM-T20"
                }
              ]
            }
          }
        },
        {
          "case": "owner_with_url",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "printers": [
                {
                  "id": "dr_theke",
                  "name": "Theke",
                  "sdpUrl": "https://europe-west1-kasseneck.cloudfunctions.net/epsonDirectPrint/druckertoken1",
                  "kind": "epson-sdp",
                  "paperSize": "mm80",
                  "active": true,
                  "createdAt": 1790323200000,
                  "lastSeenAt": 1790409595000,
                  "lastResult": {
                    "code": "",
                    "success": true,
                    "at": 1790409595000
                  },
                  "printerSerial": "TM-T20"
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "createPrintJob": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: printerId, layout",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "layout",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "title_type",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            },
            "title": 5
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Typen stimmen nicht überein: title",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "title",
                  "message": "Falscher Typ."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "printer_unknown",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_gibtsnicht",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Drucker nicht gefunden oder entfernt.",
            "data": {
              "code": "printer_not_found"
            },
            "code": "printer_not_found"
          }
        },
        {
          "case": "printer_removed",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_alt",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Drucker nicht gefunden oder entfernt.",
            "data": {
              "code": "printer_not_found"
            },
            "code": "printer_not_found"
          }
        },
        {
          "case": "layout_without_lines",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm80"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: layout muss lines[] und paperSize (mm58|mm80) tragen.",
            "data": {
              "errors": [
                {
                  "field": "layout",
                  "message": "Ungültiger Wert."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "layout_paper",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "a4",
              "lines": []
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: layout muss lines[] und paperSize (mm58|mm80) tragen.",
            "data": {
              "errors": [
                {
                  "field": "layout",
                  "message": "Ungültiger Wert."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "logo_invalid",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            },
            "logo": {
              "scale": "riesig"
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Beleg konnte nicht gesetzt werden: Logo: unbekannte Stufe.",
            "data": {
              "code": "print_layout_failed"
            },
            "code": "print_layout_failed"
          }
        },
        {
          "case": "success_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm80",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            },
            "title": "Beleg 7",
            "receiptId": "KASSE1-ID-7",
            "brand": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "jobId": "auto1",
              "status": "pending"
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {
            "printerId": "dr_theke",
            "layout": {
              "paperSize": "mm58",
              "lines": [
                {
                  "kind": "text",
                  "text": "Café Welt"
                },
                {
                  "kind": "text",
                  "text": "Summe 9,40"
                }
              ]
            },
            "source": "labor"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "jobId": "auto1",
              "status": "pending"
            }
          }
        },
        {
          "case": "success_logo_qr",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "title": "Beleg 7",
            "receiptId": "KASSE1-ID-7",
            "source": "pos",
            "brand": true,
            "layout": {
              "paperSize": "mm80",
              "ruleset": 2,
              "lines": [
                {
                  "kind": "banner",
                  "text": "TESTKASSE",
                  "tone": "warning"
                },
                {
                  "kind": "text",
                  "text": "Café Welt",
                  "align": "center",
                  "bold": true
                },
                {
                  "kind": "columns",
                  "columns": [
                    {
                      "text": "2 x Kaffee",
                      "width": 8,
                      "align": "left"
                    },
                    {
                      "text": "6,40",
                      "width": 4,
                      "align": "right"
                    }
                  ]
                },
                {
                  "kind": "rule",
                  "char": "-"
                },
                {
                  "kind": "banner",
                  "text": "STORNO",
                  "tone": "receipt_type"
                },
                {
                  "kind": "space",
                  "lines": 1
                },
                {
                  "kind": "qr",
                  "data": "_R1-AT0_KASSE1_KASSE1-ID-7_2026-09-26T10:00:00_6,40_0,00_0,00_0,00_0,00_x_y_z_w"
                }
              ]
            },
            "logo": {
              "scale": "M",
              "pxWidth": 10,
              "pxHeight": 2,
              "width": 10,
              "height": 2,
              "rows": "gEAAgA=="
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "jobId": "auto1",
              "status": "pending"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "getPrintJob": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "printerId": "dr_theke",
            "jobId": "job1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: printerId, jobId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "jobId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "job_unknown",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "jobId": "job9"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Job nicht gefunden.",
            "data": {
              "code": "print_job_not_found"
            },
            "code": "print_job_not_found"
          }
        },
        {
          "case": "success_printed",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "printerId": "dr_theke",
            "jobId": "job1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "jobId": "job1",
              "status": "printed",
              "createdAt": 1790409540000,
              "sentAt": 1790409545000,
              "result": {
                "code": "",
                "status": "",
                "success": true,
                "at": 1790409550000
              }
            }
          }
        },
        {
          "case": "success_open",
          "method": "POST",
          "caller": "owner",
          "params": {
            "printerId": "dr_theke",
            "jobId": "job2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "jobId": "job2",
              "status": "pending",
              "createdAt": 1790409599000,
              "sentAt": null,
              "result": null
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyTipRecipients": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "without_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: cashregisterId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "cashregisterId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_other_cashregister",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "other_cashregister_as_session",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung gehört zu einer anderen Kasse – bitte dort neu anmelden.",
            "data": {
              "code": "session_other_cashregister"
            },
            "code": "session_other_cashregister"
          }
        },
        {
          "case": "cashier_only_self",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "recipients": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "owner": false
                }
              ]
            }
          }
        },
        {
          "case": "manager_all",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "recipients": [
                {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "owner": true
                },
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "owner": false
                },
                {
                  "registerUserId": "ru_alt",
                  "name": "Dora Alt",
                  "owner": false
                },
                {
                  "registerUserId": "ru_gesperrt_pin",
                  "name": "Emil Sperre",
                  "owner": false
                },
                {
                  "registerUserId": "ru_fremd",
                  "name": "Fritz Fremd",
                  "owner": false
                },
                {
                  "registerUserId": "ru_ohnestorno",
                  "name": "Gerda Ohne",
                  "owner": false
                }
              ]
            }
          }
        },
        {
          "case": "api_key_without_cashregister_token",
          "method": "POST",
          "caller": "other",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fehlende Daten: cashregisterToken",
            "data": {
              "code": "cashregister_token_missing"
            },
            "code": "cashregister_token_missing"
          }
        },
        {
          "case": "api_key_wrong",
          "method": "POST",
          "caller": "device_api_key",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key ist falsch.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "api_key",
          "method": "POST",
          "caller": "device_api_key",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "recipients": [
                {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "owner": true
                },
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "owner": false
                },
                {
                  "registerUserId": "ru_alt",
                  "name": "Dora Alt",
                  "owner": false
                },
                {
                  "registerUserId": "ru_gesperrt_pin",
                  "name": "Emil Sperre",
                  "owner": false
                },
                {
                  "registerUserId": "ru_fremd",
                  "name": "Fritz Fremd",
                  "owner": false
                },
                {
                  "registerUserId": "ru_ohnestorno",
                  "name": "Gerda Ohne",
                  "owner": false
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyStockLocations": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "locations": [
                {
                  "id": "haupt",
                  "name": "Hauptstandort",
                  "type": "store",
                  "address": null,
                  "licensePlate": null,
                  "active": true,
                  "virtual": true
                },
                {
                  "id": "auto1",
                  "name": "Lieferwagen W-12345",
                  "type": "vehicle",
                  "address": null,
                  "licensePlate": "W-12345",
                  "active": true
                },
                {
                  "id": "alt",
                  "name": "Altes Lager",
                  "type": "warehouse",
                  "address": {
                    "street": "Hauptplatz 1",
                    "zip": "1010",
                    "city": "Wien",
                    "country": "AT"
                  },
                  "licensePlate": null,
                  "active": false
                }
              ]
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "locations": [
                {
                  "id": "haupt",
                  "name": "Hauptstandort",
                  "type": "store",
                  "address": null,
                  "licensePlate": null,
                  "active": true,
                  "virtual": true
                },
                {
                  "id": "auto1",
                  "name": "Lieferwagen W-12345",
                  "type": "vehicle",
                  "address": null,
                  "licensePlate": "W-12345",
                  "active": true
                },
                {
                  "id": "alt",
                  "name": "Altes Lager",
                  "type": "warehouse",
                  "address": {
                    "street": "Hauptplatz 1",
                    "zip": "1010",
                    "city": "Wien",
                    "country": "AT"
                  },
                  "licensePlate": null,
                  "active": false
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyStock": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stock": [
                {
                  "articleId": "art_kaffee",
                  "locationId": "haupt",
                  "sellable": 12000,
                  "defective": 0,
                  "reserved": 2000,
                  "available": 10000
                },
                {
                  "articleId": "art_kaffee",
                  "locationId": "auto1",
                  "sellable": 3000,
                  "defective": 1000,
                  "reserved": 0,
                  "available": 3000
                }
              ]
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stock": [
                {
                  "articleId": "art_kaffee",
                  "locationId": "haupt",
                  "sellable": 12000,
                  "defective": 0,
                  "reserved": 2000,
                  "available": 10000
                },
                {
                  "articleId": "art_kaffee",
                  "locationId": "auto1",
                  "sellable": 3000,
                  "defective": 1000,
                  "reserved": 0,
                  "available": 3000
                }
              ],
              "values": [
                {
                  "articleId": "art_kaffee",
                  "stockValueCents": 4800,
                  "averageCostMicros": 3000000
                }
              ]
            }
          }
        },
        {
          "case": "success_location",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "locationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stock": [
                {
                  "articleId": "art_kaffee",
                  "locationId": "auto1",
                  "sellable": 3000,
                  "defective": 1000,
                  "reserved": 0,
                  "available": 3000
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "setMyCashregisterStockLocation": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: cashregisterId, stockLocationId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "stockLocationId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "manager_without_permission",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE2",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "location_unknown",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Standort nicht gefunden.",
            "data": {
              "code": "location_not_found"
            },
            "code": "location_not_found"
          }
        },
        {
          "case": "location_inactive",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "alt"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Standort ist aufgelöst.",
            "data": {
              "code": "location_inactive"
            },
            "code": "location_inactive"
          }
        },
        {
          "case": "cashregister_unknown",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE9",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Kasse nicht gefunden.",
            "data": {
              "code": "cashregister_not_found"
            },
            "code": "cashregister_not_found"
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cashregisterId": "KASSE1",
              "stockLocationId": "auto1"
            }
          }
        },
        {
          "case": "success_reset",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1",
            "stockLocationId": ""
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "cashregisterId": "KASSE1",
              "stockLocationId": null
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyStocktakes": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "session_wrong",
          "method": "POST",
          "caller": "register_user_wrong_session",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Sitzung abgelaufen oder übernommen – bitte neu anmelden.",
            "data": {
              "code": "session_expired"
            },
            "code": "session_expired"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_wagen",
                  "name": "Inventur auto1 26.09.2026",
                  "locationId": "auto1",
                  "scope": {
                    "type": "articles",
                    "groupIds": [],
                    "articleIds": [
                      "art_kaffee"
                    ]
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": false,
                  "status": "counting",
                  "progress": {
                    "items": 1,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:01.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                },
                {
                  "id": "inv_laden",
                  "name": "Inventur haupt 26.09.2026",
                  "locationId": "haupt",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "key_date",
                  "keyDate": "2026-09-30",
                  "blind": true,
                  "status": "counting",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:00.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                }
              ]
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_wagen",
                  "name": "Inventur auto1 26.09.2026",
                  "locationId": "auto1",
                  "scope": {
                    "type": "articles",
                    "groupIds": [],
                    "articleIds": [
                      "art_kaffee"
                    ]
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": false,
                  "status": "counting",
                  "progress": {
                    "items": 1,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:01.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                },
                {
                  "id": "inv_laden",
                  "name": "Inventur haupt 26.09.2026",
                  "locationId": "haupt",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "key_date",
                  "keyDate": "2026-09-30",
                  "blind": true,
                  "status": "counting",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:00.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                }
              ]
            }
          }
        },
        {
          "case": "success_owner",
          "method": "POST",
          "caller": "owner",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_keller",
                  "name": "Inventur keller 26.09.2026",
                  "locationId": "keller",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": true,
                  "status": "review",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:02.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T07:59:00.000Z",
                  "review": {
                    "startedAt": "2026-09-26T07:58:00.000Z",
                    "startedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "complete": true,
                    "expectedAsOf": "2026-09-26T07:58:00.000Z",
                    "recountUncounted": 1
                  },
                  "closing": null,
                  "cancellation": null
                },
                {
                  "id": "inv_wagen",
                  "name": "Inventur auto1 26.09.2026",
                  "locationId": "auto1",
                  "scope": {
                    "type": "articles",
                    "groupIds": [],
                    "articleIds": [
                      "art_kaffee"
                    ]
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": false,
                  "status": "counting",
                  "progress": {
                    "items": 1,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:01.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                },
                {
                  "id": "inv_laden",
                  "name": "Inventur haupt 26.09.2026",
                  "locationId": "haupt",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "key_date",
                  "keyDate": "2026-09-30",
                  "blind": true,
                  "status": "counting",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:00.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                }
              ]
            }
          }
        },
        {
          "case": "success_location",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "locationId": "auto1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_wagen",
                  "name": "Inventur auto1 26.09.2026",
                  "locationId": "auto1",
                  "scope": {
                    "type": "articles",
                    "groupIds": [],
                    "articleIds": [
                      "art_kaffee"
                    ]
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": false,
                  "status": "counting",
                  "progress": {
                    "items": 1,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-26T06:00:01.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-26T06:00:00.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": null
                }
              ]
            }
          }
        },
        {
          "case": "success_owner_closed",
          "method": "POST",
          "caller": "owner",
          "params": {
            "status": "closed"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_alt",
                  "name": "Inventur alt 26.09.2026",
                  "locationId": "alt",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": true,
                  "status": "closed",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-25T06:00:00.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-25T08:00:00.000Z",
                  "review": {
                    "startedAt": "2026-09-25T07:00:00.000Z",
                    "startedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "complete": true,
                    "expectedAsOf": "2026-09-25T07:00:00.000Z",
                    "recountUncounted": 0
                  },
                  "closing": {
                    "startedAt": "2026-09-25T07:33:20.000Z",
                    "startedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "uncountedAsZero": false,
                    "parts": 1,
                    "bookedParts": 1,
                    "completedAt": "2026-09-25T08:00:00.000Z"
                  },
                  "totals": {
                    "items": 2,
                    "counted": 1,
                    "uncounted": 1,
                    "recounted": 0,
                    "withDifference": 1,
                    "needsCheck": 0,
                    "notBooked": 0,
                    "differenceValueCents": -640,
                    "inventoryValueCents": 2560
                  },
                  "warnings": [
                    {
                      "code": "uncounted_items",
                      "items": 1
                    }
                  ],
                  "seal": {
                    "fromDay": "2026-09-01",
                    "toDay": "2026-09-24",
                    "daysChecked": 24,
                    "verified": true,
                    "firstBreak": null,
                    "gaps": [],
                    "gapCount": 0
                  },
                  "checksum": "5f0c2b0a0e1d9c8b7a6958473625140312f0e1d2c3b4a5968778695a4b3c2d1e",
                  "inventoryAsOf": "count_date",
                  "pdf": {
                    "available": true,
                    "valuesSha256": "0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f9",
                    "quantitiesSha256": "9f8e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c5b4a39281706f5e4d3c2b1a0"
                  },
                  "cancellation": null
                }
              ]
            }
          }
        },
        {
          "case": "success_owner_cancelled",
          "method": "POST",
          "caller": "owner",
          "params": {
            "status": "cancelled"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "stocktakes": [
                {
                  "id": "inv_abbruch",
                  "name": "Inventur keller 26.09.2026",
                  "locationId": "keller",
                  "scope": {
                    "type": "all",
                    "groupIds": [],
                    "articleIds": []
                  },
                  "type": "perpetual",
                  "keyDate": null,
                  "blind": true,
                  "status": "cancelled",
                  "progress": {
                    "items": 2,
                    "recountOpen": false
                  },
                  "createdAt": "2026-09-24T06:00:00.000Z",
                  "createdBy": {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  },
                  "source": "panel",
                  "updatedAt": "2026-09-24T08:13:20.000Z",
                  "review": null,
                  "closing": null,
                  "cancellation": {
                    "reason": "Falscher Standort gewählt",
                    "cancelledAt": "2026-09-24T08:13:20.000Z",
                    "cancelledBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    }
                  }
                }
              ]
            }
          }
        },
        {
          "case": "status_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "status": "gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "status",
                  "message": "Unbekannter Status."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyStocktakeItems": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: stocktakeId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "stocktakeId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "stocktake_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Inventur nicht gefunden.",
            "data": {
              "code": "stocktake_not_found"
            },
            "code": "stocktake_not_found"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 12000,
                  "counts": 2,
                  "firstCountedAt": "2026-09-26T07:50:00.000Z",
                  "referenceTime": "2026-09-26T07:55:00.000Z",
                  "countedBy": [
                    {
                      "type": "register_user",
                      "id": "ru_kellner",
                      "name": "Ben Kellner"
                    },
                    {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                },
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_cashier_check",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_keller"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 9000,
                  "counts": 1,
                  "firstCountedAt": "2026-09-26T07:45:00.000Z",
                  "referenceTime": "2026-09-26T07:45:00.000Z",
                  "countedBy": [
                    {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                },
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 2,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": true,
                  "recount": {
                    "reason": "Kiste hinten nachzählen",
                    "requestedAt": "2026-09-26T07:58:20.000Z",
                    "requestedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "round": 2
                  },
                  "addedLater": false
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_manager_check",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_keller"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 9000,
                  "counts": 1,
                  "firstCountedAt": "2026-09-26T07:45:00.000Z",
                  "referenceTime": "2026-09-26T07:45:00.000Z",
                  "countedBy": [
                    {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false,
                  "expectedQuantity": 10000,
                  "differenceQuantity": -1000,
                  "needsCheck": true,
                  "checkReasons": [
                    "movements_between_counts"
                  ],
                  "expectedAsOf": "2026-09-26T07:58:00.000Z",
                  "missingSerialNumbers": [],
                  "extraSerialNumbers": []
                },
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 2,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": true,
                  "recount": {
                    "reason": "Kiste hinten nachzählen",
                    "requestedAt": "2026-09-26T07:58:20.000Z",
                    "requestedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "round": 2
                  },
                  "addedLater": false,
                  "expectedQuantity": null,
                  "differenceQuantity": null,
                  "needsCheck": false,
                  "checkReasons": [],
                  "expectedAsOf": null
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_owner_check",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_keller"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 9000,
                  "counts": 1,
                  "firstCountedAt": "2026-09-26T07:45:00.000Z",
                  "referenceTime": "2026-09-26T07:45:00.000Z",
                  "countedBy": [
                    {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false,
                  "expectedQuantity": 10000,
                  "differenceQuantity": -1000,
                  "needsCheck": true,
                  "checkReasons": [
                    "movements_between_counts"
                  ],
                  "expectedAsOf": "2026-09-26T07:58:00.000Z",
                  "differenceValueCents": -320,
                  "missingSerialNumbers": [],
                  "extraSerialNumbers": []
                },
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 2,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": true,
                  "recount": {
                    "reason": "Kiste hinten nachzählen",
                    "requestedAt": "2026-09-26T07:58:20.000Z",
                    "requestedBy": {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    },
                    "round": 2
                  },
                  "addedLater": false,
                  "expectedQuantity": null,
                  "differenceQuantity": null,
                  "needsCheck": false,
                  "checkReasons": [],
                  "expectedAsOf": null,
                  "differenceValueCents": null
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_owner_closed",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_alt"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 8000,
                  "counts": 1,
                  "firstCountedAt": "2026-09-25T07:16:40.000Z",
                  "referenceTime": "2026-09-25T07:16:40.000Z",
                  "countedBy": [
                    {
                      "type": "owner",
                      "id": "kw_betrieb1",
                      "name": null
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false,
                  "expectedQuantity": 10000,
                  "differenceQuantity": -2000,
                  "needsCheck": false,
                  "checkReasons": [],
                  "expectedAsOf": "2026-09-25T07:00:00.000Z",
                  "differenceValueCents": -640,
                  "missingSerialNumbers": [],
                  "extraSerialNumbers": [],
                  "bookedQuantity": -2000,
                  "notBooked": null,
                  "inventory": {
                    "quantity": 8000,
                    "unitValueMicros": 3200000,
                    "valueCents": 2560,
                    "countedOn": "2026-09-24"
                  }
                },
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false,
                  "expectedQuantity": 4000,
                  "differenceQuantity": null,
                  "needsCheck": true,
                  "checkReasons": [
                    "not_counted"
                  ],
                  "expectedAsOf": "2026-09-25T07:00:00.000Z",
                  "differenceValueCents": null,
                  "missingSerialNumbers": [],
                  "extraSerialNumbers": [],
                  "bookedQuantity": null,
                  "notBooked": null,
                  "inventory": null
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_stock",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_wagen"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false,
                  "bookStockNow": 3000
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_open",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "openOnly": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_page",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "limit": 1
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "name": "Kaffee",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": true,
                  "quantity": 12000,
                  "counts": 2,
                  "firstCountedAt": "2026-09-26T07:50:00.000Z",
                  "referenceTime": "2026-09-26T07:55:00.000Z",
                  "countedBy": [
                    {
                      "type": "register_user",
                      "id": "ru_kellner",
                      "name": "Ben Kellner"
                    },
                    {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  ],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                }
              ],
              "nextCursor": "eyJpZCI6ImFydF9rYWZmZWVfX3ZlcmthdWZiYXIifQ"
            }
          }
        },
        {
          "case": "success_next_page",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "limit": 1,
            "cursor": "eyJpZCI6ImFydF9rYWZmZWVfX3ZlcmthdWZiYXIifQ"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "items": [
                {
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "name": "Kuchen",
                  "number": null,
                  "unit": "Stk",
                  "round": 1,
                  "counted": false,
                  "quantity": null,
                  "counts": 0,
                  "firstCountedAt": null,
                  "referenceTime": null,
                  "countedBy": [],
                  "serialNumbers": [],
                  "recountRequested": false,
                  "addedLater": false
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "cursor_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "cursor": "gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Blätter-Zeiger ist ungültig oder abgelaufen.",
            "data": {
              "code": "invalid_cursor"
            },
            "code": "invalid_cursor"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "listMyStocktakeCounts": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: stocktakeId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "stocktakeId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "stocktake_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Inventur nicht gefunden.",
            "data": {
              "code": "stocktake_not_found"
            },
            "code": "stocktake_not_found"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "counts": [
                {
                  "id": "zk1",
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "quantity": 5000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_kellner",
                    "name": "Ben Kellner"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:50:00.000Z",
                  "note": "Regal oben",
                  "voided": null
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "counts": [
                {
                  "id": "zc1",
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "quantity": 7000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:55:00.000Z",
                  "note": null,
                  "voided": null
                },
                {
                  "id": "zc0",
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "quantity": 3000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:53:20.000Z",
                  "note": null,
                  "voided": {
                    "reason": "Falsches Regal",
                    "voidedAt": "2026-09-26T07:54:10.000Z",
                    "voidedBy": {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  }
                },
                {
                  "id": "zk1",
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "quantity": 5000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_kellner",
                    "name": "Ben Kellner"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:50:00.000Z",
                  "note": "Regal oben",
                  "voided": null
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_manager_only_own",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "ownOnly": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "counts": [
                {
                  "id": "zc1",
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "quantity": 7000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:55:00.000Z",
                  "note": null,
                  "voided": null
                },
                {
                  "id": "zc0",
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "quantity": 3000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:53:20.000Z",
                  "note": null,
                  "voided": {
                    "reason": "Falsches Regal",
                    "voidedAt": "2026-09-26T07:54:10.000Z",
                    "voidedBy": {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  }
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_article",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "counts": [
                {
                  "id": "zc0",
                  "articleId": "art_kuchen",
                  "condition": "sellable",
                  "quantity": 3000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:53:20.000Z",
                  "note": null,
                  "voided": {
                    "reason": "Falsches Regal",
                    "voidedAt": "2026-09-26T07:54:10.000Z",
                    "voidedBy": {
                      "type": "register_user",
                      "id": "ru_chef",
                      "name": "Anna Chef"
                    }
                  }
                }
              ],
              "nextCursor": null
            }
          }
        },
        {
          "case": "success_page",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "limit": 1
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "counts": [
                {
                  "id": "zc1",
                  "articleId": "art_kaffee",
                  "condition": "sellable",
                  "quantity": 7000,
                  "serialNumbers": [],
                  "round": 1,
                  "countedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  },
                  "source": "register",
                  "cashregisterId": "KASSE1",
                  "countedAt": "2026-09-26T07:55:00.000Z",
                  "note": null,
                  "voided": null
                }
              ],
              "nextCursor": "eyJpZCI6InpjMSJ9"
            }
          }
        },
        {
          "case": "cursor_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "cursor": "zc1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Blätter-Zeiger ist ungültig oder abgelaufen.",
            "data": {
              "code": "invalid_cursor"
            },
            "code": "invalid_cursor"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "recordMyStocktakeCount": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: stocktakeId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "stocktakeId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1",
            "cashregisterId": "KASSE2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "stocktake_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "gibtsnicht",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Inventur nicht gefunden.",
            "data": {
              "code": "stocktake_not_found"
            },
            "code": "stocktake_not_found"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "quantity_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": -1000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Menge muss eine ganze Zahl ≥ 0 sein.",
            "data": {
              "code": "invalid_quantity"
            },
            "code": "invalid_quantity"
          }
        },
        {
          "case": "condition_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1",
            "condition": "broken"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "condition",
                  "message": "Zustand: sellable oder defective."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "article_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_gibtsnicht",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Artikel nicht gefunden.",
            "data": {
              "code": "article_not_found"
            },
            "code": "article_not_found"
          }
        },
        {
          "case": "not_in_scope",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_wagen",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Artikel gehört nicht zu dieser Inventur.",
            "data": {
              "code": "article_not_in_scope"
            },
            "code": "article_not_in_scope"
          }
        },
        {
          "case": "not_open",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_keller",
            "articleId": "art_kaffee",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Hier wird gerade nicht gezählt.",
            "data": {
              "code": "stocktake_not_open"
            },
            "code": "stocktake_not_open"
          }
        },
        {
          "case": "closed",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_alt",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Inventur ist abgeschlossen oder abgebrochen.",
            "data": {
              "code": "stocktake_closed"
            },
            "code": "stocktake_closed"
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1",
            "cashregisterId": "KASSE1",
            "note": "Regal 3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "e4594b57b42d4757228bc6466f2f07a157cf9e04c99b5c7dfff4db933003ea1b",
                "articleId": "art_kuchen",
                "condition": "sellable",
                "quantity": 3000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_chef",
                  "name": "Anna Chef"
                },
                "source": "register",
                "cashregisterId": "KASSE1",
                "countedAt": "2026-09-26T08:00:00.000Z",
                "note": "Regal 3",
                "voided": null
              },
              "item": {
                "articleId": "art_kuchen",
                "condition": "sellable",
                "name": "Kuchen",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 3000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T08:00:00.000Z",
                "referenceTime": "2026-09-26T08:00:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kaffee",
            "quantity": 1000,
            "idempotencyKey": "k-kuchen-1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "e4594b57b42d4757228bc6466f2f07a157cf9e04c99b5c7dfff4db933003ea1b",
                "articleId": "art_kaffee",
                "condition": "sellable",
                "quantity": 1000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "source": "register",
                "cashregisterId": "KASSE1",
                "countedAt": "2026-09-26T08:00:00.000Z",
                "note": null,
                "voided": null
              },
              "item": {
                "articleId": "art_kaffee",
                "condition": "sellable",
                "name": "Kaffee",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 13000,
                "counts": 3,
                "firstCountedAt": "2026-09-26T07:50:00.000Z",
                "referenceTime": "2026-09-26T08:00:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_kellner",
                    "name": "Ben Kellner"
                  },
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "success_owner_defective",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 1000,
            "idempotencyKey": "k-kuchen-1",
            "condition": "defective"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "e4594b57b42d4757228bc6466f2f07a157cf9e04c99b5c7dfff4db933003ea1b",
                "articleId": "art_kuchen",
                "condition": "defective",
                "quantity": 1000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "owner",
                  "id": "kw_betrieb1",
                  "name": null
                },
                "source": "panel",
                "cashregisterId": null,
                "countedAt": "2026-09-26T08:00:00.000Z",
                "note": null,
                "voided": null
              },
              "item": {
                "articleId": "art_kuchen",
                "condition": "defective",
                "name": "Kuchen",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 1000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T08:00:00.000Z",
                "referenceTime": "2026-09-26T08:00:00.000Z",
                "countedBy": [
                  {
                    "type": "owner",
                    "id": "kw_betrieb1",
                    "name": null
                  }
                ],
                "recountRequested": false,
                "addedLater": true
              }
            }
          }
        },
        {
          "case": "success_same_key",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 3000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "e4594b57b42d4757228bc6466f2f07a157cf9e04c99b5c7dfff4db933003ea1b",
                "articleId": "art_kuchen",
                "condition": "sellable",
                "quantity": 3000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_chef",
                  "name": "Anna Chef"
                },
                "source": "register",
                "cashregisterId": null,
                "countedAt": "2026-09-26T07:59:00.000Z",
                "note": null,
                "voided": null
              },
              "item": {
                "articleId": "art_kuchen",
                "condition": "sellable",
                "name": "Kuchen",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 3000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T07:59:00.000Z",
                "referenceTime": "2026-09-26T07:59:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "key_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "articleId": "art_kuchen",
            "quantity": 4000,
            "idempotencyKey": "k-kuchen-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
            "data": {
              "code": "idempotency_conflict"
            },
            "code": "idempotency_conflict"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "voidMyStocktakeCount": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "reason": "x",
            "idempotencyKey": "k"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: stocktakeId, countId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "countId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "owner",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Lager\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Lagervorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "stocktake_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "gibtsnicht",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Inventur nicht gefunden.",
            "data": {
              "code": "stocktake_not_found"
            },
            "code": "stocktake_not_found"
          }
        },
        {
          "case": "count_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "gibtsnicht",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Zählung nicht gefunden.",
            "data": {
              "code": "count_not_found"
            },
            "code": "count_not_found"
          }
        },
        {
          "case": "reason_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "reason",
                  "message": "Grund mit 1 bis 500 Zeichen."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "foreign_count",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zc1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Fremde Zählungen storniert nur, wer Inventuren prüfen und abschließen darf.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "already_cancelled",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zc0",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Zählung ist schon storniert.",
            "data": {
              "code": "count_already_voided"
            },
            "code": "count_already_voided"
          }
        },
        {
          "case": "not_open",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_keller",
            "countId": "zp1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Hier wird gerade nicht gezählt.",
            "data": {
              "code": "stocktake_not_open"
            },
            "code": "stocktake_not_open"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "zk1",
                "articleId": "art_kaffee",
                "condition": "sellable",
                "quantity": 5000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "source": "register",
                "cashregisterId": "KASSE1",
                "countedAt": "2026-09-26T07:50:00.000Z",
                "note": "Regal oben",
                "voided": {
                  "reason": "Doppelt gezählt",
                  "voidedAt": "2026-09-26T08:00:00.000Z",
                  "voidedBy": {
                    "type": "register_user",
                    "id": "ru_kellner",
                    "name": "Ben Kellner"
                  }
                }
              },
              "item": {
                "articleId": "art_kaffee",
                "condition": "sellable",
                "name": "Kaffee",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 7000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T07:55:00.000Z",
                "referenceTime": "2026-09-26T07:55:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "zk1",
                "articleId": "art_kaffee",
                "condition": "sellable",
                "quantity": 5000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "source": "register",
                "cashregisterId": "KASSE1",
                "countedAt": "2026-09-26T07:50:00.000Z",
                "note": "Regal oben",
                "voided": {
                  "reason": "Doppelt gezählt",
                  "voidedAt": "2026-09-26T08:00:00.000Z",
                  "voidedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                }
              },
              "item": {
                "articleId": "art_kaffee",
                "condition": "sellable",
                "name": "Kaffee",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 7000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T07:55:00.000Z",
                "referenceTime": "2026-09-26T07:55:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "success_same_key",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zk1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "count": {
                "id": "zk1",
                "articleId": "art_kaffee",
                "condition": "sellable",
                "quantity": 5000,
                "serialNumbers": [],
                "round": 1,
                "countedBy": {
                  "type": "register_user",
                  "id": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "source": "register",
                "cashregisterId": "KASSE1",
                "countedAt": "2026-09-26T07:50:00.000Z",
                "note": "Regal oben",
                "voided": {
                  "reason": "Doppelt gezählt",
                  "voidedAt": "2026-09-26T07:59:00.000Z",
                  "voidedBy": {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                }
              },
              "item": {
                "articleId": "art_kaffee",
                "condition": "sellable",
                "name": "Kaffee",
                "number": null,
                "unit": "Stk",
                "round": 1,
                "counted": true,
                "quantity": 7000,
                "counts": 1,
                "firstCountedAt": "2026-09-26T07:55:00.000Z",
                "referenceTime": "2026-09-26T07:55:00.000Z",
                "countedBy": [
                  {
                    "type": "register_user",
                    "id": "ru_chef",
                    "name": "Anna Chef"
                  }
                ],
                "recountRequested": false,
                "addedLater": false
              }
            }
          }
        },
        {
          "case": "key_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "stocktakeId": "inv_laden",
            "countId": "zc1",
            "reason": "Doppelt gezählt",
            "idempotencyKey": "s-zk1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
            "data": {
              "code": "idempotency_conflict"
            },
            "code": "idempotency_conflict"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "checkVoucher": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "code": "B1KK5EQ57DHP",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "code_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: code",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "code",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "check_digit_wrong",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "code": "B1KK5EQ57DH0",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Gutscheincode ist ungültig.",
            "data": {
              "code": "voucher_invalid_code"
            },
            "code": "voucher_invalid_code"
          }
        },
        {
          "case": "unknown",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "code": "B1KK5EQ57DKJ",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diesen Gutschein gibt es nicht.",
            "data": {
              "code": "voucher_not_found"
            },
            "code": "voucher_not_found"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "code": "b1kk-5eq5-7dhp",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "type": "multi_purpose",
              "status": "active",
              "balanceCents": 3200,
              "faceValueCents": 5000,
              "validity": {
                "pattern": "1+3",
                "redeemableUntil": "2027-09-20",
                "refundableUntil": "2030-09-20",
                "validUntil": null
              },
              "codeSuffix": "7DHP"
            }
          }
        },
        {
          "case": "success_service",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "code": "B1KK5EQ57DJG",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "type": "service",
              "status": "active",
              "faceValueCents": 10500,
              "quantity": 3,
              "remainingQuantity": 2,
              "vatRateBp": 2000,
              "article": {
                "id": "art_mani",
                "name": "Manikuere",
                "vatRateBp": 2000,
                "priceCents": 3500
              },
              "validity": {
                "pattern": "unlimited",
                "redeemableUntil": null,
                "refundableUntil": null,
                "validUntil": null
              },
              "codeSuffix": "7DJG"
            }
          }
        },
        {
          "case": "success_exempt",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "code": "B1KK5EQ57DMW",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "type": "single_purpose",
              "status": "active",
              "balanceCents": 4000,
              "faceValueCents": 4000,
              "vatRateBp": 0,
              "validity": {
                "pattern": "unlimited",
                "redeemableUntil": null,
                "refundableUntil": null,
                "validUntil": null
              },
              "codeSuffix": "7DMW",
              "exempt": true
            }
          }
        },
        {
          "case": "success_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "code": "B1KK5EQ57DHP"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "type": "multi_purpose",
              "status": "active",
              "balanceCents": 3200,
              "faceValueCents": 5000,
              "validity": {
                "pattern": "1+3",
                "redeemableUntil": "2027-09-20",
                "refundableUntil": "2030-09-20",
                "validUntil": null
              },
              "codeSuffix": "7DHP"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "reprintVoucherLabel": {
      "codebase": "default",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "id": "gmz1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "id_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: id",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "id",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "id": "gmz1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Dafür fehlt die Berechtigung.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "id": "gxx9",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diesen Gutschein gibt es nicht.",
            "data": {
              "code": "voucher_not_found"
            },
            "code": "voucher_not_found"
          }
        },
        {
          "case": "cancelled",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "id": "gmz1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Gutschein wurde storniert.",
            "data": {
              "code": "voucher_cancelled"
            },
            "code": "voucher_cancelled"
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "id": "gmz1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "code": "B1KK-5EQ5-7DHP",
              "voucher": {
                "id": "gmz1",
                "status": "active",
                "code": "····-····-7DHP",
                "type": "multi_purpose",
                "codeSuffix": "7DHP",
                "faceValueCents": 5000,
                "balanceCents": 3200,
                "vatRateBp": null,
                "smallBusiness": false,
                "salePaymentMethod": "cash",
                "validity": {
                  "pattern": "1+3",
                  "redeemableUntil": "2027-09-20",
                  "refundableUntil": "2030-09-20",
                  "validUntil": null
                },
                "issue": {
                  "receiptId": "KASSE1-ID-9",
                  "fullReceiptId": null,
                  "cashregisterId": "KASSE1",
                  "at": 1790323200000,
                  "day": "2026-09-20"
                },
                "print": {
                  "count": 1,
                  "lastAt": 1790409600000
                },
                "createdAt": 1790323200000,
                "updatedAt": 1790409600000
              }
            }
          }
        },
        {
          "case": "success_service",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "id": "gls1",
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "code": "B1KK-5EQ5-7DJG",
              "voucher": {
                "id": "gls1",
                "status": "active",
                "code": "····-····-7DJG",
                "type": "service",
                "codeSuffix": "7DJG",
                "faceValueCents": 10500,
                "vatRateBp": 2000,
                "article": {
                  "id": "art_mani",
                  "name": "Manikuere",
                  "vatRateBp": 2000,
                  "priceCents": 3500
                },
                "quantity": 3,
                "remainingQuantity": 2,
                "smallBusiness": false,
                "salePaymentMethod": "cash",
                "validity": {
                  "pattern": "unlimited",
                  "redeemableUntil": null,
                  "refundableUntil": null,
                  "validUntil": null
                },
                "issue": {
                  "receiptId": "KASSE1-ID-8",
                  "fullReceiptId": null,
                  "cashregisterId": "KASSE1",
                  "at": 1790323200000,
                  "day": "2026-09-20"
                },
                "print": {
                  "count": 1,
                  "lastAt": 1790409600000
                },
                "createdAt": 1790323200000,
                "updatedAt": 1790409600000
              }
            }
          }
        },
        {
          "case": "success_device",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "id": "gmz1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "code": "B1KK-5EQ5-7DHP",
              "voucher": {
                "id": "gmz1",
                "status": "active",
                "code": "····-····-7DHP",
                "type": "multi_purpose",
                "codeSuffix": "7DHP",
                "faceValueCents": 5000,
                "balanceCents": 3200,
                "vatRateBp": null,
                "smallBusiness": false,
                "salePaymentMethod": "cash",
                "validity": {
                  "pattern": "1+3",
                  "redeemableUntil": "2027-09-20",
                  "refundableUntil": "2030-09-20",
                  "validUntil": null
                },
                "issue": {
                  "receiptId": "KASSE1-ID-9",
                  "fullReceiptId": null,
                  "cashregisterId": "KASSE1",
                  "at": 1790323200000,
                  "day": "2026-09-20"
                },
                "print": {
                  "count": 1,
                  "lastAt": 1790409600000
                },
                "createdAt": 1790323200000,
                "updatedAt": 1790409600000
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "getMyDrawerState": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "drawerId",
                  "message": "drawerId oder cashregisterId angeben."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "drawer_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_gibtsnicht"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Lade nicht gefunden.",
            "data": {
              "code": "drawer_not_found"
            },
            "code": "drawer_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_terrasse"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 400
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 400
                }
              ]
            }
          }
        },
        {
          "case": "success_cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": false,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                }
              },
              "longOpenWarning": false,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 400
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 400
                }
              ]
            }
          }
        },
        {
          "case": "success_drawer_decommissioned",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_alt"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 400
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 400
                }
              ]
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": true,
                "cashView": true,
                "drawer": true
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": null,
                "comment": null,
                "blind": null,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 0,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 0,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29400,
                "differenceCents": null,
                "reconciliation": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 400
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 400
                }
              ],
              "suggestedFloatCents": null,
              "expectedCents": 29400,
              "recentOpenings": [
                {
                  "at": "2026-09-26T07:50:00.000Z",
                  "deviceTime": "2026-09-26T07:49:50.000Z",
                  "reason": "change",
                  "by": {
                    "name": "Anna Chef"
                  },
                  "ok": true
                },
                {
                  "at": "2026-09-26T07:40:00.000Z",
                  "deviceTime": "2026-09-26T07:40:00.000Z",
                  "reason": "sale",
                  "by": {
                    "name": "Ben Kellner"
                  },
                  "ok": true
                }
              ]
            }
          }
        },
        {
          "case": "success_manager_tip_only_immediate",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": true,
                "cashView": true,
                "drawer": true
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": null,
                "comment": null,
                "blind": null,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 0,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 213,
                      "retainedCents": 0,
                      "paidOutCents": 0,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29400,
                "differenceCents": null,
                "reconciliation": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 400
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 213,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 400
                }
              ],
              "suggestedFloatCents": null,
              "expectedCents": 29400,
              "recentOpenings": [
                {
                  "at": "2026-09-26T07:50:00.000Z",
                  "deviceTime": "2026-09-26T07:49:50.000Z",
                  "reason": "change",
                  "by": {
                    "name": "Anna Chef"
                  },
                  "ok": true
                },
                {
                  "at": "2026-09-26T07:40:00.000Z",
                  "deviceTime": "2026-09-26T07:40:00.000Z",
                  "reason": "sale",
                  "by": {
                    "name": "Ben Kellner"
                  },
                  "ok": true
                }
              ]
            }
          }
        },
        {
          "case": "success_cashier_tip_taken",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "cents": 300
                },
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 150
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "receivedImmediatelyCents": 0,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 300
                },
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 150,
                  "paidOutCents": 250,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 0,
                  "openCents": 150
                }
              ]
            }
          }
        },
        {
          "case": "success_cashier_tip_carried_over",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 1500
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 900,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 0,
                  "carriedOverCents": 600,
                  "openCents": 1500
                }
              ]
            }
          }
        },
        {
          "case": "success_cashier_tip_self_refunded",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": false,
                "cashView": false,
                "drawer": false
              },
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "longOpenWarning": true,
              "tipClaims": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "cents": 600
                }
              ],
              "tips": [
                {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "receivedImmediatelyCents": 400,
                  "retainedCents": 0,
                  "paidOutCents": 0,
                  "refundedByEmployeeCents": 200,
                  "carriedOverCents": 0,
                  "openCents": 600
                }
              ]
            }
          }
        },
        {
          "case": "success_manager_without_shift",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "lade_bar",
                "name": "Bar",
                "shiftMode": true,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": true,
                "cashView": true,
                "drawer": true
              },
              "shift": null,
              "longOpenWarning": false,
              "tipClaims": [],
              "tips": [],
              "suggestedFloatCents": 3000,
              "expectedCents": null,
              "recentOpenings": []
            }
          }
        },
        {
          "case": "success_manager_change_in",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "lade_bar",
                "name": "Bar",
                "shiftMode": true,
                "cashregisterId": "KASSE1",
                "changeFloatCents": 15000
              },
              "rights": {
                "shift": true,
                "cashMove": true,
                "cashView": true,
                "drawer": true
              },
              "shift": null,
              "longOpenWarning": false,
              "tipClaims": [],
              "tips": [],
              "suggestedFloatCents": 15000,
              "suggestedFromShiftNumber": 1,
              "expectedCents": null,
              "recentOpenings": []
            }
          }
        },
        {
          "case": "success_owner_new_main_drawer",
          "method": "POST",
          "caller": "owner",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "drawer": {
                "id": "haupt_KASSE1",
                "name": "Hauptlade",
                "shiftMode": false,
                "cashregisterId": "KASSE1"
              },
              "rights": {
                "shift": true,
                "cashMove": true,
                "cashView": true,
                "drawer": true
              },
              "shift": null,
              "longOpenWarning": false,
              "tipClaims": [],
              "tips": [],
              "suggestedFloatCents": 0,
              "expectedCents": null,
              "recentOpenings": []
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "openMyShift": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Vorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "openingFloatCents": 2800,
            "idempotencyKey": "o"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: drawerId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "drawerId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "drawer_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_gibtsnicht",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Lade nicht gefunden.",
            "data": {
              "code": "drawer_not_found"
            },
            "code": "drawer_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_terrasse",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "drawer_decommissioned",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_alt",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Lade ist stillgelegt.",
            "data": {
              "code": "drawer_inactive"
            },
            "code": "drawer_inactive"
          }
        },
        {
          "case": "shift_open",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Für diese Lade ist bereits eine Schicht offen.",
            "data": {
              "code": "shift_already_open",
              "shiftId": "haupt_KASSE1_s2"
            },
            "code": "shift_already_open"
          }
        },
        {
          "case": "shift_mode_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Für diese Lade ist der Schichtbetrieb ausgeschaltet.",
            "data": {
              "code": "shift_mode_off"
            },
            "code": "shift_mode_off"
          }
        },
        {
          "case": "amount_and_take_over",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1",
            "takeOver": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Betrag ist ungültig.",
            "data": {
              "code": "invalid_amount"
            },
            "code": "invalid_amount"
          }
        },
        {
          "case": "take_over_with_denominations",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "takeOver": true,
            "denominations": {
              "1000": 3
            },
            "idempotencyKey": "o"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "denominations",
                  "message": "Beim Übernehmen keine Stückelung angeben."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "denominations_wrong",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Stückelung passt nicht zum Betrag.",
            "data": {
              "code": "invalid_denominations"
            },
            "code": "invalid_denominations"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "success_manager_counted",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "lade_bar_s2",
                "drawerId": "lade_bar",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-26T08:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": 2800,
                "openingDenominations": {
                  "100": 1,
                  "200": 1,
                  "500": 1,
                  "2000": 1
                },
                "openingFloatTakenOver": false,
                "countedCents": null,
                "comment": null,
                "blind": null,
                "suggestedFloatCents": 3000,
                "runningTotals": {
                  "cashSalesCents": 0,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 0,
                  "cancellationCount": 0,
                  "cashInCents": 0,
                  "cashOutCents": 0,
                  "tips": [],
                  "openingsWithoutSale": 0
                },
                "expectedCents": 2800,
                "differenceCents": null,
                "reconciliation": null
              },
              "handoverDifferenceCents": -200
            }
          }
        },
        {
          "case": "success_cashier_taken_over",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_bar",
            "takeOver": true,
            "idempotencyKey": "o-bar-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "lade_bar_s2",
                "drawerId": "lade_bar",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-26T08:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_auswahl",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              }
            }
          }
        },
        {
          "case": "success_same_key",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 2800,
            "denominations": {
              "100": 1,
              "200": 1,
              "500": 1,
              "2000": 1
            },
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "lade_bar_s2",
                "drawerId": "lade_bar",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-26T07:59:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": 2800,
                "openingDenominations": {
                  "100": 1,
                  "200": 1,
                  "500": 1,
                  "2000": 1
                },
                "openingFloatTakenOver": false,
                "countedCents": null,
                "comment": null,
                "blind": null,
                "suggestedFloatCents": 3000,
                "runningTotals": {
                  "cashSalesCents": 0,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 0,
                  "cancellationCount": 0,
                  "cashInCents": 0,
                  "cashOutCents": 0,
                  "tips": [],
                  "openingsWithoutSale": 0
                },
                "expectedCents": 2800,
                "differenceCents": null,
                "reconciliation": null
              },
              "handoverDifferenceCents": -200
            }
          }
        },
        {
          "case": "key_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_bar",
            "openingFloatCents": 3000,
            "denominations": null,
            "idempotencyKey": "o-bar-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
            "data": {
              "code": "idempotency_conflict"
            },
            "code": "idempotency_conflict"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "recordMyCashMovement": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Vorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "amountCents": 100,
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: drawerId, type",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "drawerId",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "type",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "drawer_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_gibtsnicht",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Lade nicht gefunden.",
            "data": {
              "code": "drawer_not_found"
            },
            "code": "drawer_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_terrasse",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "drawer_decommissioned",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_alt",
            "type": "owner_deposit",
            "amountCents": 1000,
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Lade ist stillgelegt.",
            "data": {
              "code": "drawer_inactive"
            },
            "code": "drawer_inactive"
          }
        },
        {
          "case": "kind_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "gibtsnicht",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Art der Kassenbewegung ist hier nicht möglich.",
            "data": {
              "code": "invalid_movement_type"
            },
            "code": "invalid_movement_type"
          }
        },
        {
          "case": "kind_only_server",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "count_difference",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Art der Kassenbewegung ist hier nicht möglich.",
            "data": {
              "code": "invalid_movement_type"
            },
            "code": "invalid_movement_type"
          }
        },
        {
          "case": "amount_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 0,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Betrag ist ungültig.",
            "data": {
              "code": "invalid_amount"
            },
            "code": "invalid_amount"
          }
        },
        {
          "case": "text_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "other_in",
            "amountCents": 500,
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte einen Text angeben.",
            "data": {
              "code": "note_required"
            },
            "code": "note_required"
          }
        },
        {
          "case": "same_drawer",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "transfer_out",
            "amountCents": 500,
            "targetDrawerId": "haupt_KASSE1",
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Eine Umbuchung in dieselbe Lade ist nicht möglich.",
            "data": {
              "code": "transfer_same_drawer"
            },
            "code": "transfer_same_drawer"
          }
        },
        {
          "case": "tip_over_claim",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "tip_payout",
            "amountCents": 900,
            "recipientId": "ru_kellner",
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Trinkgeld-Auszahlung ist höher als der offene Anspruch.",
            "data": {
              "code": "tip_payout_exceeds_claim"
            },
            "code": "tip_payout_exceeds_claim"
          }
        },
        {
          "case": "over_balance",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "owner_withdrawal",
            "amountCents": 50000,
            "idempotencyKey": "b"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Auszahlung ist höher als der Kassenstand.",
            "data": {
              "code": "cash_movement_exceeds_balance"
            },
            "code": "cash_movement_exceeds_balance"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "owner_deposit",
            "amountCents": 500
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "success_manager_cash_drop",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "cash_drop",
                "amountCents": -20000,
                "location": "safe",
                "note": "Abend",
                "by": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": null,
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "cash_drop",
                  "amountCents": -20000,
                  "note": "Abend",
                  "location": "safe",
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "success_manager_change_in_without_location",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "change_in",
            "amountCents": 3000,
            "idempotencyKey": "b-5"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "change_in",
                "amountCents": 3000,
                "location": null,
                "note": null,
                "by": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": null,
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "change_in",
                  "amountCents": 3000,
                  "note": null,
                  "location": null,
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "success_manager_transfer",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "transfer_out",
            "amountCents": 5000,
            "note": "Wechselgeld Bar",
            "targetDrawerId": "lade_bar",
            "idempotencyKey": "b-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "transfer_out",
                "amountCents": -5000,
                "location": null,
                "note": "Wechselgeld Bar",
                "by": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": null,
                "counterpart": {
                  "drawerId": "lade_bar",
                  "movementId": "b0000001"
                }
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "transfer_out",
                  "amountCents": -5000,
                  "note": "Wechselgeld Bar",
                  "location": null,
                  "recipientName": null,
                  "targetDrawerName": "Bar",
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "success_manager_tip",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "tip_payout",
            "amountCents": 400,
            "recipientId": "ru_kellner",
            "idempotencyKey": "b-3"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "tip_payout",
                "amountCents": -400,
                "location": null,
                "note": null,
                "by": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "tip_payout",
                  "amountCents": -400,
                  "note": null,
                  "location": null,
                  "recipientName": "Ben Kellner",
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "success_cashier_tip_own",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "tip_payout",
            "amountCents": 250,
            "recipientId": "ru_kellner",
            "idempotencyKey": "b-6"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "tip_payout",
                "amountCents": -250,
                "location": null,
                "note": null,
                "by": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner"
                },
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "tip_payout",
                  "amountCents": -250,
                  "note": null,
                  "location": null,
                  "recipientName": "Ben Kellner",
                  "targetDrawerName": null,
                  "byName": "Ben Kellner",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "cashier_tip_foreign",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "tip_payout",
            "amountCents": 100,
            "recipientId": "ru_chef",
            "idempotencyKey": "b-7"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Vorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "success_owner_without_shift",
          "method": "POST",
          "caller": "owner",
          "params": {
            "drawerId": "lade_bar",
            "type": "owner_deposit",
            "amountCents": 1000,
            "idempotencyKey": "b-4"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000001",
                "number": 1,
                "shiftId": null,
                "type": "owner_deposit",
                "amountCents": 1000,
                "location": null,
                "note": null,
                "by": {
                  "registerUserId": null,
                  "name": null,
                  "role": "owner"
                },
                "at": "2026-09-26T08:00:00.000Z",
                "recipient": null,
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Bar"
                },
                "shift": null,
                "movement": {
                  "number": 1,
                  "type": "owner_deposit",
                  "amountCents": 1000,
                  "note": null,
                  "location": null,
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": null,
                  "at": "2026-09-26T08:00:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "success_same_key",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 20000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "movement": {
                "id": "b0000004",
                "number": 4,
                "shiftId": "haupt_KASSE1_s2",
                "type": "cash_drop",
                "amountCents": -20000,
                "location": "safe",
                "note": "Abend",
                "by": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "at": "2026-09-26T07:59:00.000Z",
                "recipient": null,
                "counterpart": null
              },
              "receipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 4,
                  "type": "cash_drop",
                  "amountCents": -20000,
                  "note": "Abend",
                  "location": "safe",
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T07:59:00.000Z"
                }
              }
            }
          }
        },
        {
          "case": "key_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "type": "cash_drop",
            "amountCents": 10000,
            "location": "safe",
            "note": "Abend",
            "idempotencyKey": "b-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
            "data": {
              "code": "idempotency_conflict"
            },
            "code": "idempotency_conflict"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "logMyDrawerOpenings": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: drawerId, entries",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "drawerId",
                  "message": "Pflichtfeld fehlt."
                },
                {
                  "field": "entries",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "entries_empty",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": []
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "entries",
                  "message": "Ein bis 50 Einträge angeben."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "reason_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "gibtsnicht",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": "l-9"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "entries[0].reason",
                  "message": "Unbekannter Grund."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "time_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "gestern",
                "idempotencyKey": "l-9"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "entries[0].deviceTime",
                  "message": "Zeitpunkt des Geräts fehlt oder ist ungültig."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "text_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "other",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": "l-9"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte einen Text angeben.",
            "data": {
              "code": "note_required"
            },
            "code": "note_required"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "check",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": ""
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "drawer_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "lade_gibtsnicht",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Lade nicht gefunden.",
            "data": {
              "code": "drawer_not_found"
            },
            "code": "drawer_not_found"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_terrasse",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 3,
              "duplicates": 0,
              "drawerId": "haupt_KASSE1"
            }
          }
        },
        {
          "case": "success_duplicate",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-7",
                "ok": true,
                "deviceTime": 1790409480000,
                "idempotencyKey": "l-1"
              },
              {
                "reason": "check",
                "ok": true,
                "deviceTime": "2026-09-26T07:59:00.000Z",
                "idempotencyKey": "l-2"
              },
              {
                "reason": "other",
                "note": "Bonrolle gewechselt",
                "ok": false,
                "error": "Kein Impuls",
                "deviceTime": 1790409570000,
                "idempotencyKey": "l-3"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 0,
              "duplicates": 3,
              "drawerId": "haupt_KASSE1"
            }
          }
        },
        {
          "case": "success_operator_reported_late",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "check",
                "ok": true,
                "deviceTime": 1790344800000,
                "idempotencyKey": "l-20",
                "drawerId": "haupt_KASSE1",
                "operator": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner"
                }
              },
              {
                "reason": "sale",
                "receiptId": "KASSE1-ID-8",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": "l-21",
                "drawerId": "haupt_KASSE1",
                "operator": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner"
                }
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 2,
              "duplicates": 0,
              "drawerId": "haupt_KASSE1"
            }
          }
        },
        {
          "case": "entry_other_drawer",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "drawerId": "haupt_KASSE1",
            "entries": [
              {
                "reason": "check",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": "l-9",
                "drawerId": "lade_bar"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "entries[0].drawerId",
                  "message": "Der Eintrag gehört zu einer anderen Lade."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "success_drawer_decommissioned",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "drawerId": "lade_alt",
            "entries": [
              {
                "reason": "check",
                "ok": true,
                "deviceTime": 1790409540000,
                "idempotencyKey": "l-30",
                "drawerId": "lade_alt"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 1,
              "duplicates": 0,
              "drawerId": "haupt_KASSE1"
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "getMyShiftReport": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "shiftId": "haupt_KASSE1_s2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Vorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {},
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: shiftId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "shiftId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "shift_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s9"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine offene Schicht gefunden.",
            "data": {
              "code": "shift_not_open"
            },
            "code": "shift_not_open"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "lade_terrasse_s1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": null,
                "blind": null
              },
              "movements": [
                {
                  "id": "b0000003",
                  "number": 3,
                  "shiftId": "haupt_KASSE1_s2",
                  "type": "change_in",
                  "amountCents": 5000,
                  "location": "bank",
                  "note": null,
                  "by": {
                    "registerUserId": "ru_chef",
                    "name": "Anna Chef",
                    "role": "register_user"
                  },
                  "at": "2026-09-25T15:03:00.000Z",
                  "recipient": null,
                  "counterpart": null
                }
              ],
              "receipt": {
                "kind": "shift_interim",
                "blind": true,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": null,
                  "openedByName": "Anna Chef",
                  "closedByName": null
                },
                "openingFloatCents": null,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": null,
                "cashCancellationsCents": null,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 0,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 400
                  }
                ],
                "expectedCents": null,
                "countedCents": null,
                "countedDenominations": null,
                "differenceCents": null,
                "comment": null,
                "openingsWithoutSale": 1
              }
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "open",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": null,
                "closedBy": null,
                "closedDeviceId": null,
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": null,
                "comment": null,
                "blind": null,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 0,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 0,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29400,
                "differenceCents": null,
                "reconciliation": null
              },
              "movements": [
                {
                  "id": "b0000003",
                  "number": 3,
                  "shiftId": "haupt_KASSE1_s2",
                  "type": "change_in",
                  "amountCents": 5000,
                  "location": "bank",
                  "note": null,
                  "by": {
                    "registerUserId": "ru_chef",
                    "name": "Anna Chef",
                    "role": "register_user"
                  },
                  "at": "2026-09-25T15:03:00.000Z",
                  "recipient": null,
                  "counterpart": null
                }
              ],
              "receipt": {
                "kind": "shift_interim",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": null,
                  "openedByName": "Anna Chef",
                  "closedByName": null
                },
                "openingFloatCents": 15000,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": 9400,
                "cashCancellationsCents": 0,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 0,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 400
                  }
                ],
                "expectedCents": 29400,
                "countedCents": null,
                "countedDenominations": null,
                "differenceCents": null,
                "comment": null,
                "openingsWithoutSale": 1
              }
            }
          }
        },
        {
          "case": "success_manager_closed",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "haupt_KASSE1_s1",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 1,
                "status": "closed",
                "openedAt": "2026-09-25T06:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_auswahl",
                "closedAt": "2026-09-25T14:50:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_auswahl",
                "openingFloatCents": 10000,
                "openingDenominations": {
                  "5000": 2
                },
                "openingFloatTakenOver": false,
                "countedCents": 15000,
                "comment": null,
                "blind": true,
                "suggestedFloatCents": 10000,
                "runningTotals": {
                  "cashSalesCents": 10200,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 4500
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 4,
                  "cancellationCount": 0,
                  "cashInCents": 0,
                  "cashOutCents": 5000,
                  "tips": [],
                  "openingsWithoutSale": 0
                },
                "expectedCents": 15200,
                "differenceCents": -200,
                "reconciliation": {
                  "matches": true,
                  "deviations": null
                }
              },
              "movements": [
                {
                  "id": "b0000001",
                  "number": 1,
                  "shiftId": "haupt_KASSE1_s1",
                  "type": "cash_drop",
                  "amountCents": -5000,
                  "location": "safe",
                  "note": "Mittag",
                  "by": {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "role": "register_user"
                  },
                  "at": "2026-09-25T15:01:00.000Z",
                  "recipient": null,
                  "counterpart": null
                },
                {
                  "id": "b0000002",
                  "number": 2,
                  "shiftId": "haupt_KASSE1_s1",
                  "type": "count_difference",
                  "amountCents": -200,
                  "location": null,
                  "note": null,
                  "by": {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "role": "register_user"
                  },
                  "at": "2026-09-25T15:02:00.000Z",
                  "recipient": null,
                  "counterpart": null
                }
              ],
              "receipt": {
                "kind": "shift_close",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 1,
                  "openedAt": "2026-09-25T06:00:00.000Z",
                  "closedAt": "2026-09-25T14:50:00.000Z",
                  "openedByName": "Ben Kellner",
                  "closedByName": "Ben Kellner"
                },
                "openingFloatCents": 10000,
                "openingFloatTakenOver": false,
                "openingDenominations": {
                  "5000": 2
                },
                "cashSalesCents": 10200,
                "cashCancellationsCents": 0,
                "receiptCount": 4,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 4500
                  }
                ],
                "movements": [
                  {
                    "number": 1,
                    "type": "cash_drop",
                    "amountCents": -5000,
                    "note": "Mittag",
                    "byName": "Ben Kellner",
                    "at": "2026-09-25T15:01:00.000Z"
                  }
                ],
                "tips": [],
                "expectedCents": 15200,
                "countedCents": 15000,
                "countedDenominations": {
                  "5000": 3
                },
                "differenceCents": -200,
                "comment": null,
                "openingsWithoutSale": 0
              }
            }
          }
        },
        {
          "case": "success_cashier_closed",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "shift": {
                "id": "haupt_KASSE1_s1",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 1,
                "status": "closed",
                "openedAt": "2026-09-25T06:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_auswahl",
                "closedAt": "2026-09-25T14:50:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_auswahl",
                "openingFloatCents": 10000,
                "openingDenominations": {
                  "5000": 2
                },
                "openingFloatTakenOver": false,
                "comment": null,
                "blind": true
              },
              "movements": [
                {
                  "id": "b0000001",
                  "number": 1,
                  "shiftId": "haupt_KASSE1_s1",
                  "type": "cash_drop",
                  "amountCents": -5000,
                  "location": "safe",
                  "note": "Mittag",
                  "by": {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "role": "register_user"
                  },
                  "at": "2026-09-25T15:01:00.000Z",
                  "recipient": null,
                  "counterpart": null
                }
              ],
              "receipt": {
                "kind": "shift_close",
                "blind": true,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 1,
                  "openedAt": "2026-09-25T06:00:00.000Z",
                  "closedAt": "2026-09-25T14:50:00.000Z",
                  "openedByName": "Ben Kellner",
                  "closedByName": "Ben Kellner"
                },
                "openingFloatCents": 10000,
                "openingFloatTakenOver": false,
                "openingDenominations": {
                  "5000": 2
                },
                "cashSalesCents": null,
                "cashCancellationsCents": null,
                "receiptCount": 4,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 4500
                  }
                ],
                "movements": [
                  {
                    "number": 1,
                    "type": "cash_drop",
                    "amountCents": -5000,
                    "note": "Mittag",
                    "byName": "Ben Kellner",
                    "at": "2026-09-25T15:01:00.000Z"
                  }
                ],
                "tips": [],
                "expectedCents": null,
                "countedCents": null,
                "countedDenominations": null,
                "differenceCents": null,
                "comment": null,
                "openingsWithoutSale": 0
              }
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "closeMyShift": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "module_off",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Modul „Registrierkasse\" ist nicht aktiv.",
            "data": {
              "code": "module_inactive"
            },
            "code": "module_inactive"
          }
        },
        {
          "case": "cashier_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine Berechtigung für diesen Vorgang.",
            "data": {
              "code": "not_permitted"
            },
            "code": "not_permitted"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "countedCents": 29000,
            "idempotencyKey": "z"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: shiftId",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "shiftId",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "shift_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s9",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Keine offene Schicht gefunden.",
            "data": {
              "code": "shift_not_open"
            },
            "code": "shift_not_open"
          }
        },
        {
          "case": "shift_closed",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s1",
            "countedCents": 29000,
            "tipPayouts": [],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Schicht ist bereits geschlossen.",
            "data": {
              "code": "shift_closed"
            },
            "code": "shift_closed"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "lade_terrasse_s1",
            "countedCents": 29000,
            "tipPayouts": [],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "counted_amount_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": -100,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Der Betrag ist ungültig.",
            "data": {
              "code": "invalid_amount"
            },
            "code": "invalid_amount"
          }
        },
        {
          "case": "denominations_wrong",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1",
            "denominations": {
              "20000": 1
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Stückelung passt nicht zum Betrag.",
            "data": {
              "code": "invalid_denominations"
            },
            "code": "invalid_denominations"
          }
        },
        {
          "case": "payouts_invalid",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "tipPayouts",
                  "message": "Mitarbeiter fehlt."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "tip_over_claim",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 900
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Trinkgeld-Auszahlung ist höher als der offene Anspruch.",
            "data": {
              "code": "tip_payout_exceeds_claim"
            },
            "code": "tip_payout_exceeds_claim"
          }
        },
        {
          "case": "key_missing",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29400
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "idempotencyKey fehlt.",
            "data": {
              "code": "idempotency_key_required"
            },
            "code": "idempotency_key_required"
          }
        },
        {
          "case": "success_cashier_recount",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 20000,
            "attempt": 1,
            "idempotencyKey": "z-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "recount"
            }
          }
        },
        {
          "case": "comment_required",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 20000,
            "attempt": 2,
            "idempotencyKey": "z-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Differenz ist größer als die Schwelle. Bitte einen Kommentar angeben.",
            "data": {
              "code": "comment_required"
            },
            "code": "comment_required"
          }
        },
        {
          "case": "counted_exhausted",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 22000,
            "attempt": 2,
            "idempotencyKey": "z-2"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Es wurde bereits zweimal gezählt. Abschließen nur mit dem Betrag der zweiten Zählung.",
            "data": {
              "code": "recount_exhausted"
            },
            "code": "recount_exhausted"
          }
        },
        {
          "case": "success_cashier_blind",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 20000,
            "attempt": 2,
            "idempotencyKey": "z-2",
            "comment": "Kassensturz am Abend",
            "denominations": {
              "10000": 2
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "closed",
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "closed",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": "2026-09-26T08:00:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_kellner",
                  "name": "Ben Kellner",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_auswahl",
                "openingFloatCents": null,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "comment": "Kassensturz am Abend",
                "blind": true
              },
              "receipt": {
                "kind": "shift_close",
                "blind": true,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": "2026-09-26T08:00:00.000Z",
                  "openedByName": "Anna Chef",
                  "closedByName": "Ben Kellner"
                },
                "openingFloatCents": null,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": null,
                "cashCancellationsCents": null,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 0,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 400
                  }
                ],
                "expectedCents": null,
                "countedCents": null,
                "countedDenominations": null,
                "differenceCents": null,
                "comment": "Kassensturz am Abend",
                "openingsWithoutSale": 1
              },
              "lastShiftOfRegister": true
            }
          }
        },
        {
          "case": "success_manager",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1",
            "denominations": {
              "2000": 2,
              "5000": 1,
              "20000": 1
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "closed",
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "closed",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": "2026-09-26T08:00:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_pin",
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": 29000,
                "comment": null,
                "blind": false,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 400,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 400,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29000,
                "differenceCents": 0,
                "reconciliation": {
                  "matches": false,
                  "deviations": {
                    "cashSalesCents": {
                      "stored": 9400,
                      "recomputed": 0
                    },
                    "receiptCount": {
                      "stored": 3,
                      "recomputed": 0
                    },
                    "nonCashByMethod": {
                      "stored": [
                        {
                          "method": "card",
                          "cents": 3200
                        }
                      ],
                      "recomputed": []
                    },
                    "tips": {
                      "stored": [
                        {
                          "registerUserId": "ru_kellner",
                          "name": "Ben Kellner",
                          "receivedImmediatelyCents": 400,
                          "retainedCents": 0
                        }
                      ],
                      "recomputed": []
                    }
                  }
                }
              },
              "receipt": {
                "kind": "shift_close",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": "2026-09-26T08:00:00.000Z",
                  "openedByName": "Anna Chef",
                  "closedByName": "Anna Chef"
                },
                "openingFloatCents": 15000,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": 9400,
                "cashCancellationsCents": 0,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  },
                  {
                    "number": 4,
                    "type": "tip_payout",
                    "amountCents": -400,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-26T08:00:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 400,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 0
                  }
                ],
                "expectedCents": 29000,
                "countedCents": 29000,
                "countedDenominations": {
                  "2000": 2,
                  "5000": 1,
                  "20000": 1
                },
                "differenceCents": 0,
                "comment": null,
                "openingsWithoutSale": 1
              },
              "lastShiftOfRegister": true
            }
          }
        },
        {
          "case": "success_manager_take_out",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-3",
            "afterCount": {
              "type": "cash_drop",
              "amountCents": 14000
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "closed",
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "closed",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": "2026-09-26T08:00:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_pin",
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": 29000,
                "comment": null,
                "blind": false,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 400,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 400,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29000,
                "differenceCents": 0,
                "reconciliation": {
                  "matches": false,
                  "deviations": {
                    "cashSalesCents": {
                      "stored": 9400,
                      "recomputed": 0
                    },
                    "receiptCount": {
                      "stored": 3,
                      "recomputed": 0
                    },
                    "nonCashByMethod": {
                      "stored": [
                        {
                          "method": "card",
                          "cents": 3200
                        }
                      ],
                      "recomputed": []
                    },
                    "tips": {
                      "stored": [
                        {
                          "registerUserId": "ru_kellner",
                          "name": "Ben Kellner",
                          "receivedImmediatelyCents": 400,
                          "retainedCents": 0
                        }
                      ],
                      "recomputed": []
                    }
                  }
                },
                "afterCount": {
                  "type": "cash_drop",
                  "amountCents": 14000
                },
                "leftInDrawerCents": 15000
              },
              "receipt": {
                "kind": "shift_close",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": "2026-09-26T08:00:00.000Z",
                  "openedByName": "Anna Chef",
                  "closedByName": "Anna Chef"
                },
                "openingFloatCents": 15000,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": 9400,
                "cashCancellationsCents": 0,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  },
                  {
                    "number": 4,
                    "type": "tip_payout",
                    "amountCents": -400,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-26T08:00:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 400,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 0
                  }
                ],
                "expectedCents": 29000,
                "countedCents": 29000,
                "countedDenominations": null,
                "differenceCents": 0,
                "comment": null,
                "openingsWithoutSale": 1,
                "afterCount": {
                  "type": "cash_drop",
                  "amountCents": 14000
                },
                "leftInDrawerCents": 15000
              },
              "afterCountReceipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 5,
                  "type": "cash_drop",
                  "amountCents": -14000,
                  "note": null,
                  "location": null,
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              },
              "lastShiftOfRegister": true
            }
          }
        },
        {
          "case": "success_manager_put_in",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-4",
            "afterCount": {
              "type": "change_in",
              "amountCents": 1000
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "closed",
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "closed",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": "2026-09-26T08:00:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_pin",
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": 29000,
                "comment": null,
                "blind": false,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 400,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 400,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29000,
                "differenceCents": 0,
                "reconciliation": {
                  "matches": false,
                  "deviations": {
                    "cashSalesCents": {
                      "stored": 9400,
                      "recomputed": 0
                    },
                    "receiptCount": {
                      "stored": 3,
                      "recomputed": 0
                    },
                    "nonCashByMethod": {
                      "stored": [
                        {
                          "method": "card",
                          "cents": 3200
                        }
                      ],
                      "recomputed": []
                    },
                    "tips": {
                      "stored": [
                        {
                          "registerUserId": "ru_kellner",
                          "name": "Ben Kellner",
                          "receivedImmediatelyCents": 400,
                          "retainedCents": 0
                        }
                      ],
                      "recomputed": []
                    }
                  }
                },
                "afterCount": {
                  "type": "change_in",
                  "amountCents": 1000
                },
                "leftInDrawerCents": 30000
              },
              "receipt": {
                "kind": "shift_close",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": "2026-09-26T08:00:00.000Z",
                  "openedByName": "Anna Chef",
                  "closedByName": "Anna Chef"
                },
                "openingFloatCents": 15000,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": 9400,
                "cashCancellationsCents": 0,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  },
                  {
                    "number": 4,
                    "type": "tip_payout",
                    "amountCents": -400,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-26T08:00:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 400,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 0
                  }
                ],
                "expectedCents": 29000,
                "countedCents": 29000,
                "countedDenominations": null,
                "differenceCents": 0,
                "comment": null,
                "openingsWithoutSale": 1,
                "afterCount": {
                  "type": "change_in",
                  "amountCents": 1000
                },
                "leftInDrawerCents": 30000
              },
              "afterCountReceipt": {
                "kind": "cash_movement",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2
                },
                "movement": {
                  "number": 5,
                  "type": "change_in",
                  "amountCents": 1000,
                  "note": null,
                  "location": null,
                  "recipientName": null,
                  "targetDrawerName": null,
                  "byName": "Anna Chef",
                  "at": "2026-09-26T08:00:00.000Z"
                }
              },
              "lastShiftOfRegister": true
            }
          }
        },
        {
          "case": "take_out_over_counted",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-5",
            "afterCount": {
              "type": "cash_drop",
              "amountCents": 29001
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Die Auszahlung ist höher als der Kassenstand.",
            "data": {
              "code": "cash_movement_exceeds_balance"
            },
            "code": "cash_movement_exceeds_balance"
          }
        },
        {
          "case": "cashier_after_count_without_permission",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 20000,
            "attempt": 1,
            "idempotencyKey": "z-2",
            "afterCount": {
              "type": "cash_drop",
              "amountCents": 5000
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Geld entnehmen oder einlegen ist ohne die Berechtigung für Kassenbewegungen nicht möglich.",
            "data": {
              "code": "after_count_not_permitted"
            },
            "code": "after_count_not_permitted"
          }
        },
        {
          "case": "after_count_kind_unknown",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-6",
            "afterCount": {
              "type": "gibtsnicht",
              "amountCents": 100
            }
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "afterCount.type",
                  "message": "Unbekannte Art."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "success_manager_check_ready",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-7",
            "checkOnly": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "ready"
            }
          }
        },
        {
          "case": "success_cashier_check_recount",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 20000,
            "attempt": 1,
            "idempotencyKey": "z-8",
            "checkOnly": true
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "recount"
            }
          }
        },
        {
          "case": "success_same_key",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29000,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "status": "closed",
              "shift": {
                "id": "haupt_KASSE1_s2",
                "drawerId": "haupt_KASSE1",
                "cashregisterId": "KASSE1",
                "number": 2,
                "status": "closed",
                "openedAt": "2026-09-25T15:00:00.000Z",
                "openedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "openedDeviceId": "dev_pin",
                "closedAt": "2026-09-26T07:59:00.000Z",
                "closedBy": {
                  "registerUserId": "ru_chef",
                  "name": "Anna Chef",
                  "role": "register_user"
                },
                "closedDeviceId": "dev_pin",
                "openingFloatCents": 15000,
                "openingDenominations": null,
                "openingFloatTakenOver": true,
                "countedCents": 29000,
                "comment": null,
                "blind": false,
                "suggestedFloatCents": 15000,
                "runningTotals": {
                  "cashSalesCents": 9400,
                  "cashCancellationsCents": 0,
                  "nonCashByMethod": [
                    {
                      "method": "card",
                      "cents": 3200
                    }
                  ],
                  "voucherRedeemedCents": 0,
                  "receiptCount": 3,
                  "cancellationCount": 0,
                  "cashInCents": 5000,
                  "cashOutCents": 400,
                  "tips": [
                    {
                      "registerUserId": "ru_kellner",
                      "name": "Ben Kellner",
                      "receivedImmediatelyCents": 400,
                      "retainedCents": 0,
                      "paidOutCents": 400,
                      "refundedByEmployeeCents": 0
                    }
                  ],
                  "openingsWithoutSale": 1
                },
                "expectedCents": 29000,
                "differenceCents": 0,
                "reconciliation": {
                  "matches": false,
                  "deviations": {
                    "cashSalesCents": {
                      "stored": 9400,
                      "recomputed": 0
                    },
                    "receiptCount": {
                      "stored": 3,
                      "recomputed": 0
                    },
                    "nonCashByMethod": {
                      "stored": [
                        {
                          "method": "card",
                          "cents": 3200
                        }
                      ],
                      "recomputed": []
                    },
                    "tips": {
                      "stored": [
                        {
                          "registerUserId": "ru_kellner",
                          "name": "Ben Kellner",
                          "receivedImmediatelyCents": 400,
                          "retainedCents": 0
                        }
                      ],
                      "recomputed": []
                    }
                  }
                }
              },
              "receipt": {
                "kind": "shift_close",
                "blind": false,
                "business": {
                  "name": "Café Welt"
                },
                "cashregister": {
                  "id": "KASSE1",
                  "name": "Theke 1"
                },
                "drawer": {
                  "name": "Hauptlade"
                },
                "shift": {
                  "number": 2,
                  "openedAt": "2026-09-25T15:00:00.000Z",
                  "closedAt": "2026-09-26T07:59:00.000Z",
                  "openedByName": "Anna Chef",
                  "closedByName": "Anna Chef"
                },
                "openingFloatCents": 15000,
                "openingFloatTakenOver": true,
                "openingDenominations": null,
                "cashSalesCents": 9400,
                "cashCancellationsCents": 0,
                "receiptCount": 3,
                "cancellationCount": 0,
                "nonCashByMethod": [
                  {
                    "method": "card",
                    "cents": 3200
                  }
                ],
                "movements": [
                  {
                    "number": 3,
                    "type": "change_in",
                    "amountCents": 5000,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-25T15:03:00.000Z"
                  },
                  {
                    "number": 4,
                    "type": "tip_payout",
                    "amountCents": -400,
                    "note": null,
                    "byName": "Anna Chef",
                    "at": "2026-09-26T07:59:00.000Z"
                  }
                ],
                "tips": [
                  {
                    "registerUserId": "ru_kellner",
                    "name": "Ben Kellner",
                    "receivedImmediatelyCents": 400,
                    "retainedCents": 0,
                    "paidOutCents": 400,
                    "refundedByEmployeeCents": 0,
                    "carriedOverCents": 0,
                    "openCents": 0
                  }
                ],
                "expectedCents": 29000,
                "countedCents": 29000,
                "countedDenominations": null,
                "differenceCents": 0,
                "comment": null,
                "openingsWithoutSale": 1
              },
              "lastShiftOfRegister": true
            }
          }
        },
        {
          "case": "key_conflict",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "shiftId": "haupt_KASSE1_s2",
            "countedCents": 29100,
            "tipPayouts": [
              {
                "registerUserId": "ru_kellner",
                "cents": 400
              }
            ],
            "idempotencyKey": "z-1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
            "data": {
              "code": "idempotency_conflict"
            },
            "code": "idempotency_conflict"
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    },
    "logReceiptOutputs": {
      "codebase": "kasse",
      "cases": [
        {
          "case": "without_token",
          "method": "POST",
          "caller": "none",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": [
              {
                "key": "druck-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409480000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "druck-0002",
                "receiptId": "KASSE1-ID-7",
                "at": "2026-09-26T09:59:00+02:00",
                "kind": "reprint",
                "result": "unclear"
              },
              {
                "key": "teilen-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409570000,
                "kind": "link_shared"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültiger Request: Authorization key erwartet.",
            "data": {
              "code": "unauthorized"
            },
            "code": "unauthorized"
          }
        },
        {
          "case": "data_missing",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1"
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Ungültige Daten: Nicht alle erforderlichen Parameter wurden übergeben oder Typen stimmen nicht überein: entries",
            "data": {
              "code": "validation",
              "errors": [
                {
                  "field": "entries",
                  "message": "Pflichtfeld fehlt."
                }
              ]
            },
            "code": "validation"
          }
        },
        {
          "case": "foreign_cashregister",
          "method": "POST",
          "caller": "register_user_other_cashregister",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": [
              {
                "key": "druck-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409480000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "druck-0002",
                "receiptId": "KASSE1-ID-7",
                "at": "2026-09-26T09:59:00+02:00",
                "kind": "reprint",
                "result": "unclear"
              },
              {
                "key": "teilen-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409570000,
                "kind": "link_shared"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Diese Kasse ist dem Benutzer nicht zugewiesen.",
            "data": {
              "code": "cashregister_not_assigned"
            },
            "code": "cashregister_not_assigned"
          }
        },
        {
          "case": "entries_empty",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": []
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte Eingaben prüfen.",
            "data": {
              "errors": [
                {
                  "field": "entries",
                  "message": "Ein bis 50 Einträge angeben."
                }
              ],
              "code": "validation"
            },
            "code": "validation"
          }
        },
        {
          "case": "success_cashier",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": [
              {
                "key": "druck-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409480000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "druck-0002",
                "receiptId": "KASSE1-ID-7",
                "at": "2026-09-26T09:59:00+02:00",
                "kind": "reprint",
                "result": "unclear"
              },
              {
                "key": "teilen-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409570000,
                "kind": "link_shared"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 3,
              "rejected": []
            }
          }
        },
        {
          "case": "success_duplicate",
          "method": "POST",
          "caller": "register_user_cashier",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": [
              {
                "key": "druck-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409480000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "druck-0002",
                "receiptId": "KASSE1-ID-7",
                "at": "2026-09-26T09:59:00+02:00",
                "kind": "reprint",
                "result": "unclear"
              },
              {
                "key": "teilen-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409570000,
                "kind": "link_shared"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 3,
              "rejected": []
            }
          }
        },
        {
          "case": "success_api_key",
          "method": "POST",
          "caller": "device_api_key",
          "params": {
            "entries": [
              {
                "key": "teilen-0002",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "pdf_shared",
                "result": "ok"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 1,
              "rejected": []
            }
          }
        },
        {
          "case": "mixed",
          "method": "POST",
          "caller": "register_user_manager",
          "params": {
            "cashregisterId": "KASSE1",
            "entries": [
              {
                "key": "mail-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "email",
                "result": "ok"
              },
              {
                "key": "abruf-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "opened",
                "result": "ok"
              },
              {
                "key": "fremd-0001",
                "receiptId": "KASSE3-ID-1",
                "at": 1790409599000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "zeit-0001",
                "receiptId": "KASSE1-ID-7",
                "at": 1790410200000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "kurz",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "print",
                "result": "ok"
              },
              {
                "key": "druck-0009",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "reprint"
              },
              {
                "key": "druck-0010",
                "receiptId": "KASSE1-ID-7",
                "at": 1790409599000,
                "kind": "reprint",
                "result": "failed"
              }
            ]
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "success",
            "message": "",
            "data": {
              "accepted": 2,
              "rejected": [
                {
                  "key": "mail-0001",
                  "code": "invalid_output_kind"
                },
                {
                  "key": "abruf-0001",
                  "code": "invalid_output_kind"
                },
                {
                  "key": "fremd-0001",
                  "code": "receipt_not_found"
                },
                {
                  "key": "kurz",
                  "code": "idempotency_key_required"
                },
                {
                  "key": "druck-0009",
                  "code": "validation"
                }
              ]
            }
          }
        },
        {
          "case": "preflight_options",
          "method": "OPTIONS",
          "caller": "other",
          "params": {
            "$body": {}
          },
          "httpStatus": 200,
          "headers": {
            "Kasseneck-Api-Version": "v3",
            "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
          },
          "response": {
            "status": "error",
            "message": "Bitte verwenden Sie eine POST-Anfrage",
            "data": {
              "code": "method_not_allowed"
            },
            "code": "method_not_allowed"
          }
        }
      ]
    }
  }
}
