Skip to content

Versand / Pick & Pack – Vollständige API-Referenz ​

Fach-API für den Packtisch, Versandstücke, Carrier, Picklisten und Fulfillment. Basis ist https://core-backend.reybex.com/api (Staging: https://io-staging-partner.reybex.com/api). Authentifizierung wie im API: --header "authorization: Basic $TOKEN".

Der Auftrag steht unter Auftragsverwaltung. Artikel unter Artikelstamm-Verwaltung. Die Rückmeldung an den Kanal unter Online Marktplätze. EDI-Versand unter EDI.

Der schreibende Weg eines Versandstücks ist POST /api/sendPacks/. Scannen und Versenden laufen über POST /api/shippment/scan und POST /api/shippment/ship.

1. Grundlagen ​

ObjektRolle
SendPacksVersandstück mit Gewicht, Maßen und Tracking
ShippmentPacktisch: Scan, Label, Versand
CarrierTransportdienst
PickListHeadPickliste
FulfillmentExternes Lager

Die Zahlen in den Beispielen sind Beispiel-Ids eines Mandanten. 510100 ist der Auftrag. 61010 ist eine Auftragsposition. 9901 ist das Versandstück.

1.1 Suchschlüssel ​

ZielSuchschlüssel
Auftrag am Versandstückid des Belegs
ArtikelmatCode, sonst sku
Verpackung, Carriercode, sonst name

salesItems am Versandstück lösen keine bestehende Position über einen Suchschlüssel auf. Dort steht id.

1.2 Antwort- und Fehlerformat ​

Ein Versand mit Fehler antwortet HTTP 500 und { "data": { "error": "…" } }. Ein erfolgreicher Versand liefert die Antwort des Packtisches.

SituationKörper
Auftrag zum Import nicht gefundensalesHead.not.found
Carrier unbekanntmessage.carrier.not.found.by.id.error
Menge am Versandstück passt nichtshippmentItem.quantity.error
CSV-Trennzeichenimport.check.your.delimiter
Datei fehltfile.not.found
Importmodus passt nicht zur KopfzeilesendPack.import.mode.not.match.with.header
Versandstück nicht gefundensendPacks not found
Fehlende AnmeldungHTTP 401

2. Packtisch ​

Offene Positionen: GET /api/shippment/orders.

Scannen: POST /api/shippment/scan

json
{
  "salesHeadId": 510100,
  "scanCode": "ART-1000",
  "isShippment": true
}

scanCode ist Artikelnummer, GTIN oder Picknummer. Ein Pipe-Zeichen wird vor dem ersten | abgeschnitten. shippingConfigId wählt die Versandkonfiguration. Sonst gilt die des Auftrags, dann die des Benutzers.

Label scannen: POST /api/shippment/labelScan. Drucken: POST /api/shippment/print mit der id des Stücks.

Versenden: POST /api/shippment/ship

json
{
  "salesHeadId": 510100,
  "id": 9901
}

Konfiguration des Tisches: GET /api/shippment/config. Belegdrucke: GET /api/shippment/getOrderPrints.

3. Versandstück ​

POST /api/sendPacks/ legt das Stück an. Mit salesItems entsteht je Position ein Stück. salesItem.id ist die Auftragsposition, quantity die Menge im Stück.

3.1 Felder ​

FeldBedeutung
salesHeadAuftrag, per id
trackingCodeSendungsnummer
carrierName, productNameDienst und Produkt
weightGross, weightNettBrutto und Netto
dimLength, dimWidth, dimHeightMaße
quantityStückzahl
packagingVerpackung
licenseplateNVE
externalNumberNummer des Partners
isDeleteLogisch gelöscht

3.2 Pflichtfelder ​

Auflösung, wenn ein Pflichtfeld fehlt ​

Die API setzt Pflicht-Referenzen nicht von selbst. Fehlt ein Feld, in dieser Reihenfolge füllen. Der erste Treffer gilt.

  1. Angabe – Wert aus dem Auftrag für dieses Feld.
  2. Vorlage – dasselbe Feld aus GET /api/sendPacks/{id}. id und trackingCode nicht übernehmen. Ist eine Vorlage genannt, diese lesen. Ist keine genannt, keine raten, mit Schritt 3 weiter.
  3. Standard – Wert aus der Tabelle.
  4. Domäne – Auftrag über die Auftragsverwaltung lesen. Die Id setzen.
  5. Stopp – kein Auftrag. Stück nicht anlegen.
