Skip to content

API Reference

The Warehouse Client communicates with Business Central exclusively via an OData v4 API. This reference is aimed at integrators and administrators who want to understand or extend the interface. For normal use of the app, it is not required.

Property Value
Publisher altenbrand
API group mcWarehouse
Version v1.0
Base path /api/altenbrand/mcWarehouse/v1.0/companies({id})/…
Authentication OAuth2 (Microsoft Entra ID) via the device account, see Licensing & Modules
Permission Permission set ALN MCWC API User

Entities vs. actions

Read access (GET) goes through OData entities. Write operations (posting, locking, labels, photos …) go through bound actions (POST) on the warehouseActions entity. The write actions check the license and the terminal module access (module enabled globally or at the terminal) before execution.


Entities

All entities are read-only – except terminals.

Entity Set Source Purpose
setup MC Warehouse Client Setup Global configuration
terminals MC Warehouse Terminal Read terminals; POST registers a terminal (with a terminal-limit check), PATCH changes description and location
terminalShippingAgents MC Terminal Shipping Agent Allowed shipping agents per terminal
assignmentLocks MC Warehouse Assignment Lock Document locks
scanLogEntries MC Warehouse Scan Log Log of the scans
packages MC Warehouse Package Packages per shipment
packagingMaterials Packaging material (Hub) Packaging materials for recording packages
pickDocuments / pickLines Pick document / line Pick lists and their lines
openOrders Sales Header Released orders not yet assigned to a pick document
salesOrderLines Sales Line Item lines of sales orders
purchaseOrders / purchaseLines Purchase Header / Line Purchase orders not completely received and their item lines (goods receipt)
salesShipments / shipmentLines Sales Shipment Header / Line Posted shipments; lines of type Item only
shipmentLabels Shipment label (Hub) Shipping labels per posted shipment
shipmentPackages Shipment package (Hub) Packages of a multi-colli shipment with their own label
itemLookups Item Item lookup (number, GTIN)
itemLedgerEntries Item Ledger Entry Inventory entries of an item
postedSalesInvoices / postedSalesInvoiceLines Sales Invoice Header / Line Posted invoices (return/complaint)
warehouseActivities / warehouseActivityLines Warehouse Activity Header / Line BC inventory picks
complaints MC Warehouse Complaint Complaints

Actions (POST)

Actions are called bound to a record of warehouseActions:

POST …/companies({id})/warehouseActions({setupId})/Microsoft.NAV.<action>

Parameters are passed as a JSON object; most actions return a JSON result as text. Almost all write actions expect terminalCode (and often userId) – these end up in the posting, the lock and the scan log.

Configuration, license & sign-in

Action Purpose
getEffectiveConfig Effective configuration of a terminal (global setup + terminal overrides)
getModuleActivation / getLicenseStatus Is the module activated and licensed? getLicenseStatus additionally returns status and message. Deliberately not license-checked, so the app can show the reason
getModuleCounts Open work per module for the main-menu badge counters
validateSettingsPin Validate the settings PIN (locked after failed attempts)
loginWarehouseUser / logoutWarehouseUser Sign an employee in/out at the terminal with badge barcode + PIN
getCompanyInfo Company name and logo (for the app header)

Locking & assignment

Action Purpose
acquireLock / releaseLock Lock/release a document for a terminal (docType = document type as text, e.g. Sales Shipment)
getNextShipment Goods Issue Mode Posted Shipments: next posted shipment for the terminal
getNextSalesOrder Goods Issue Mode Sales Orders: next released order for the terminal (incl. header data)
getNextProcessedPick Goods Issue Mode Inventory Picks: next picked but not yet posted inventory pick

Goods receipt

Action Purpose
prepareOrderReceipt Prepare a purchase order for capture at the terminal
postLineReceipt / postLineReceiptWithTracking Capture the quantity of a purchase line – optionally with lot/serial no. and expiration date
postOrderReceipt Post the goods receipt with posting date and vendor shipment no. (vendorShipmentNo); returns the receipt number

Goods issue

