@kreiseck/kasseneck-api 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/README.md +293 -1
  3. package/dist/cjs/client/aufrufe.d.ts +2 -2
  4. package/dist/cjs/client/aufrufe.js +58 -0
  5. package/dist/cjs/inventory/api.d.ts +61 -0
  6. package/dist/cjs/inventory/api.js +54 -0
  7. package/dist/cjs/inventory/auth.d.ts +17 -0
  8. package/dist/cjs/inventory/auth.js +27 -0
  9. package/dist/cjs/inventory/endpunkte.d.ts +91 -0
  10. package/dist/cjs/inventory/endpunkte.js +290 -0
  11. package/dist/cjs/inventory/fehler.d.ts +43 -0
  12. package/dist/cjs/inventory/fehler.js +66 -0
  13. package/dist/cjs/inventory/index.d.ts +21 -0
  14. package/dist/cjs/inventory/index.js +94 -0
  15. package/dist/cjs/inventory/lesen.d.ts +45 -0
  16. package/dist/cjs/inventory/lesen.js +424 -0
  17. package/dist/cjs/inventory/schreiben.d.ts +83 -0
  18. package/dist/cjs/inventory/schreiben.js +315 -0
  19. package/dist/cjs/inventory/typen.d.ts +679 -0
  20. package/dist/cjs/inventory/typen.js +14 -0
  21. package/dist/cjs/inventory/vertrag.d.ts +136 -0
  22. package/dist/cjs/inventory/vertrag.js +291 -0
  23. package/dist/cjs/inventory/webhook.d.ts +52 -0
  24. package/dist/cjs/inventory/webhook.js +116 -0
  25. package/dist/cjs/invoice/index.d.ts +2 -2
  26. package/dist/cjs/invoice/index.js +2 -1
  27. package/dist/cjs/invoice/typen.d.ts +46 -2
  28. package/dist/cjs/invoice/vertrag.d.ts +19 -5
  29. package/dist/cjs/invoice/vertrag.js +37 -5
  30. package/dist/cjs/stored/vokabular.d.ts +1 -1
  31. package/dist/cjs/stored/vokabular.js +5 -3
  32. package/dist/cjs/version.d.ts +1 -1
  33. package/dist/cjs/version.js +1 -1
  34. package/dist/esm/client/aufrufe.d.ts +2 -2
  35. package/dist/esm/client/aufrufe.js +58 -0
  36. package/dist/esm/inventory/api.d.ts +61 -0
  37. package/dist/esm/inventory/api.js +51 -0
  38. package/dist/esm/inventory/auth.d.ts +17 -0
  39. package/dist/esm/inventory/auth.js +24 -0
  40. package/dist/esm/inventory/endpunkte.d.ts +91 -0
  41. package/dist/esm/inventory/endpunkte.js +267 -0
  42. package/dist/esm/inventory/fehler.d.ts +43 -0
  43. package/dist/esm/inventory/fehler.js +57 -0
  44. package/dist/esm/inventory/index.d.ts +21 -0
  45. package/dist/esm/inventory/index.js +20 -0
  46. package/dist/esm/inventory/lesen.d.ts +45 -0
  47. package/dist/esm/inventory/lesen.js +404 -0
  48. package/dist/esm/inventory/schreiben.d.ts +83 -0
  49. package/dist/esm/inventory/schreiben.js +298 -0
  50. package/dist/esm/inventory/typen.d.ts +679 -0
  51. package/dist/esm/inventory/typen.js +13 -0
  52. package/dist/esm/inventory/vertrag.d.ts +136 -0
  53. package/dist/esm/inventory/vertrag.js +288 -0
  54. package/dist/esm/inventory/webhook.d.ts +52 -0
  55. package/dist/esm/inventory/webhook.js +107 -0
  56. package/dist/esm/invoice/index.d.ts +2 -2
  57. package/dist/esm/invoice/index.js +1 -1
  58. package/dist/esm/invoice/typen.d.ts +46 -2
  59. package/dist/esm/invoice/vertrag.d.ts +19 -5
  60. package/dist/esm/invoice/vertrag.js +36 -4
  61. package/dist/esm/stored/vokabular.d.ts +1 -1
  62. package/dist/esm/stored/vokabular.js +5 -3
  63. package/dist/esm/version.d.ts +1 -1
  64. package/dist/esm/version.js +1 -1
  65. package/fixtures/hobex-hps-codes.json +1 -1
  66. package/fixtures/invoice-api-examples/credit-error-reservation.json +26 -0
  67. package/fixtures/invoice-api-examples/issue-error-reservation-article.json +25 -0
  68. package/fixtures/invoice-api-examples/issue-error-vat-id-risk.json +26 -0
  69. package/fixtures/invoice-api-examples/issue-reservation.json +24 -0
  70. package/fixtures/invoice-api-examples/issue-vat-id-risk.json +28 -0
  71. package/fixtures/invoice-api.schema.json +15 -2
  72. package/fixtures/invoice-texts.json +1 -1
  73. package/fixtures/pos-texts.json +1 -1
  74. package/fixtures/surface.json +306 -5
  75. package/fixtures/v3/README.md +9 -1
  76. package/fixtures/v3/antworten/belege.json +2 -2
  77. package/fixtures/v3/antworten/belegmail.json +2 -2
  78. package/fixtures/v3/antworten/kasse-belege.json +2 -2
  79. package/fixtures/v3/antworten/kasse.json +3 -3
  80. package/fixtures/v3/antworten/lager.json +3881 -0
  81. package/fixtures/v3/antworten/rechnungen.json +267 -44
  82. package/fixtures/v3/antworten/storno.json +2 -2
  83. package/fixtures/v3/stored/belege.json +2 -2
  84. package/fixtures/v3/stored/kasse.json +404 -4
  85. package/fixtures/v3/stored/rechnungen.json +174 -18
  86. package/fixtures/v3/v3-vokabular.json +1007 -20
  87. package/fixtures/v3/zahlbetrag-faelle.json +2 -2
  88. package/package.json +14 -2