FeldPflichtVorlageStandardDomäne
salesHeadjasalesHead—Auftrag
salesItemsnein—eine Position mit id und quantity—
weightGrossneinweightGross——

3.3 Stück zur Position ​

510100 ist der Auftrag, 61010 die Position.

json
{
  "salesHead": { "id": 510100 },
  "carrierName": "DHL",
  "weightGross": 1.25,
  "salesItems": [
    { "id": 61010, "quantity": 1 }
  ]
}

Response mit salesItems: { "data": [ … ], "total": 1 }. Ohne salesItems die Antwort von saveCustomPack.

Lesen: GET /api/sendPacks/9901. Löschen: DELETE /api/sendPacks/9901. Unbekannt: sendPacks not found.

CSV: POST /api/sendPackImport/importSendPacksWithCsvFile. FTP prüfen: POST /api/sendPackImport/testConnection. Protokoll: GET /api/sendPackImport/importLog.

4. Carrier, Pick, Abschluss ​

Carrier: GET /api/carrier/{id}. Produkte: GET /api/carrier/products. Unterstützte Dienste: GET /api/carrier/supportedShippingCarriers. Verbindung speichern: POST /api/carrier/saveConnection.

Versandprodukt ändern: POST /api/shipping/product. EDI an den Dienst: POST /api/shipping/sendEdi.

Pickliste: POST /api/pickListHead/. Label: POST /api/pickListHead/newLabel. Reservieren: POST /api/pickingItemReservation/reserveOrders. Status: GET /api/pickingItemReservation/{picklistNumber}/status.

Behälter: POST /api/pickBox/. Nummer ändern: POST /api/pickBox/updateContainerNumber. Behälter des Benutzers: GET /api/pickBox/userContainer. Leeren: GET /api/pickBox/clean.

Barcode-Vorlage: POST /api/barcodeConfiguration/.

Tagesabschluss: POST /api/delivery/ schließt ab. Zurück: DELETE /api/delivery/{id}. Bericht: GET /api/delivery/report/{id}.

Gewicht prüfen: POST /api/weightCheck/preview, bestätigen POST /api/weightCheck/confirm.

Packliste: POST /api/packlist/. Zurücknehmen: POST /api/packlist/revert.

5. Fulfillment ​

POST /api/fulfillment/ speichert den Anschluss. Verbindung: GET /api/fulfillment/checkConnection/{id}.

Aufträge: GET /api/fulfillment/listOrders und POST /api/fulfillment/updateOrders. Bestand: GET /api/fulfillment/listStocks. Bestandsbuchung: POST /api/fulfillment/stockMovement. Wareneingang: GET /api/fulfillment/listIncomingGoods und POST /api/fulfillment/setIncomingGoods.

Lager des Fulfillment: GET /api/fulfillment/getFulfillmentWarehouses/{fulfillmentId} und POST /api/fulfillment/saveFulfillmentWarehouse.

Auftrag stornieren: POST /api/fulfillment/cancelSalesOrder.

Rückmeldung des Dienstes: POST /api/fulfillment/shipmentUpdate/{provider} und POST /api/fulfillment/returnUpdate/{provider}. Der Körper ist die Meldung des Dienstes. Für FOLIFE liegen Versand, Wareneingang und Bestand unter POST /api/fulfillment/FOLIFE/shipmentresponse, POST /api/fulfillment/FOLIFE/receiptresponse und POST /api/fulfillment/FOLIFE/inventory/sync. Retoure anlegen: POST /api/fulfillment/saveReturn.

6. Weitere Beispiele ​

6.1 Auftrag packen und versenden ​

  1. Positionen mit GET /api/shippment/orders lesen.
  2. Artikel scannen, Abschnitt Packtisch.
  3. Versandstück mit Tracking anlegen, Abschnitt Stück.
  4. POST /api/shippment/ship.
  5. Status an den Marktplatz melden, wenn der Auftrag von dort kommt.

7. Konfiguration und Versandclient ​