Action Purpose
shipPostedShipment Posted Shipments: create the label from the already posted shipment and mark it as processed – without re-posting the order
createPackagesForShipment Posted Shipments, multi-colli: one label per package from the packing plan (packingPlanJson)
shipSalesOrderPartial Sales Orders: post the scanned (partial) quantities from the ship plan (shipPlanJson) as a shipment and create the label
calculateShipWeight Shipping weight of an order
postShipment / postShipmentWithPackages Post an order as a shipment (optionally with invoice) or with one label per package from a packing plan
getShipmentNotifications / getShipmentConfirmations Notices and items to confirm for an order
getProcessedPickLines Inventory Picks: the picked quantities the packer confirms
calculateWmsShipWeight Inventory Picks: parcel weight from the picked quantities
completeWmsShipment Inventory Picks: verify the confirmed quantities, create the label from the open order and only then post the pick; on a label failure nothing is posted

Shipping labels, packages & delivery note

Action Purpose
createShipmentLabel Create a label for a posted shipment; empty providerCode/serviceCode = automatic resolution via the shipment's shipping agent
getShipmentLabelData / getShipmentLabelByShipmentNo Retrieve label data (Base64 + format)
getPackageLabelData Label of a single package (multi-colli)
addPackage / getPackageCount Record a package for a shipment / number of packages
getDeliveryNotePdf Delivery note of a posted shipment as PDF (Base64); the former name getPackingListPdf remains as an alias
getShippingAgents Allowed shipping agents of the terminal

Pick list

Action Purpose
releaseOrder / releaseOrders Create a pick list for one order or for several orders (comma-separated) in one list
confirmPickItem Confirm the picked quantity of an item in a pick run
getOpenPickRuns / getPickRunLines / cancelPickRun Open/interrupted pick runs of the terminal, their lines, cancel a run (orders are released again)

Warehouse activity (BC inventory picks)

Action Purpose
findActivityByBarcode / getOpenActivityCount Find an inventory pick by barcode / count open ones per location
assignPickSerialNo Assign a scanned serial number to a pick line (splits the line if needed)
registerPick Complete an inventory pick: post it – or, in the Goods Issue Mode Inventory Picks, only report it as picked

Items, serials & lots

Action Purpose
lookupBarcode / lookupBarcodeWithUOM Resolve an item by barcode (incl. unit of measure)
validateSerialNo / validateSerialNoForShipment Validate a serial number (in general or against a shipment)
getItemBinContents / getItemTrackingInfo / getAvailableTracking Bin contents, item tracking and available lots/serials of an item

Putaway (shelf no.)

Action Purpose
assignShelf / validateShelfCode Assign a shelf no. / validate it against the shelf code pattern
getPendingPutawayItems / getItemShelfInfo Items with stock but without a shelf no. / shelf info of an item

Stock transfer, inventory & bins

Action Purpose
getTransferContext / validateTransferBin Transfer context (bin contents) / validate the target bin
postBinTransfer / postLocationTransfer Move bin-to-bin or location-to-location; postLocationTransfer returns transferOrderNo and posted (true = posted immediately, false = only created and released)
getCountContext / getDueCountList / postCount Inventory: count context, list of due counts, post a count
getCountSheet / postCountSheet Inventory: read all locations/bins of an item and post them in one count
postSerialCount / postSerialCountSheet Inventory: count serial-tracked items by the scanned serial numbers
getOpenPutaways / getPutawayLines / registerPutaway Bin put-away: open put-away documents, lines, register
getPutawayContext / postAdHocPutaway Ad-hoc bin put-away
calculateReplenishment / getOpenMovements / getMovementLines / registerMovement Bin replenishment: calculate, fetch movements and register them

Label print, weighing & photo

Action Purpose
printItemLabel / printItemLabelPdf / getLabelItemInfo Item/bin label as ZPL or as PDF (report Item Label) / item data for the label
getItemWeightInfo / saveItemWeight Read item weights / write net and gross weight to the item card
uploadPhoto / deletePhoto Attach a photo (JPEG, max. 5 MB) to a document / delete it
getPhotos / getPhotoContent / getPhotoCount / documentExists List a document's photos / image content / count / check whether the document exists

Return & complaint

Action Purpose
getReturnReasons Return reasons released for the terminals (Show on Warehouse Terminal)
postReturn / postServiceReturn Create a return for an invoice line as a credit memo or as a return order
postComplaint / updateComplaintStatus Record a complaint / advance its status

Next steps