@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.
- package/CHANGELOG.md +176 -0
- package/README.md +293 -1
- package/dist/cjs/client/aufrufe.d.ts +2 -2
- package/dist/cjs/client/aufrufe.js +58 -0
- package/dist/cjs/inventory/api.d.ts +61 -0
- package/dist/cjs/inventory/api.js +54 -0
- package/dist/cjs/inventory/auth.d.ts +17 -0
- package/dist/cjs/inventory/auth.js +27 -0
- package/dist/cjs/inventory/endpunkte.d.ts +91 -0
- package/dist/cjs/inventory/endpunkte.js +290 -0
- package/dist/cjs/inventory/fehler.d.ts +43 -0
- package/dist/cjs/inventory/fehler.js +66 -0
- package/dist/cjs/inventory/index.d.ts +21 -0
- package/dist/cjs/inventory/index.js +94 -0
- package/dist/cjs/inventory/lesen.d.ts +45 -0
- package/dist/cjs/inventory/lesen.js +424 -0
- package/dist/cjs/inventory/schreiben.d.ts +83 -0
- package/dist/cjs/inventory/schreiben.js +315 -0
- package/dist/cjs/inventory/typen.d.ts +679 -0
- package/dist/cjs/inventory/typen.js +14 -0
- package/dist/cjs/inventory/vertrag.d.ts +136 -0
- package/dist/cjs/inventory/vertrag.js +291 -0
- package/dist/cjs/inventory/webhook.d.ts +52 -0
- package/dist/cjs/inventory/webhook.js +116 -0
- package/dist/cjs/invoice/index.d.ts +2 -2
- package/dist/cjs/invoice/index.js +2 -1
- package/dist/cjs/invoice/typen.d.ts +46 -2
- package/dist/cjs/invoice/vertrag.d.ts +19 -5
- package/dist/cjs/invoice/vertrag.js +37 -5
- package/dist/cjs/stored/vokabular.d.ts +1 -1
- package/dist/cjs/stored/vokabular.js +5 -3
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/aufrufe.d.ts +2 -2
- package/dist/esm/client/aufrufe.js +58 -0
- package/dist/esm/inventory/api.d.ts +61 -0
- package/dist/esm/inventory/api.js +51 -0
- package/dist/esm/inventory/auth.d.ts +17 -0
- package/dist/esm/inventory/auth.js +24 -0
- package/dist/esm/inventory/endpunkte.d.ts +91 -0
- package/dist/esm/inventory/endpunkte.js +267 -0
- package/dist/esm/inventory/fehler.d.ts +43 -0
- package/dist/esm/inventory/fehler.js +57 -0
- package/dist/esm/inventory/index.d.ts +21 -0
- package/dist/esm/inventory/index.js +20 -0
- package/dist/esm/inventory/lesen.d.ts +45 -0
- package/dist/esm/inventory/lesen.js +404 -0
- package/dist/esm/inventory/schreiben.d.ts +83 -0
- package/dist/esm/inventory/schreiben.js +298 -0
- package/dist/esm/inventory/typen.d.ts +679 -0
- package/dist/esm/inventory/typen.js +13 -0
- package/dist/esm/inventory/vertrag.d.ts +136 -0
- package/dist/esm/inventory/vertrag.js +288 -0
- package/dist/esm/inventory/webhook.d.ts +52 -0
- package/dist/esm/inventory/webhook.js +107 -0
- package/dist/esm/invoice/index.d.ts +2 -2
- package/dist/esm/invoice/index.js +1 -1
- package/dist/esm/invoice/typen.d.ts +46 -2
- package/dist/esm/invoice/vertrag.d.ts +19 -5
- package/dist/esm/invoice/vertrag.js +36 -4
- package/dist/esm/stored/vokabular.d.ts +1 -1
- package/dist/esm/stored/vokabular.js +5 -3
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/invoice-api-examples/credit-error-reservation.json +26 -0
- package/fixtures/invoice-api-examples/issue-error-reservation-article.json +25 -0
- package/fixtures/invoice-api-examples/issue-error-vat-id-risk.json +26 -0
- package/fixtures/invoice-api-examples/issue-reservation.json +24 -0
- package/fixtures/invoice-api-examples/issue-vat-id-risk.json +28 -0
- package/fixtures/invoice-api.schema.json +15 -2
- package/fixtures/invoice-texts.json +1 -1
- package/fixtures/pos-texts.json +1 -1
- package/fixtures/surface.json +306 -5
- package/fixtures/v3/README.md +9 -1
- package/fixtures/v3/antworten/belege.json +2 -2
- package/fixtures/v3/antworten/belegmail.json +2 -2
- package/fixtures/v3/antworten/kasse-belege.json +2 -2
- package/fixtures/v3/antworten/kasse.json +3 -3
- package/fixtures/v3/antworten/lager.json +3881 -0
- package/fixtures/v3/antworten/rechnungen.json +267 -44
- package/fixtures/v3/antworten/storno.json +2 -2
- package/fixtures/v3/stored/belege.json +2 -2
- package/fixtures/v3/stored/kasse.json +404 -4
- package/fixtures/v3/stored/rechnungen.json +174 -18
- package/fixtures/v3/v3-vokabular.json +1007 -20
- package/fixtures/v3/zahlbetrag-faelle.json +2 -2
- package/package.json +14 -2
|
@@ -0,0 +1,679 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Die Modelle der Lager-API, so wie sie am Draht `/v3` stehen.
|
|
3
|
+
*
|
|
4
|
+
* **Ganzzahlen mit fester Skala:** Mengen in Tausendstel der Basiseinheit
|
|
5
|
+
* (`1000` = 1 Stueck, `250` = 0,250 kg), Geld in Cent, Einkaufspreise in
|
|
6
|
+
* Mikro-Euro (`1_000_000` = 1 €). Nichts davon wird geteilt oder gerundet;
|
|
7
|
+
* eine Bruchzahl in einer Antwort ist ein Antwortfehler
|
|
8
|
+
* (`KasseneckValidationError`, `scope: 'response'`), nie ein Ersatzwert.
|
|
9
|
+
*
|
|
10
|
+
* Zeitpunkte sind ISO 8601 in UTC (`2026-10-06T08:15:00.000Z`), Tage (Wiener
|
|
11
|
+
* Tag) `YYYY-MM-DD`.
|
|
12
|
+
*/
|
|
13
|
+
import type { InventoryWarningCode, InventoryWebhookEventType, LandedCostAllocation, LandedCostType, LocationType, ReservationStatus, StockChangeCause, StockCondition, StockKind, StockLossReason, StockMovementSource, StockMovementType, WebhookDeliveryStatus, WithdrawalType } from './vertrag.js';
|
|
14
|
+
/**
|
|
15
|
+
* Ein Artikel, wie `getArticle`, `listArticles`, `lookupArticleByCode` und die
|
|
16
|
+
* Ereignisse `article.*` ihn senden.
|
|
17
|
+
*
|
|
18
|
+
* Optionale Felder fehlen ganz, wenn der Server sie nicht sendet:
|
|
19
|
+
* `purchasePriceMicros` nur mit dem Recht `costs` (Konto-Schalter
|
|
20
|
+
* `lagerApi.kosten`, sonst fehlt das Feld, nicht `null`), `externalIds`,
|
|
21
|
+
* `metadata`, `variantGroupId` und `variantAttributes` nur, wenn der Artikel
|
|
22
|
+
* sie traegt.
|
|
23
|
+
*/
|
|
24
|
+
export interface Article {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string | null;
|
|
27
|
+
/** Beschreibung (bis 2000 Zeichen); `null` = keine. Seit 1.5.0. */
|
|
28
|
+
description: string | null;
|
|
29
|
+
unitPriceCents: number | null;
|
|
30
|
+
/** USt-Satz in Prozent, z. B. `20`, `10`, `4.9`. */
|
|
31
|
+
vatRate: number | null;
|
|
32
|
+
unit: string | null;
|
|
33
|
+
number: string | null;
|
|
34
|
+
ean: string | null;
|
|
35
|
+
internalCode: string | null;
|
|
36
|
+
groupId: string | null;
|
|
37
|
+
revenueGroupId: string | null;
|
|
38
|
+
stockTracked: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* `quantity` (Menge) oder `serial` (Einzelstueck); `null`, wenn der Server
|
|
41
|
+
* das Feld nicht sendet (vor Stufe 5b). Ein Wert, den diese Paketversion
|
|
42
|
+
* nicht kennt, bleibt als Text stehen. Seit 1.5.0.
|
|
43
|
+
*/
|
|
44
|
+
stockKind: StockKind | (string & {}) | null;
|
|
45
|
+
/** Standorte, an denen der Artikel gefuehrt wird; leer = nur der Standard-Standort. */
|
|
46
|
+
stockLocationIds: string[];
|
|
47
|
+
/**
|
|
48
|
+
* **Altfeld.** Mindestbestand des Artikels in Tausendstel; `null` = keiner.
|
|
49
|
+
* Er loest nichts aus: Warnungen, `belowMinimum` und `stock.below_minimum`
|
|
50
|
+
* richten sich nach [minStockByLocation].
|
|
51
|
+
*/
|
|
52
|
+
minStock: number | null;
|
|
53
|
+
/**
|
|
54
|
+
* Mindestbestand je Standort in Tausendstel (`{ haupt: 20000 }`), die
|
|
55
|
+
* Schwelle fuer `below_minimum`, gemessen am verfuegbaren Bestand
|
|
56
|
+
* (`onHand − reserved`). Leer = keiner. Seit 1.5.0.
|
|
57
|
+
*/
|
|
58
|
+
minStockByLocation: Record<string, number>;
|
|
59
|
+
active: boolean;
|
|
60
|
+
externalIds?: Record<string, string>;
|
|
61
|
+
metadata?: Record<string, string>;
|
|
62
|
+
variantGroupId?: string;
|
|
63
|
+
variantAttributes?: Record<string, string>;
|
|
64
|
+
createdAt: string | null;
|
|
65
|
+
updatedAt: string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Einkaufspreis je Basiseinheit in Mikro-Euro (Wiederbeschaffungs- vor
|
|
68
|
+
* letztem vor Standard-Einkaufspreis); `null` = keiner hinterlegt. Fehlt
|
|
69
|
+
* ganz ohne das Recht `costs`.
|
|
70
|
+
*/
|
|
71
|
+
purchasePriceMicros?: number | null;
|
|
72
|
+
}
|
|
73
|
+
export interface ArticleListQuery {
|
|
74
|
+
/**
|
|
75
|
+
* Nur Artikel, die seitdem geaendert wurden (inklusive). Die Liste ist nach
|
|
76
|
+
* `updatedAt` aufsteigend sortiert: wer sich das `updatedAt` des letzten
|
|
77
|
+
* Treffers merkt und damit wieder fragt, verliert nichts.
|
|
78
|
+
*/
|
|
79
|
+
updatedSince?: string | Date;
|
|
80
|
+
groupId?: string;
|
|
81
|
+
variantGroupId?: string;
|
|
82
|
+
active?: boolean;
|
|
83
|
+
stockTracked?: boolean;
|
|
84
|
+
/** 1–200, Vorgabe des Servers 50. */
|
|
85
|
+
limit?: number;
|
|
86
|
+
/** `nextCursor` der vorigen Seite. */
|
|
87
|
+
cursor?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface ArticlePage {
|
|
90
|
+
articles: Article[];
|
|
91
|
+
/** `null` = letzte Seite. */
|
|
92
|
+
nextCursor: string | null;
|
|
93
|
+
}
|
|
94
|
+
/** Ein Artikel per Code (`number`, `ean`, `internalCode`) oder per eigener Kennung. */
|
|
95
|
+
export type ArticleLookup = string | {
|
|
96
|
+
code: string;
|
|
97
|
+
} | {
|
|
98
|
+
externalSystem: string;
|
|
99
|
+
externalId: string;
|
|
100
|
+
};
|
|
101
|
+
export interface LocationAddress {
|
|
102
|
+
street: string | null;
|
|
103
|
+
zip: string | null;
|
|
104
|
+
city: string | null;
|
|
105
|
+
country: string | null;
|
|
106
|
+
}
|
|
107
|
+
export interface Location {
|
|
108
|
+
id: string;
|
|
109
|
+
name: string;
|
|
110
|
+
/** `null`: ein Typ, den diese Paketversion nicht kennt. */
|
|
111
|
+
type: LocationType | null;
|
|
112
|
+
address: LocationAddress | null;
|
|
113
|
+
/** Kennzeichen, nur bei `vehicle`. */
|
|
114
|
+
licensePlate: string | null;
|
|
115
|
+
/** `false` = aufgeloest. */
|
|
116
|
+
active: boolean;
|
|
117
|
+
/** `true` = Hauptstandort, den der Server ohne eigenes Dokument ergaenzt. */
|
|
118
|
+
virtual: boolean;
|
|
119
|
+
}
|
|
120
|
+
/** Bestand eines Artikels an einem Standort, Mengen in Tausendstel. */
|
|
121
|
+
export interface StockLevel {
|
|
122
|
+
articleId: string;
|
|
123
|
+
locationId: string;
|
|
124
|
+
/** Verkaufbare Menge am Standort. */
|
|
125
|
+
onHand: number;
|
|
126
|
+
/** Reserviert (Checkout im Shop). */
|
|
127
|
+
reserved: number;
|
|
128
|
+
/** `onHand - reserved`, vom Server gerechnet; darf negativ sein (die Kasse verkauft trotzdem). */
|
|
129
|
+
available: number;
|
|
130
|
+
defective: number;
|
|
131
|
+
/**
|
|
132
|
+
* Steigt bei jedem Schreiben dieses Bestands um 1. Einen gespeicherten Stand
|
|
133
|
+
* nur ueberschreiben, wenn `sequence` groesser ist: so richten doppelte oder
|
|
134
|
+
* verspaetete Ereignisse nichts an.
|
|
135
|
+
*/
|
|
136
|
+
sequence: number;
|
|
137
|
+
updatedAt: string | null;
|
|
138
|
+
}
|
|
139
|
+
/** Lagerwert eines Artikels, nur mit dem Recht `costs`. */
|
|
140
|
+
export interface StockValue {
|
|
141
|
+
articleId: string;
|
|
142
|
+
stockValueCents: number;
|
|
143
|
+
/** Durchschnittlicher Einstandspreis je Basiseinheit in Mikro-Euro; `null` bei Menge 0. */
|
|
144
|
+
averageCostMicros: number | null;
|
|
145
|
+
}
|
|
146
|
+
export interface StockResult {
|
|
147
|
+
stock: StockLevel[];
|
|
148
|
+
/** `null` ohne das Recht `costs` (der Server laesst das Feld weg), sonst die Werte. */
|
|
149
|
+
values: StockValue[] | null;
|
|
150
|
+
}
|
|
151
|
+
export interface StockListQuery {
|
|
152
|
+
locationId?: string;
|
|
153
|
+
articleId?: string;
|
|
154
|
+
/**
|
|
155
|
+
* `true`: nur Zeilen, deren verfuegbarer Bestand (`available = onHand − reserved`)
|
|
156
|
+
* unter dem Mindestbestand ihres Standorts liegt (dieselbe Regel wie
|
|
157
|
+
* `stock.below_minimum`; `minStock` des Artikels zaehlt nicht).
|
|
158
|
+
*/
|
|
159
|
+
belowMinimum?: boolean;
|
|
160
|
+
/** Nur Zeilen, die sich seitdem geaendert haben (inklusive), nach `updatedAt` aufsteigend. */
|
|
161
|
+
changedSince?: string | Date;
|
|
162
|
+
limit?: number;
|
|
163
|
+
cursor?: string;
|
|
164
|
+
}
|
|
165
|
+
export interface StockPage extends StockResult {
|
|
166
|
+
nextCursor: string | null;
|
|
167
|
+
}
|
|
168
|
+
export interface StockMovementLot {
|
|
169
|
+
lotId: string | null;
|
|
170
|
+
quantity: number;
|
|
171
|
+
expiresOn: string | null;
|
|
172
|
+
batch: string | null;
|
|
173
|
+
serialNumber: string | null;
|
|
174
|
+
receivedAt: string | null;
|
|
175
|
+
/** Nur mit dem Recht `costs`. */
|
|
176
|
+
valueCents?: number | null;
|
|
177
|
+
}
|
|
178
|
+
export interface StockMovementSourceRef {
|
|
179
|
+
type: StockMovementSource | (string & {}) | null;
|
|
180
|
+
/** Kennung des Belegs, der Rechnung o. Ae. */
|
|
181
|
+
id: string | null;
|
|
182
|
+
/** Kasse, an der verkauft wurde. */
|
|
183
|
+
register: string | null;
|
|
184
|
+
/** Position im Beleg bzw. in der Rechnung. */
|
|
185
|
+
position: number | null;
|
|
186
|
+
}
|
|
187
|
+
/** Eine Zeile des Lagerprotokolls; neueste zuerst. */
|
|
188
|
+
export interface StockMovement {
|
|
189
|
+
id: string;
|
|
190
|
+
type: StockMovementType | (string & {}) | null;
|
|
191
|
+
articleId: string | null;
|
|
192
|
+
locationId: string | null;
|
|
193
|
+
condition: StockCondition | (string & {}) | null;
|
|
194
|
+
/** Mengenaenderung in Tausendstel (Abgang negativ); bei `reservation` immer 0. */
|
|
195
|
+
quantityDelta: number;
|
|
196
|
+
/**
|
|
197
|
+
* Aenderung von `reserved` in Tausendstel: positiv beim Reservieren, negativ
|
|
198
|
+
* bei Freigabe, Ablauf und Einloesen; 0 bei allen anderen Bewegungen. Seit 1.5.0.
|
|
199
|
+
*/
|
|
200
|
+
reservedDelta: number;
|
|
201
|
+
/**
|
|
202
|
+
* Bestand am Standort nach der Bewegung. `reserved` steht nur an
|
|
203
|
+
* Reservierungsbewegungen, sonst `null` (nicht erfasst, nicht „0“).
|
|
204
|
+
*/
|
|
205
|
+
stockAfter: {
|
|
206
|
+
sellable: number;
|
|
207
|
+
defective: number;
|
|
208
|
+
reserved: number | null;
|
|
209
|
+
} | null;
|
|
210
|
+
operationId: string | null;
|
|
211
|
+
source: StockMovementSourceRef | null;
|
|
212
|
+
/** Wiener Tag `YYYY-MM-DD`. */
|
|
213
|
+
viennaDay: string | null;
|
|
214
|
+
time: string | null;
|
|
215
|
+
lots: StockMovementLot[];
|
|
216
|
+
/** Nur mit dem Recht `costs`. */
|
|
217
|
+
valueDeltaCents?: number | null;
|
|
218
|
+
/** Nur mit dem Recht `costs`. */
|
|
219
|
+
consumedValueCents?: number | null;
|
|
220
|
+
}
|
|
221
|
+
export interface StockMovementQuery {
|
|
222
|
+
/** Nur nach `articleId` **oder** `locationId` filtern, nicht beides. */
|
|
223
|
+
articleId?: string;
|
|
224
|
+
locationId?: string;
|
|
225
|
+
from?: string | Date;
|
|
226
|
+
to?: string | Date;
|
|
227
|
+
type?: StockMovementType;
|
|
228
|
+
source?: StockMovementSource;
|
|
229
|
+
limit?: number;
|
|
230
|
+
cursor?: string;
|
|
231
|
+
}
|
|
232
|
+
export interface StockMovementPage {
|
|
233
|
+
movements: StockMovement[];
|
|
234
|
+
nextCursor: string | null;
|
|
235
|
+
}
|
|
236
|
+
export interface InventoryWebhook {
|
|
237
|
+
id: string;
|
|
238
|
+
url: string;
|
|
239
|
+
events: (InventoryWebhookEventType | (string & {}))[];
|
|
240
|
+
active: boolean;
|
|
241
|
+
description: string | null;
|
|
242
|
+
createdAt: string | null;
|
|
243
|
+
/** Die letzte Zustellung; `null`, solange keine versucht wurde. */
|
|
244
|
+
lastDelivery: {
|
|
245
|
+
at: string | null;
|
|
246
|
+
status: WebhookDeliveryStatus | (string & {}) | null;
|
|
247
|
+
statusCode: number | null;
|
|
248
|
+
} | null;
|
|
249
|
+
/** Fehlversuche in Folge (wie bei Partner-Webhooks); steigt der Wert, stimmt beim Empfaenger etwas nicht. */
|
|
250
|
+
consecutiveFailures: number;
|
|
251
|
+
}
|
|
252
|
+
export interface CreateInventoryWebhookOptions {
|
|
253
|
+
/** Vollstaendige `https://`-Adresse, hoechstens 500 Zeichen. */
|
|
254
|
+
url: string;
|
|
255
|
+
/** Mindestens eines. */
|
|
256
|
+
events: (InventoryWebhookEventType | (string & {}))[];
|
|
257
|
+
/** Hoechstens 120 Zeichen. */
|
|
258
|
+
description?: string;
|
|
259
|
+
}
|
|
260
|
+
export interface InventoryWebhookPatch {
|
|
261
|
+
url?: string;
|
|
262
|
+
events?: (InventoryWebhookEventType | (string & {}))[];
|
|
263
|
+
active?: boolean;
|
|
264
|
+
/** `null` loescht die Beschreibung. */
|
|
265
|
+
description?: string | null;
|
|
266
|
+
}
|
|
267
|
+
export interface InventoryWebhookWithSecret {
|
|
268
|
+
webhook: InventoryWebhook;
|
|
269
|
+
/**
|
|
270
|
+
* Das Secret fuer [verifyInventoryWebhookSignature]. **Es kommt genau einmal**, bei
|
|
271
|
+
* `createWebhook` bzw. `rotateWebhookSecret`; danach gibt der Server es nie
|
|
272
|
+
* wieder aus. Nach einem Wechsel gilt sofort nur das neue.
|
|
273
|
+
*/
|
|
274
|
+
secret: string;
|
|
275
|
+
}
|
|
276
|
+
export interface InventoryWebhookList {
|
|
277
|
+
webhooks: InventoryWebhook[];
|
|
278
|
+
/** Die Ereignisse, die dieses Konto abonnieren kann. */
|
|
279
|
+
events: string[];
|
|
280
|
+
}
|
|
281
|
+
export interface InventoryWebhookTestDelivery {
|
|
282
|
+
/** Kennung der Zustellung (Kopfzeile `X-Kasseneck-Delivery`), wie bei Partner-Webhooks. */
|
|
283
|
+
deliveryId: string;
|
|
284
|
+
webhookId: string;
|
|
285
|
+
status: WebhookDeliveryStatus | (string & {}) | null;
|
|
286
|
+
statusCode: number | null;
|
|
287
|
+
}
|
|
288
|
+
export interface InventoryWebhookTestResult {
|
|
289
|
+
eventId: string;
|
|
290
|
+
event: string;
|
|
291
|
+
deliveries: InventoryWebhookTestDelivery[];
|
|
292
|
+
}
|
|
293
|
+
export interface InventoryWebhookDelivery {
|
|
294
|
+
/** Kennung der Zustellung (Kopfzeile `X-Kasseneck-Delivery`), wie bei Partner-Webhooks. */
|
|
295
|
+
deliveryId: string;
|
|
296
|
+
webhookId: string | null;
|
|
297
|
+
event: string | null;
|
|
298
|
+
eventId: string | null;
|
|
299
|
+
/** `dropped`: der Webhook wurde vor der Faelligkeit deaktiviert oder geloescht. */
|
|
300
|
+
status: WebhookDeliveryStatus | (string & {}) | null;
|
|
301
|
+
attempts: number;
|
|
302
|
+
statusCode: number | null;
|
|
303
|
+
/** Auszug der Antwort des Empfaengers, hoechstens 500 Zeichen. */
|
|
304
|
+
response: string | null;
|
|
305
|
+
error: string | null;
|
|
306
|
+
createdAt: string | null;
|
|
307
|
+
lastAttemptAt: string | null;
|
|
308
|
+
nextAttemptAt: string | null;
|
|
309
|
+
test: boolean;
|
|
310
|
+
}
|
|
311
|
+
/** Nutzlast von `stock.changed`: der aktuelle Stand, nicht die Aenderung. */
|
|
312
|
+
export interface StockChangedEventData extends StockLevel {
|
|
313
|
+
cause: StockChangeCause | (string & {});
|
|
314
|
+
/** Die Bewegung, aus der `cause` stammt; `null` bei `other` ohne Bewegung. */
|
|
315
|
+
movementId: string | null;
|
|
316
|
+
}
|
|
317
|
+
/** Nutzlast von `stock.below_minimum`: nur beim Unterschreiten, nicht bei jedem weiteren Sinken. */
|
|
318
|
+
export interface StockBelowMinimumEventData {
|
|
319
|
+
articleId: string;
|
|
320
|
+
locationId: string;
|
|
321
|
+
/** Verfuegbarer Bestand (`onHand − reserved`); eine Reservierung allein kann ausloesen. */
|
|
322
|
+
available: number;
|
|
323
|
+
/**
|
|
324
|
+
* Der Mindestbestand des Standorts in Tausendstel (`minStockByLocation`) –
|
|
325
|
+
* die unterschrittene Schwelle, gemessen an `available`. Der `minStock` des
|
|
326
|
+
* Artikels allein loest nie aus.
|
|
327
|
+
*/
|
|
328
|
+
minStock: number;
|
|
329
|
+
}
|
|
330
|
+
export interface InventoryWebhookEnvelope<T extends InventoryWebhookEventType, D> {
|
|
331
|
+
/** `evt_…`: darauf entdoppeln. */
|
|
332
|
+
id: string;
|
|
333
|
+
type: T;
|
|
334
|
+
/** Millisekunden seit 1970 (UTC). */
|
|
335
|
+
createdAt: number;
|
|
336
|
+
/** Das Konto, dessen Lager das Ereignis betrifft. */
|
|
337
|
+
accountId: string;
|
|
338
|
+
/**
|
|
339
|
+
* `true` nur bei einer Probe aus `sendWebhookTest` (erfundene Nutzlast).
|
|
340
|
+
* An den Anfang jedes Handlers: `if (event.test) return;`
|
|
341
|
+
*/
|
|
342
|
+
test: boolean;
|
|
343
|
+
data: D;
|
|
344
|
+
}
|
|
345
|
+
export type InventoryWebhookEvent = InventoryWebhookEnvelope<'stock.changed', StockChangedEventData> | InventoryWebhookEnvelope<'stock.below_minimum', StockBelowMinimumEventData> | InventoryWebhookEnvelope<'article.created', Article> | InventoryWebhookEnvelope<'article.updated', Article> | InventoryWebhookEnvelope<'article.deactivated', Article> | InventoryWebhookEnvelope<'reservation.expired', Reservation> | InventoryWebhookEnvelope<'reservation.released', Reservation> | InventoryWebhookEnvelope<'reservation.redeemed', Reservation>;
|
|
346
|
+
/**
|
|
347
|
+
* Die Felder eines Artikels beim Anlegen. Bei der Anlage heisst `null` „nicht
|
|
348
|
+
* angegeben“ (ausser bei `name`, der Pflicht ist).
|
|
349
|
+
*/
|
|
350
|
+
export interface ArticleInput {
|
|
351
|
+
/** 1–200 Zeichen, getrimmt gespeichert. */
|
|
352
|
+
name: string;
|
|
353
|
+
/** Bis 2000 Zeichen. */
|
|
354
|
+
description?: string | null;
|
|
355
|
+
unitPriceCents?: number | null;
|
|
356
|
+
/** USt-Satz in Prozent (`20`, `13`, `10`, `4.9`, `0`, `19`). */
|
|
357
|
+
vatRate?: number | null;
|
|
358
|
+
/** 1–20 Zeichen; ohne Angabe die Vorgabe des Kontos. */
|
|
359
|
+
unit?: string | null;
|
|
360
|
+
/** Artikelnummer, 1–64 Zeichen. */
|
|
361
|
+
number?: string | null;
|
|
362
|
+
/**
|
|
363
|
+
* GTIN/EAN mit gueltiger Pruefziffer: der Artikel wird ein Fremdartikel mit
|
|
364
|
+
* diesem Code. Ohne `ean` vergibt der Server einen eigenen Code nach den
|
|
365
|
+
* Einstellungen des Kontos (`internalCode`). Ein Code, der schon einem
|
|
366
|
+
* anderen Artikel gehoert, ergibt `code_taken`.
|
|
367
|
+
*/
|
|
368
|
+
ean?: string | null;
|
|
369
|
+
/** Artikelgruppe; unbekannt = `group_not_found`. */
|
|
370
|
+
groupId?: string | null;
|
|
371
|
+
/** Erloesgruppe; unbekannt = `revenue_group_not_found`. */
|
|
372
|
+
revenueGroupId?: string | null;
|
|
373
|
+
stockTracked?: boolean | null;
|
|
374
|
+
/** Hoechstens 50 Standorte; unbekannt = `location_not_found`. */
|
|
375
|
+
stockLocationIds?: string[] | null;
|
|
376
|
+
/** **Altfeld** ohne Wirkung auf Meldungen; Tausendstel in ganzen Einheiten (Vielfaches von 1000). */
|
|
377
|
+
minStock?: number | null;
|
|
378
|
+
/** Mindestbestand je Standort in Tausendstel, hoechstens 50 Standorte. */
|
|
379
|
+
minStockByLocation?: Record<string, number | null> | null;
|
|
380
|
+
stockKind?: StockKind | null;
|
|
381
|
+
/**
|
|
382
|
+
* Standard-Einkaufspreis je Basiseinheit in Mikro-Euro. Nur mit dem
|
|
383
|
+
* Konto-Recht `costs`, sonst `inventory_api_not_enabled` mit
|
|
384
|
+
* `errors: [{ field: 'purchasePriceMicros' }]`.
|
|
385
|
+
*/
|
|
386
|
+
purchasePriceMicros?: number | null;
|
|
387
|
+
/**
|
|
388
|
+
* Eigene Kennungen je System (`{ shop: '1001' }`): hoechstens 10 Systeme
|
|
389
|
+
* `^[a-z0-9_]{1,32}$`, Werte 1–128 Zeichen, je System und Wert eindeutig im
|
|
390
|
+
* Konto (`external_id_taken`). Damit findet `lookupArticleByCode` den Artikel.
|
|
391
|
+
*/
|
|
392
|
+
externalIds?: Record<string, string> | null;
|
|
393
|
+
/** Freie Merkmale, nie ausgewertet: hoechstens 20 Schluessel `^[a-zA-Z0-9_]{1,40}$`, Werte bis 500 Zeichen, zusammen 4 KB. */
|
|
394
|
+
metadata?: Record<string, string> | null;
|
|
395
|
+
}
|
|
396
|
+
export interface CreateArticleRequest extends ArticleInput {
|
|
397
|
+
idempotencyKey: string;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Eine Aenderung: nur die genannten Felder, mindestens eines. `null` leert ein
|
|
401
|
+
* optionales Feld (`description`, `unitPriceCents`, `vatRate`, `number`,
|
|
402
|
+
* `groupId`, `revenueGroupId`, `minStock`, `stockLocationIds`, `externalIds`,
|
|
403
|
+
* `metadata`, `minStockByLocation`, `purchasePriceMicros`). `name`, `unit`,
|
|
404
|
+
* `ean`, `stockTracked` und `stockKind` lassen sich nicht leeren.
|
|
405
|
+
*
|
|
406
|
+
* `externalIds` und `metadata` werden ganz ersetzt, `minStockByLocation` je
|
|
407
|
+
* Standort zusammengefuehrt (`{ haupt: null }` nimmt nur diesen Standort weg).
|
|
408
|
+
* Die EAN laesst sich nur bei Fremdartikeln wechseln; `stockKind` nach der
|
|
409
|
+
* ersten Bewegung nicht mehr (`stock_kind_locked`). Ein stillgelegter Artikel
|
|
410
|
+
* ergibt `article_inactive`.
|
|
411
|
+
*/
|
|
412
|
+
export interface UpdateArticleRequest {
|
|
413
|
+
idempotencyKey: string;
|
|
414
|
+
articleId: string;
|
|
415
|
+
name?: string;
|
|
416
|
+
description?: string | null;
|
|
417
|
+
unitPriceCents?: number | null;
|
|
418
|
+
vatRate?: number | null;
|
|
419
|
+
unit?: string;
|
|
420
|
+
number?: string | null;
|
|
421
|
+
ean?: string;
|
|
422
|
+
groupId?: string | null;
|
|
423
|
+
revenueGroupId?: string | null;
|
|
424
|
+
stockTracked?: boolean;
|
|
425
|
+
stockLocationIds?: string[] | null;
|
|
426
|
+
minStock?: number | null;
|
|
427
|
+
minStockByLocation?: Record<string, number | null> | null;
|
|
428
|
+
stockKind?: StockKind;
|
|
429
|
+
purchasePriceMicros?: number | null;
|
|
430
|
+
externalIds?: Record<string, string> | null;
|
|
431
|
+
metadata?: Record<string, string> | null;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Stilllegen: `active: false`; Code und eigene Kennungen werden frei. Schon
|
|
435
|
+
* stillgelegt = dieselbe Antwort, nichts geschrieben. Den Bestand behaelt der
|
|
436
|
+
* Artikel, gebucht werden darf weiter.
|
|
437
|
+
*/
|
|
438
|
+
export interface DeactivateArticleRequest {
|
|
439
|
+
idempotencyKey: string;
|
|
440
|
+
articleId: string;
|
|
441
|
+
}
|
|
442
|
+
/** Ein Hinweis einer Buchung: sie hat gewirkt, es gibt nur etwas zu wissen. */
|
|
443
|
+
export interface InventoryWarning {
|
|
444
|
+
code: InventoryWarningCode | (string & {});
|
|
445
|
+
articleId: string | null;
|
|
446
|
+
locationId: string | null;
|
|
447
|
+
/** Fuer Menschen, deutsch; nie darauf verzweigen. */
|
|
448
|
+
message: string;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Antwort jeder Buchung (`receiveGoods`, `transferStock`, `recordStockLoss`,
|
|
452
|
+
* `changeStockCondition`, `reverseStockMovement`). Werte traegt sie nie. Eine
|
|
453
|
+
* Wiederholung mit demselben `idempotencyKey` liefert genau diese Antwort
|
|
454
|
+
* noch einmal (ohne Kennzeichen, die beiden sind gleich).
|
|
455
|
+
*/
|
|
456
|
+
export interface StockOperation {
|
|
457
|
+
/** Kennung des Vorgangs; `reverseStockMovement` nimmt ihn zurueck. */
|
|
458
|
+
operationId: string;
|
|
459
|
+
movementIds: string[];
|
|
460
|
+
lotIds: string[];
|
|
461
|
+
warnings: InventoryWarning[];
|
|
462
|
+
}
|
|
463
|
+
/** Eine Position eines Wareneingangs. */
|
|
464
|
+
export interface GoodsReceiptItem {
|
|
465
|
+
articleId: string;
|
|
466
|
+
/** Tausendstel, groesser als 0. */
|
|
467
|
+
quantity: number;
|
|
468
|
+
/** Gesamtpreis der Position in Cent. Entweder dieser oder `unitPriceMicros`; ohne beide der Einkaufspreis des Artikels. */
|
|
469
|
+
totalCents?: number;
|
|
470
|
+
/** Einzelpreis je Basiseinheit in Mikro-Euro. */
|
|
471
|
+
unitPriceMicros?: number;
|
|
472
|
+
/** Nebenkosten dieser Position in Cent; gilt nur bei `allocation: 'manual'`. */
|
|
473
|
+
landedCostCents?: number;
|
|
474
|
+
/** Ablaufdatum `YYYY-MM-DD`. */
|
|
475
|
+
expiresOn?: string;
|
|
476
|
+
/** Charge, 1–64 Zeichen. */
|
|
477
|
+
batch?: string;
|
|
478
|
+
/** Seriennummern (Einzelstuecke), hoechstens 80, je 1–128 Zeichen. */
|
|
479
|
+
serialNumbers?: string[];
|
|
480
|
+
}
|
|
481
|
+
export interface LandedCost {
|
|
482
|
+
type: LandedCostType;
|
|
483
|
+
/** Betrag in Cent; `discount` und `cash_discount` mindern den Wert. */
|
|
484
|
+
amountCents: number;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Wareneingang. Preise und Nebenkosten darf jeder Schreibende senden (so
|
|
488
|
+
* bekommt der Bestand seinen Wert); zurueck kommen Werte nur mit dem Recht
|
|
489
|
+
* `costs` und nur in der Vorschau ([previewGoodsReceipt]).
|
|
490
|
+
*/
|
|
491
|
+
export interface ReceiveGoodsRequest {
|
|
492
|
+
idempotencyKey: string;
|
|
493
|
+
/** Hoechstens 80 Positionen (`too_many_positions`). */
|
|
494
|
+
items: GoodsReceiptItem[];
|
|
495
|
+
/** Ohne Angabe der Standard-Standort des Kontos. */
|
|
496
|
+
locationId?: string;
|
|
497
|
+
/** Hoechstens 20. */
|
|
498
|
+
landedCosts?: LandedCost[];
|
|
499
|
+
allocation?: LandedCostAllocation;
|
|
500
|
+
supplier?: {
|
|
501
|
+
name: string;
|
|
502
|
+
address?: string;
|
|
503
|
+
};
|
|
504
|
+
/** Lieferschein o. Ae., 1–80 Zeichen. */
|
|
505
|
+
reference?: string;
|
|
506
|
+
/** 1–500 Zeichen. */
|
|
507
|
+
note?: string;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Vorschau eines Wareneingangs (`dryRun: true`): schreibt nichts, der
|
|
511
|
+
* Schluessel ist freigestellt (wenn da, wird nur seine Form geprueft), das
|
|
512
|
+
* Schreibrecht braucht sie trotzdem. Den Standort prueft erst die Buchung.
|
|
513
|
+
*/
|
|
514
|
+
export type GoodsReceiptPreviewRequest = Omit<ReceiveGoodsRequest, 'idempotencyKey'> & {
|
|
515
|
+
idempotencyKey?: string;
|
|
516
|
+
};
|
|
517
|
+
/**
|
|
518
|
+
* Eine Zeile der Vorschau. Die vier Werte (`baseCents`, `landedCostCents`,
|
|
519
|
+
* `valueCents`, `unitCostMicros`) kommen nur mit dem Recht `costs` und fehlen
|
|
520
|
+
* sonst ganz.
|
|
521
|
+
*/
|
|
522
|
+
export interface GoodsReceiptPreviewLine {
|
|
523
|
+
articleId: string;
|
|
524
|
+
quantity: number;
|
|
525
|
+
expiresOn: string | null;
|
|
526
|
+
batch: string | null;
|
|
527
|
+
serialNumbers: string[];
|
|
528
|
+
/** `true`: der Preis kam aus dem Artikel, nicht aus der Anfrage. */
|
|
529
|
+
priceFromArticle: boolean;
|
|
530
|
+
baseCents?: number | null;
|
|
531
|
+
landedCostCents?: number | null;
|
|
532
|
+
valueCents?: number | null;
|
|
533
|
+
unitCostMicros?: number | null;
|
|
534
|
+
}
|
|
535
|
+
export interface GoodsReceiptPreview {
|
|
536
|
+
preview: GoodsReceiptPreviewLine[];
|
|
537
|
+
}
|
|
538
|
+
/** Eine Position von Umbuchung, Abgang oder Zustandswechsel. */
|
|
539
|
+
export interface StockItem {
|
|
540
|
+
articleId: string;
|
|
541
|
+
/** Tausendstel, groesser als 0. */
|
|
542
|
+
quantity: number;
|
|
543
|
+
/** Bei Einzelstuecken das Stueck. */
|
|
544
|
+
serialNumber?: string;
|
|
545
|
+
}
|
|
546
|
+
/** Umbuchung zwischen zwei Standorten. Ueberzieht nie (`exceeds_stock`). */
|
|
547
|
+
export interface TransferStockRequest {
|
|
548
|
+
idempotencyKey: string;
|
|
549
|
+
fromLocationId: string;
|
|
550
|
+
toLocationId: string;
|
|
551
|
+
items: StockItem[];
|
|
552
|
+
note?: string;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Abgang (Bruch, Schwund, Entnahme …). Ueberzieht nie (`exceeds_stock`).
|
|
556
|
+
* `reason: 'other'` braucht `note` (`note_required`), `reason: 'withdrawal'`
|
|
557
|
+
* braucht `withdrawalType` (`withdrawal_type_required`).
|
|
558
|
+
*/
|
|
559
|
+
export interface RecordStockLossRequest {
|
|
560
|
+
idempotencyKey: string;
|
|
561
|
+
reason: StockLossReason;
|
|
562
|
+
withdrawalType?: WithdrawalType;
|
|
563
|
+
/** Aus welchem Zustand; Vorgabe `sellable`. */
|
|
564
|
+
condition?: StockCondition;
|
|
565
|
+
locationId?: string;
|
|
566
|
+
items: StockItem[];
|
|
567
|
+
note?: string;
|
|
568
|
+
}
|
|
569
|
+
/** Ware zwischen verkaufbar und defekt umbuchen. Ueberzieht nie (`exceeds_stock`). */
|
|
570
|
+
export interface ChangeStockConditionRequest {
|
|
571
|
+
idempotencyKey: string;
|
|
572
|
+
from: StockCondition;
|
|
573
|
+
to: StockCondition;
|
|
574
|
+
locationId?: string;
|
|
575
|
+
items: StockItem[];
|
|
576
|
+
note?: string;
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Gegenbuchung: nimmt einen ganzen Vorgang zurueck. Verkaeufe und
|
|
580
|
+
* Reservierungen gehen so nicht (`reversal_not_supported`), ein zweites Mal
|
|
581
|
+
* auch nicht (`already_reversed`).
|
|
582
|
+
*/
|
|
583
|
+
export interface ReverseStockMovementRequest {
|
|
584
|
+
idempotencyKey: string;
|
|
585
|
+
operationId: string;
|
|
586
|
+
/** Pflicht, bis 500 Zeichen; leer = `reason_required`. */
|
|
587
|
+
reason: string;
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* Eine Position einer Reservierung, Mengen in Tausendstel. Offen ist
|
|
591
|
+
* `quantity − redeemed − released`.
|
|
592
|
+
*/
|
|
593
|
+
export interface ReservationItem {
|
|
594
|
+
articleId: string;
|
|
595
|
+
locationId: string;
|
|
596
|
+
quantity: number;
|
|
597
|
+
redeemed: number;
|
|
598
|
+
released: number;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Eine Reservierung, wie `getReservation`, jede schreibende Reservierungs-
|
|
602
|
+
* Antwort und die Ereignisse `reservation.*` sie senden.
|
|
603
|
+
*/
|
|
604
|
+
export interface Reservation {
|
|
605
|
+
id: string;
|
|
606
|
+
/** `null`: ein Stand, den diese Paketversion nicht kennt, oder keiner. */
|
|
607
|
+
status: ReservationStatus | (string & {}) | null;
|
|
608
|
+
/** Eigene Referenz (Bestellnummer), `null` = keine. */
|
|
609
|
+
reference: string | null;
|
|
610
|
+
items: ReservationItem[];
|
|
611
|
+
/** Ablauf, ISO 8601 UTC. */
|
|
612
|
+
expiresAt: string | null;
|
|
613
|
+
createdAt: string | null;
|
|
614
|
+
}
|
|
615
|
+
export interface ReservationItemInput {
|
|
616
|
+
articleId: string;
|
|
617
|
+
/** Tausendstel, groesser als 0. */
|
|
618
|
+
quantity: number;
|
|
619
|
+
/** Ohne Angabe der Standard-Standort des Kontos. */
|
|
620
|
+
locationId?: string;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Reservieren (Checkout): ganz oder gar nicht. Fehlt verfuegbarer Bestand an
|
|
624
|
+
* einer Position, entsteht nichts und der Fehler `insufficient_available`
|
|
625
|
+
* nennt die fehlenden Positionen ([inventoryShortfalls]). Nur
|
|
626
|
+
* bestandsgefuehrte Artikel. Gleiche Artikel am gleichen Standort werden
|
|
627
|
+
* zusammengezaehlt.
|
|
628
|
+
*/
|
|
629
|
+
export interface CreateReservationRequest {
|
|
630
|
+
idempotencyKey: string;
|
|
631
|
+
/** 1–50 Positionen. */
|
|
632
|
+
items: ReservationItemInput[];
|
|
633
|
+
/** 1–128 Zeichen; `listReservations({ reference })` findet sie damit. */
|
|
634
|
+
reference?: string | null;
|
|
635
|
+
/** 5 … 43 200 Minuten; ohne Angabe die Vorgabe des Kontos (7 Tage). */
|
|
636
|
+
expiresInMinutes?: number | null;
|
|
637
|
+
}
|
|
638
|
+
/** Verlaengern: neuer Ablauf = jetzt + Minuten. Nur eine aktive, noch nicht faellige Reservierung (`reservation_not_active`). */
|
|
639
|
+
export interface ExtendReservationRequest {
|
|
640
|
+
idempotencyKey: string;
|
|
641
|
+
reservationId: string;
|
|
642
|
+
/** 5 … 43 200 Minuten. */
|
|
643
|
+
expiresInMinutes: number;
|
|
644
|
+
}
|
|
645
|
+
export interface ReleaseReservationItem {
|
|
646
|
+
articleId: string;
|
|
647
|
+
locationId?: string;
|
|
648
|
+
/** Ohne Angabe der ganze offene Rest der Position. */
|
|
649
|
+
quantity?: number;
|
|
650
|
+
}
|
|
651
|
+
/** Freigeben: ohne `items` alles, sonst je Position (ganz oder teilweise). */
|
|
652
|
+
export interface ReleaseReservationRequest {
|
|
653
|
+
idempotencyKey: string;
|
|
654
|
+
reservationId: string;
|
|
655
|
+
/** Nicht leer; ganz weglassen, um alles freizugeben. */
|
|
656
|
+
items?: ReleaseReservationItem[];
|
|
657
|
+
}
|
|
658
|
+
export interface ReservationListQuery {
|
|
659
|
+
status?: ReservationStatus;
|
|
660
|
+
/** Genau diese Referenz. */
|
|
661
|
+
reference?: string;
|
|
662
|
+
/** 1–200, Vorgabe des Servers 50. */
|
|
663
|
+
limit?: number;
|
|
664
|
+
cursor?: string;
|
|
665
|
+
}
|
|
666
|
+
/** Neueste zuerst (`createdAt` absteigend). */
|
|
667
|
+
export interface ReservationPage {
|
|
668
|
+
reservations: Reservation[];
|
|
669
|
+
nextCursor: string | null;
|
|
670
|
+
}
|
|
671
|
+
/** Eine Position, fuer die beim Reservieren der verfuegbare Bestand nicht reicht (`insufficient_available`). */
|
|
672
|
+
export interface InventoryShortfall {
|
|
673
|
+
articleId: string;
|
|
674
|
+
locationId: string;
|
|
675
|
+
/** Angefragt, Tausendstel. */
|
|
676
|
+
requested: number;
|
|
677
|
+
/** Verfuegbar (`onHand − reserved`), Tausendstel; darf negativ sein. */
|
|
678
|
+
available: number;
|
|
679
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Die Modelle der Lager-API, so wie sie am Draht `/v3` stehen.
|
|
4
|
+
*
|
|
5
|
+
* **Ganzzahlen mit fester Skala:** Mengen in Tausendstel der Basiseinheit
|
|
6
|
+
* (`1000` = 1 Stueck, `250` = 0,250 kg), Geld in Cent, Einkaufspreise in
|
|
7
|
+
* Mikro-Euro (`1_000_000` = 1 €). Nichts davon wird geteilt oder gerundet;
|
|
8
|
+
* eine Bruchzahl in einer Antwort ist ein Antwortfehler
|
|
9
|
+
* (`KasseneckValidationError`, `scope: 'response'`), nie ein Ersatzwert.
|
|
10
|
+
*
|
|
11
|
+
* Zeitpunkte sind ISO 8601 in UTC (`2026-10-06T08:15:00.000Z`), Tage (Wiener
|
|
12
|
+
* Tag) `YYYY-MM-DD`.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|