InventoryClient class

Constructors

InventoryClient({required String apiKey, String? baseUrl, Client? httpClient, Duration? timeout, String? clientHeader, bool omitKasseneckHeaders = false})
apiKey ist der api_key des Kontos (kr_live_… / kr_test_…) und gehoert auf einen Server. Ein Partner-Schluessel (pk_…) oder ein Kassen-Token (cb_…) wirft schon hier.
InventoryClient.withTransport(InventoryTransport transport)
Mit einem bereits gebauten Transport (Tests, eigene Adresse).

Properties

hashCode → int
The hash code for this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

addVariant(AddVariantRequest request) → Future<Article>
Legt eine Variante in einer aktiven Gruppe an. Antwort: der Artikel wie createArticle. Gibt es die Kombination schon, kommt variant_already_exists mit articleId der bestehenden Variante; nach dem Stilllegen einer Variante ist ihre Kombination wieder frei.
cancelStocktake(CancelStocktakeRequest request) → Future<Stocktake>
Abbrechen mit Grund (aus counting oder review); der Standort ist danach frei.
changeStockCondition(ChangeStockConditionRequest request) → Future<StockOperation>
Bucht Ware zwischen sellable und defective um; ueberzieht nie (exceeds_stock).
closeStocktake(CloseStocktakeRequest request) → Future<CloseStocktakeResult>
Abschliessen (nur aus review, sonst stocktake_not_in_review; offene Nachzaehlungen ergeben stocktake_recount_open, eine noch rechnende Pruefung stocktake_review_running). Der Server bucht in Teilen weiter; die Antwort traegt meist status: 'closing'. Ein erneuter Aufruf waehrend closing stoesst den Abschluss wieder an.
createArticle(CreateArticleRequest request) → Future<Article>
Legt einen Artikel an. Mit ean ein Fremdartikel mit diesem Code (gueltige Pruefziffer, frei im Konto), sonst vergibt der Server den naechsten eigenen Code. Antwort: der Artikel wie getArticle.
createReservation(CreateReservationRequest request) → Future<Reservation>
Reserviert Ware (Checkout im Shop): ganz oder gar nicht, gemessen am verfuegbaren Bestand (onHand - reserved). Fehlt etwas, entsteht nichts: insufficient_available, die fehlenden Positionen in inventoryShortfalls. Eingeloest wird ueber eine Rechnung (InvoiceApi.issueInvoice mit IssueInvoiceItemInput.reservationId), sonst laeuft die Reservierung ab und gibt die Ware wieder frei.
createStocktake(CreateStocktakeRequest request) → Future<Stocktake>
Legt eine Inventur an. Je Standort hoechstens eine offene (stocktake_location_busy, inventoryBusyStocktakeId nennt sie); Umfang groups bzw. articles nur mit bestandsgefuehrten Artikeln (article_not_tracked). Jede Inventur beginnt in counting.
createVariantGroup(CreateVariantGroupRequest request) → Future<VariantGroup>
Legt eine Variantengruppe an: mit createMatrix: true alle Kombinationen der Werte (hoechstens 100), sonst die genannten variants (hoechstens 100), ohne beides nur die Gruppe. Jede Variante entsteht als Artikel mit den Feldern wie bei createArticle; was sie nicht nennt, fuellen die Vorgaben. Antwort: die Gruppe mit variants (Kennung und Merkmale je Variante).
createWebhook({required String url, required List<String> events, String? description}) → Future<InventoryWebhookWithSecret>
Legt einen Webhook an (hoechstens 5 je Konto, webhook_limit). url ist eine vollstaendige https://-Adresse, events mindestens eines aus inventoryWebhookEvents.
deactivateArticle(DeactivateArticleRequest request) → Future<Article>
Legt einen Artikel still (active: false); Code und eigene Kennungen werden frei.
deleteWebhook(String webhookId) → Future<({bool deleted, String webhookId})>
extendReservation(ExtendReservationRequest request) → Future<Reservation>
Verlaengert eine aktive Reservierung: neuer Ablauf = jetzt + expiresInMinutes.
getArticle(String articleId) → Future<Article>
getReservation(String reservationId) → Future<Reservation>
Eine Reservierung mit ihrem aktuellen Stand.
getStock(String articleId) → Future<StockResult>
Bestand eines Artikels je Standort.
getStocktake(String stocktakeId) → Future<Stocktake>
Eine Inventur samt progress.counted (gezaehlte Positionen).
getStocktakePdf(String stocktakeId) → Future<StocktakePdf>
Das Inventurprotokoll (PDF), erst nach dem Abschluss (stocktake_not_closed, auch fuer eine abgebrochene Inventur). Mit dem Recht costs die Fassung mit Werten, sonst die nur mit Mengen. Bis 9 MiB kommt die Datei selbst (StocktakePdfFile), darueber ein signierter Lese-Link fuer 15 Minuten (StocktakePdfLink); die geladene Datei an download.sha256 pruefen. Lesen: nach einem Zeitlimit darf der Aufruf wiederholt werden.
getVariantGroup(String variantGroupId) → Future<VariantGroup>
Eine Variantengruppe mit ihren aktiven Varianten (eingefroren, wenn stillgelegt).
iterateArticles({DateTime? updatedSince, String? groupId, String? variantGroupId, bool? active, bool? stockTracked, int? limit, String? cursor}) → Stream<Article>
Alle Artikel der Abfrage, Seite fuer Seite ueber nextCursor. cursor ist der Startpunkt; nennt der Server denselben Cursor zweimal, endet der Strom mit einem Antwortfehler statt einer Endlosschleife.
iterateReservations({String? status, String? reference, int? limit, String? cursor}) → Stream<Reservation>
Alle Reservierungen der Abfrage, Seite fuer Seite ueber nextCursor.
iterateStock({String? locationId, String? articleId, bool? belowMinimum, DateTime? changedSince, int? limit, String? cursor}) → Stream<StockLevel>
Alle Bestandszeilen der Abfrage, Seite fuer Seite. Die Werte (values) stehen je Seite in listStock; der Strom liefert nur die Zeilen.
iterateStockMovements({String? articleId, String? locationId, DateTime? from, DateTime? to, String? type, String? source, int? limit, String? cursor}) → Stream<StockMovement>
iterateStocktakeCounts({required String stocktakeId, String? articleId, int? limit, String? cursor}) → Stream<StocktakeCount>
Alle Zaehlungen der Abfrage, Seite fuer Seite.
iterateStocktakeItems({required String stocktakeId, bool? openOnly, int? limit, String? cursor}) → Stream<StocktakeItem>
Alle Positionen der Abfrage, Seite fuer Seite.
iterateStocktakes({String? status, String? locationId, DateTime? updatedSince, int? limit, String? cursor}) → Stream<Stocktake>
Alle Inventuren der Abfrage, Seite fuer Seite, in der Reihenfolge von listStocktakes.
iterateVariantGroups({bool? active, DateTime? updatedSince, int? limit, String? cursor}) → Stream<VariantGroup>
Alle Variantengruppen der Abfrage, Seite fuer Seite ueber nextCursor.
listArticles({DateTime? updatedSince, String? groupId, String? variantGroupId, bool? active, bool? stockTracked, int? limit, String? cursor}) → Future<ArticlePage>
Eine Seite Artikel, nach updatedAt aufsteigend.
listLocations() → Future<List<Location>>
Alle Standorte des Kontos, samt aufgeloesten (active: false) und dem Hauptstandort.
listReservations({String? status, String? reference, int? limit, String? cursor}) → Future<ReservationPage>
Eine Seite Reservierungen, neueste zuerst. status aus reservationStatuses, reference genau diese Referenz.
listStock({String? locationId, String? articleId, bool? belowMinimum, DateTime? changedSince, int? limit, String? cursor}) → Future<StockPage>
Eine Seite Bestandszeilen. belowMinimum: nur Zeilen, deren onHand unter dem Mindestbestand ihres Standorts liegt (dieselbe Regel wie stock.below_minimum). changedSince (inklusive), nach updatedAt aufsteigend.
listStockMovements({String? articleId, String? locationId, DateTime? from, DateTime? to, String? type, String? source, int? limit, String? cursor}) → Future<StockMovementPage>
Das Lagerprotokoll, neueste zuerst. Nur nach articleId oder locationId filtern, nicht beides (sonst validation). type aus stockMovementTypes, source aus stockMovementSources.
listStocktakeCounts({required String stocktakeId, String? articleId, int? limit, String? cursor}) → Future<StocktakeCountPage>
Zaehlungen einer Inventur, neueste zuerst, auch stornierte; mit articleId nur die des Artikels.
listStocktakeItems({required String stocktakeId, bool? openOnly, int? limit, String? cursor}) → Future<StocktakeItemPage>
Positionen einer Inventur nach Kennung; openOnly = ungezaehlt bzw. in review zum Nachzaehlen offen.
listStocktakes({String? status, String? locationId, DateTime? updatedSince, int? limit, String? cursor}) → Future<StocktakePage>
Eine Seite Inventuren des Kontos. Ohne updatedSince zuletzt geaenderte zuerst (updatedAt absteigend; offene stehen dabei nicht zwingend oben, dafuer gibt es status). Mit updatedSince aufsteigend und inklusive: ein Abgleich mit dem groessten gesehenen updatedAt als naechstem updatedSince ist lueckenlos (der Eintrag an der Grenze kommt noch einmal).
listVariantGroups({bool? active, DateTime? updatedSince, int? limit, String? cursor}) → Future<VariantGroupPage>
Eine Seite Variantengruppen, nach updatedAt aufsteigend (gleiche Zeit nach Kennung). updatedSince inklusive; limit 1–200, Vorgabe des Servers 50.
listWebhookDeliveries({String? webhookId, int? limit}) → Future<List<InventoryWebhookDelivery>>
Die letzten Zustellungen, neueste zuerst; mit webhookId nur die eines Webhooks.
listWebhooks() → Future<InventoryWebhookList>
Die Webhooks des Kontos und die Ereignisse, die es abonnieren kann.
lookupArticleByCode({String? code, String? externalSystem, String? externalId}) → Future<Article>
Ein aktiver Artikel per code (number, ean oder internalCode) oder per eigener Kennung aus externalIds (externalSystem mit externalId), nie beides. Ein stillgelegter Artikel gilt als nicht gefunden (article_not_found).
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
previewGoodsReceipt(GoodsReceiptPreviewRequest request) → Future<GoodsReceiptPreview>
Vorschau eines Wareneingangs (receiveGoods mit dryRun: true): prueft Positionen, Artikel, Preise und Nebenkosten und rechnet die Verteilung, schreibt aber nichts. Ein idempotencyKey ist freigestellt, wird nur auf seine Form geprueft und nicht verbraucht. Werte (baseCents …) nur mit dem Recht costs. Fehler tragen den Aufrufnamen receiveGoods.
receiveGoods(ReceiveGoodsRequest request) → Future<StockOperation>
Bucht einen Wareneingang. Ohne locationId am Standard-Standort; die Antwort traegt keine Werte, auch mit dem Recht costs nicht. Fuer die Vorschau mit Werten: previewGoodsReceipt.
recordStockLoss(RecordStockLossRequest request) → Future<StockOperation>
Bucht einen Abgang (Bruch, Schwund, Diebstahl, Entnahme …); ueberzieht nie (exceeds_stock).
recordStocktakeCount(RecordStocktakeCountRequest request) → Future<StocktakeCountResult>
Eine Zaehlung. Antwort: die Zaehlung und ihre Position danach (Summe der Runde in item.quantity, ohne Seriennummern). Gezaehlt wird in counting, in review nur an Positionen, die zum Nachzaehlen frei sind (sonst stocktake_not_open).
recountStocktake(RecountStocktakeRequest request) → Future<Stocktake>
Nachzaehlen: je genannter Position eine neue Runde; danach zaehlen und erneut reviewStocktake. Solange die Pruefung noch rechnet (review.complete: false), kommt stocktake_review_running.
releaseReservation(ReleaseReservationRequest request) → Future<Reservation>
Gibt reservierte Ware frei: ohne items alles, sonst je Position (ohne quantity der ganze offene Rest). Die Antwort traegt den Stand danach; released wird der Status erst, wenn nichts mehr offen ist.
reverseStockMovement(ReverseStockMovementRequest request) → Future<StockOperation>
Nimmt einen ganzen Vorgang (operationId) mit einer Gegenbuchung zurueck.
reviewStocktake(ReviewStocktakeRequest request) → Future<Stocktake>
Pruefen: counting → review, in review neu rechnen (nach dem Nachzaehlen). Die Antwort kommt sofort mit review.complete: false; Soll und Differenz stehen an den Positionen, sobald complete true ist.
rotateWebhookSecret(String webhookId) → Future<InventoryWebhookWithSecret>
Ein neues Secret fuer denselben Webhook. Ab der Antwort gilt nur noch das neue (keine Uebergangsfrist): erst speichern, dann weiterarbeiten.
sendWebhookTest(String webhookId, String event) → Future<InventoryWebhookTestResult>
Eine Probe genau dieses Ereignisses an genau diesen Webhook, mit erfundener Nutzlast und test: true in der Huelle. Der Webhook muss das Ereignis abonnieren (event_not_subscribed) und aktiv sein (webhook_inactive); hoechstens 20 je Konto und Wiener Kalendertag.
toString() → String
A string representation of this object.
inherited
transferStock(TransferStockRequest request) → Future<StockOperation>
Bucht Ware von einem Standort an einen anderen; ueberzieht nie (exceeds_stock).
updateArticle(UpdateArticleRequest request) → Future<Article>
Aendert nur die genannten Felder eines Artikels; UpdateArticleRequest.clear leert Felder.
updateVariantGroup(UpdateVariantGroupRequest request) → Future<VariantGroup>
Aendert eine aktive Gruppe (Name, Vorgaben, neue Werte) oder legt sie mit active: false still: die Gruppe und alle ihre Varianten, endgueltig. Die Antwort kommt erst, wenn alle Varianten stillgelegt sind. Bestehende Varianten aendern Name und Vorgaben nicht (dafuer updateArticle).
updateWebhook(String webhookId, {String? url, List<String>? events, bool? active, String? description, bool removeDescription = false}) → Future<InventoryWebhook>
Aendert nur die genannten Felder. removeDescription loescht die Beschreibung (am Draht description: null) und schliesst description aus.
voidStocktakeCount(VoidStocktakeCountRequest request) → Future<StocktakeCountResult>
Storniert eine Zaehlung mit Grund; die Position wird aus den uebrigen Zaehlungen neu summiert.

Operators

operator ==(Object other) → bool
The equality operator.
inherited