API-Referenz
Der Warehouse Client kommuniziert mit Business Central ausschließlich über eine OData-v4-API.
Diese Referenz richtet sich an Integratoren und Administratoren, die die Schnittstelle verstehen
oder erweitern möchten. Für die normale Nutzung der App ist sie nicht erforderlich.
| Eigenschaft |
Wert |
| Publisher |
altenbrand |
| API-Gruppe |
mcWarehouse |
| Version |
v1.0 |
| Basis-Pfad |
/api/altenbrand/mcWarehouse/v1.0/companies({id})/… |
| Authentifizierung |
OAuth2 (Microsoft Entra ID) über das Geräte-Konto, siehe Lizenzierung & Module |
| Berechtigung |
Berechtigungssatz ALN MCWC API User |
Entitäten vs. Aktionen
Lesende Zugriffe (GET) laufen über OData-Entitäten. Schreibende Vorgänge (Buchen,
Sperren, Etiketten, Fotos …) laufen über gebundene Aktionen (POST) auf der Entität
warehouseActions. Die schreibenden Aktionen prüfen vor der Ausführung Lizenz und
Terminal-Modul-Zugriff (Modul global bzw. am Terminal aktiviert).
Entitäten
Alle Entitäten sind schreibgeschützt – mit Ausnahme von terminals.
| Entity Set |
Quelle |
Zweck |
setup |
MC Lager-Client-Einrichtung |
Globale Konfiguration |
terminals |
MC Lagerterminal |
Terminals lesen; POST registriert ein Terminal (mit Prüfung des Terminal-Limits), PATCH ändert Beschreibung und Lagerort |
terminalShippingAgents |
MC Terminal-Zustelldienstleister |
Zugelassene Zustelldienstleister je Terminal |
assignmentLocks |
MC Lager Zuweisungssperre |
Beleg-Sperren |
scanLogEntries |
MC Lager-Scanprotokoll |
Protokoll der Scans |
packages |
MC Lager Packstück |
Packstücke je Lieferung |
packagingMaterials |
Packmittel (Hub) |
Packmittel für die Packstückerfassung |
pickDocuments / pickLines |
Kommissionierbeleg / -zeile |
Kommissionierlisten und ihre Zeilen |
openOrders |
Verkaufskopf |
Freigegebene Aufträge, die noch keinem Kommissionierbeleg zugeordnet sind |
salesOrderLines |
Verkaufszeile |
Artikelzeilen von Verkaufsaufträgen |
purchaseOrders / purchaseLines |
Einkaufskopf / -zeile |
Nicht vollständig gelieferte Bestellungen und ihre Artikelzeilen (Wareneingang) |
salesShipments / shipmentLines |
Verk.-Lieferkopf / -zeile |
Gebuchte Lieferungen; Zeilen nur vom Typ Artikel |
shipmentLabels |
Versandetikett (Hub) |
Versandetiketten je gebuchter Lieferung |
shipmentPackages |
Sendungspackstück (Hub) |
Packstücke einer Multi-Colli-Sendung mit eigenem Etikett |
itemLookups |
Artikel |
Artikelsuche (Nummer, GTIN) |
itemLedgerEntries |
Artikelposten |
Lagerbuchungen eines Artikels |
postedSalesInvoices / postedSalesInvoiceLines |
Verk.-Rechnungskopf / -zeile |
Gebuchte Rechnungen (Retoure/Reklamation) |
warehouseActivities / warehouseActivityLines |
Lageraktivitätskopf / -zeile |
BC-Lagerkommissionierungen |
complaints |
MC Lager Reklamation |
Reklamationen |
Aktionen (POST)
Aktionen werden an einen Datensatz von warehouseActions gebunden aufgerufen:
POST …/companies({id})/warehouseActions({setupId})/Microsoft.NAV.<aktion>
Die Parameter werden als JSON-Objekt übergeben; die meisten Aktionen liefern ein JSON-Ergebnis
als Text zurück. Fast alle schreibenden Aktionen erwarten terminalCode (und oft userId) –
diese Angaben landen in Buchung, Sperre und Scan-Protokoll.
Konfiguration, Lizenz & Anmeldung
| Aktion |
Zweck |
getEffectiveConfig |
Wirksame Konfiguration eines Terminals (globale Einrichtung + Terminal-Überschreibungen) |
getModuleActivation / getLicenseStatus |
Ist das Modul aktiviert und lizenziert? getLicenseStatus liefert zusätzlich Status und Meldung. Bewusst ohne Lizenzprüfung, damit die App den Grund anzeigen kann |
getModuleCounts |
Offene Arbeit je Modul für die Kachelzähler des Hauptmenüs |
validateSettingsPin |
Einstellungs-PIN prüfen (Sperre nach Fehlversuchen) |
loginWarehouseUser / logoutWarehouseUser |
Mitarbeiter mit Ausweisbarcode + PIN am Terminal an- bzw. abmelden |
getCompanyInfo |
Firmenname und Logo (für den App-Kopf) |
Sperren & Zuweisung
| Aktion |
Zweck |
acquireLock / releaseLock |
Beleg für ein Terminal sperren/freigeben (docType = Belegart als Text, z. B. Sales Shipment) |
getNextShipment |
Warenausgang-Modus Gebuchte Lieferungen: nächste gebuchte Lieferung für das Terminal |
getNextSalesOrder |
Warenausgang-Modus Verkaufsaufträge: nächster freigegebener Auftrag für das Terminal (inkl. Kopfdaten) |
getNextProcessedPick |
Warenausgang-Modus Lagerkommissionierungen: nächste kommissionierte, noch nicht gebuchte Lagerkommissionierung |
Wareneingang
| Aktion |
Zweck |
prepareOrderReceipt |
Bestellung für die Erfassung am Terminal vorbereiten |
postLineReceipt / postLineReceiptWithTracking |
Menge einer Bestellzeile erfassen – optional mit Chargen-/Seriennummer und Ablaufdatum |
postOrderReceipt |
Wareneingang buchen mit Buchungsdatum und Kred.-Lieferscheinnr. (vendorShipmentNo); liefert die Wareneingangsnummer |
Warenausgang
| Aktion |
Zweck |
shipPostedShipment |
Gebuchte Lieferungen: Etikett aus der bereits gebuchten Lieferung erstellen und sie als verarbeitet markieren – ohne den Auftrag erneut zu buchen |
createPackagesForShipment |
Gebuchte Lieferungen, Multi-Colli: je Packstück ein Etikett aus dem Packplan (packingPlanJson) |
shipSalesOrderPartial |
Verkaufsaufträge: gescannte (Teil-)Mengen aus dem Versandplan (shipPlanJson) als Lieferung buchen und das Etikett erstellen |
calculateShipWeight |
Versandgewicht eines Auftrags |
postShipment / postShipmentWithPackages |
Auftrag als Lieferung buchen (optional mit Rechnung) bzw. mit einem Etikett je Packstück aus einem Packplan |
getShipmentNotifications / getShipmentConfirmations |
Hinweise und zu bestätigende Punkte zu einem Auftrag |
getProcessedPickLines |
Lagerkommissionierungen: die gepickten Mengen, die der Packer bestätigt |
calculateWmsShipWeight |
Lagerkommissionierungen: Paketgewicht aus den gepickten Mengen |
completeWmsShipment |
Lagerkommissionierungen: bestätigte Mengen prüfen, Etikett aus dem offenen Auftrag erstellen und erst danach die Kommissionierung buchen; bei einem Etikettenfehler wird nichts gebucht |
Versandetiketten, Packstücke & Lieferschein
| Aktion |
Zweck |
createShipmentLabel |
Etikett für eine gebuchte Lieferung erstellen; providerCode/serviceCode leer = automatische Auflösung über den Zusteller der Lieferung |
getShipmentLabelData / getShipmentLabelByShipmentNo |
Etikettendaten (Base64 + Format) abrufen |
getPackageLabelData |
Etikett eines einzelnen Packstücks (Multi-Colli) |
addPackage / getPackageCount |
Packstück zu einer Lieferung erfassen / Anzahl der Packstücke |
getDeliveryNotePdf |
Lieferschein einer gebuchten Lieferung als PDF (Base64); der frühere Name getPackingListPdf bleibt als Alias |
getShippingAgents |
Zugelassene Zustelldienstleister des Terminals |
Kommissionierliste
| Aktion |
Zweck |
releaseOrder / releaseOrders |
Kommissionierliste für einen Auftrag bzw. für mehrere Aufträge (kommagetrennt) in einer Liste erzeugen |
confirmPickItem |
Gepickte Menge eines Artikels in einem Kommissionierlauf bestätigen |
getOpenPickRuns / getPickRunLines / cancelPickRun |
Offene/unterbrochene Kommissionierläufe des Terminals, deren Zeilen, Lauf abbrechen (Aufträge werden wieder freigegeben) |
Kommissionierung (BC-Lagerkommissionierung)
| Aktion |
Zweck |
findActivityByBarcode / getOpenActivityCount |
Lagerkommissionierung per Barcode finden / offene je Lagerort zählen |
assignPickSerialNo |
Gescannte Seriennummer einer Kommissionierzeile zuordnen (teilt die Zeile bei Bedarf) |
registerPick |
Lagerkommissionierung abschließen: buchen – bzw. im Warenausgang-Modus Lagerkommissionierungen nur als kommissioniert melden |
Artikel, Serien & Chargen
| Aktion |
Zweck |
lookupBarcode / lookupBarcodeWithUOM |
Artikel per Barcode auflösen (inkl. Einheit) |
validateSerialNo / validateSerialNoForShipment |
Seriennummer prüfen (allgemein bzw. gegen eine Lieferung) |
getItemBinContents / getItemTrackingInfo / getAvailableTracking |
Lagerplatzinhalte, Artikelverfolgung und verfügbare Chargen/Serien eines Artikels |
Einlagerung (Regalnummer)
| Aktion |
Zweck |
assignShelf / validateShelfCode |
Regalnummer zuweisen / gegen das Lagerplatz-Code-Muster prüfen |
getPendingPutawayItems / getItemShelfInfo |
Artikel mit Bestand, aber ohne Regalnummer / Regalinfo eines Artikels |
Umlagerung, Inventur & Lagerplätze
| Aktion |
Zweck |
getTransferContext / validateTransferBin |
Umlagerungskontext (Lagerplatzinhalt) / Ziel-Lagerplatz prüfen |
postBinTransfer / postLocationTransfer |
Von Lagerplatz zu Lagerplatz bzw. von Lagerort zu Lagerort umlagern; postLocationTransfer liefert transferOrderNo und posted (true = sofort gebucht, false = nur angelegt und freigegeben) |
getCountContext / getDueCountList / postCount |
Inventur: Zählkontext, Liste fälliger Zählungen, Zählung buchen |
getCountSheet / postCountSheet |
Inventur: alle Lagerorte/Lagerplätze eines Artikels lesen und in einer Zählung buchen |
postSerialCount / postSerialCountSheet |
Inventur: seriennummernpflichtige Artikel anhand der gescannten Seriennummern zählen |
getOpenPutaways / getPutawayLines / registerPutaway |
Einlagerung WMS: offene Einlagerungsbelege, Zeilen, registrieren |
getPutawayContext / postAdHocPutaway |
Einlagerung WMS ad hoc |
calculateReplenishment / getOpenMovements / getMovementLines / registerMovement |
Nachschub: berechnen, Lagerbewegungen abrufen und registrieren |
Etikettendruck, Verwiegung & Foto
| Aktion |
Zweck |
printItemLabel / printItemLabelPdf / getLabelItemInfo |
Artikel-/Fachetikett als ZPL bzw. als PDF (Bericht Artikeletikett) / Artikeldaten für das Etikett |
getItemWeightInfo / saveItemWeight |
Artikelgewichte lesen / Netto- und Bruttogewicht auf die Artikelkarte schreiben |
uploadPhoto / deletePhoto |
Foto (JPEG, max. 5 MB) am Beleg ablegen / löschen |
getPhotos / getPhotoContent / getPhotoCount / documentExists |
Fotos eines Belegs auflisten / Bildinhalt / Anzahl / prüfen, ob der Beleg existiert |
Retoure & Reklamation
| Aktion |
Zweck |
getReturnReasons |
Reklamationsgründe, die für die Terminals freigegeben sind (Am Lagerterminal anbieten) |
postReturn / postServiceReturn |
Retoure zu einer Rechnungszeile als Gutschrift bzw. als Verkaufsreklamation anlegen |
postComplaint / updateComplaintStatus |
Reklamation erfassen / Status weiterschalten |
Nächste Schritte