POST /api/shippingConfig/{id} speichert die Versandkonfiguration. Die Id steht im Pfad. Löschen: DELETE /api/shippingConfig/. Pickprofil: POST /api/pickingProfile/. Pickplatz: POST /api/pickLocation/. Verpackung und Gefahrgut werden nur gelesen: GET /api/packaging/{id}, GET /api/danger/{id}.

Versenden über den Carrier-Client: POST /api/shippingClient/ mit salesHeadIds. Optional userId und isSmartpack. Leere Liste: message.salesHeadIds.empty.error.

json
{ "salesHeadIds": [510100] }

Retoure: POST /api/shippingClient/returnDelivery mit salesHeadId oder salesHeadIds, optional carrierId, shipping, shippingProductId und returnHeadId. Verbindung prüfen: GET /api/shippingClient/connection verlangt carrierId. Ohne Carrier: message.carrier.not.found.by.id.error. Aras-Auftrag und Barcode: POST /api/shippingClient/setOrder und POST /api/shippingClient/checkBarcode, jeweils mit salesHeadIds. checkBarcode liest zusätzlich carrierId.

8. Endpoint-Katalog ​

MethodePfadBedeutung
GET/api/shippment/ordersOffene Positionen
POST/api/shippment/scanScannen
POST/api/shippment/shipVersenden
POST/api/shippment/printLabel drucken
GET/api/sendPacks/{id}Ein Versandstück
POST/api/sendPacks/Stück speichern
DELETE/api/sendPacks/{id}Stück löschen
POST/api/sendPackImport/importSendPacksWithCsvFileCSV-Import
GET/api/carrier/{id}Carrier
POST/api/carrier/saveConnectionVerbindung
POST/api/pickListHead/Pickliste
POST/api/pickingItemReservation/reserveOrdersReservieren
POST/api/delivery/Tagesabschluss
POST/api/fulfillment/Fulfillment speichern
GET/api/fulfillment/listOrdersAufträge des Lagers
GET/api/fulfillment/listMaterialsMaterialliste des Fulfillment-Lagers
POST/api/fulfillment/stockMovementBestandsbuchung
POST/api/fulfillment/invCorrectionInventurkorrektur aus dem Fulfillment
POST/api/pickBox/Behälter
POST/api/barcodeConfiguration/Barcode-Vorlage
POST/api/weightCheck/previewGewicht prüfen
POST/api/weightCheck/confirmGewicht bestätigen
POST/api/packlist/Packliste
POST/api/fulfillment/shipmentUpdate/{provider}Versandrückmeldung
POST/api/fulfillment/FOLIFE/shipmentresponseFOLIFE-Versand
POST/api/fulfillment/saveReturnRetoure
GET/api/shippingConfig/{id}Eine Versandkonfiguration
POST/api/shippingConfig/{id}Konfiguration speichern, Id im Pfad
DELETE/api/shippingConfig/Konfiguration löschen
GET/api/pickingProfile/{id}Ein Pickprofil
POST/api/pickingProfile/Profil speichern
DELETE/api/pickingProfile/{id}Profil löschen
GET/api/pickLocation/{id}Ein Pickplatz
POST/api/pickLocation/Platz speichern
DELETE/api/pickLocation/Platz löschen
GET/api/packaging/{id}Verpackung
GET/api/danger/{id}Gefahrgut
POST/api/shippingClient/Versenden, salesHeadIds
POST/api/shippingClient/returnDeliveryRetourenlabel
GET/api/shippingClient/connectionVerbindung, Query carrierId
POST/api/shippingClient/setOrderAuftrag an Aras
POST/api/shippingClient/checkBarcodeBarcode bei Aras

9. Häufige Fehler ​

SituationUrsache
salesHead.not.foundDie Belegnummer des Imports gibt es nicht
message.carrier.not.found.by.id.errorcarrier ohne gültige Id
shippmentItem.quantity.errorMenge größer als die offene Position
sendPacks not foundDELETE mit unbekannter Id
HTTP 500 beim VersandDie Meldung steht in data.error
Scan findet nichtsscanCode trifft weder Artikel noch Auftrag
message.salesHeadIds.empty.errorshippingClient ohne salesHeadIds
message.salesHead.not.found.by.id.errorreturnDelivery mit unbekannter Beleg-Id

Nur für reybex-Partner. Nicht für Endkunden bestimmt.