@@ -0,0 +1,3881 @@
1
+ {
2
+ "_hinweis": "Vertrags-Export /v3, erzeugt aus den echten Handlern (npm run vertrag:v3 in functions/ und functions-kasse/). Nicht von Hand pflegen.",
3
+ "_quelle": {
4
+ "sha256": "bee3e2b26656925092ecdf894d7c85bfd8635bb1913db9d7784866da65b41013",
5
+ "inputsSha256": "e1a499894424aebac421c3c28e9cc866acb0daa16c27a75a8c2f69dc8d1166d5",
6
+ "backendPackage": "@kreiseck/kasseneck-api@0.14.0",
7
+ "inputs": [
8
+ "functions-kasse/article-endpoints.js",
9
+ "functions-kasse/articles-core.js",
10
+ "functions-kasse/gemeinsam/api-rand.js",
11
+ "functions-kasse/gemeinsam/api-vokabular-v3.js",
12
+ "functions-kasse/gemeinsam/webhook-versand.js",
13
+ "functions-kasse/konto-webhook-core.js",
14
+ "functions-kasse/lager-api-artikel.js",
15
+ "functions-kasse/lager-api-buchen.js",
16
+ "functions-kasse/lager-api-core.js",
17
+ "functions-kasse/lager-api-endpoints.js",
18
+ "functions-kasse/lager-api-ereignisse.js",
19
+ "functions-kasse/lager-api-reservierung.js",
20
+ "functions-kasse/lager-buchung.js",
21
+ "functions-kasse/lager-core.js",
22
+ "functions-kasse/lager-endpoints.js",
23
+ "functions-kasse/lager-reservierung-core.js",
24
+ "functions-kasse/lager-reservierung.js",
25
+ "functions-kasse/lager-trigger.js",
26
+ "functions-kasse/lager-verkauf-core.js",
27
+ "functions-kasse/lager-vorgaenge.js",
28
+ "functions-kasse/test/unit/fixtures/v3-waechter.js",
29
+ "functions-kasse/test/unit/v3-vertrag-export-lager.test.js",
30
+ "functions/test/unit/fixtures/vertrag-v3/ablage.js"
31
+ ]
32
+ },
33
+ "channel": "api",
34
+ "note": "Lager-API (Stufe 5a, Artikel schreiben, Buchen und Reservierung 5b) unter /v3: Faelle in Ablaufreihenfolge (ein Konto, Standort haupt); Reservierungen antworten mit reservation (wie getReservation; Wiederholung = gespeicherte Antwort), laufen ueber einen Auftrag zum Ablaufzeitpunkt ab (Verlaengern ersetzt ihn), werden ueber issueInvoice (items[].reservationId) beim Buchen der Rechnung eingeloest und melden reservation.expired/released/redeemed; Buchungen antworten mit operationId, movementIds, lotIds und warnings[] (Hinweise aus warningCodes.inventory, kein Fehler); Preise duerfen ohne Schalter kosten gesendet werden, Werte kommen nur mit ihm zurueck; Mindestbestand je Standort = minStockByLocation (Tausendstel, Schwelle fuer below_minimum, gemessen an available = onHand − reserved), minStock ist ein Altfeld ohne Wirkung darauf; dazu webhookEvents = zugestellte Konto-Webhooks (Huelle wie gesendet, ohne Probesendungen). Secrets als Platzhalter.",
35
+ "cases": [
36
+ {
37
+ "channel": "api",
38
+ "name": "create_webhook",
39
+ "endpoint": "createWebhook",
40
+ "path": "/v3/createWebhook",
41
+ "params": {
42
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
43
+ "events": [
44
+ "stock.changed",
45
+ "stock.below_minimum",
46
+ "article.created",
47
+ "article.updated",
48
+ "article.deactivated"
49
+ ],
50
+ "description": "Webshop Kornblum"
51
+ },
52
+ "httpStatus": 200,
53
+ "headers": {
54
+ "Kasseneck-Api-Version": "v3",
55
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
56
+ },
57
+ "response": {
58
+ "status": "success",
59
+ "message": "",
60
+ "data": {
61
+ "secret": "whsec_EXAMPLEDF1171A2AAAAAAAAAAAAAAAAA",
62
+ "webhook": {
63
+ "id": "3pJJwmZZjQTW",
64
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
65
+ "createdAt": "2026-10-06T06:00:02.000Z",
66
+ "events": [
67
+ "stock.changed",
68
+ "stock.below_minimum",
69
+ "article.created",
70
+ "article.updated",
71
+ "article.deactivated"
72
+ ],
73
+ "active": true,
74
+ "description": "Webshop Kornblum",
75
+ "lastDelivery": null,
76
+ "consecutiveFailures": 0
77
+ }
78
+ }
79
+ }
80
+ },
81
+ {
82
+ "channel": "api",
83
+ "name": "list_locations",
84
+ "endpoint": "listLocations",
85
+ "path": "/v3/listLocations",
86
+ "params": {},
87
+ "httpStatus": 200,
88
+ "headers": {
89
+ "Kasseneck-Api-Version": "v3",
90
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
91
+ },
92
+ "response": {
93
+ "status": "success",
94
+ "message": "",
95
+ "data": {
96
+ "locations": [
97
+ {
98
+ "id": "lager1",
99
+ "name": "Lager Kornblum",
100
+ "type": "warehouse",
101
+ "address": {
102
+ "street": "Mühlgasse 4",
103
+ "zip": "5020",
104
+ "city": "Salzburg",
105
+ "country": "AT"
106
+ },
107
+ "licensePlate": null,
108
+ "active": true
109
+ },
110
+ {
111
+ "id": "lieferwagen",
112
+ "name": "Lieferwagen",
113
+ "type": "vehicle",
114
+ "address": null,
115
+ "licensePlate": "S-123AB",
116
+ "active": true
117
+ },
118
+ {
119
+ "id": "haupt",
120
+ "name": "Hauptstandort",
121
+ "type": "store",
122
+ "address": null,
123
+ "licensePlate": null,
124
+ "active": true
125
+ }
126
+ ]
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "channel": "api",
132
+ "name": "get_article",
133
+ "endpoint": "getArticle",
134
+ "path": "/v3/getArticle",
135
+ "params": {
136
+ "articleId": "roggenbrot"
137
+ },
138
+ "httpStatus": 200,
139
+ "headers": {
140
+ "Kasseneck-Api-Version": "v3",
141
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
142
+ },
143
+ "response": {
144
+ "status": "success",
145
+ "message": "",
146
+ "data": {
147
+ "article": {
148
+ "id": "roggenbrot",
149
+ "name": "Roggenbrot 1 kg",
150
+ "description": null,
151
+ "unitPriceCents": 450,
152
+ "vatRate": 10,
153
+ "unit": "Stk",
154
+ "number": "A-100",
155
+ "ean": "9001234567896",
156
+ "internalCode": null,
157
+ "groupId": "brot",
158
+ "revenueGroupId": null,
159
+ "stockTracked": true,
160
+ "stockKind": "quantity",
161
+ "minStock": 5000,
162
+ "active": true,
163
+ "createdAt": "2026-10-01T04:00:00.000Z",
164
+ "updatedAt": "2026-10-06T06:00:04.000Z",
165
+ "stockLocationIds": [
166
+ "haupt"
167
+ ],
168
+ "minStockByLocation": {
169
+ "haupt": 5000
170
+ }
171
+ }
172
+ }
173
+ }
174
+ },
175
+ {
176
+ "channel": "api",
177
+ "name": "error_get_article_not_found",
178
+ "endpoint": "getArticle",
179
+ "path": "/v3/getArticle",
180
+ "params": {
181
+ "articleId": "gibt_es_nicht"
182
+ },
183
+ "httpStatus": 200,
184
+ "headers": {
185
+ "Kasseneck-Api-Version": "v3",
186
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
187
+ },
188
+ "response": {
189
+ "status": "error",
190
+ "message": "Artikel nicht gefunden.",
191
+ "data": {
192
+ "code": "article_not_found"
193
+ },
194
+ "code": "article_not_found"
195
+ }
196
+ },
197
+ {
198
+ "channel": "api",
199
+ "name": "list_articles_first_page",
200
+ "endpoint": "listArticles",
201
+ "path": "/v3/listArticles",
202
+ "params": {
203
+ "limit": 2
204
+ },
205
+ "httpStatus": 200,
206
+ "headers": {
207
+ "Kasseneck-Api-Version": "v3",
208
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
209
+ },
210
+ "response": {
211
+ "status": "success",
212
+ "message": "",
213
+ "data": {
214
+ "articles": [
215
+ {
216
+ "id": "kipferl",
217
+ "name": "Butterkipferl",
218
+ "description": null,
219
+ "unitPriceCents": 130,
220
+ "vatRate": 10,
221
+ "unit": "Stk",
222
+ "number": "A-200",
223
+ "ean": null,
224
+ "internalCode": "KB-200",
225
+ "groupId": "gebaeck",
226
+ "revenueGroupId": null,
227
+ "stockTracked": true,
228
+ "stockKind": "quantity",
229
+ "minStock": null,
230
+ "active": true,
231
+ "createdAt": "2026-10-01T04:30:00.000Z",
232
+ "updatedAt": "2026-10-06T06:00:04.000Z",
233
+ "stockLocationIds": [
234
+ "haupt",
235
+ "lieferwagen"
236
+ ],
237
+ "minStockByLocation": {}
238
+ },
239
+ {
240
+ "id": "roggenbrot",
241
+ "name": "Roggenbrot 1 kg",
242
+ "description": null,
243
+ "unitPriceCents": 450,
244
+ "vatRate": 10,
245
+ "unit": "Stk",
246
+ "number": "A-100",
247
+ "ean": "9001234567896",
248
+ "internalCode": null,
249
+ "groupId": "brot",
250
+ "revenueGroupId": null,
251
+ "stockTracked": true,
252
+ "stockKind": "quantity",
253
+ "minStock": 5000,
254
+ "active": true,
255
+ "createdAt": "2026-10-01T04:00:00.000Z",
256
+ "updatedAt": "2026-10-06T06:00:04.000Z",
257
+ "stockLocationIds": [
258
+ "haupt"
259
+ ],
260
+ "minStockByLocation": {
261
+ "haupt": 5000
262
+ }
263
+ }
264
+ ],
265
+ "nextCursor": "eyJ6ZWl0IjoxNzkxMjY2NDA0MDAwMDAwLCJpZCI6InJvZ2dlbmJyb3QifQ"
266
+ }
267
+ }
268
+ },
269
+ {
270
+ "channel": "api",
271
+ "name": "list_articles_next_page",
272
+ "endpoint": "listArticles",
273
+ "path": "/v3/listArticles",
274
+ "params": {
275
+ "limit": 2,
276
+ "cursor": "eyJ6ZWl0IjoxNzkxMjY2NDA0MDAwMDAwLCJpZCI6InJvZ2dlbmJyb3QifQ"
277
+ },
278
+ "httpStatus": 200,
279
+ "headers": {
280
+ "Kasseneck-Api-Version": "v3",
281
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
282
+ },
283
+ "response": {
284
+ "status": "success",
285
+ "message": "",
286
+ "data": {
287
+ "articles": [
288
+ {
289
+ "id": "semmel",
290
+ "name": "Kaisersemmel",
291
+ "description": null,
292
+ "unitPriceCents": 120,
293
+ "vatRate": 10,
294
+ "unit": "Stk",
295
+ "number": "A-300",
296
+ "ean": null,
297
+ "internalCode": "KB-300",
298
+ "groupId": "gebaeck",
299
+ "revenueGroupId": null,
300
+ "stockTracked": true,
301
+ "stockKind": "quantity",
302
+ "minStock": null,
303
+ "active": false,
304
+ "createdAt": "2026-10-06T06:00:04.000Z",
305
+ "updatedAt": "2026-10-06T06:00:04.001Z",
306
+ "stockLocationIds": [
307
+ "haupt"
308
+ ],
309
+ "minStockByLocation": {}
310
+ }
311
+ ],
312
+ "nextCursor": null
313
+ }
314
+ }
315
+ },
316
+ {
317
+ "channel": "api",
318
+ "name": "list_articles_updated_since",
319
+ "endpoint": "listArticles",
320
+ "path": "/v3/listArticles",
321
+ "params": {
322
+ "updatedSince": "2026-10-05T04:15:00.000Z",
323
+ "active": true
324
+ },
325
+ "httpStatus": 200,
326
+ "headers": {
327
+ "Kasseneck-Api-Version": "v3",
328
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
329
+ },
330
+ "response": {
331
+ "status": "success",
332
+ "message": "",
333
+ "data": {
334
+ "articles": [
335
+ {
336
+ "id": "kipferl",
337
+ "name": "Butterkipferl",
338
+ "description": null,
339
+ "unitPriceCents": 130,
340
+ "vatRate": 10,
341
+ "unit": "Stk",
342
+ "number": "A-200",
343
+ "ean": null,
344
+ "internalCode": "KB-200",
345
+ "groupId": "gebaeck",
346
+ "revenueGroupId": null,
347
+ "stockTracked": true,
348
+ "stockKind": "quantity",
349
+ "minStock": null,
350
+ "active": true,
351
+ "createdAt": "2026-10-01T04:30:00.000Z",
352
+ "updatedAt": "2026-10-06T06:00:04.000Z",
353
+ "stockLocationIds": [
354
+ "haupt",
355
+ "lieferwagen"
356
+ ],
357
+ "minStockByLocation": {}
358
+ },
359
+ {
360
+ "id": "roggenbrot",
361
+ "name": "Roggenbrot 1 kg",
362
+ "description": null,
363
+ "unitPriceCents": 450,
364
+ "vatRate": 10,
365
+ "unit": "Stk",
366
+ "number": "A-100",
367
+ "ean": "9001234567896",
368
+ "internalCode": null,
369
+ "groupId": "brot",
370
+ "revenueGroupId": null,
371
+ "stockTracked": true,
372
+ "stockKind": "quantity",
373
+ "minStock": 5000,
374
+ "active": true,
375
+ "createdAt": "2026-10-01T04:00:00.000Z",
376
+ "updatedAt": "2026-10-06T06:00:04.000Z",
377
+ "stockLocationIds": [
378
+ "haupt"
379
+ ],
380
+ "minStockByLocation": {
381
+ "haupt": 5000
382
+ }
383
+ }
384
+ ],
385
+ "nextCursor": null
386
+ }
387
+ }
388
+ },
389
+ {
390
+ "channel": "api",
391
+ "name": "error_list_articles_invalid_cursor",
392
+ "endpoint": "listArticles",
393
+ "path": "/v3/listArticles",
394
+ "params": {
395
+ "cursor": "kaputt"
396
+ },
397
+ "httpStatus": 200,
398
+ "headers": {
399
+ "Kasseneck-Api-Version": "v3",
400
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
401
+ },
402
+ "response": {
403
+ "status": "error",
404
+ "message": "Der Blätter-Zeiger ist ungültig.",
405
+ "data": {
406
+ "code": "invalid_cursor"
407
+ },
408
+ "code": "invalid_cursor"
409
+ }
410
+ },
411
+ {
412
+ "channel": "api",
413
+ "name": "error_list_articles_validation",
414
+ "endpoint": "listArticles",
415
+ "path": "/v3/listArticles",
416
+ "params": {
417
+ "limit": 500
418
+ },
419
+ "httpStatus": 200,
420
+ "headers": {
421
+ "Kasseneck-Api-Version": "v3",
422
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
423
+ },
424
+ "response": {
425
+ "status": "error",
426
+ "message": "Bitte Eingaben prüfen.",
427
+ "data": {
428
+ "code": "validation",
429
+ "errors": [
430
+ {
431
+ "field": "limit",
432
+ "message": "Limit muss eine ganze Zahl von 1 bis 200 sein."
433
+ }
434
+ ]
435
+ },
436
+ "code": "validation"
437
+ }
438
+ },
439
+ {
440
+ "channel": "api",
441
+ "name": "lookup_article_by_ean",
442
+ "endpoint": "lookupArticleByCode",
443
+ "path": "/v3/lookupArticleByCode",
444
+ "params": {
445
+ "code": "9001234567896"
446
+ },
447
+ "httpStatus": 200,
448
+ "headers": {
449
+ "Kasseneck-Api-Version": "v3",
450
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
451
+ },
452
+ "response": {
453
+ "status": "success",
454
+ "message": "",
455
+ "data": {
456
+ "article": {
457
+ "id": "roggenbrot",
458
+ "name": "Roggenbrot 1 kg",
459
+ "description": null,
460
+ "unitPriceCents": 450,
461
+ "vatRate": 10,
462
+ "unit": "Stk",
463
+ "number": "A-100",
464
+ "ean": "9001234567896",
465
+ "internalCode": null,
466
+ "groupId": "brot",
467
+ "revenueGroupId": null,
468
+ "stockTracked": true,
469
+ "stockKind": "quantity",
470
+ "minStock": 5000,
471
+ "active": true,
472
+ "createdAt": "2026-10-01T04:00:00.000Z",
473
+ "updatedAt": "2026-10-06T06:00:04.000Z",
474
+ "stockLocationIds": [
475
+ "haupt"
476
+ ],
477
+ "minStockByLocation": {
478
+ "haupt": 5000
479
+ }
480
+ }
481
+ }
482
+ }
483
+ },
484
+ {
485
+ "channel": "api",
486
+ "name": "error_lookup_article_unknown_code",
487
+ "endpoint": "lookupArticleByCode",
488
+ "path": "/v3/lookupArticleByCode",
489
+ "params": {
490
+ "code": "4006381333931"
491
+ },
492
+ "httpStatus": 200,
493
+ "headers": {
494
+ "Kasseneck-Api-Version": "v3",
495
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
496
+ },
497
+ "response": {
498
+ "status": "error",
499
+ "message": "Artikel nicht gefunden.",
500
+ "data": {
501
+ "code": "article_not_found"
502
+ },
503
+ "code": "article_not_found"
504
+ }
505
+ },
506
+ {
507
+ "channel": "api",
508
+ "name": "get_stock",
509
+ "endpoint": "getStock",
510
+ "path": "/v3/getStock",
511
+ "params": {
512
+ "articleId": "roggenbrot"
513
+ },
514
+ "httpStatus": 200,
515
+ "headers": {
516
+ "Kasseneck-Api-Version": "v3",
517
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
518
+ },
519
+ "response": {
520
+ "status": "success",
521
+ "message": "",
522
+ "data": {
523
+ "stock": [
524
+ {
525
+ "articleId": "roggenbrot",
526
+ "locationId": "haupt",
527
+ "onHand": 4000,
528
+ "reserved": 0,
529
+ "available": 4000,
530
+ "defective": 0,
531
+ "sequence": 2,
532
+ "updatedAt": "2026-10-06T06:00:04.000Z"
533
+ }
534
+ ]
535
+ }
536
+ }
537
+ },
538
+ {
539
+ "channel": "api",
540
+ "name": "list_stock",
541
+ "endpoint": "listStock",
542
+ "path": "/v3/listStock",
543
+ "params": {
544
+ "locationId": "haupt"
545
+ },
546
+ "httpStatus": 200,
547
+ "headers": {
548
+ "Kasseneck-Api-Version": "v3",
549
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
550
+ },
551
+ "response": {
552
+ "status": "success",
553
+ "message": "",
554
+ "data": {
555
+ "stock": [
556
+ {
557
+ "articleId": "kipferl",
558
+ "locationId": "haupt",
559
+ "onHand": 40000,
560
+ "reserved": 0,
561
+ "available": 40000,
562
+ "defective": 0,
563
+ "sequence": 1,
564
+ "updatedAt": "2026-10-06T06:00:03.000Z"
565
+ },
566
+ {
567
+ "articleId": "roggenbrot",
568
+ "locationId": "haupt",
569
+ "onHand": 4000,
570
+ "reserved": 0,
571
+ "available": 4000,
572
+ "defective": 0,
573
+ "sequence": 2,
574
+ "updatedAt": "2026-10-06T06:00:04.000Z"
575
+ }
576
+ ],
577
+ "nextCursor": null
578
+ }
579
+ }
580
+ },
581
+ {
582
+ "channel": "api",
583
+ "name": "list_stock_below_minimum",
584
+ "endpoint": "listStock",
585
+ "path": "/v3/listStock",
586
+ "params": {
587
+ "belowMinimum": true
588
+ },
589
+ "httpStatus": 200,
590
+ "headers": {
591
+ "Kasseneck-Api-Version": "v3",
592
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
593
+ },
594
+ "response": {
595
+ "status": "success",
596
+ "message": "",
597
+ "data": {
598
+ "stock": [
599
+ {
600
+ "articleId": "roggenbrot",
601
+ "locationId": "haupt",
602
+ "onHand": 4000,
603
+ "reserved": 0,
604
+ "available": 4000,
605
+ "defective": 0,
606
+ "sequence": 2,
607
+ "updatedAt": "2026-10-06T06:00:04.000Z"
608
+ }
609
+ ],
610
+ "nextCursor": null
611
+ }
612
+ }
613
+ },
614
+ {
615
+ "channel": "api",
616
+ "name": "list_stock_movements",
617
+ "endpoint": "listStockMovements",
618
+ "path": "/v3/listStockMovements",
619
+ "params": {
620
+ "articleId": "roggenbrot"
621
+ },
622
+ "httpStatus": 200,
623
+ "headers": {
624
+ "Kasseneck-Api-Version": "v3",
625
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
626
+ },
627
+ "response": {
628
+ "status": "success",
629
+ "message": "",
630
+ "data": {
631
+ "movements": [
632
+ {
633
+ "id": "auto2_0",
634
+ "articleId": "roggenbrot",
635
+ "type": "loss",
636
+ "locationId": "haupt",
637
+ "condition": "sellable",
638
+ "quantityDelta": -8000,
639
+ "reservedDelta": 0,
640
+ "stockAfter": {
641
+ "sellable": 4000,
642
+ "defective": 0,
643
+ "reserved": null
644
+ },
645
+ "operationId": "auto2",
646
+ "source": {
647
+ "id": null,
648
+ "position": null,
649
+ "type": "panel",
650
+ "register": null
651
+ },
652
+ "viennaDay": "2026-10-06",
653
+ "time": "2026-10-06T06:00:04.000Z",
654
+ "lots": [
655
+ {
656
+ "lotId": "auto1_L0",
657
+ "quantity": 8000,
658
+ "expiresOn": null,
659
+ "batch": null,
660
+ "serialNumber": null,
661
+ "receivedAt": "2026-10-06T06:00:03.000Z"
662
+ }
663
+ ]
664
+ },
665
+ {
666
+ "id": "auto1_0",
667
+ "articleId": "roggenbrot",
668
+ "type": "goods_receipt",
669
+ "locationId": "haupt",
670
+ "condition": "sellable",
671
+ "quantityDelta": 12000,
672
+ "reservedDelta": 0,
673
+ "stockAfter": {
674
+ "sellable": 12000,
675
+ "defective": 0,
676
+ "reserved": null
677
+ },
678
+ "operationId": "auto1",
679
+ "source": {
680
+ "id": null,
681
+ "position": null,
682
+ "type": "panel",
683
+ "register": null
684
+ },
685
+ "viennaDay": "2026-10-06",
686
+ "time": "2026-10-06T06:00:03.000Z",
687
+ "lots": [
688
+ {
689
+ "lotId": "auto1_L0",
690
+ "quantity": 12000,
691
+ "expiresOn": null,
692
+ "batch": null,
693
+ "serialNumber": null,
694
+ "receivedAt": "2026-10-06T06:00:03.000Z"
695
+ }
696
+ ]
697
+ }
698
+ ],
699
+ "nextCursor": null
700
+ }
701
+ }
702
+ },
703
+ {
704
+ "channel": "api",
705
+ "name": "list_stock_movements_goods_receipt",
706
+ "endpoint": "listStockMovements",
707
+ "path": "/v3/listStockMovements",
708
+ "params": {
709
+ "locationId": "haupt",
710
+ "type": "goods_receipt",
711
+ "source": "panel"
712
+ },
713
+ "httpStatus": 200,
714
+ "headers": {
715
+ "Kasseneck-Api-Version": "v3",
716
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
717
+ },
718
+ "response": {
719
+ "status": "success",
720
+ "message": "",
721
+ "data": {
722
+ "movements": [
723
+ {
724
+ "id": "auto1_1",
725
+ "articleId": "kipferl",
726
+ "type": "goods_receipt",
727
+ "locationId": "haupt",
728
+ "condition": "sellable",
729
+ "quantityDelta": 40000,
730
+ "reservedDelta": 0,
731
+ "stockAfter": {
732
+ "sellable": 40000,
733
+ "defective": 0,
734
+ "reserved": null
735
+ },
736
+ "operationId": "auto1",
737
+ "source": {
738
+ "id": null,
739
+ "position": null,
740
+ "type": "panel",
741
+ "register": null
742
+ },
743
+ "viennaDay": "2026-10-06",
744
+ "time": "2026-10-06T06:00:03.000Z",
745
+ "lots": [
746
+ {
747
+ "lotId": "auto1_L1",
748
+ "quantity": 40000,
749
+ "expiresOn": null,
750
+ "batch": null,
751
+ "serialNumber": null,
752
+ "receivedAt": "2026-10-06T06:00:03.000Z"
753
+ }
754
+ ]
755
+ },
756
+ {
757
+ "id": "auto1_0",
758
+ "articleId": "roggenbrot",
759
+ "type": "goods_receipt",
760
+ "locationId": "haupt",
761
+ "condition": "sellable",
762
+ "quantityDelta": 12000,
763
+ "reservedDelta": 0,
764
+ "stockAfter": {
765
+ "sellable": 12000,
766
+ "defective": 0,
767
+ "reserved": null
768
+ },
769
+ "operationId": "auto1",
770
+ "source": {
771
+ "id": null,
772
+ "position": null,
773
+ "type": "panel",
774
+ "register": null
775
+ },
776
+ "viennaDay": "2026-10-06",
777
+ "time": "2026-10-06T06:00:03.000Z",
778
+ "lots": [
779
+ {
780
+ "lotId": "auto1_L0",
781
+ "quantity": 12000,
782
+ "expiresOn": null,
783
+ "batch": null,
784
+ "serialNumber": null,
785
+ "receivedAt": "2026-10-06T06:00:03.000Z"
786
+ }
787
+ ]
788
+ }
789
+ ],
790
+ "nextCursor": null
791
+ }
792
+ }
793
+ },
794
+ {
795
+ "channel": "api",
796
+ "name": "error_list_stock_movements_validation",
797
+ "endpoint": "listStockMovements",
798
+ "path": "/v3/listStockMovements",
799
+ "params": {
800
+ "articleId": "roggenbrot",
801
+ "locationId": "haupt"
802
+ },
803
+ "httpStatus": 200,
804
+ "headers": {
805
+ "Kasseneck-Api-Version": "v3",
806
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
807
+ },
808
+ "response": {
809
+ "status": "error",
810
+ "message": "Bitte Eingaben prüfen.",
811
+ "data": {
812
+ "code": "validation",
813
+ "errors": [
814
+ {
815
+ "field": "locationId",
816
+ "message": "Bitte nur nach articleId ODER locationId filtern."
817
+ }
818
+ ]
819
+ },
820
+ "code": "validation"
821
+ }
822
+ },
823
+ {
824
+ "channel": "api",
825
+ "name": "get_article_with_costs",
826
+ "endpoint": "getArticle",
827
+ "path": "/v3/getArticle",
828
+ "params": {
829
+ "articleId": "roggenbrot"
830
+ },
831
+ "httpStatus": 200,
832
+ "headers": {
833
+ "Kasseneck-Api-Version": "v3",
834
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
835
+ },
836
+ "response": {
837
+ "status": "success",
838
+ "message": "",
839
+ "data": {
840
+ "article": {
841
+ "id": "roggenbrot",
842
+ "name": "Roggenbrot 1 kg",
843
+ "description": null,
844
+ "unitPriceCents": 450,
845
+ "vatRate": 10,
846
+ "unit": "Stk",
847
+ "number": "A-100",
848
+ "ean": "9001234567896",
849
+ "internalCode": null,
850
+ "groupId": "brot",
851
+ "revenueGroupId": null,
852
+ "stockTracked": true,
853
+ "stockKind": "quantity",
854
+ "minStock": 5000,
855
+ "active": true,
856
+ "createdAt": "2026-10-01T04:00:00.000Z",
857
+ "updatedAt": "2026-10-06T06:00:04.000Z",
858
+ "stockLocationIds": [
859
+ "haupt"
860
+ ],
861
+ "minStockByLocation": {
862
+ "haupt": 5000
863
+ },
864
+ "purchasePriceMicros": 1200000
865
+ }
866
+ }
867
+ }
868
+ },
869
+ {
870
+ "channel": "api",
871
+ "name": "list_stock_with_costs",
872
+ "endpoint": "listStock",
873
+ "path": "/v3/listStock",
874
+ "params": {
875
+ "articleId": "roggenbrot"
876
+ },
877
+ "httpStatus": 200,
878
+ "headers": {
879
+ "Kasseneck-Api-Version": "v3",
880
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
881
+ },
882
+ "response": {
883
+ "status": "success",
884
+ "message": "",
885
+ "data": {
886
+ "stock": [
887
+ {
888
+ "articleId": "roggenbrot",
889
+ "locationId": "haupt",
890
+ "onHand": 4000,
891
+ "reserved": 0,
892
+ "available": 4000,
893
+ "defective": 0,
894
+ "sequence": 2,
895
+ "updatedAt": "2026-10-06T06:00:04.000Z"
896
+ }
897
+ ],
898
+ "nextCursor": null,
899
+ "values": [
900
+ {
901
+ "articleId": "roggenbrot",
902
+ "stockValueCents": 480,
903
+ "averageCostMicros": 1200000
904
+ }
905
+ ]
906
+ }
907
+ }
908
+ },
909
+ {
910
+ "channel": "api",
911
+ "name": "list_stock_movements_with_costs",
912
+ "endpoint": "listStockMovements",
913
+ "path": "/v3/listStockMovements",
914
+ "params": {
915
+ "articleId": "roggenbrot",
916
+ "limit": 1
917
+ },
918
+ "httpStatus": 200,
919
+ "headers": {
920
+ "Kasseneck-Api-Version": "v3",
921
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
922
+ },
923
+ "response": {
924
+ "status": "success",
925
+ "message": "",
926
+ "data": {
927
+ "movements": [
928
+ {
929
+ "id": "auto2_0",
930
+ "articleId": "roggenbrot",
931
+ "type": "loss",
932
+ "locationId": "haupt",
933
+ "condition": "sellable",
934
+ "quantityDelta": -8000,
935
+ "reservedDelta": 0,
936
+ "stockAfter": {
937
+ "sellable": 4000,
938
+ "defective": 0,
939
+ "reserved": null
940
+ },
941
+ "operationId": "auto2",
942
+ "source": {
943
+ "id": null,
944
+ "position": null,
945
+ "type": "panel",
946
+ "register": null
947
+ },
948
+ "viennaDay": "2026-10-06",
949
+ "time": "2026-10-06T06:00:04.000Z",
950
+ "lots": [
951
+ {
952
+ "lotId": "auto1_L0",
953
+ "quantity": 8000,
954
+ "expiresOn": null,
955
+ "batch": null,
956
+ "serialNumber": null,
957
+ "receivedAt": "2026-10-06T06:00:03.000Z",
958
+ "valueCents": 960
959
+ }
960
+ ],
961
+ "valueDeltaCents": -960,
962
+ "consumedValueCents": 960
963
+ }
964
+ ],
965
+ "nextCursor": "eyJ6ZWl0IjoxNzkxMjY2NDA0MDAwLCJpZCI6ImF1dG8yXzAifQ"
966
+ }
967
+ }
968
+ },
969
+ {
970
+ "channel": "api",
971
+ "name": "list_webhooks",
972
+ "endpoint": "listWebhooks",
973
+ "path": "/v3/listWebhooks",
974
+ "params": {},
975
+ "httpStatus": 200,
976
+ "headers": {
977
+ "Kasseneck-Api-Version": "v3",
978
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
979
+ },
980
+ "response": {
981
+ "status": "success",
982
+ "message": "",
983
+ "data": {
984
+ "webhooks": [
985
+ {
986
+ "id": "3pJJwmZZjQTW",
987
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
988
+ "createdAt": "2026-10-06T06:00:02.000Z",
989
+ "events": [
990
+ "stock.changed",
991
+ "stock.below_minimum",
992
+ "article.created",
993
+ "article.updated",
994
+ "article.deactivated"
995
+ ],
996
+ "active": true,
997
+ "description": "Webshop Kornblum",
998
+ "lastDelivery": {
999
+ "at": "2026-10-06T06:00:04.000Z",
1000
+ "status": "delivered",
1001
+ "statusCode": 200
1002
+ },
1003
+ "consecutiveFailures": 0
1004
+ }
1005
+ ],
1006
+ "events": [
1007
+ "stock.changed",
1008
+ "stock.below_minimum",
1009
+ "article.created",
1010
+ "article.updated",
1011
+ "article.deactivated",
1012
+ "reservation.expired",
1013
+ "reservation.released",
1014
+ "reservation.redeemed"
1015
+ ]
1016
+ }
1017
+ }
1018
+ },
1019
+ {
1020
+ "channel": "api",
1021
+ "name": "update_webhook",
1022
+ "endpoint": "updateWebhook",
1023
+ "path": "/v3/updateWebhook",
1024
+ "params": {
1025
+ "webhookId": "3pJJwmZZjQTW",
1026
+ "events": [
1027
+ "stock.changed",
1028
+ "stock.below_minimum"
1029
+ ]
1030
+ },
1031
+ "httpStatus": 200,
1032
+ "headers": {
1033
+ "Kasseneck-Api-Version": "v3",
1034
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1035
+ },
1036
+ "response": {
1037
+ "status": "success",
1038
+ "message": "",
1039
+ "data": {
1040
+ "webhook": {
1041
+ "id": "3pJJwmZZjQTW",
1042
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
1043
+ "createdAt": "2026-10-06T06:00:02.000Z",
1044
+ "events": [
1045
+ "stock.changed",
1046
+ "stock.below_minimum"
1047
+ ],
1048
+ "active": true,
1049
+ "description": "Webshop Kornblum",
1050
+ "lastDelivery": {
1051
+ "at": "2026-10-06T06:00:04.000Z",
1052
+ "status": "delivered",
1053
+ "statusCode": 200
1054
+ },
1055
+ "consecutiveFailures": 0
1056
+ }
1057
+ }
1058
+ }
1059
+ },
1060
+ {
1061
+ "channel": "api",
1062
+ "name": "error_update_webhook_not_found",
1063
+ "endpoint": "updateWebhook",
1064
+ "path": "/v3/updateWebhook",
1065
+ "params": {
1066
+ "webhookId": "gibt_es_nicht",
1067
+ "active": false
1068
+ },
1069
+ "httpStatus": 200,
1070
+ "headers": {
1071
+ "Kasseneck-Api-Version": "v3",
1072
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1073
+ },
1074
+ "response": {
1075
+ "status": "error",
1076
+ "message": "Webhook nicht gefunden.",
1077
+ "data": {
1078
+ "code": "webhook_not_found"
1079
+ },
1080
+ "code": "webhook_not_found"
1081
+ }
1082
+ },
1083
+ {
1084
+ "channel": "api",
1085
+ "name": "send_webhook_test",
1086
+ "endpoint": "sendWebhookTest",
1087
+ "path": "/v3/sendWebhookTest",
1088
+ "params": {
1089
+ "webhookId": "3pJJwmZZjQTW",
1090
+ "event": "stock.below_minimum"
1091
+ },
1092
+ "httpStatus": 200,
1093
+ "headers": {
1094
+ "Kasseneck-Api-Version": "v3",
1095
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1096
+ },
1097
+ "response": {
1098
+ "status": "success",
1099
+ "message": "",
1100
+ "data": {
1101
+ "eventId": "evt_Rq6FfqGQDbALsgsNFC86",
1102
+ "event": "stock.below_minimum",
1103
+ "deliveries": [
1104
+ {
1105
+ "deliveryId": "auto9",
1106
+ "webhookId": "3pJJwmZZjQTW",
1107
+ "status": "delivered",
1108
+ "statusCode": 200
1109
+ }
1110
+ ]
1111
+ }
1112
+ }
1113
+ },
1114
+ {
1115
+ "channel": "api",
1116
+ "name": "error_send_webhook_test_not_subscribed",
1117
+ "endpoint": "sendWebhookTest",
1118
+ "path": "/v3/sendWebhookTest",
1119
+ "params": {
1120
+ "webhookId": "3pJJwmZZjQTW",
1121
+ "event": "article.created"
1122
+ },
1123
+ "httpStatus": 200,
1124
+ "headers": {
1125
+ "Kasseneck-Api-Version": "v3",
1126
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1127
+ },
1128
+ "response": {
1129
+ "status": "error",
1130
+ "message": "Der Webhook abonniert das Ereignis article.created nicht.",
1131
+ "data": {
1132
+ "code": "event_not_subscribed"
1133
+ },
1134
+ "code": "event_not_subscribed"
1135
+ }
1136
+ },
1137
+ {
1138
+ "channel": "api",
1139
+ "name": "list_webhook_deliveries",
1140
+ "endpoint": "listWebhookDeliveries",
1141
+ "path": "/v3/listWebhookDeliveries",
1142
+ "params": {
1143
+ "webhookId": "3pJJwmZZjQTW",
1144
+ "limit": 3
1145
+ },
1146
+ "httpStatus": 200,
1147
+ "headers": {
1148
+ "Kasseneck-Api-Version": "v3",
1149
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1150
+ },
1151
+ "response": {
1152
+ "status": "success",
1153
+ "message": "",
1154
+ "data": {
1155
+ "deliveries": [
1156
+ {
1157
+ "deliveryId": "auto9",
1158
+ "webhookId": "3pJJwmZZjQTW",
1159
+ "eventId": "evt_Rq6FfqGQDbALsgsNFC86",
1160
+ "status": "delivered",
1161
+ "statusCode": 200,
1162
+ "createdAt": "2026-10-06T06:00:29.000Z",
1163
+ "test": true,
1164
+ "event": "stock.below_minimum",
1165
+ "attempts": 1,
1166
+ "response": "ok",
1167
+ "error": null,
1168
+ "lastAttemptAt": "2026-10-06T06:00:29.000Z",
1169
+ "nextAttemptAt": null
1170
+ },
1171
+ {
1172
+ "deliveryId": "auto3",
1173
+ "webhookId": "3pJJwmZZjQTW",
1174
+ "eventId": "evt_wKLtZJFBjowUBsa875du",
1175
+ "status": "delivered",
1176
+ "statusCode": 200,
1177
+ "createdAt": "2026-10-06T06:00:04.000Z",
1178
+ "test": false,
1179
+ "event": "stock.below_minimum",
1180
+ "attempts": 1,
1181
+ "response": "ok",
1182
+ "error": null,
1183
+ "lastAttemptAt": "2026-10-06T06:00:04.000Z",
1184
+ "nextAttemptAt": null
1185
+ },
1186
+ {
1187
+ "deliveryId": "auto4",
1188
+ "webhookId": "3pJJwmZZjQTW",
1189
+ "eventId": "evt_6SjOpc8E0wUJamYx4wDc",
1190
+ "status": "delivered",
1191
+ "statusCode": 200,
1192
+ "createdAt": "2026-10-06T06:00:04.000Z",
1193
+ "test": false,
1194
+ "event": "stock.changed",
1195
+ "attempts": 1,
1196
+ "response": "ok",
1197
+ "error": null,
1198
+ "lastAttemptAt": "2026-10-06T06:00:04.000Z",
1199
+ "nextAttemptAt": null
1200
+ }
1201
+ ]
1202
+ }
1203
+ }
1204
+ },
1205
+ {
1206
+ "channel": "api",
1207
+ "name": "rotate_webhook_secret",
1208
+ "endpoint": "rotateWebhookSecret",
1209
+ "path": "/v3/rotateWebhookSecret",
1210
+ "params": {
1211
+ "webhookId": "3pJJwmZZjQTW"
1212
+ },
1213
+ "httpStatus": 200,
1214
+ "headers": {
1215
+ "Kasseneck-Api-Version": "v3",
1216
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1217
+ },
1218
+ "response": {
1219
+ "status": "success",
1220
+ "message": "",
1221
+ "data": {
1222
+ "secret": "whsec_EXAMPLECD6279ACAAAAAAAAAAAAAAAAA",
1223
+ "webhook": {
1224
+ "id": "3pJJwmZZjQTW",
1225
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
1226
+ "createdAt": "2026-10-06T06:00:02.000Z",
1227
+ "events": [
1228
+ "stock.changed",
1229
+ "stock.below_minimum"
1230
+ ],
1231
+ "active": true,
1232
+ "description": "Webshop Kornblum",
1233
+ "lastDelivery": {
1234
+ "at": "2026-10-06T06:00:29.000Z",
1235
+ "status": "delivered",
1236
+ "statusCode": 200
1237
+ },
1238
+ "consecutiveFailures": 0
1239
+ }
1240
+ }
1241
+ }
1242
+ },
1243
+ {
1244
+ "channel": "api",
1245
+ "name": "error_create_webhook_invalid_url",
1246
+ "endpoint": "createWebhook",
1247
+ "path": "/v3/createWebhook",
1248
+ "params": {
1249
+ "url": "http://shop.baeckerei-kornblum.at/hook",
1250
+ "events": [
1251
+ "stock.changed"
1252
+ ]
1253
+ },
1254
+ "httpStatus": 200,
1255
+ "headers": {
1256
+ "Kasseneck-Api-Version": "v3",
1257
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1258
+ },
1259
+ "response": {
1260
+ "status": "error",
1261
+ "message": "Bitte Eingaben prüfen.",
1262
+ "data": {
1263
+ "code": "invalid_webhook_url",
1264
+ "errors": [
1265
+ {
1266
+ "field": "url",
1267
+ "message": "Bitte die vollständige Adresse mit https:// angeben, z. B. https://api.firma.at/kasseneck-webhook"
1268
+ }
1269
+ ]
1270
+ },
1271
+ "code": "invalid_webhook_url"
1272
+ }
1273
+ },
1274
+ {
1275
+ "channel": "api",
1276
+ "name": "error_create_webhook_limit",
1277
+ "endpoint": "createWebhook",
1278
+ "path": "/v3/createWebhook",
1279
+ "params": {
1280
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook-6",
1281
+ "events": [
1282
+ "stock.changed"
1283
+ ]
1284
+ },
1285
+ "httpStatus": 200,
1286
+ "headers": {
1287
+ "Kasseneck-Api-Version": "v3",
1288
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1289
+ },
1290
+ "response": {
1291
+ "status": "error",
1292
+ "message": "Höchstens 5 Webhooks je Konto.",
1293
+ "data": {
1294
+ "code": "webhook_limit"
1295
+ },
1296
+ "code": "webhook_limit"
1297
+ }
1298
+ },
1299
+ {
1300
+ "channel": "api",
1301
+ "name": "update_webhook_inactive",
1302
+ "endpoint": "updateWebhook",
1303
+ "path": "/v3/updateWebhook",
1304
+ "params": {
1305
+ "webhookId": "3pJJwmZZjQTW",
1306
+ "active": false
1307
+ },
1308
+ "httpStatus": 200,
1309
+ "headers": {
1310
+ "Kasseneck-Api-Version": "v3",
1311
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1312
+ },
1313
+ "response": {
1314
+ "status": "success",
1315
+ "message": "",
1316
+ "data": {
1317
+ "webhook": {
1318
+ "id": "3pJJwmZZjQTW",
1319
+ "url": "https://shop.baeckerei-kornblum.at/kasseneck-webhook",
1320
+ "createdAt": "2026-10-06T06:00:02.000Z",
1321
+ "events": [
1322
+ "stock.changed",
1323
+ "stock.below_minimum"
1324
+ ],
1325
+ "active": false,
1326
+ "description": "Webshop Kornblum",
1327
+ "lastDelivery": {
1328
+ "at": "2026-10-06T06:00:29.000Z",
1329
+ "status": "delivered",
1330
+ "statusCode": 200
1331
+ },
1332
+ "consecutiveFailures": 0
1333
+ }
1334
+ }
1335
+ }
1336
+ },
1337
+ {
1338
+ "channel": "api",
1339
+ "name": "error_send_webhook_test_inactive",
1340
+ "endpoint": "sendWebhookTest",
1341
+ "path": "/v3/sendWebhookTest",
1342
+ "params": {
1343
+ "webhookId": "3pJJwmZZjQTW",
1344
+ "event": "stock.changed"
1345
+ },
1346
+ "httpStatus": 200,
1347
+ "headers": {
1348
+ "Kasseneck-Api-Version": "v3",
1349
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1350
+ },
1351
+ "response": {
1352
+ "status": "error",
1353
+ "message": "Dieser Webhook ist inaktiv – zum Testen zuerst aktivieren.",
1354
+ "data": {
1355
+ "code": "webhook_inactive"
1356
+ },
1357
+ "code": "webhook_inactive"
1358
+ }
1359
+ },
1360
+ {
1361
+ "channel": "api",
1362
+ "name": "error_send_webhook_test_daily_limit",
1363
+ "endpoint": "sendWebhookTest",
1364
+ "path": "/v3/sendWebhookTest",
1365
+ "params": {
1366
+ "webhookId": "3pJJwmZZjQTW",
1367
+ "event": "stock.changed"
1368
+ },
1369
+ "httpStatus": 200,
1370
+ "headers": {
1371
+ "Kasseneck-Api-Version": "v3",
1372
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version",
1373
+ "Retry-After": "57511"
1374
+ },
1375
+ "response": {
1376
+ "status": "error",
1377
+ "message": "Höchstens 20 Probesendungen je Tag – morgen wieder.",
1378
+ "data": {
1379
+ "code": "rate_limited",
1380
+ "retryAfterSec": 57511
1381
+ },
1382
+ "code": "rate_limited"
1383
+ }
1384
+ },
1385
+ {
1386
+ "channel": "api",
1387
+ "name": "delete_webhook",
1388
+ "endpoint": "deleteWebhook",
1389
+ "path": "/v3/deleteWebhook",
1390
+ "params": {
1391
+ "webhookId": "3pJJwmZZjQTW"
1392
+ },
1393
+ "httpStatus": 200,
1394
+ "headers": {
1395
+ "Kasseneck-Api-Version": "v3",
1396
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1397
+ },
1398
+ "response": {
1399
+ "status": "success",
1400
+ "message": "",
1401
+ "data": {
1402
+ "webhookId": "3pJJwmZZjQTW",
1403
+ "deleted": true
1404
+ }
1405
+ }
1406
+ },
1407
+ {
1408
+ "channel": "api",
1409
+ "name": "error_delete_webhook_not_found",
1410
+ "endpoint": "deleteWebhook",
1411
+ "path": "/v3/deleteWebhook",
1412
+ "params": {
1413
+ "webhookId": "3pJJwmZZjQTW"
1414
+ },
1415
+ "httpStatus": 200,
1416
+ "headers": {
1417
+ "Kasseneck-Api-Version": "v3",
1418
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1419
+ },
1420
+ "response": {
1421
+ "status": "error",
1422
+ "message": "Webhook nicht gefunden.",
1423
+ "data": {
1424
+ "code": "webhook_not_found"
1425
+ },
1426
+ "code": "webhook_not_found"
1427
+ }
1428
+ },
1429
+ {
1430
+ "channel": "api",
1431
+ "name": "create_article",
1432
+ "endpoint": "createArticle",
1433
+ "path": "/v3/createArticle",
1434
+ "params": {
1435
+ "idempotencyKey": "shop-artikel-1001",
1436
+ "name": "Kaisersemmel",
1437
+ "description": "Handgeschlagen, mit Mohn bestreut",
1438
+ "unitPriceCents": 65,
1439
+ "vatRate": 10,
1440
+ "stockTracked": true,
1441
+ "stockLocationIds": [
1442
+ "haupt"
1443
+ ],
1444
+ "minStockByLocation": {
1445
+ "haupt": 20000
1446
+ },
1447
+ "externalIds": {
1448
+ "shop": "1001"
1449
+ },
1450
+ "metadata": {
1451
+ "seoSlug": "kaisersemmel-mohn"
1452
+ }
1453
+ },
1454
+ "httpStatus": 200,
1455
+ "headers": {
1456
+ "Kasseneck-Api-Version": "v3",
1457
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1458
+ },
1459
+ "response": {
1460
+ "status": "success",
1461
+ "message": "",
1462
+ "data": {
1463
+ "article": {
1464
+ "id": "auto29",
1465
+ "name": "Kaisersemmel",
1466
+ "description": "Handgeschlagen, mit Mohn bestreut",
1467
+ "unitPriceCents": 65,
1468
+ "vatRate": 10,
1469
+ "unit": "Stk",
1470
+ "number": null,
1471
+ "ean": null,
1472
+ "internalCode": "1",
1473
+ "groupId": null,
1474
+ "revenueGroupId": null,
1475
+ "stockTracked": true,
1476
+ "stockKind": "quantity",
1477
+ "minStock": null,
1478
+ "active": true,
1479
+ "externalIds": {
1480
+ "shop": "1001"
1481
+ },
1482
+ "metadata": {
1483
+ "seoSlug": "kaisersemmel-mohn"
1484
+ },
1485
+ "createdAt": "2026-10-06T06:01:32.000Z",
1486
+ "updatedAt": "2026-10-06T06:01:32.000Z",
1487
+ "stockLocationIds": [
1488
+ "haupt"
1489
+ ],
1490
+ "minStockByLocation": {
1491
+ "haupt": 20000
1492
+ }
1493
+ }
1494
+ }
1495
+ }
1496
+ },
1497
+ {
1498
+ "channel": "api",
1499
+ "name": "create_article_replayed",
1500
+ "endpoint": "createArticle",
1501
+ "path": "/v3/createArticle",
1502
+ "params": {
1503
+ "idempotencyKey": "shop-artikel-1001",
1504
+ "name": "Kaisersemmel",
1505
+ "description": "Handgeschlagen, mit Mohn bestreut",
1506
+ "unitPriceCents": 65,
1507
+ "vatRate": 10,
1508
+ "stockTracked": true,
1509
+ "stockLocationIds": [
1510
+ "haupt"
1511
+ ],
1512
+ "minStockByLocation": {
1513
+ "haupt": 20000
1514
+ },
1515
+ "externalIds": {
1516
+ "shop": "1001"
1517
+ },
1518
+ "metadata": {
1519
+ "seoSlug": "kaisersemmel-mohn"
1520
+ }
1521
+ },
1522
+ "httpStatus": 200,
1523
+ "headers": {
1524
+ "Kasseneck-Api-Version": "v3",
1525
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1526
+ },
1527
+ "response": {
1528
+ "status": "success",
1529
+ "message": "",
1530
+ "data": {
1531
+ "article": {
1532
+ "id": "auto29",
1533
+ "name": "Kaisersemmel",
1534
+ "description": "Handgeschlagen, mit Mohn bestreut",
1535
+ "unitPriceCents": 65,
1536
+ "vatRate": 10,
1537
+ "unit": "Stk",
1538
+ "number": null,
1539
+ "ean": null,
1540
+ "internalCode": "1",
1541
+ "groupId": null,
1542
+ "revenueGroupId": null,
1543
+ "stockTracked": true,
1544
+ "stockKind": "quantity",
1545
+ "minStock": null,
1546
+ "active": true,
1547
+ "externalIds": {
1548
+ "shop": "1001"
1549
+ },
1550
+ "metadata": {
1551
+ "seoSlug": "kaisersemmel-mohn"
1552
+ },
1553
+ "createdAt": "2026-10-06T06:01:32.000Z",
1554
+ "updatedAt": "2026-10-06T06:01:32.000Z",
1555
+ "stockLocationIds": [
1556
+ "haupt"
1557
+ ],
1558
+ "minStockByLocation": {
1559
+ "haupt": 20000
1560
+ }
1561
+ }
1562
+ }
1563
+ }
1564
+ },
1565
+ {
1566
+ "channel": "api",
1567
+ "name": "error_create_article_idempotency_conflict",
1568
+ "endpoint": "createArticle",
1569
+ "path": "/v3/createArticle",
1570
+ "params": {
1571
+ "idempotencyKey": "shop-artikel-1001",
1572
+ "name": "Kaisersemmel",
1573
+ "description": "Handgeschlagen, mit Mohn bestreut",
1574
+ "unitPriceCents": 70,
1575
+ "vatRate": 10,
1576
+ "stockTracked": true,
1577
+ "stockLocationIds": [
1578
+ "haupt"
1579
+ ],
1580
+ "minStockByLocation": {
1581
+ "haupt": 20000
1582
+ },
1583
+ "externalIds": {
1584
+ "shop": "1001"
1585
+ },
1586
+ "metadata": {
1587
+ "seoSlug": "kaisersemmel-mohn"
1588
+ }
1589
+ },
1590
+ "httpStatus": 200,
1591
+ "headers": {
1592
+ "Kasseneck-Api-Version": "v3",
1593
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1594
+ },
1595
+ "response": {
1596
+ "status": "error",
1597
+ "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
1598
+ "data": {
1599
+ "code": "idempotency_conflict"
1600
+ },
1601
+ "code": "idempotency_conflict"
1602
+ }
1603
+ },
1604
+ {
1605
+ "channel": "api",
1606
+ "name": "create_article_foreign",
1607
+ "endpoint": "createArticle",
1608
+ "path": "/v3/createArticle",
1609
+ "params": {
1610
+ "idempotencyKey": "shop-artikel-1002",
1611
+ "name": "Bio-Hafermilch 1 l",
1612
+ "ean": "9001234567810",
1613
+ "unitPriceCents": 249,
1614
+ "vatRate": 10,
1615
+ "stockTracked": true,
1616
+ "stockKind": "quantity"
1617
+ },
1618
+ "httpStatus": 200,
1619
+ "headers": {
1620
+ "Kasseneck-Api-Version": "v3",
1621
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1622
+ },
1623
+ "response": {
1624
+ "status": "success",
1625
+ "message": "",
1626
+ "data": {
1627
+ "article": {
1628
+ "id": "auto30",
1629
+ "name": "Bio-Hafermilch 1 l",
1630
+ "description": null,
1631
+ "unitPriceCents": 249,
1632
+ "vatRate": 10,
1633
+ "unit": "Stk",
1634
+ "number": null,
1635
+ "ean": "9001234567810",
1636
+ "internalCode": null,
1637
+ "groupId": null,
1638
+ "revenueGroupId": null,
1639
+ "stockTracked": true,
1640
+ "stockKind": "quantity",
1641
+ "minStock": null,
1642
+ "active": true,
1643
+ "createdAt": "2026-10-06T06:01:35.000Z",
1644
+ "updatedAt": "2026-10-06T06:01:35.000Z",
1645
+ "stockLocationIds": [],
1646
+ "minStockByLocation": {}
1647
+ }
1648
+ }
1649
+ }
1650
+ },
1651
+ {
1652
+ "channel": "api",
1653
+ "name": "error_create_article_code_taken",
1654
+ "endpoint": "createArticle",
1655
+ "path": "/v3/createArticle",
1656
+ "params": {
1657
+ "idempotencyKey": "shop-artikel-1003",
1658
+ "name": "Roggenbrot",
1659
+ "ean": "9001234567896"
1660
+ },
1661
+ "httpStatus": 200,
1662
+ "headers": {
1663
+ "Kasseneck-Api-Version": "v3",
1664
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1665
+ },
1666
+ "response": {
1667
+ "status": "error",
1668
+ "message": "Diese EAN gehört schon zu einem anderen Artikel.",
1669
+ "data": {
1670
+ "code": "code_taken",
1671
+ "field": "ean",
1672
+ "articleId": "roggenbrot"
1673
+ },
1674
+ "code": "code_taken"
1675
+ }
1676
+ },
1677
+ {
1678
+ "channel": "api",
1679
+ "name": "error_create_article_external_id_taken",
1680
+ "endpoint": "createArticle",
1681
+ "path": "/v3/createArticle",
1682
+ "params": {
1683
+ "idempotencyKey": "shop-artikel-1004",
1684
+ "name": "Semmel",
1685
+ "externalIds": {
1686
+ "shop": "1001"
1687
+ }
1688
+ },
1689
+ "httpStatus": 200,
1690
+ "headers": {
1691
+ "Kasseneck-Api-Version": "v3",
1692
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1693
+ },
1694
+ "response": {
1695
+ "status": "error",
1696
+ "message": "Die Kennung shop gehört schon zu einem anderen Artikel.",
1697
+ "data": {
1698
+ "code": "external_id_taken",
1699
+ "field": "externalIds.shop",
1700
+ "articleId": "auto29"
1701
+ },
1702
+ "code": "external_id_taken"
1703
+ }
1704
+ },
1705
+ {
1706
+ "channel": "api",
1707
+ "name": "error_create_article_validation",
1708
+ "endpoint": "createArticle",
1709
+ "path": "/v3/createArticle",
1710
+ "params": {
1711
+ "idempotencyKey": "shop-artikel-1005",
1712
+ "name": "Mohnweckerl",
1713
+ "ean": "9001234567897",
1714
+ "minStock": 1500
1715
+ },
1716
+ "httpStatus": 200,
1717
+ "headers": {
1718
+ "Kasseneck-Api-Version": "v3",
1719
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1720
+ },
1721
+ "response": {
1722
+ "status": "error",
1723
+ "message": "Bitte Eingaben prüfen.",
1724
+ "data": {
1725
+ "code": "validation",
1726
+ "errors": [
1727
+ {
1728
+ "field": "ean",
1729
+ "message": "GTIN/EAN aus 8 bis 14 Ziffern mit gültiger Prüfziffer."
1730
+ },
1731
+ {
1732
+ "field": "minStock",
1733
+ "message": "Tausendstel ≥ 0 in ganzen Einheiten (Vielfaches von 1000) oder null."
1734
+ }
1735
+ ]
1736
+ },
1737
+ "code": "validation"
1738
+ }
1739
+ },
1740
+ {
1741
+ "channel": "api",
1742
+ "name": "error_create_article_idempotency_key_required",
1743
+ "endpoint": "createArticle",
1744
+ "path": "/v3/createArticle",
1745
+ "params": {
1746
+ "name": "Mohnweckerl"
1747
+ },
1748
+ "httpStatus": 200,
1749
+ "headers": {
1750
+ "Kasseneck-Api-Version": "v3",
1751
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1752
+ },
1753
+ "response": {
1754
+ "status": "error",
1755
+ "message": "idempotencyKey fehlt.",
1756
+ "data": {
1757
+ "code": "idempotency_key_required"
1758
+ },
1759
+ "code": "idempotency_key_required"
1760
+ }
1761
+ },
1762
+ {
1763
+ "channel": "api",
1764
+ "name": "create_article_with_costs",
1765
+ "endpoint": "createArticle",
1766
+ "path": "/v3/createArticle",
1767
+ "params": {
1768
+ "idempotencyKey": "shop-artikel-1006",
1769
+ "name": "Nussbeugel",
1770
+ "unitPriceCents": 320,
1771
+ "vatRate": 10,
1772
+ "purchasePriceMicros": 1150000
1773
+ },
1774
+ "httpStatus": 200,
1775
+ "headers": {
1776
+ "Kasseneck-Api-Version": "v3",
1777
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1778
+ },
1779
+ "response": {
1780
+ "status": "success",
1781
+ "message": "",
1782
+ "data": {
1783
+ "article": {
1784
+ "id": "auto33",
1785
+ "name": "Nussbeugel",
1786
+ "description": null,
1787
+ "unitPriceCents": 320,
1788
+ "vatRate": 10,
1789
+ "unit": "Stk",
1790
+ "number": null,
1791
+ "ean": null,
1792
+ "internalCode": "2",
1793
+ "groupId": null,
1794
+ "revenueGroupId": null,
1795
+ "stockTracked": false,
1796
+ "stockKind": "quantity",
1797
+ "minStock": null,
1798
+ "active": true,
1799
+ "createdAt": "2026-10-06T06:01:40.000Z",
1800
+ "updatedAt": "2026-10-06T06:01:40.000Z",
1801
+ "stockLocationIds": [],
1802
+ "minStockByLocation": {},
1803
+ "purchasePriceMicros": 1150000
1804
+ }
1805
+ }
1806
+ }
1807
+ },
1808
+ {
1809
+ "channel": "api",
1810
+ "name": "update_article",
1811
+ "endpoint": "updateArticle",
1812
+ "path": "/v3/updateArticle",
1813
+ "params": {
1814
+ "idempotencyKey": "shop-update-1001-1",
1815
+ "articleId": "auto29",
1816
+ "unitPriceCents": 70,
1817
+ "description": null,
1818
+ "metadata": {
1819
+ "seoSlug": "kaisersemmel"
1820
+ }
1821
+ },
1822
+ "httpStatus": 200,
1823
+ "headers": {
1824
+ "Kasseneck-Api-Version": "v3",
1825
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1826
+ },
1827
+ "response": {
1828
+ "status": "success",
1829
+ "message": "",
1830
+ "data": {
1831
+ "article": {
1832
+ "id": "auto29",
1833
+ "name": "Kaisersemmel",
1834
+ "description": null,
1835
+ "unitPriceCents": 70,
1836
+ "vatRate": 10,
1837
+ "unit": "Stk",
1838
+ "number": null,
1839
+ "ean": null,
1840
+ "internalCode": "1",
1841
+ "groupId": null,
1842
+ "revenueGroupId": null,
1843
+ "stockTracked": true,
1844
+ "stockKind": "quantity",
1845
+ "minStock": null,
1846
+ "active": true,
1847
+ "externalIds": {
1848
+ "shop": "1001"
1849
+ },
1850
+ "metadata": {
1851
+ "seoSlug": "kaisersemmel"
1852
+ },
1853
+ "createdAt": "2026-10-06T06:01:32.000Z",
1854
+ "updatedAt": "2026-10-06T06:01:41.000Z",
1855
+ "stockLocationIds": [
1856
+ "haupt"
1857
+ ],
1858
+ "minStockByLocation": {
1859
+ "haupt": 20000
1860
+ }
1861
+ }
1862
+ }
1863
+ }
1864
+ },
1865
+ {
1866
+ "channel": "api",
1867
+ "name": "update_article_min_stock_by_location",
1868
+ "endpoint": "updateArticle",
1869
+ "path": "/v3/updateArticle",
1870
+ "params": {
1871
+ "idempotencyKey": "shop-update-1001-2",
1872
+ "articleId": "auto29",
1873
+ "minStockByLocation": {
1874
+ "haupt": null,
1875
+ "lieferwagen": 10000
1876
+ }
1877
+ },
1878
+ "httpStatus": 200,
1879
+ "headers": {
1880
+ "Kasseneck-Api-Version": "v3",
1881
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1882
+ },
1883
+ "response": {
1884
+ "status": "success",
1885
+ "message": "",
1886
+ "data": {
1887
+ "article": {
1888
+ "id": "auto29",
1889
+ "name": "Kaisersemmel",
1890
+ "description": null,
1891
+ "unitPriceCents": 70,
1892
+ "vatRate": 10,
1893
+ "unit": "Stk",
1894
+ "number": null,
1895
+ "ean": null,
1896
+ "internalCode": "1",
1897
+ "groupId": null,
1898
+ "revenueGroupId": null,
1899
+ "stockTracked": true,
1900
+ "stockKind": "quantity",
1901
+ "minStock": null,
1902
+ "active": true,
1903
+ "externalIds": {
1904
+ "shop": "1001"
1905
+ },
1906
+ "metadata": {
1907
+ "seoSlug": "kaisersemmel"
1908
+ },
1909
+ "createdAt": "2026-10-06T06:01:32.000Z",
1910
+ "updatedAt": "2026-10-06T06:01:42.000Z",
1911
+ "stockLocationIds": [
1912
+ "haupt"
1913
+ ],
1914
+ "minStockByLocation": {
1915
+ "lieferwagen": 10000
1916
+ }
1917
+ }
1918
+ }
1919
+ }
1920
+ },
1921
+ {
1922
+ "channel": "api",
1923
+ "name": "error_update_article_stock_kind_locked",
1924
+ "endpoint": "updateArticle",
1925
+ "path": "/v3/updateArticle",
1926
+ "params": {
1927
+ "idempotencyKey": "shop-update-rb-1",
1928
+ "articleId": "roggenbrot",
1929
+ "stockKind": "serial"
1930
+ },
1931
+ "httpStatus": 200,
1932
+ "headers": {
1933
+ "Kasseneck-Api-Version": "v3",
1934
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1935
+ },
1936
+ "response": {
1937
+ "status": "error",
1938
+ "message": "Die Bestandsart ist nach der ersten Lagerbewegung fest.",
1939
+ "data": {
1940
+ "code": "stock_kind_locked"
1941
+ },
1942
+ "code": "stock_kind_locked"
1943
+ }
1944
+ },
1945
+ {
1946
+ "channel": "api",
1947
+ "name": "error_update_article_not_found",
1948
+ "endpoint": "updateArticle",
1949
+ "path": "/v3/updateArticle",
1950
+ "params": {
1951
+ "idempotencyKey": "shop-update-x-1",
1952
+ "articleId": "gibt_es_nicht",
1953
+ "name": "x"
1954
+ },
1955
+ "httpStatus": 200,
1956
+ "headers": {
1957
+ "Kasseneck-Api-Version": "v3",
1958
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1959
+ },
1960
+ "response": {
1961
+ "status": "error",
1962
+ "message": "Artikel nicht gefunden.",
1963
+ "data": {
1964
+ "code": "article_not_found"
1965
+ },
1966
+ "code": "article_not_found"
1967
+ }
1968
+ },
1969
+ {
1970
+ "channel": "api",
1971
+ "name": "deactivate_article",
1972
+ "endpoint": "deactivateArticle",
1973
+ "path": "/v3/deactivateArticle",
1974
+ "params": {
1975
+ "idempotencyKey": "shop-deactivate-1001",
1976
+ "articleId": "auto29"
1977
+ },
1978
+ "httpStatus": 200,
1979
+ "headers": {
1980
+ "Kasseneck-Api-Version": "v3",
1981
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
1982
+ },
1983
+ "response": {
1984
+ "status": "success",
1985
+ "message": "",
1986
+ "data": {
1987
+ "article": {
1988
+ "id": "auto29",
1989
+ "name": "Kaisersemmel",
1990
+ "description": null,
1991
+ "unitPriceCents": 70,
1992
+ "vatRate": 10,
1993
+ "unit": "Stk",
1994
+ "number": null,
1995
+ "ean": null,
1996
+ "internalCode": "1",
1997
+ "groupId": null,
1998
+ "revenueGroupId": null,
1999
+ "stockTracked": true,
2000
+ "stockKind": "quantity",
2001
+ "minStock": null,
2002
+ "active": false,
2003
+ "externalIds": {
2004
+ "shop": "1001"
2005
+ },
2006
+ "metadata": {
2007
+ "seoSlug": "kaisersemmel"
2008
+ },
2009
+ "createdAt": "2026-10-06T06:01:32.000Z",
2010
+ "updatedAt": "2026-10-06T06:01:45.000Z",
2011
+ "stockLocationIds": [
2012
+ "haupt"
2013
+ ],
2014
+ "minStockByLocation": {
2015
+ "lieferwagen": 10000
2016
+ }
2017
+ }
2018
+ }
2019
+ }
2020
+ },
2021
+ {
2022
+ "channel": "api",
2023
+ "name": "error_update_article_inactive",
2024
+ "endpoint": "updateArticle",
2025
+ "path": "/v3/updateArticle",
2026
+ "params": {
2027
+ "idempotencyKey": "shop-update-1001-3",
2028
+ "articleId": "auto29",
2029
+ "name": "Kaisersemmel neu"
2030
+ },
2031
+ "httpStatus": 200,
2032
+ "headers": {
2033
+ "Kasseneck-Api-Version": "v3",
2034
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2035
+ },
2036
+ "response": {
2037
+ "status": "error",
2038
+ "message": "Der Artikel ist stillgelegt und lässt sich nicht mehr ändern.",
2039
+ "data": {
2040
+ "code": "article_inactive"
2041
+ },
2042
+ "code": "article_inactive"
2043
+ }
2044
+ },
2045
+ {
2046
+ "channel": "api",
2047
+ "name": "receive_goods_dry_run",
2048
+ "endpoint": "receiveGoods",
2049
+ "path": "/v3/receiveGoods",
2050
+ "params": {
2051
+ "items": [
2052
+ {
2053
+ "articleId": "roggenbrot",
2054
+ "quantity": 20000,
2055
+ "totalCents": 2400,
2056
+ "expiresOn": "2026-10-12",
2057
+ "batch": "C-41"
2058
+ },
2059
+ {
2060
+ "articleId": "kipferl",
2061
+ "quantity": 60000,
2062
+ "unitPriceMicros": 380000
2063
+ }
2064
+ ],
2065
+ "landedCosts": [
2066
+ {
2067
+ "type": "freight",
2068
+ "amountCents": 450
2069
+ },
2070
+ {
2071
+ "type": "cash_discount",
2072
+ "amountCents": 50
2073
+ }
2074
+ ],
2075
+ "allocation": "value",
2076
+ "supplier": {
2077
+ "name": "Mühle Hollerer",
2078
+ "address": "Mühlgasse 4, 5020 Salzburg"
2079
+ },
2080
+ "reference": "LS-2026-118",
2081
+ "note": "Frühlieferung",
2082
+ "dryRun": true
2083
+ },
2084
+ "httpStatus": 200,
2085
+ "headers": {
2086
+ "Kasseneck-Api-Version": "v3",
2087
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2088
+ },
2089
+ "response": {
2090
+ "status": "success",
2091
+ "message": "",
2092
+ "data": {
2093
+ "preview": [
2094
+ {
2095
+ "articleId": "roggenbrot",
2096
+ "quantity": 20000,
2097
+ "expiresOn": "2026-10-12",
2098
+ "batch": "C-41",
2099
+ "serialNumbers": [],
2100
+ "priceFromArticle": false
2101
+ },
2102
+ {
2103
+ "articleId": "kipferl",
2104
+ "quantity": 60000,
2105
+ "expiresOn": null,
2106
+ "batch": null,
2107
+ "serialNumbers": [],
2108
+ "priceFromArticle": false
2109
+ }
2110
+ ]
2111
+ }
2112
+ }
2113
+ },
2114
+ {
2115
+ "channel": "api",
2116
+ "name": "receive_goods_dry_run_with_costs",
2117
+ "endpoint": "receiveGoods",
2118
+ "path": "/v3/receiveGoods",
2119
+ "params": {
2120
+ "items": [
2121
+ {
2122
+ "articleId": "roggenbrot",
2123
+ "quantity": 20000,
2124
+ "totalCents": 2400,
2125
+ "expiresOn": "2026-10-12",
2126
+ "batch": "C-41"
2127
+ },
2128
+ {
2129
+ "articleId": "kipferl",
2130
+ "quantity": 60000,
2131
+ "unitPriceMicros": 380000
2132
+ }
2133
+ ],
2134
+ "landedCosts": [
2135
+ {
2136
+ "type": "freight",
2137
+ "amountCents": 450
2138
+ },
2139
+ {
2140
+ "type": "cash_discount",
2141
+ "amountCents": 50
2142
+ }
2143
+ ],
2144
+ "allocation": "value",
2145
+ "supplier": {
2146
+ "name": "Mühle Hollerer",
2147
+ "address": "Mühlgasse 4, 5020 Salzburg"
2148
+ },
2149
+ "reference": "LS-2026-118",
2150
+ "note": "Frühlieferung",
2151
+ "dryRun": true
2152
+ },
2153
+ "httpStatus": 200,
2154
+ "headers": {
2155
+ "Kasseneck-Api-Version": "v3",
2156
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2157
+ },
2158
+ "response": {
2159
+ "status": "success",
2160
+ "message": "",
2161
+ "data": {
2162
+ "preview": [
2163
+ {
2164
+ "articleId": "roggenbrot",
2165
+ "quantity": 20000,
2166
+ "expiresOn": "2026-10-12",
2167
+ "batch": "C-41",
2168
+ "serialNumbers": [],
2169
+ "priceFromArticle": false,
2170
+ "baseCents": 2400,
2171
+ "landedCostCents": 205,
2172
+ "valueCents": 2605,
2173
+ "unitCostMicros": 1302500
2174
+ },
2175
+ {
2176
+ "articleId": "kipferl",
2177
+ "quantity": 60000,
2178
+ "expiresOn": null,
2179
+ "batch": null,
2180
+ "serialNumbers": [],
2181
+ "priceFromArticle": false,
2182
+ "baseCents": 2280,
2183
+ "landedCostCents": 195,
2184
+ "valueCents": 2475,
2185
+ "unitCostMicros": 412500
2186
+ }
2187
+ ]
2188
+ }
2189
+ }
2190
+ },
2191
+ {
2192
+ "channel": "api",
2193
+ "name": "receive_goods",
2194
+ "endpoint": "receiveGoods",
2195
+ "path": "/v3/receiveGoods",
2196
+ "params": {
2197
+ "idempotencyKey": "shop-we-118",
2198
+ "items": [
2199
+ {
2200
+ "articleId": "roggenbrot",
2201
+ "quantity": 20000,
2202
+ "totalCents": 2400,
2203
+ "expiresOn": "2026-10-12",
2204
+ "batch": "C-41"
2205
+ },
2206
+ {
2207
+ "articleId": "kipferl",
2208
+ "quantity": 60000,
2209
+ "unitPriceMicros": 380000
2210
+ }
2211
+ ],
2212
+ "landedCosts": [
2213
+ {
2214
+ "type": "freight",
2215
+ "amountCents": 450
2216
+ },
2217
+ {
2218
+ "type": "cash_discount",
2219
+ "amountCents": 50
2220
+ }
2221
+ ],
2222
+ "allocation": "value",
2223
+ "supplier": {
2224
+ "name": "Mühle Hollerer",
2225
+ "address": "Mühlgasse 4, 5020 Salzburg"
2226
+ },
2227
+ "reference": "LS-2026-118",
2228
+ "note": "Frühlieferung"
2229
+ },
2230
+ "httpStatus": 200,
2231
+ "headers": {
2232
+ "Kasseneck-Api-Version": "v3",
2233
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2234
+ },
2235
+ "response": {
2236
+ "status": "success",
2237
+ "message": "",
2238
+ "data": {
2239
+ "operationId": "auto34",
2240
+ "movementIds": [
2241
+ "auto34_0",
2242
+ "auto34_1"
2243
+ ],
2244
+ "lotIds": [
2245
+ "auto34_L0",
2246
+ "auto34_L1"
2247
+ ],
2248
+ "warnings": []
2249
+ }
2250
+ }
2251
+ },
2252
+ {
2253
+ "channel": "api",
2254
+ "name": "receive_goods_replayed",
2255
+ "endpoint": "receiveGoods",
2256
+ "path": "/v3/receiveGoods",
2257
+ "params": {
2258
+ "idempotencyKey": "shop-we-118",
2259
+ "items": [
2260
+ {
2261
+ "articleId": "roggenbrot",
2262
+ "quantity": 20000,
2263
+ "totalCents": 2400,
2264
+ "expiresOn": "2026-10-12",
2265
+ "batch": "C-41"
2266
+ },
2267
+ {
2268
+ "articleId": "kipferl",
2269
+ "quantity": 60000,
2270
+ "unitPriceMicros": 380000
2271
+ }
2272
+ ],
2273
+ "landedCosts": [
2274
+ {
2275
+ "type": "freight",
2276
+ "amountCents": 450
2277
+ },
2278
+ {
2279
+ "type": "cash_discount",
2280
+ "amountCents": 50
2281
+ }
2282
+ ],
2283
+ "allocation": "value",
2284
+ "supplier": {
2285
+ "name": "Mühle Hollerer",
2286
+ "address": "Mühlgasse 4, 5020 Salzburg"
2287
+ },
2288
+ "reference": "LS-2026-118",
2289
+ "note": "Frühlieferung"
2290
+ },
2291
+ "httpStatus": 200,
2292
+ "headers": {
2293
+ "Kasseneck-Api-Version": "v3",
2294
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2295
+ },
2296
+ "response": {
2297
+ "status": "success",
2298
+ "message": "",
2299
+ "data": {
2300
+ "operationId": "auto34",
2301
+ "movementIds": [
2302
+ "auto34_0",
2303
+ "auto34_1"
2304
+ ],
2305
+ "lotIds": [
2306
+ "auto34_L0",
2307
+ "auto34_L1"
2308
+ ],
2309
+ "warnings": []
2310
+ }
2311
+ }
2312
+ },
2313
+ {
2314
+ "channel": "api",
2315
+ "name": "error_receive_goods_idempotency_conflict",
2316
+ "endpoint": "receiveGoods",
2317
+ "path": "/v3/receiveGoods",
2318
+ "params": {
2319
+ "idempotencyKey": "shop-we-118",
2320
+ "items": [
2321
+ {
2322
+ "articleId": "roggenbrot",
2323
+ "quantity": 20000,
2324
+ "totalCents": 2400,
2325
+ "expiresOn": "2026-10-12",
2326
+ "batch": "C-41"
2327
+ },
2328
+ {
2329
+ "articleId": "kipferl",
2330
+ "quantity": 60000,
2331
+ "unitPriceMicros": 380000
2332
+ }
2333
+ ],
2334
+ "landedCosts": [
2335
+ {
2336
+ "type": "freight",
2337
+ "amountCents": 450
2338
+ },
2339
+ {
2340
+ "type": "cash_discount",
2341
+ "amountCents": 50
2342
+ }
2343
+ ],
2344
+ "allocation": "value",
2345
+ "supplier": {
2346
+ "name": "Mühle Hollerer",
2347
+ "address": "Mühlgasse 4, 5020 Salzburg"
2348
+ },
2349
+ "reference": "LS-2026-119",
2350
+ "note": "Frühlieferung"
2351
+ },
2352
+ "httpStatus": 200,
2353
+ "headers": {
2354
+ "Kasseneck-Api-Version": "v3",
2355
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2356
+ },
2357
+ "response": {
2358
+ "status": "error",
2359
+ "message": "Derselbe idempotencyKey wurde mit anderem Inhalt verwendet.",
2360
+ "data": {
2361
+ "code": "idempotency_conflict"
2362
+ },
2363
+ "code": "idempotency_conflict"
2364
+ }
2365
+ },
2366
+ {
2367
+ "channel": "api",
2368
+ "name": "error_receive_goods_validation",
2369
+ "endpoint": "receiveGoods",
2370
+ "path": "/v3/receiveGoods",
2371
+ "params": {
2372
+ "idempotencyKey": "shop-we-120",
2373
+ "items": [
2374
+ {
2375
+ "articleId": "roggenbrot",
2376
+ "quantity": 1.5
2377
+ }
2378
+ ]
2379
+ },
2380
+ "httpStatus": 200,
2381
+ "headers": {
2382
+ "Kasseneck-Api-Version": "v3",
2383
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2384
+ },
2385
+ "response": {
2386
+ "status": "error",
2387
+ "message": "Bitte Eingaben prüfen.",
2388
+ "data": {
2389
+ "code": "validation",
2390
+ "errors": [
2391
+ {
2392
+ "field": "items[0].quantity",
2393
+ "message": "Ganze Zahl erwartet."
2394
+ }
2395
+ ]
2396
+ },
2397
+ "code": "validation"
2398
+ }
2399
+ },
2400
+ {
2401
+ "channel": "api",
2402
+ "name": "transfer_stock",
2403
+ "endpoint": "transferStock",
2404
+ "path": "/v3/transferStock",
2405
+ "params": {
2406
+ "idempotencyKey": "shop-um-1",
2407
+ "fromLocationId": "haupt",
2408
+ "toLocationId": "lieferwagen",
2409
+ "items": [
2410
+ {
2411
+ "articleId": "kipferl",
2412
+ "quantity": 24000
2413
+ }
2414
+ ],
2415
+ "note": "Tour Nord"
2416
+ },
2417
+ "httpStatus": 200,
2418
+ "headers": {
2419
+ "Kasseneck-Api-Version": "v3",
2420
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2421
+ },
2422
+ "response": {
2423
+ "status": "success",
2424
+ "message": "",
2425
+ "data": {
2426
+ "operationId": "auto35",
2427
+ "movementIds": [
2428
+ "auto35_0",
2429
+ "auto35_1"
2430
+ ],
2431
+ "lotIds": [
2432
+ "auto35_L0"
2433
+ ],
2434
+ "warnings": []
2435
+ }
2436
+ }
2437
+ },
2438
+ {
2439
+ "channel": "api",
2440
+ "name": "error_transfer_stock_exceeds_stock",
2441
+ "endpoint": "transferStock",
2442
+ "path": "/v3/transferStock",
2443
+ "params": {
2444
+ "idempotencyKey": "shop-um-2",
2445
+ "fromLocationId": "lieferwagen",
2446
+ "toLocationId": "haupt",
2447
+ "items": [
2448
+ {
2449
+ "articleId": "kipferl",
2450
+ "quantity": 30000
2451
+ }
2452
+ ]
2453
+ },
2454
+ "httpStatus": 200,
2455
+ "headers": {
2456
+ "Kasseneck-Api-Version": "v3",
2457
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2458
+ },
2459
+ "response": {
2460
+ "status": "error",
2461
+ "message": "Mehr als am Standort vorhanden.",
2462
+ "data": {
2463
+ "code": "exceeds_stock"
2464
+ },
2465
+ "code": "exceeds_stock"
2466
+ }
2467
+ },
2468
+ {
2469
+ "channel": "api",
2470
+ "name": "record_stock_loss",
2471
+ "endpoint": "recordStockLoss",
2472
+ "path": "/v3/recordStockLoss",
2473
+ "params": {
2474
+ "idempotencyKey": "shop-ab-1",
2475
+ "reason": "breakage",
2476
+ "items": [
2477
+ {
2478
+ "articleId": "roggenbrot",
2479
+ "quantity": 20000
2480
+ }
2481
+ ]
2482
+ },
2483
+ "httpStatus": 200,
2484
+ "headers": {
2485
+ "Kasseneck-Api-Version": "v3",
2486
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2487
+ },
2488
+ "response": {
2489
+ "status": "success",
2490
+ "message": "",
2491
+ "data": {
2492
+ "operationId": "auto37",
2493
+ "movementIds": [
2494
+ "auto37_0"
2495
+ ],
2496
+ "lotIds": [],
2497
+ "warnings": [
2498
+ {
2499
+ "code": "below_minimum",
2500
+ "articleId": "roggenbrot",
2501
+ "locationId": "haupt",
2502
+ "message": "Roggenbrot 1 kg: unter dem Mindestbestand."
2503
+ }
2504
+ ]
2505
+ }
2506
+ }
2507
+ },
2508
+ {
2509
+ "channel": "api",
2510
+ "name": "record_stock_loss_withdrawal",
2511
+ "endpoint": "recordStockLoss",
2512
+ "path": "/v3/recordStockLoss",
2513
+ "params": {
2514
+ "idempotencyKey": "shop-ab-2",
2515
+ "reason": "withdrawal",
2516
+ "withdrawalType": "staff",
2517
+ "items": [
2518
+ {
2519
+ "articleId": "kipferl",
2520
+ "quantity": 2000
2521
+ }
2522
+ ]
2523
+ },
2524
+ "httpStatus": 200,
2525
+ "headers": {
2526
+ "Kasseneck-Api-Version": "v3",
2527
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2528
+ },
2529
+ "response": {
2530
+ "status": "success",
2531
+ "message": "",
2532
+ "data": {
2533
+ "operationId": "auto38",
2534
+ "movementIds": [
2535
+ "auto38_0"
2536
+ ],
2537
+ "lotIds": [],
2538
+ "warnings": []
2539
+ }
2540
+ }
2541
+ },
2542
+ {
2543
+ "channel": "api",
2544
+ "name": "error_record_stock_loss_invalid_reason",
2545
+ "endpoint": "recordStockLoss",
2546
+ "path": "/v3/recordStockLoss",
2547
+ "params": {
2548
+ "idempotencyKey": "shop-ab-3",
2549
+ "reason": "lost",
2550
+ "items": [
2551
+ {
2552
+ "articleId": "kipferl",
2553
+ "quantity": 1000
2554
+ }
2555
+ ]
2556
+ },
2557
+ "httpStatus": 200,
2558
+ "headers": {
2559
+ "Kasseneck-Api-Version": "v3",
2560
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2561
+ },
2562
+ "response": {
2563
+ "status": "error",
2564
+ "message": "Unbekannter Abgangsgrund.",
2565
+ "data": {
2566
+ "code": "invalid_reason"
2567
+ },
2568
+ "code": "invalid_reason"
2569
+ }
2570
+ },
2571
+ {
2572
+ "channel": "api",
2573
+ "name": "error_record_stock_loss_withdrawal_type_required",
2574
+ "endpoint": "recordStockLoss",
2575
+ "path": "/v3/recordStockLoss",
2576
+ "params": {
2577
+ "idempotencyKey": "shop-ab-4",
2578
+ "reason": "withdrawal",
2579
+ "items": [
2580
+ {
2581
+ "articleId": "kipferl",
2582
+ "quantity": 1000
2583
+ }
2584
+ ]
2585
+ },
2586
+ "httpStatus": 200,
2587
+ "headers": {
2588
+ "Kasseneck-Api-Version": "v3",
2589
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2590
+ },
2591
+ "response": {
2592
+ "status": "error",
2593
+ "message": "Bei einer Entnahme ist die Art Pflicht (private, staff, gift, sample).",
2594
+ "data": {
2595
+ "code": "withdrawal_type_required"
2596
+ },
2597
+ "code": "withdrawal_type_required"
2598
+ }
2599
+ },
2600
+ {
2601
+ "channel": "api",
2602
+ "name": "error_record_stock_loss_exceeds_stock",
2603
+ "endpoint": "recordStockLoss",
2604
+ "path": "/v3/recordStockLoss",
2605
+ "params": {
2606
+ "idempotencyKey": "shop-ab-5",
2607
+ "reason": "theft",
2608
+ "items": [
2609
+ {
2610
+ "articleId": "roggenbrot",
2611
+ "quantity": 6000
2612
+ }
2613
+ ]
2614
+ },
2615
+ "httpStatus": 200,
2616
+ "headers": {
2617
+ "Kasseneck-Api-Version": "v3",
2618
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2619
+ },
2620
+ "response": {
2621
+ "status": "error",
2622
+ "message": "Mehr als am Standort vorhanden.",
2623
+ "data": {
2624
+ "code": "exceeds_stock"
2625
+ },
2626
+ "code": "exceeds_stock"
2627
+ }
2628
+ },
2629
+ {
2630
+ "channel": "api",
2631
+ "name": "change_stock_condition",
2632
+ "endpoint": "changeStockCondition",
2633
+ "path": "/v3/changeStockCondition",
2634
+ "params": {
2635
+ "idempotencyKey": "shop-zu-1",
2636
+ "from": "sellable",
2637
+ "to": "defective",
2638
+ "items": [
2639
+ {
2640
+ "articleId": "kipferl",
2641
+ "quantity": 3000
2642
+ }
2643
+ ]
2644
+ },
2645
+ "httpStatus": 200,
2646
+ "headers": {
2647
+ "Kasseneck-Api-Version": "v3",
2648
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2649
+ },
2650
+ "response": {
2651
+ "status": "success",
2652
+ "message": "",
2653
+ "data": {
2654
+ "operationId": "auto40",
2655
+ "movementIds": [
2656
+ "auto40_0",
2657
+ "auto40_1"
2658
+ ],
2659
+ "lotIds": [
2660
+ "auto40_L0"
2661
+ ],
2662
+ "warnings": []
2663
+ }
2664
+ }
2665
+ },
2666
+ {
2667
+ "channel": "api",
2668
+ "name": "error_change_stock_condition_invalid_condition",
2669
+ "endpoint": "changeStockCondition",
2670
+ "path": "/v3/changeStockCondition",
2671
+ "params": {
2672
+ "idempotencyKey": "shop-zu-2",
2673
+ "from": "sellable",
2674
+ "to": "broken",
2675
+ "items": [
2676
+ {
2677
+ "articleId": "kipferl",
2678
+ "quantity": 1000
2679
+ }
2680
+ ]
2681
+ },
2682
+ "httpStatus": 200,
2683
+ "headers": {
2684
+ "Kasseneck-Api-Version": "v3",
2685
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2686
+ },
2687
+ "response": {
2688
+ "status": "error",
2689
+ "message": "Zustand muss sellable oder defective sein.",
2690
+ "data": {
2691
+ "code": "invalid_condition"
2692
+ },
2693
+ "code": "invalid_condition"
2694
+ }
2695
+ },
2696
+ {
2697
+ "channel": "api",
2698
+ "name": "reverse_stock_movement",
2699
+ "endpoint": "reverseStockMovement",
2700
+ "path": "/v3/reverseStockMovement",
2701
+ "params": {
2702
+ "idempotencyKey": "shop-gb-1",
2703
+ "operationId": "auto40",
2704
+ "reason": "Doch einwandfrei"
2705
+ },
2706
+ "httpStatus": 200,
2707
+ "headers": {
2708
+ "Kasseneck-Api-Version": "v3",
2709
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2710
+ },
2711
+ "response": {
2712
+ "status": "success",
2713
+ "message": "",
2714
+ "data": {
2715
+ "operationId": "auto41",
2716
+ "movementIds": [
2717
+ "auto41_0",
2718
+ "auto41_1"
2719
+ ],
2720
+ "lotIds": [
2721
+ "auto41_L0"
2722
+ ],
2723
+ "warnings": []
2724
+ }
2725
+ }
2726
+ },
2727
+ {
2728
+ "channel": "api",
2729
+ "name": "error_reverse_stock_movement_already_reversed",
2730
+ "endpoint": "reverseStockMovement",
2731
+ "path": "/v3/reverseStockMovement",
2732
+ "params": {
2733
+ "idempotencyKey": "shop-gb-2",
2734
+ "operationId": "auto40",
2735
+ "reason": "Nochmal"
2736
+ },
2737
+ "httpStatus": 200,
2738
+ "headers": {
2739
+ "Kasseneck-Api-Version": "v3",
2740
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2741
+ },
2742
+ "response": {
2743
+ "status": "error",
2744
+ "message": "Dieser Vorgang wurde schon gegengebucht.",
2745
+ "data": {
2746
+ "code": "already_reversed"
2747
+ },
2748
+ "code": "already_reversed"
2749
+ }
2750
+ },
2751
+ {
2752
+ "channel": "api",
2753
+ "name": "error_reverse_stock_movement_operation_not_found",
2754
+ "endpoint": "reverseStockMovement",
2755
+ "path": "/v3/reverseStockMovement",
2756
+ "params": {
2757
+ "idempotencyKey": "shop-gb-3",
2758
+ "operationId": "gibt_es_nicht",
2759
+ "reason": "Irrtum"
2760
+ },
2761
+ "httpStatus": 200,
2762
+ "headers": {
2763
+ "Kasseneck-Api-Version": "v3",
2764
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2765
+ },
2766
+ "response": {
2767
+ "status": "error",
2768
+ "message": "Vorgang nicht gefunden.",
2769
+ "data": {
2770
+ "code": "operation_not_found"
2771
+ },
2772
+ "code": "operation_not_found"
2773
+ }
2774
+ },
2775
+ {
2776
+ "channel": "api",
2777
+ "name": "list_stock_movements_from_api",
2778
+ "endpoint": "listStockMovements",
2779
+ "path": "/v3/listStockMovements",
2780
+ "params": {
2781
+ "source": "api",
2782
+ "limit": 3
2783
+ },
2784
+ "httpStatus": 200,
2785
+ "headers": {
2786
+ "Kasseneck-Api-Version": "v3",
2787
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2788
+ },
2789
+ "response": {
2790
+ "status": "success",
2791
+ "message": "",
2792
+ "data": {
2793
+ "movements": [
2794
+ {
2795
+ "id": "auto41_1",
2796
+ "articleId": "kipferl",
2797
+ "type": "condition_in",
2798
+ "locationId": "haupt",
2799
+ "condition": "sellable",
2800
+ "quantityDelta": 3000,
2801
+ "reservedDelta": 0,
2802
+ "stockAfter": {
2803
+ "sellable": 74000,
2804
+ "defective": 0,
2805
+ "reserved": null
2806
+ },
2807
+ "operationId": "auto41",
2808
+ "source": {
2809
+ "id": null,
2810
+ "position": null,
2811
+ "type": "api",
2812
+ "register": null
2813
+ },
2814
+ "viennaDay": "2026-10-06",
2815
+ "time": "2026-10-06T06:02:10.000Z",
2816
+ "lots": [
2817
+ {
2818
+ "lotId": "auto41_L0",
2819
+ "quantity": 3000,
2820
+ "expiresOn": null,
2821
+ "batch": null,
2822
+ "serialNumber": null,
2823
+ "receivedAt": "2026-10-06T06:00:03.000Z"
2824
+ }
2825
+ ]
2826
+ },
2827
+ {
2828
+ "id": "auto41_0",
2829
+ "articleId": "kipferl",
2830
+ "type": "condition_out",
2831
+ "locationId": "haupt",
2832
+ "condition": "defective",
2833
+ "quantityDelta": -3000,
2834
+ "reservedDelta": 0,
2835
+ "stockAfter": {
2836
+ "sellable": 71000,
2837
+ "defective": 0,
2838
+ "reserved": null
2839
+ },
2840
+ "operationId": "auto41",
2841
+ "source": {
2842
+ "id": null,
2843
+ "position": null,
2844
+ "type": "api",
2845
+ "register": null
2846
+ },
2847
+ "viennaDay": "2026-10-06",
2848
+ "time": "2026-10-06T06:02:10.000Z",
2849
+ "lots": [
2850
+ {
2851
+ "lotId": "auto40_L0",
2852
+ "quantity": 3000,
2853
+ "expiresOn": null,
2854
+ "batch": null,
2855
+ "serialNumber": null,
2856
+ "receivedAt": "2026-10-06T06:00:03.000Z"
2857
+ }
2858
+ ]
2859
+ },
2860
+ {
2861
+ "id": "auto40_1",
2862
+ "articleId": "kipferl",
2863
+ "type": "condition_in",
2864
+ "locationId": "haupt",
2865
+ "condition": "defective",
2866
+ "quantityDelta": 3000,
2867
+ "reservedDelta": 0,
2868
+ "stockAfter": {
2869
+ "sellable": 71000,
2870
+ "defective": 3000,
2871
+ "reserved": null
2872
+ },
2873
+ "operationId": "auto40",
2874
+ "source": {
2875
+ "id": null,
2876
+ "position": null,
2877
+ "type": "api",
2878
+ "register": null
2879
+ },
2880
+ "viennaDay": "2026-10-06",
2881
+ "time": "2026-10-06T06:02:07.000Z",
2882
+ "lots": [
2883
+ {
2884
+ "lotId": "auto40_L0",
2885
+ "quantity": 3000,
2886
+ "expiresOn": null,
2887
+ "batch": null,
2888
+ "serialNumber": null,
2889
+ "receivedAt": "2026-10-06T06:00:03.000Z"
2890
+ }
2891
+ ]
2892
+ }
2893
+ ],
2894
+ "nextCursor": "eyJ6ZWl0IjoxNzkxMjY2NTI3MDAwLCJpZCI6ImF1dG80MF8xIn0"
2895
+ }
2896
+ }
2897
+ },
2898
+ {
2899
+ "channel": "api",
2900
+ "name": "create_reservation",
2901
+ "endpoint": "createReservation",
2902
+ "path": "/v3/createReservation",
2903
+ "params": {
2904
+ "idempotencyKey": "shop-res-1001",
2905
+ "items": [
2906
+ {
2907
+ "articleId": "roggenbrot",
2908
+ "quantity": 2000
2909
+ },
2910
+ {
2911
+ "articleId": "kipferl",
2912
+ "quantity": 6000,
2913
+ "locationId": "lieferwagen"
2914
+ }
2915
+ ],
2916
+ "reference": "Bestellung 1001",
2917
+ "expiresInMinutes": 30
2918
+ },
2919
+ "httpStatus": 200,
2920
+ "headers": {
2921
+ "Kasseneck-Api-Version": "v3",
2922
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2923
+ },
2924
+ "response": {
2925
+ "status": "success",
2926
+ "message": "",
2927
+ "data": {
2928
+ "reservation": {
2929
+ "id": "auto43",
2930
+ "status": "active",
2931
+ "reference": "Bestellung 1001",
2932
+ "items": [
2933
+ {
2934
+ "articleId": "roggenbrot",
2935
+ "locationId": "haupt",
2936
+ "quantity": 2000,
2937
+ "redeemed": 0,
2938
+ "released": 0
2939
+ },
2940
+ {
2941
+ "articleId": "kipferl",
2942
+ "locationId": "lieferwagen",
2943
+ "quantity": 6000,
2944
+ "redeemed": 0,
2945
+ "released": 0
2946
+ }
2947
+ ],
2948
+ "expiresAt": "2026-10-06T06:32:17.000Z",
2949
+ "createdAt": "2026-10-06T06:02:17.000Z"
2950
+ }
2951
+ }
2952
+ }
2953
+ },
2954
+ {
2955
+ "channel": "api",
2956
+ "name": "create_reservation_replayed",
2957
+ "endpoint": "createReservation",
2958
+ "path": "/v3/createReservation",
2959
+ "params": {
2960
+ "idempotencyKey": "shop-res-1001",
2961
+ "items": [
2962
+ {
2963
+ "articleId": "roggenbrot",
2964
+ "quantity": 2000
2965
+ },
2966
+ {
2967
+ "articleId": "kipferl",
2968
+ "quantity": 6000,
2969
+ "locationId": "lieferwagen"
2970
+ }
2971
+ ],
2972
+ "reference": "Bestellung 1001",
2973
+ "expiresInMinutes": 30
2974
+ },
2975
+ "httpStatus": 200,
2976
+ "headers": {
2977
+ "Kasseneck-Api-Version": "v3",
2978
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
2979
+ },
2980
+ "response": {
2981
+ "status": "success",
2982
+ "message": "",
2983
+ "data": {
2984
+ "reservation": {
2985
+ "id": "auto43",
2986
+ "status": "active",
2987
+ "reference": "Bestellung 1001",
2988
+ "items": [
2989
+ {
2990
+ "articleId": "roggenbrot",
2991
+ "locationId": "haupt",
2992
+ "quantity": 2000,
2993
+ "redeemed": 0,
2994
+ "released": 0
2995
+ },
2996
+ {
2997
+ "articleId": "kipferl",
2998
+ "locationId": "lieferwagen",
2999
+ "quantity": 6000,
3000
+ "redeemed": 0,
3001
+ "released": 0
3002
+ }
3003
+ ],
3004
+ "expiresAt": "2026-10-06T06:32:17.000Z",
3005
+ "createdAt": "2026-10-06T06:02:17.000Z"
3006
+ }
3007
+ }
3008
+ }
3009
+ },
3010
+ {
3011
+ "channel": "api",
3012
+ "name": "error_create_reservation_insufficient_available",
3013
+ "endpoint": "createReservation",
3014
+ "path": "/v3/createReservation",
3015
+ "params": {
3016
+ "idempotencyKey": "shop-res-1002",
3017
+ "items": [
3018
+ {
3019
+ "articleId": "roggenbrot",
3020
+ "quantity": 3000
3021
+ },
3022
+ {
3023
+ "articleId": "kipferl",
3024
+ "quantity": 1000
3025
+ }
3026
+ ]
3027
+ },
3028
+ "httpStatus": 200,
3029
+ "headers": {
3030
+ "Kasseneck-Api-Version": "v3",
3031
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3032
+ },
3033
+ "response": {
3034
+ "status": "error",
3035
+ "message": "Nicht genug verfügbarer Bestand für die Reservierung.",
3036
+ "data": {
3037
+ "code": "insufficient_available",
3038
+ "details": [
3039
+ {
3040
+ "articleId": "roggenbrot",
3041
+ "locationId": "haupt",
3042
+ "requested": 3000,
3043
+ "available": 2000
3044
+ }
3045
+ ]
3046
+ },
3047
+ "code": "insufficient_available"
3048
+ }
3049
+ },
3050
+ {
3051
+ "channel": "api",
3052
+ "name": "error_create_reservation_validation",
3053
+ "endpoint": "createReservation",
3054
+ "path": "/v3/createReservation",
3055
+ "params": {
3056
+ "idempotencyKey": "shop-res-1003",
3057
+ "items": [
3058
+ {
3059
+ "articleId": "kipferl",
3060
+ "quantity": 1000
3061
+ }
3062
+ ],
3063
+ "expiresInMinutes": 2
3064
+ },
3065
+ "httpStatus": 200,
3066
+ "headers": {
3067
+ "Kasseneck-Api-Version": "v3",
3068
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3069
+ },
3070
+ "response": {
3071
+ "status": "error",
3072
+ "message": "Bitte Eingaben prüfen.",
3073
+ "data": {
3074
+ "code": "validation",
3075
+ "errors": [
3076
+ {
3077
+ "field": "expiresInMinutes",
3078
+ "message": "Ganze Minuten von 5 bis 43200."
3079
+ }
3080
+ ]
3081
+ },
3082
+ "code": "validation"
3083
+ }
3084
+ },
3085
+ {
3086
+ "channel": "api",
3087
+ "name": "get_reservation",
3088
+ "endpoint": "getReservation",
3089
+ "path": "/v3/getReservation",
3090
+ "params": {
3091
+ "reservationId": "auto43"
3092
+ },
3093
+ "httpStatus": 200,
3094
+ "headers": {
3095
+ "Kasseneck-Api-Version": "v3",
3096
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3097
+ },
3098
+ "response": {
3099
+ "status": "success",
3100
+ "message": "",
3101
+ "data": {
3102
+ "reservation": {
3103
+ "id": "auto43",
3104
+ "status": "active",
3105
+ "reference": "Bestellung 1001",
3106
+ "items": [
3107
+ {
3108
+ "articleId": "roggenbrot",
3109
+ "locationId": "haupt",
3110
+ "quantity": 2000,
3111
+ "redeemed": 0,
3112
+ "released": 0
3113
+ },
3114
+ {
3115
+ "articleId": "kipferl",
3116
+ "locationId": "lieferwagen",
3117
+ "quantity": 6000,
3118
+ "redeemed": 0,
3119
+ "released": 0
3120
+ }
3121
+ ],
3122
+ "expiresAt": "2026-10-06T06:32:17.000Z",
3123
+ "createdAt": "2026-10-06T06:02:17.000Z"
3124
+ }
3125
+ }
3126
+ }
3127
+ },
3128
+ {
3129
+ "channel": "api",
3130
+ "name": "error_get_reservation_not_found",
3131
+ "endpoint": "getReservation",
3132
+ "path": "/v3/getReservation",
3133
+ "params": {
3134
+ "reservationId": "gibt_es_nicht"
3135
+ },
3136
+ "httpStatus": 200,
3137
+ "headers": {
3138
+ "Kasseneck-Api-Version": "v3",
3139
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3140
+ },
3141
+ "response": {
3142
+ "status": "error",
3143
+ "message": "Reservierung nicht gefunden.",
3144
+ "data": {
3145
+ "code": "reservation_not_found"
3146
+ },
3147
+ "code": "reservation_not_found"
3148
+ }
3149
+ },
3150
+ {
3151
+ "channel": "api",
3152
+ "name": "extend_reservation",
3153
+ "endpoint": "extendReservation",
3154
+ "path": "/v3/extendReservation",
3155
+ "params": {
3156
+ "idempotencyKey": "shop-res-1001-verl",
3157
+ "reservationId": "auto43",
3158
+ "expiresInMinutes": 60
3159
+ },
3160
+ "httpStatus": 200,
3161
+ "headers": {
3162
+ "Kasseneck-Api-Version": "v3",
3163
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3164
+ },
3165
+ "response": {
3166
+ "status": "success",
3167
+ "message": "",
3168
+ "data": {
3169
+ "reservation": {
3170
+ "id": "auto43",
3171
+ "status": "active",
3172
+ "reference": "Bestellung 1001",
3173
+ "items": [
3174
+ {
3175
+ "articleId": "roggenbrot",
3176
+ "locationId": "haupt",
3177
+ "quantity": 2000,
3178
+ "redeemed": 0,
3179
+ "released": 0
3180
+ },
3181
+ {
3182
+ "articleId": "kipferl",
3183
+ "locationId": "lieferwagen",
3184
+ "quantity": 6000,
3185
+ "redeemed": 0,
3186
+ "released": 0
3187
+ }
3188
+ ],
3189
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3190
+ "createdAt": "2026-10-06T06:02:17.000Z"
3191
+ }
3192
+ }
3193
+ }
3194
+ },
3195
+ {
3196
+ "channel": "api",
3197
+ "name": "release_reservation_partial",
3198
+ "endpoint": "releaseReservation",
3199
+ "path": "/v3/releaseReservation",
3200
+ "params": {
3201
+ "idempotencyKey": "shop-res-1001-frei",
3202
+ "reservationId": "auto43",
3203
+ "items": [
3204
+ {
3205
+ "articleId": "kipferl",
3206
+ "quantity": 2000
3207
+ }
3208
+ ]
3209
+ },
3210
+ "httpStatus": 200,
3211
+ "headers": {
3212
+ "Kasseneck-Api-Version": "v3",
3213
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3214
+ },
3215
+ "response": {
3216
+ "status": "success",
3217
+ "message": "",
3218
+ "data": {
3219
+ "reservation": {
3220
+ "id": "auto43",
3221
+ "status": "active",
3222
+ "reference": "Bestellung 1001",
3223
+ "items": [
3224
+ {
3225
+ "articleId": "roggenbrot",
3226
+ "locationId": "haupt",
3227
+ "quantity": 2000,
3228
+ "redeemed": 0,
3229
+ "released": 0
3230
+ },
3231
+ {
3232
+ "articleId": "kipferl",
3233
+ "locationId": "lieferwagen",
3234
+ "quantity": 6000,
3235
+ "redeemed": 0,
3236
+ "released": 2000
3237
+ }
3238
+ ],
3239
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3240
+ "createdAt": "2026-10-06T06:02:17.000Z"
3241
+ }
3242
+ }
3243
+ }
3244
+ },
3245
+ {
3246
+ "channel": "api",
3247
+ "name": "create_reservation_default_duration",
3248
+ "endpoint": "createReservation",
3249
+ "path": "/v3/createReservation",
3250
+ "params": {
3251
+ "idempotencyKey": "shop-res-1004",
3252
+ "items": [
3253
+ {
3254
+ "articleId": "kipferl",
3255
+ "quantity": 3000
3256
+ }
3257
+ ],
3258
+ "reference": "Bestellung 1004"
3259
+ },
3260
+ "httpStatus": 200,
3261
+ "headers": {
3262
+ "Kasseneck-Api-Version": "v3",
3263
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3264
+ },
3265
+ "response": {
3266
+ "status": "success",
3267
+ "message": "",
3268
+ "data": {
3269
+ "reservation": {
3270
+ "id": "auto49",
3271
+ "status": "active",
3272
+ "reference": "Bestellung 1004",
3273
+ "items": [
3274
+ {
3275
+ "articleId": "kipferl",
3276
+ "locationId": "haupt",
3277
+ "quantity": 3000,
3278
+ "redeemed": 0,
3279
+ "released": 0
3280
+ }
3281
+ ],
3282
+ "expiresAt": "2026-10-13T06:02:27.000Z",
3283
+ "createdAt": "2026-10-06T06:02:27.000Z"
3284
+ }
3285
+ }
3286
+ }
3287
+ },
3288
+ {
3289
+ "channel": "api",
3290
+ "name": "release_reservation",
3291
+ "endpoint": "releaseReservation",
3292
+ "path": "/v3/releaseReservation",
3293
+ "params": {
3294
+ "idempotencyKey": "shop-res-1004-frei",
3295
+ "reservationId": "auto49"
3296
+ },
3297
+ "httpStatus": 200,
3298
+ "headers": {
3299
+ "Kasseneck-Api-Version": "v3",
3300
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3301
+ },
3302
+ "response": {
3303
+ "status": "success",
3304
+ "message": "",
3305
+ "data": {
3306
+ "reservation": {
3307
+ "id": "auto49",
3308
+ "status": "released",
3309
+ "reference": "Bestellung 1004",
3310
+ "items": [
3311
+ {
3312
+ "articleId": "kipferl",
3313
+ "locationId": "haupt",
3314
+ "quantity": 3000,
3315
+ "redeemed": 0,
3316
+ "released": 3000
3317
+ }
3318
+ ],
3319
+ "expiresAt": "2026-10-13T06:02:27.000Z",
3320
+ "createdAt": "2026-10-06T06:02:27.000Z"
3321
+ }
3322
+ }
3323
+ }
3324
+ },
3325
+ {
3326
+ "channel": "api",
3327
+ "name": "error_extend_reservation_not_active",
3328
+ "endpoint": "extendReservation",
3329
+ "path": "/v3/extendReservation",
3330
+ "params": {
3331
+ "idempotencyKey": "shop-res-1004-verl",
3332
+ "reservationId": "auto49",
3333
+ "expiresInMinutes": 30
3334
+ },
3335
+ "httpStatus": 200,
3336
+ "headers": {
3337
+ "Kasseneck-Api-Version": "v3",
3338
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3339
+ },
3340
+ "response": {
3341
+ "status": "error",
3342
+ "message": "Die Reservierung ist nicht mehr aktiv.",
3343
+ "data": {
3344
+ "code": "reservation_not_active"
3345
+ },
3346
+ "code": "reservation_not_active"
3347
+ }
3348
+ },
3349
+ {
3350
+ "channel": "api",
3351
+ "name": "list_reservations_active",
3352
+ "endpoint": "listReservations",
3353
+ "path": "/v3/listReservations",
3354
+ "params": {
3355
+ "status": "active"
3356
+ },
3357
+ "httpStatus": 200,
3358
+ "headers": {
3359
+ "Kasseneck-Api-Version": "v3",
3360
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3361
+ },
3362
+ "response": {
3363
+ "status": "success",
3364
+ "message": "",
3365
+ "data": {
3366
+ "reservations": [
3367
+ {
3368
+ "id": "auto43",
3369
+ "status": "active",
3370
+ "reference": "Bestellung 1001",
3371
+ "items": [
3372
+ {
3373
+ "articleId": "roggenbrot",
3374
+ "locationId": "haupt",
3375
+ "quantity": 2000,
3376
+ "redeemed": 0,
3377
+ "released": 0
3378
+ },
3379
+ {
3380
+ "articleId": "kipferl",
3381
+ "locationId": "lieferwagen",
3382
+ "quantity": 6000,
3383
+ "redeemed": 0,
3384
+ "released": 2000
3385
+ }
3386
+ ],
3387
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3388
+ "createdAt": "2026-10-06T06:02:17.000Z"
3389
+ }
3390
+ ],
3391
+ "nextCursor": null
3392
+ }
3393
+ }
3394
+ },
3395
+ {
3396
+ "channel": "api",
3397
+ "name": "list_reservations_by_reference",
3398
+ "endpoint": "listReservations",
3399
+ "path": "/v3/listReservations",
3400
+ "params": {
3401
+ "reference": "Bestellung 1004"
3402
+ },
3403
+ "httpStatus": 200,
3404
+ "headers": {
3405
+ "Kasseneck-Api-Version": "v3",
3406
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3407
+ },
3408
+ "response": {
3409
+ "status": "success",
3410
+ "message": "",
3411
+ "data": {
3412
+ "reservations": [
3413
+ {
3414
+ "id": "auto49",
3415
+ "status": "released",
3416
+ "reference": "Bestellung 1004",
3417
+ "items": [
3418
+ {
3419
+ "articleId": "kipferl",
3420
+ "locationId": "haupt",
3421
+ "quantity": 3000,
3422
+ "redeemed": 0,
3423
+ "released": 3000
3424
+ }
3425
+ ],
3426
+ "expiresAt": "2026-10-13T06:02:27.000Z",
3427
+ "createdAt": "2026-10-06T06:02:27.000Z"
3428
+ }
3429
+ ],
3430
+ "nextCursor": null
3431
+ }
3432
+ }
3433
+ },
3434
+ {
3435
+ "channel": "api",
3436
+ "name": "list_stock_movements_reservation",
3437
+ "endpoint": "listStockMovements",
3438
+ "path": "/v3/listStockMovements",
3439
+ "params": {
3440
+ "articleId": "kipferl",
3441
+ "type": "reservation",
3442
+ "limit": 3
3443
+ },
3444
+ "httpStatus": 200,
3445
+ "headers": {
3446
+ "Kasseneck-Api-Version": "v3",
3447
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3448
+ },
3449
+ "response": {
3450
+ "status": "success",
3451
+ "message": "",
3452
+ "data": {
3453
+ "movements": [
3454
+ {
3455
+ "id": "auto51_0",
3456
+ "articleId": "kipferl",
3457
+ "type": "reservation",
3458
+ "locationId": "haupt",
3459
+ "condition": "sellable",
3460
+ "quantityDelta": 0,
3461
+ "reservedDelta": -3000,
3462
+ "stockAfter": {
3463
+ "sellable": 74000,
3464
+ "defective": 0,
3465
+ "reserved": 0
3466
+ },
3467
+ "operationId": "auto51",
3468
+ "source": {
3469
+ "id": null,
3470
+ "position": null,
3471
+ "type": "api",
3472
+ "register": null
3473
+ },
3474
+ "viennaDay": "2026-10-06",
3475
+ "time": "2026-10-06T06:02:29.000Z",
3476
+ "lots": []
3477
+ },
3478
+ {
3479
+ "id": "auto50_0",
3480
+ "articleId": "kipferl",
3481
+ "type": "reservation",
3482
+ "locationId": "haupt",
3483
+ "condition": "sellable",
3484
+ "quantityDelta": 0,
3485
+ "reservedDelta": 3000,
3486
+ "stockAfter": {
3487
+ "sellable": 74000,
3488
+ "defective": 0,
3489
+ "reserved": 3000
3490
+ },
3491
+ "operationId": "auto50",
3492
+ "source": {
3493
+ "id": null,
3494
+ "position": null,
3495
+ "type": "api",
3496
+ "register": null
3497
+ },
3498
+ "viennaDay": "2026-10-06",
3499
+ "time": "2026-10-06T06:02:27.000Z",
3500
+ "lots": []
3501
+ },
3502
+ {
3503
+ "id": "auto47_0",
3504
+ "articleId": "kipferl",
3505
+ "type": "reservation",
3506
+ "locationId": "lieferwagen",
3507
+ "condition": "sellable",
3508
+ "quantityDelta": 0,
3509
+ "reservedDelta": -2000,
3510
+ "stockAfter": {
3511
+ "sellable": 24000,
3512
+ "defective": 0,
3513
+ "reserved": 4000
3514
+ },
3515
+ "operationId": "auto47",
3516
+ "source": {
3517
+ "id": null,
3518
+ "position": null,
3519
+ "type": "api",
3520
+ "register": null
3521
+ },
3522
+ "viennaDay": "2026-10-06",
3523
+ "time": "2026-10-06T06:02:25.000Z",
3524
+ "lots": []
3525
+ }
3526
+ ],
3527
+ "nextCursor": "eyJ6ZWl0IjoxNzkxMjY2NTQ1MDAwLCJpZCI6ImF1dG80N18wIn0"
3528
+ }
3529
+ }
3530
+ },
3531
+ {
3532
+ "channel": "api",
3533
+ "name": "get_reservation_redeemed",
3534
+ "endpoint": "getReservation",
3535
+ "path": "/v3/getReservation",
3536
+ "params": {
3537
+ "reservationId": "auto53"
3538
+ },
3539
+ "httpStatus": 200,
3540
+ "headers": {
3541
+ "Kasseneck-Api-Version": "v3",
3542
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3543
+ },
3544
+ "response": {
3545
+ "status": "success",
3546
+ "message": "",
3547
+ "data": {
3548
+ "reservation": {
3549
+ "id": "auto53",
3550
+ "status": "redeemed",
3551
+ "reference": "Bestellung 1005",
3552
+ "items": [
3553
+ {
3554
+ "articleId": "roggenbrot",
3555
+ "locationId": "haupt",
3556
+ "quantity": 1000,
3557
+ "redeemed": 1000,
3558
+ "released": 0
3559
+ }
3560
+ ],
3561
+ "expiresAt": "2026-10-13T06:02:35.000Z",
3562
+ "createdAt": "2026-10-06T06:02:35.000Z"
3563
+ }
3564
+ }
3565
+ }
3566
+ },
3567
+ {
3568
+ "channel": "api",
3569
+ "name": "get_reservation_expired",
3570
+ "endpoint": "getReservation",
3571
+ "path": "/v3/getReservation",
3572
+ "params": {
3573
+ "reservationId": "auto43"
3574
+ },
3575
+ "httpStatus": 200,
3576
+ "headers": {
3577
+ "Kasseneck-Api-Version": "v3",
3578
+ "Access-Control-Expose-Headers": "Kasseneck-Api-Version"
3579
+ },
3580
+ "response": {
3581
+ "status": "success",
3582
+ "message": "",
3583
+ "data": {
3584
+ "reservation": {
3585
+ "id": "auto43",
3586
+ "status": "expired",
3587
+ "reference": "Bestellung 1001",
3588
+ "items": [
3589
+ {
3590
+ "articleId": "roggenbrot",
3591
+ "locationId": "haupt",
3592
+ "quantity": 2000,
3593
+ "redeemed": 0,
3594
+ "released": 2000
3595
+ },
3596
+ {
3597
+ "articleId": "kipferl",
3598
+ "locationId": "lieferwagen",
3599
+ "quantity": 6000,
3600
+ "redeemed": 0,
3601
+ "released": 6000
3602
+ }
3603
+ ],
3604
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3605
+ "createdAt": "2026-10-06T06:02:17.000Z"
3606
+ }
3607
+ }
3608
+ }
3609
+ }
3610
+ ],
3611
+ "webhookEvents": [
3612
+ {
3613
+ "event": "stock.below_minimum",
3614
+ "body": {
3615
+ "id": "evt_wKLtZJFBjowUBsa875du",
3616
+ "type": "stock.below_minimum",
3617
+ "createdAt": 1791266404000,
3618
+ "accountId": "kornblum",
3619
+ "data": {
3620
+ "articleId": "roggenbrot",
3621
+ "locationId": "haupt",
3622
+ "available": 4000,
3623
+ "minStock": 5000
3624
+ }
3625
+ }
3626
+ },
3627
+ {
3628
+ "event": "stock.changed",
3629
+ "body": {
3630
+ "id": "evt_6SjOpc8E0wUJamYx4wDc",
3631
+ "type": "stock.changed",
3632
+ "createdAt": 1791266404000,
3633
+ "accountId": "kornblum",
3634
+ "data": {
3635
+ "articleId": "kipferl",
3636
+ "locationId": "haupt",
3637
+ "onHand": 40000,
3638
+ "reserved": 0,
3639
+ "available": 40000,
3640
+ "defective": 0,
3641
+ "sequence": 1,
3642
+ "updatedAt": "2026-10-06T06:00:03.000Z",
3643
+ "cause": "goods_receipt",
3644
+ "movementId": "auto1_1"
3645
+ }
3646
+ }
3647
+ },
3648
+ {
3649
+ "event": "stock.changed",
3650
+ "body": {
3651
+ "id": "evt_xF1Ox0CUvFfDWlmVM9xp",
3652
+ "type": "stock.changed",
3653
+ "createdAt": 1791266404000,
3654
+ "accountId": "kornblum",
3655
+ "data": {
3656
+ "articleId": "roggenbrot",
3657
+ "locationId": "haupt",
3658
+ "onHand": 4000,
3659
+ "reserved": 0,
3660
+ "available": 4000,
3661
+ "defective": 0,
3662
+ "sequence": 2,
3663
+ "updatedAt": "2026-10-06T06:00:04.000Z",
3664
+ "cause": "loss",
3665
+ "movementId": "auto2_0"
3666
+ }
3667
+ }
3668
+ },
3669
+ {
3670
+ "event": "article.updated",
3671
+ "body": {
3672
+ "id": "evt_y3OmCZX2aGSmO51tvMVg",
3673
+ "type": "article.updated",
3674
+ "createdAt": 1791266404000,
3675
+ "accountId": "kornblum",
3676
+ "data": {
3677
+ "id": "kipferl",
3678
+ "name": "Butterkipferl",
3679
+ "description": null,
3680
+ "unitPriceCents": 130,
3681
+ "vatRate": 10,
3682
+ "unit": "Stk",
3683
+ "number": "A-200",
3684
+ "ean": null,
3685
+ "internalCode": "KB-200",
3686
+ "groupId": "gebaeck",
3687
+ "revenueGroupId": null,
3688
+ "stockTracked": true,
3689
+ "stockKind": "quantity",
3690
+ "minStock": null,
3691
+ "active": true,
3692
+ "createdAt": "2026-10-01T04:30:00.000Z",
3693
+ "updatedAt": "2026-10-06T06:00:04.000Z",
3694
+ "stockLocationIds": [
3695
+ "haupt",
3696
+ "lieferwagen"
3697
+ ],
3698
+ "minStockByLocation": {}
3699
+ }
3700
+ }
3701
+ },
3702
+ {
3703
+ "event": "article.created",
3704
+ "body": {
3705
+ "id": "evt_OBMDnXTaeE7t8CbeZjMY",
3706
+ "type": "article.created",
3707
+ "createdAt": 1791266404000,
3708
+ "accountId": "kornblum",
3709
+ "data": {
3710
+ "id": "semmel",
3711
+ "name": "Kaisersemmel",
3712
+ "description": null,
3713
+ "unitPriceCents": 120,
3714
+ "vatRate": 10,
3715
+ "unit": "Stk",
3716
+ "number": "A-300",
3717
+ "ean": null,
3718
+ "internalCode": "KB-300",
3719
+ "groupId": "gebaeck",
3720
+ "revenueGroupId": null,
3721
+ "stockTracked": true,
3722
+ "stockKind": "quantity",
3723
+ "minStock": null,
3724
+ "active": true,
3725
+ "createdAt": "2026-10-06T06:00:04.000Z",
3726
+ "updatedAt": "2026-10-06T06:00:04.000Z",
3727
+ "stockLocationIds": [
3728
+ "haupt"
3729
+ ],
3730
+ "minStockByLocation": {}
3731
+ }
3732
+ }
3733
+ },
3734
+ {
3735
+ "event": "article.deactivated",
3736
+ "body": {
3737
+ "id": "evt_VKmC9XoEcVNwBCwlbdw7",
3738
+ "type": "article.deactivated",
3739
+ "createdAt": 1791266404000,
3740
+ "accountId": "kornblum",
3741
+ "data": {
3742
+ "id": "semmel",
3743
+ "name": "Kaisersemmel",
3744
+ "description": null,
3745
+ "unitPriceCents": 120,
3746
+ "vatRate": 10,
3747
+ "unit": "Stk",
3748
+ "number": "A-300",
3749
+ "ean": null,
3750
+ "internalCode": "KB-300",
3751
+ "groupId": "gebaeck",
3752
+ "revenueGroupId": null,
3753
+ "stockTracked": true,
3754
+ "stockKind": "quantity",
3755
+ "minStock": null,
3756
+ "active": false,
3757
+ "createdAt": "2026-10-06T06:00:04.000Z",
3758
+ "updatedAt": "2026-10-06T06:00:04.001Z",
3759
+ "stockLocationIds": [
3760
+ "haupt"
3761
+ ],
3762
+ "minStockByLocation": {}
3763
+ }
3764
+ }
3765
+ },
3766
+ {
3767
+ "event": "reservation.released",
3768
+ "body": {
3769
+ "id": "evt_Dfmu8JDwcnPAV1FQs0I1",
3770
+ "type": "reservation.released",
3771
+ "createdAt": 1791266545000,
3772
+ "accountId": "kornblum",
3773
+ "data": {
3774
+ "id": "auto43",
3775
+ "status": "active",
3776
+ "reference": "Bestellung 1001",
3777
+ "items": [
3778
+ {
3779
+ "articleId": "roggenbrot",
3780
+ "locationId": "haupt",
3781
+ "quantity": 2000,
3782
+ "redeemed": 0,
3783
+ "released": 0
3784
+ },
3785
+ {
3786
+ "articleId": "kipferl",
3787
+ "locationId": "lieferwagen",
3788
+ "quantity": 6000,
3789
+ "redeemed": 0,
3790
+ "released": 2000
3791
+ }
3792
+ ],
3793
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3794
+ "createdAt": "2026-10-06T06:02:17.000Z"
3795
+ }
3796
+ }
3797
+ },
3798
+ {
3799
+ "event": "reservation.released",
3800
+ "body": {
3801
+ "id": "evt_rUOsoTiFTFFLwqzYMk0T",
3802
+ "type": "reservation.released",
3803
+ "createdAt": 1791266549000,
3804
+ "accountId": "kornblum",
3805
+ "data": {
3806
+ "id": "auto49",
3807
+ "status": "released",
3808
+ "reference": "Bestellung 1004",
3809
+ "items": [
3810
+ {
3811
+ "articleId": "kipferl",
3812
+ "locationId": "haupt",
3813
+ "quantity": 3000,
3814
+ "redeemed": 0,
3815
+ "released": 3000
3816
+ }
3817
+ ],
3818
+ "expiresAt": "2026-10-13T06:02:27.000Z",
3819
+ "createdAt": "2026-10-06T06:02:27.000Z"
3820
+ }
3821
+ }
3822
+ },
3823
+ {
3824
+ "event": "reservation.redeemed",
3825
+ "body": {
3826
+ "id": "evt_8OrjPFWWKMAG8SzUBqCW",
3827
+ "type": "reservation.redeemed",
3828
+ "createdAt": 1791266555000,
3829
+ "accountId": "kornblum",
3830
+ "data": {
3831
+ "id": "auto53",
3832
+ "status": "redeemed",
3833
+ "reference": "Bestellung 1005",
3834
+ "items": [
3835
+ {
3836
+ "articleId": "roggenbrot",
3837
+ "locationId": "haupt",
3838
+ "quantity": 1000,
3839
+ "redeemed": 1000,
3840
+ "released": 0
3841
+ }
3842
+ ],
3843
+ "expiresAt": "2026-10-13T06:02:35.000Z",
3844
+ "createdAt": "2026-10-06T06:02:35.000Z"
3845
+ }
3846
+ }
3847
+ },
3848
+ {
3849
+ "event": "reservation.expired",
3850
+ "body": {
3851
+ "id": "evt_yURAAwBJvs0LxnT5JTcl",
3852
+ "type": "reservation.expired",
3853
+ "createdAt": 1791273757000,
3854
+ "accountId": "kornblum",
3855
+ "data": {
3856
+ "id": "auto43",
3857
+ "status": "expired",
3858
+ "reference": "Bestellung 1001",
3859
+ "items": [
3860
+ {
3861
+ "articleId": "roggenbrot",
3862
+ "locationId": "haupt",
3863
+ "quantity": 2000,
3864
+ "redeemed": 0,
3865
+ "released": 2000
3866
+ },
3867
+ {
3868
+ "articleId": "kipferl",
3869
+ "locationId": "lieferwagen",
3870
+ "quantity": 6000,
3871
+ "redeemed": 0,
3872
+ "released": 6000
3873
+ }
3874
+ ],
3875
+ "expiresAt": "2026-10-06T07:02:23.000Z",
3876
+ "createdAt": "2026-10-06T06:02:17.000Z"
3877
+ }
3878
+ }
3879
+ }
3880
+ ]
3881
+ }