Pickwings stellt Schnittstellen für Drittsysteme zur Verfügung. Diese ermöglichen es ...
... eine Sendung aufzugeben.
... ein Preisanfrage zu machen.
... über Ereignisse benachrichtigt zu werden.
Anfragen an Pickwings müssen über HTTPS erfolgen. Anfragen über HTTP werden nicht akzeptiert. Die Basis-URL für alle Anfragen lautet https://api.pickwings.ch/api/v2/sender/. Die Benachrichtigung über Ereignisse erfolgt via vom Kunden definierte Webhooks.
Mittels einer HTTPS-Anfrage kann eine Sendung aufgegeben werden. Dazu müssen alle relevanten Sendungsdaten übermittelt werden. Die Sendung wird direkt von Pickwings verarbeitet und ins Netzwerk gestellt.
Über eine HTTPS-Anfrage kann eine Sendungsofferte eingeholt werden. Dazu müssen alle relevanten Sendungsdaten übermittelt werden. Zurückgeschickt wird u.a. ein Release Token und ein Preis für die Sendung. Mittels einer weiteren HTTPS-Anfrage und dem Release Token kann die Sendung freigeben werden. Das Release Token läuft nach 15 Minuten ab.
Pickwings kann Drittsysteme über Ereignisse benachrichtigen. Es gibt folgende Ereignisse:
Damit Pickwings Anfragen von Drittsystemen und umgekehrt Drittsysteme Anfragen von Pickwings authentifizieren können, braucht es Tokens. Es gibt zwei verschiedene Tokentypen:
Damit Drittsysteme von Pickwings benachrichtigt werden können, müssen zusätzlich Webhooks erstellt werden. Tokens und Webhooks werden im Webportal unter "Konto" -> "API Admin" verwaltet. Tokens müssen unbedingt geheim gehalten werden!
Sobald ein API Token erstellt wurde, können Anfragen an Pickwings gestellt werden. Dazu muss über das HTTP-Header-Feld "Authorization" das Token bei jeder Anfrage mitgeschickt werden. Der Wert des Feldes muss wie folgt gesetzt werden:
Authorization: Token <Dein geheimes API Token>
Damit Pickwings Drittsysteme benachrichtigen kann, braucht es neben einem Webhook Token einen Webhook. Nachdem beides erstellt wurde, wird Pickwings Benachrichtigungen an die registrierten Webhooks schicken. Jeder registierte Webhook wird für jedes Ereignis aufgerufen.
Webhooks müssen mit einem Statuscode 200 antworten. Antwortet der Webhook mit einem anderen Statuscode oder gar nicht, wird der Webhook deaktiviert.
Ein Webhook sollte unbedingt jede Anfrage authentifizieren. Dazu muss die von Pickwings mitgesendete Signatur im Header-Feld x-signature überprüft werden. Die Signatur ist ein SHA1 HMAC Hash über den Body der Webhook-Anfrage, wobei das Webhook Token als Schlüssel der Hashfunktion verwendet wird. Zur Authentifizierung der Anfrage sollte das Drittsystem die Signatur berechnen und mit der mitgeschickten vergleichen.
Siehe rechts für ein Codebeispiel in Python.
# pylint: disable=all
# Beispiel Code Python: Überprüfung der Signatur einer Webhook-Anfrage
# webhook_token enthält das Webhook Token
# webhook_request_body enthält den Body der Webhook-Anfrage
from hashlib import sha1
import hmac
x = hmac.new(str(webhook_token), webhook_request_body, sha1)
signature = x.digest().encode("base64").rstrip('\n')
Die Parameter einer Anfrage werden als JSON-Objekt mit Contenttype application/json
angehängt oder
können in der URL enthalten sein. Z.B. werden bei einer Preisanfrage die Sendungsdaten als JSON-Objekt übergeben,
bei der Freigabe der Sendung befindet sich das Release Token in der URL (siehe unten).
In der Sektion Typen sind die JSON-Objekte beschrieben. In der weiteren API-Beschreibung wird jeweils auf diese
Typen verwiesen (Beispiel: Shipment
).
Pickwings verwendet HTTP Status Codes um den Erfolg oder Fehlerfall eines Requests mitzuteilen.
Fehler bei der Validierung werden mit einem HTTP Fehler Code im Response deklariert. Im Body des Response sind die Fehlermeldungen aufgeführt, inkl. welche Felder betroffen sind.
Siehe rechts für Beispiele.
Um Wochenend- und Feiertagen Rechnung zu tragen, werden Abhol- und Lieferdaten von Pickwings automatisch auf die nächstmöglichen Werktage angepasst. Die angepassten Daten sind in der Antwort enthalten.
{
"<field name>": [
"Fehlermeldung 1", "Fehlermeldung 2", ...
],
...
}
{
"pickup_date": [
"Abholung in der Vergangenheit nicht möglich."
]
}
GET: Liefert eine Liste aller eigener Sendungen zurück.
Parameter: -
Resultat: Liste von Shipment
POST: Eine Sendung welche an diesen Endpoint gesendet wird, wird direkt ins Netzwerk gestellt.
Parameter: Shipment
Resultat: Status Code 201, Shipment
GET: Abfrage einer Sendung mit all ihren Daten.
Parameter: Sendungsnummer in der URL
Resultat: Status Code 200, Shipment
POST: Nicht unterstützt
GET: nicht unterstützt
POST: Eine Sendung welche an diesen Endpoint gesendet wird, wird als Entwurf erstellt. Als Antwort
erhält man den Preis für die Sendung, ein Token und die Sendungsdaten. Mit Hilfe des Tokens kann die Sendung
innerhalb von 15 Minuten freigegeben werden.
Parameter: DraftShipmentQuote
Resultat: Status Code 201, Quote
GET: nicht unterstützt
POST: Sendung mit Token freigeben
Parameter: Release Token in URL
Resultat: Status Code 201, Shipment
Jedes Feld ist entweder nicht schreibbar
, erforderlich
oder hat
einen Default
. Nicht schreibbare Felder müssen bei der Anfrage nicht
mitgeschickt werden. Sie sind in der Antwort der Anfrage enthalten. Erforderliche Felder
müssen bei der Anfrage mitgeschickt werden. Felder mit einem Default können, müssen aber
nicht mitgeschickt werden. Wenn sie nicht mitgeschickt werden, wird der angegebene
Defaultwert verwendet. Gewisse Felder haben Abhängigkeiten zueinander. Dies ist an
entsprechender Stelle angegeben.
Feld | Beschreibung |
---|---|
number String Nicht schreibbar |
Sendungsnummer unformatiert |
number_formatted String Nicht schreibbar |
Sendungsnummer formatiert |
shipment_type Integer Erforderlich |
Typ der Sendung: 0: Standard Tag A / Tag B 1: Express Tag A / Tag A 3: Flexibel |
shipment_type_display String Nicht schreibbar |
Siehe shipment_type. |
price Integer Erforderlich falls price_mode == 1, sonst null |
Preis in Rappen (exkl. MwSt.) |
price_mode Integer Erforderlich |
Preis Modus: 0: Pickwings Preis 1: Manueller Preis 2: Auktion Manueller Preis und Auktion nur möglich falls in Pickwings Konto freigeschaltet. |
price_mode_display String Nicht schreibbar |
Siehe price_mode. |
auction_min_price Integer Erforderlich falls price_mode == 2, sonst null |
Start Preis der Auktion in Rappen |
auction_max_price Integer Erforderlich falls price_mode == 2, sonst null |
Höchstpreis der Auktion in Rappen |
auction_duration Integer Erforderlich falls price_mode == 2, sonst null |
Dauer der Auktion in Minuten. Mögliche Werte: 15 30 60 120 180 240 |
delivery_state_display String Nicht schreibbar |
Status der Sendung |
bundle Boolean Erforderlich |
Gehört zu Sammelabholung. False falls Sammelabholung nicht freigeschaltet. |
tracking_hash String Nicht schreibbar |
Tracking Hash |
tracking_link String Nicht schreibbar |
Tracking Link. |
dangerous_load Boolean Nicht schreibbar |
Ist Gefahrgut. Gefahrgutangaben können pro Packstück festgelegt werden. |
lifting_ramp_necessary Boolean Erforderlich |
Braucht Hebebühne |
insured Boolean Erforderlich |
Muss Versichert werden |
chilled_load Boolean Erforderlich |
Muss gekühlt werden. |
chilled_temperature Integer Erforderlich falls chilled_load == true, sonst null |
Gewünschte Kühltemperatur. |
truck_buildup Integer |
Fahrzeugaufbau. 0: Keine Vorgaben 1:Planen-Fahrzeug 2:'Kasten-Fahrzeug (ISO) 3:Kühl-Fahrzeug 4:Offenes Fahrzeug |
truck_buildup_display String Nicht schreibbar |
Siehe truck_buildup. |
pickup_company String Default: null |
Ladeort Firmenname |
pickup_first_name String Erforderlich |
Ladeort Vorname Kontakt |
pickup_last_name String Erforderlich |
Ladeort Nachname Kontakt |
pickup_address String Erforderlich |
Abholadresse |
pickup_address_line2 String Default:null |
Adresszusatz Abholung |
pickup_zip String Erforderlich |
Ladeort Postleitzahl |
pickup_location String Erforderlich |
Ladeort |
pickup_phone String Erforderlich |
Telefonnummer Kontakt Abholung |
pickup_email String Default: null |
Kontakt Email Adresse für Abholung. Falls vorhanden werden folgende Informationen an diese Email-Adresse gesendet: Abholavisierung, Lieferbestätigung |
pickup_date String mit Format: 'yyyy-mm-dd' Erforderlich |
Abholdatum. Siehe Bemerkung unter Allgemeines. |
pickup_time_start String mit Format: 'hh:mm' Erforderlich |
Startzeit für Abholzeitfenster |
pickup_time_end String mit Format: 'hh:mm' Erforderlich |
Schlusszeit für Abholzeitfenster |
pickup_reference_number String Default: null |
Referenznummer des Kunden. Erscheint auf der Rechnung und dem Lieferschein |
pickup_description String Default: null |
Zusatzinformationen zum Ladeort. |
pickup_phone_call Boolean Erforderlich |
Ist eine Abholavisierung notwendig. Bei Abholung von Privatadresse wird die Avisierung automatisch gesetzt. |
pickup_floor_pickup Boolean Erforderlich |
Muss die Fracht in einem Stockwerk abgeholt werden. |
pickup_noon_possible Boolean Erforderlich |
Abholung über den Mittag möglich. |
pickup_email_language String 'de', 'fr', 'it', 'en' Default: 'de' |
Korrespondenzsprache für E-Mail Nachrichten bei der Abholung. Nachrichten werden zur Zeit nur in Deutsch versendet. |
pickup_on_delivery_day_possible Boolean Erforderlich |
Abholung am Liefertag möglich. |
lodge_pickup Boolean Erforderlich |
Ist die Ware bei der Abholung deponiert. |
lodge_pickup_description String Default: null |
Beschreibung zur Deponierung bei der Abolung. |
needs_second_person_pickup Boolean Erforderlich |
Weiteres Hilfspersonal bei Abholung benötigt. |
truck_max_height_pickup Float. nullable Erforderlich |
Höhenbeschränkung beim Abholhort. |
pickup_access_restriction Integer |
Zufahrtsbeschränkung bei Abholung. 0: Keine Einschränkungen 1: Nur mit Kleinfahrzeug (bis 3.5t) 2: Nur mit LKW-Solo (bis 18t) |
pickup_access_restriction_display String Nicht schreibbar |
Siehe pickup_access_restriction. |
needs_crane_pickup Boolean |
Wird ein Kran für das Laden benötigt. |
delivery_company String Default: null |
Lieferort Firma |
delivery_first_name String Erforderlich |
Lieferort Vorname Kontakt |
delivery_last_name String Erforderlich |
Lieferort Nachname Kontakt |
delivery_address tring Erforderlich |
Lieferort Adresse |
delviery_address_line2 String Default: null |
Adresszusatz Zustellung |
delivery_zip String Erforderlich |
Lieferort Postleitzahl |
delivery_location String Erforderlich |
Lieferort |
delivery_phone String Erforderlich |
Telefonnummer Kontakt Lieferung |
delivery_email String Default: null |
Kontakt Email Adresse für Lieferung. Falls vorhanden werden folgende Informationen an diese Email-Adresse gesendet: Lieferavisierung, Lieferbestätigung |
delivery_date String mit Format 'yyyy-mm-dd' Erforderlich |
Lieferdatum. Siehe Bemerkung unter Allgemeines. |
delivery_time_start String mit Format 'hh:mm' Erforderlich |
Startzeit für Lieferzeitfenster |
delivery_time_end String mit Format 'hh:mm' Erforderlich |
Schlusszeit für Lieferzeitfenster |
delivery_reference_number String Default: null |
Referenznummer des Empfängers. Erscheint auf der Rechnung und dem Lieferschein |
delivery_description String Default: null |
Zusatzinformationen für Lieferort |
delivery_phone_call Boolean Erforderlich |
Ist eine Lieferavisierung notwendig. Bei Lieferung an Privatadresse wird die Avisierung automatisch gesetzt. |
delivery_floor_delivery Boolean Erforderlich |
Muss die Fracht in ein Stockwerk verbracht werden. |
delivery_noon_possible Boolean Erforderlich |
Lieferung über den Mittag möglich. |
delivery_email_language String 'de', 'fr', 'it', 'en'; Default: 'de' Default: 'de' |
Korrespondenzsprache für E-Mail Nachrichten bei der Lieferung. Nachrichten werden zur Zeit nur in Deutsch versendet. |
lodge_delivery Boolean Erforderlich |
Darf die Ware deponiert werden. |
lodge_delivery_description String Default: null |
Beschreibung zur Deponierung bei der Lieferung. |
needs_second_person_delivery Boolean Erforderlich |
Weiteres Hilfspersonal bei Lieferung benötigt. |
neutral_delivery Boolean Erforderlich |
Neutrale Lieferung. |
neutral_delivery_comment String Default: null |
Kommentar zur neutrale Lieferung. |
truck_max_height_delivery Float, nullable Erforderlich |
Höhenbeschränkung beim Lieferort. |
delivery_access_restriction Integer |
Zufahrtsbeschränkung bei Abholung. 0: Keine Einschränkungen 1: Nur mit Kleinfahrzeug (bis 3.5t) 2: Nur mit LKW-Solo (bis 18t) |
delivery_access_restriction_display String Nicht schreibbar |
Siehe delivery_access_restriction. |
needs_crane_delivery Boolean |
Wird ein Kran fürs Entladen benötigt. |
packets List Erforderlich |
Frachtstücke (siehe Packet ) |
events List Nicht schreibbar |
Liste mit allen Sendungs-Events (siehe ShipmentEvent ) |
uploaded_documents List Nicht schreibbar |
Liste mit vom Kunden hochgeladenen Dokumenten. Ein Dokument besteht aus folgenden Keys: "type" (0: Eigener Lieferschein, 1: Dokument zu Gefahrgut, 2: Bild der Ware, 3: Anderes Dokument), "type_display", "filename" und "url". |
generated_documents List Nicht schreibbar |
Liste mit Objekten für generierte Dokumente. Ein Dokument besteht aus folgenden Keys: "document_type", "file_type" und "url". Als Beispiel können dies Lieferschein, Lieferbestätigung oder die Labels sein als PDF sein. |
locations Dictionary Nicht schreibbar |
Daten zu Mehrladestelle oder Mehrabladestellen. Aufgeteilt nach "pick" und "delivery". "pick" und "delivery" haben jeweils folgende Keys: "company", "first_name", "last_name", "address", "zip", "location", "phone" und "description". |
signatures Dictionary Nicht schreibbar |
Unterschriften, aufgeteilt nach Abholung "pick" und Lieferung "delivery". "pick" und "delivery" haben jeweils folgende Keys: "name" (Name der Person) und "image" URL auf Unterschirftsbild. |
images Dictionary Nicht schreibbar |
Sendungsbilder, aufgeteilt nach Abholung "pick" und Lieferung "delivery". "pick" und "delivery" sind jeweils Listen mit URLs auf die Bilder. |
meta_data Dictionary Default: null |
Meta-Daten zur Sendung. Key - Value. |
{
"number": "094626737889017",
"number_formatted": "09-4626-7378-89017",
"shipment_type": 0,
"shipment_type_display": "Standard",
"price": 36895,
"price_mode": 0,
"price_mode_display": "Pickwings price",
"auction_min_price": null,
"auction_max_price": null,
"auction_duration": null,
"delivery_state_display": "Akzeptiert",
"bundle": false,
"tracking_hash": "d8416a55-43a2-4bba-8ec3-ff101a955723",
"tracking_link": "https://pickwings.ch/de/tracking/d8416a55-43a2-4bba-8ec3-ff101a955723",
"dangerous_load": false,
"lifting_ramp_necessary": false,
"insured": false,
"chilled_load": true,
"chilled_temperature": -8,
"truck_buildup": 1,
"truck_buildup_display": "Tarpaulin",
"pickup_company": "Abholfirma",
"pickup_first_name": "",
"pickup_last_name": "",
"pickup_address": "Baarermattstrasse 8a",
"pickup_address_line2": "",
"pickup_zip": "6340",
"pickup_location": "Baar",
"pickup_phone": "+41 44 533 04 90",
"pickup_email": "info@pickwings.ch",
"pickup_date": "2020-03-02",
"pickup_time_start": "08:30",
"pickup_time_end": "09:30",
"pickup_reference_number": "1111",
"pickup_description": "Bei Tor 5 anfahren",
"pickup_phone_call": false,
"pickup_floor_pickup": false,
"pickup_noon_possible": false,
"pickup_email_language": "de",
"pickup_on_delivery_day_possible": true,
"lodge_pickup": false,
"lodge_pickup_description": null,
"needs_second_person_pickup": true,
"truck_max_height_pickup": null,
"pickup_access_restriction": 0,
"pickup_access_restriction_display": "No restrictions",
"needs_crane_pickup": false,
"delivery_company": "Zustellfirma",
"delivery_first_name": "",
"delivery_last_name": "",
"delivery_address": "Baarermattstrasse 8a",
"delivery_address_line2": "",
"delivery_zip": "6340",
"delivery_location": "Baar",
"delivery_phone": "+41 44 533 04 90",
"delivery_email": "info@pickwings.ch",
"delivery_date": "2020-03-05",
"delivery_time_start": "08:30",
"delivery_time_end": "12:30",
"delivery_reference_number": "2222",
"delivery_description": "",
"delivery_phone_call": false,
"delivery_floor_delivery": false,
"delivery_noon_possible": false,
"delivery_email_language": "de",
"lodge_delivery": true,
"lodge_delivery_description": "In front of the door",
"needs_second_person_delivery": true,
"neutral_delivery": true,
"neutral_delivery_comment": null,
"truck_max_height_delivery": 3.5,
"delivery_access_restriction": 0,
"delivery_access_restriction_display": "No restrictions",
"needs_crane_delivery": false,
"packets": [
{
"name": "Handelsware Packstück 1",
"description": "Handelsware palettiert und geschrumpft",
"type": 1,
"type_display": "Euro Palette (80cm x 120cm)",
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 5,
"value": 0.0,
"is_dangerous_load": false,
"qrcodes": [
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>"
]
},
{
"name": "Handelsware Packstück 2",
"description": "Handelsware palettiert und geschrumpft",
"type": 1,
"type_display": "Euro Palette (80cm x 120cm)",
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 4,
"value": 0.0,
"is_dangerous_load": false,
"qrcodes": [
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>",
"<?xml version='1.0' encoding='UTF-8'?><svg>...svgcode...</svg>"
]
}
],
"events": [
{
"date_time": "2018-02-09T15:46:42.463552+01:00",
"type": 1,
"type_display": "create"
},
{
"date_time": "2018-02-12T09:56:28.046553+01:00",
"type": 2,
"type_display": "accept"
}
],
"uploaded_documents": [
{
"type": 0,
"type_display": "Eigener Lieferschein",
"filename": "Lieferschein-42.pdf",
"url": "https://pickwings.ch/...TODO.../lieferschein-42.pdf"
}
],
"generated_documents": [
{
"document_type": "delivery_slip",
"file_type": "application/pdf",
"url": "https://api.pickwings.ch/api/v2/f/s/gd/094626737889017/delivery_slip"
},
{
"document_type": "delivery_confirmation",
"file_type": "application/pdf",
"url": "https://api.pickwings.ch/api/v2/f/s/gd/094626737889017/delivery_confirmation"
},
{
"document_type": "label_a",
"file_type": "application/pdf",
"url": "https://api.pickwings.ch/api/v2/f/s/gd/094626737889017/label_a"
}
],
"locations": {
"pick": [
{
"company": "Abholfirma Ladestelle 2",
"first_name": "",
"last_name": "",
"address": "Baarermattstrasse 8a",
"zip": "6340",
"location": "Baar",
"phone": "+41 44 533 04 90",
"description": "Hinter dem Gebäude"
}
],
"delivery": [
{
"company": "Zustellfirma Abladestelle 2",
"first_name": "",
"last_name": "",
"address": "Baarermattstrasse 8a",
"zip": "6340",
"location": "Baar",
"phone": "+41 44 533 04 90",
"description": "Bei Tor 3"
}
]
},
"signatures": {
"pick": {
"name": "Hans Muster",
"image": "https://api.pickwings.ch/..."
},
"delivery": {
"name": "Hans Muster",
"image": "https://api.pickwings.ch/..."
}
},
"images": {
"pick": [
"https://api.pickwings.ch/... img1"
],
"delivery": [
"https://api.pickwings.ch/... img1",
"https://api.pickwings.ch/... img2"
]
},
"meta_data": {
"key0": "value0",
"key1": "value1"
}
}
Feld | Beschreibung |
---|---|
name String (max. 255 characters) Erforderlich |
Name des Frachtstückes. |
description String (max. 1200 characters) Default: null |
Beschreibung des Frachtstückes. |
type Integer Erforderlich |
Typ des Frachtstückes: 1: Euro Palette (80cm x 120cm) 4: Einweg-Palette (max. 120cm x 120cm) 3: Anderes |
type_display String Nicht schreibbar |
Siehe type. |
stackable Boolean Erforderlich |
Ist das Frachtstück stapelbar. |
packed_for_transport Boolean Erforderlich |
Transporttüchtig verpackt. |
change_pallet Integer Erforderlich falls type == 1, sonst null |
Anzahl der Paletten zum tauschen. |
change_frame Integer Erforderlich falls type == 1, sonst null |
Anzahl der Rahmen zum tauschen. |
change_cover Integer Erforderlich falls type == 1, sonst null |
Anzahl der Deckel zum tauschen. |
weight Float Erforderlich |
Totalgewicht dieses Frachtstückes in Kilogram. Bsp. 4 Paletten à 200kg -> Totalgewicht: 8000kg |
length Float Erforderlich |
Länge des Frachtstückes in cm. |
width Float Erforderlich |
Breite des Frachtstückes in cm. |
height Float Erforderlich |
Höhe des Frachtstückes in cm. |
count Integer Erforderlich |
Anzahl Frachstücke |
value Float Default: -1 |
Total Warenwert aller Frachtstücke in CHF. Bsp. 4 Paletten mit Warenwert von je CHF 200.- -> Totalwarenwert: CHF 800.- |
is_dangerous_load Boolean Erforderlich |
Ist das Frachtstück Gefahrgut |
un_number String Erforderlich falls is_dangerous_load == true, sonst null |
UN Nummer |
packing_unit String Erforderlich falls is_dangerous_load == true, sonst null |
Packeinheit |
dangerous_points Integer Erforderlich falls is_dangerous_load == true, sonst null |
Gefahrgutpunkte |
qrcodes List Nicht schreibbar |
QR Codes für die einzelnen Frachtstücke. Format: SVG |
{
"name": "Handelsware",
"description": "Beschreibung der Ware",
"type": 1,
"type_display": "Euro Palette",
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 2,
"value": 0.0,
"is_dangerous_load": true,
"un_number": "UN1234",
"packing_unit": "Kanister a 5l",
"dangerous_points": 123,
"qrcodes": [
"<svg>...svgcode...</svg>",
"<svg>...svgcode...</svg>"
]
}
Feld | Beschreibung |
---|---|
date_time String (Datum ISO Format) Nicht schreibbar |
Datum und Zeit des Events |
type Integer Nicht schreibbar |
Event Typ: 0: create draft 1: create 2: accept 3: pick 4: deliver 7: tohub 9: in delivery 10: incident 11: canceled 12: added invoice item 301: edited pickup address 302: edited delivery address 303: edited pickup date and time 304: editet delivery date and time 306: edited cargo item 307: edited options 308: added cargo item 309: removed cargo item |
type_display String Nicht schreibbar |
Event-Typ Text. |
{
"date_time": "2018-02-09T15:46:42.463552+01:00",
"type": 1,
"type_display": "create"
}
Feld | Beschreibung |
---|---|
shipment_type Integer Default: 0 |
Typ der Sendung: 0: Standard Tag A / Tag B 1: Express Tag A / Tag A 3: Flexibel |
shipment_type_display String Nicht schreibbar |
Siehe shipment_type. |
price_mode Integer Nicht schreibbar |
Preis Modus: 0: Pickwings Preis |
price_mode_display String Nicht schreibbar |
Siehe price_mode. |
price Integer Nicht schreibbar |
Preis in Rappen (exkl. MwSt.). |
pickup_company String Default: null |
Ladeort Firmenname. |
pickup_first_name String Default: null |
Ladeort Vorname Kontakt. |
pickup_last_name String Default: null |
Ladeort Nachname Kontakt. |
pickup_address String Erforderlich |
Abholadresse. |
pickup_address_line2 String Default: null |
Adresszusatz Abholung. |
pickup_zip String Erforderlich |
Ladeort Postleitzahl. |
pickup_location String Erforderlich |
Ladeort. |
pickup_phone String Default: null |
Telefonnummer Kontakt Abholung. |
pickup_email String Default: null |
Kontakt Email Adresse für Abholung. Falls vorhanden werden folgende Informationen an diese Email-Adresse gesendet: Abholavisierung, Lieferbestätigung. |
pickup_date String mit Format: 'yyyy-mm-dd' Erforderlich |
Abholdatum. Siehe Bemerkung unter Allgemeines. |
pickup_time_start String mit Format: 'hh:mm' Erforderlich |
Startzeit für Abholzeitfenster. |
pickup_time_end String mit Format: 'hh:mm' Erforderlich |
Schlusszeit für Abholzeitfenster. |
pickup_reference_number String Default: null |
Referenznummer des Kunden. Erscheint auf der Rechnung und dem Lieferschein. |
pickup_description String Default: null |
Zusatzinformationen zum Ladeort. |
pickup_phone_call Boolean Default: false |
Ist eine Abholavisierung notwendig. Bei Abholung von Privatadresse wird die Avisierung automatisch gesetzt. |
pickup_floor_pickup Boolean Default: false |
Muss die Fracht in einem Stockwerk abgeholt werden. |
pickup_noon_possible Boolean Default: true |
Abholung über den Mittag möglich. |
pickup_email_language String 'de', 'fr', 'it', 'en' Default: 'de' |
Korrespondenzsprache für E-Mail Nachrichten bei der Abholung. Nachrichten werden zur Zeit nur in Deutsch versendet. |
pickup_on_delivery_day_possible Boolean Default: true |
Abholung am Liefertag möglich. |
lodge_pickup Boolean Default: false |
Ist die Ware bei der Abholung deponiert. |
lodge_pickup_description String Default: null |
Beschreibung zur Deponierung bei der Abolung. |
needs_second_person_pickup Boolean Default: false |
Weiteres Hilfspersonal bei Abholung benötigt. |
truck_max_height_pickup Float Default: null |
Höhenbeschränkung beim Abholhort. |
pickup_access_restriction Integer Default: 0 |
Zufahrtsbeschränkung bei Abholung. 0: Keine Einschränkungen 1: Nur mit Kleinfahrzeug (bis 3.5t) 2: Nur mit LKW-Solo (bis 18t) |
pickup_access_restriction_display String Nicht schreibbar |
Siehe pickup_access_restriction. |
needs_crane_pickup Boolean Default: false |
Wird ein Kran für das Laden benötigt. |
delivery_company String Default: null |
Lieferort Firma. |
delivery_first_name String Default: null |
Lieferort Vorname Kontakt. |
delivery_last_name String Default: null |
Lieferort Nachname Kontakt. |
delivery_address tring Erforderlich |
Lieferort Adresse. |
delviery_address_line2 String Default: null |
Adresszusatz Zustellung. |
delivery_zip String Erforderlich |
Lieferort Postleitzahl. |
delivery_location String Erforderlich |
Lieferort. |
delivery_phone String Default: null |
Telefonnummer Kontakt Lieferung. |
delivery_email String Default: null |
Kontakt Email Adresse für Lieferung. Falls vorhanden werden folgende Informationen an diese Email-Adresse gesendet: Lieferavisierung, Lieferbestätigung |
delivery_date String mit Format 'yyyy-mm-dd' Erforderlich |
Lieferdatum. Siehe Bemerkung unter Allgemeines. |
delivery_time_start String mit Format 'hh:mm' Erforderlich |
Startzeit für Lieferzeitfenster. |
delivery_time_end String mit Format 'hh:mm' Erforderlich |
Schlusszeit für Lieferzeitfenster. |
delivery_reference_number String Default: null |
Referenznummer des Empfängers. Erscheint auf der Rechnung und dem Lieferschein. |
delivery_description String Default: null |
Zusatzinformationen für Lieferort. |
delivery_phone_call Boolean Default: false |
Ist eine Lieferavisierung notwendig. Bei Lieferung an Privatadresse wird die Avisierung automatisch gesetzt. |
delivery_floor_delivery Boolean Default: false |
Muss die Fracht in ein Stockwerk verbracht werden. |
delivery_noon_possible Boolean Default: true |
Lieferung über den Mittag möglich. |
delivery_email_language String 'de', 'fr', 'it', 'en' Default: 'de' |
Korrespondenzsprache für E-Mail Nachrichten bei der Lieferung. Nachrichten werden zur Zeit nur in Deutsch versendet. |
lodge_delivery Boolean Default: false |
Darf die Ware deponiert werden. |
lodge_delivery_description String Default: null |
Beschreibung zur Deponierung bei der Lieferung. |
needs_second_person_delivery Boolean Default: false |
Weiteres Hilfspersonal bei Lieferung benötigt. |
neutral_delivery Boolean Default: false |
Neutrale Lieferung. |
neutral_delivery_comment String Default: null |
Kommentar zur neutrale Lieferung. |
delivery_access_restriction Integer Default: 0 |
Zufahrtsbeschränkung bei Abholung. 0: Keine Einschränkungen 1: Nur mit Kleinfahrzeug (bis 3.5t) 2: Nur mit LKW-Solo (bis 18t) |
delivery_access_restriction_display String Nicht schreibbar |
Siehe delivery_access_restriction. |
needs_crane_delivery Boolean Default: false |
Wird ein Kran fürs Entladen benötigt. |
truck_max_height_delivery Float Default: null |
Höhenbeschränkung beim Lieferort. |
truck_buildup Integer Default: 0 |
Fahrzeugaufbau. 0: Keine Vorgaben 1:Planen-Fahrzeug 2:'Kasten-Fahrzeug (ISO) 3:Kühl-Fahrzeug 4:Offenes Fahrzeug |
truck_buildup_display String Nicht schreibbar |
Siehe truck_buildup. |
dangerous_load Boolean Nicht schreibbar |
Ist Gefahrgut. Gefahrgutangaben können pro Packstück festgelegt werden. |
lifting_ramp_necessary Boolean Default: true |
Braucht Hebebühne. |
insured Boolean Default: false |
Muss versichert werden. |
chilled_load Boolean Default: false |
Muss gekühlt werden. |
chilled_temperature Integer Erforderlich falls chilled_load == true, sonst null |
Gewünschte Kühltemperatur. |
bundle Boolean Default: false |
Sendung für Abholung bündeln. |
packets List Erforderlich |
Frachtstücke (siehe DraftPacketQuote ). |
meta_data Dictionary Default: null |
Meta-Daten zur Sendung. Key - Value. |
{
"shipment_type": 0,
"shipment_type_display": "Standard",
"price_mode": 0,
"price_mode_display": "Pickwings price",
"price": 33200,
"pickup_company": "Abholfirma",
"pickup_first_name": "",
"pickup_last_name": "",
"pickup_address": "Baarermattstrasse 8a",
"pickup_address_line2": "",
"pickup_zip": "6340",
"pickup_location": "Baar",
"pickup_phone": "+41 44 533 04 90",
"pickup_email": "info@pickwings.ch",
"pickup_date": "2020-03-02",
"pickup_time_start": "08:30",
"pickup_time_end": "09:30",
"pickup_reference_number": "1111",
"pickup_description": "Bei Tor 5 anfahren",
"pickup_phone_call": false,
"pickup_floor_pickup": false,
"pickup_noon_possible": false,
"pickup_email_language": "de",
"pickup_on_delivery_day_possible": true,
"lodge_pickup": false,
"lodge_pickup_description": "",
"needs_second_person_pickup": false,
"truck_max_height_pickup": 3.5,
"pickup_access_restriction": 0,
"pickup_access_restriction_display": "No restrictions",
"needs_crane_pickup": false,
"delivery_company": "Zustellfirma",
"delivery_first_name": "",
"delivery_last_name": "",
"delivery_address": "Baarermattstrasse 8a",
"delivery_address_line2": "",
"delivery_zip": "6340",
"delivery_location": "Baar",
"delivery_phone": "+41 44 533 04 90",
"delivery_email": "info@pickwings.ch",
"delivery_date": "2020-03-05",
"delivery_time_start": "08:30",
"delivery_time_end": "12:30",
"delivery_reference_number": "2222",
"delivery_description": "",
"delivery_phone_call": false,
"delivery_floor_delivery": false,
"delivery_noon_possible": false,
"delivery_email_language": "de",
"lodge_delivery": false,
"lodge_delivery_description": "",
"needs_second_person_delivery": false,
"neutral_delivery": false,
"neutral_delivery_comment": "",
"delivery_access_restriction": 0,
"delivery_access_restriction_display": "No restrictions",
"needs_crane_delivery": false,
"truck_max_height_delivery": 3.5,
"truck_buildup": 1,
"truck_buildup_display": "Tarpaulin",
"dangerous_load": false,
"lifting_ramp_necessary": true,
"insured": false,
"chilled_load": true,
"chilled_temperature": -6,
"bundle": false,
"packets": [
{
"name": "Handelsware Packstück 1",
"description": "Handelsware palettiert und geschrumpft",
"type": 1,
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 5,
"value": 0.0,
"is_dangerous_load": true,
"un_number": "2550",
"packing_unit": "-",
"dangerous_points": 4600
},
{
"name": "Handelsware Packstück 2",
"description": "Handelsware palettiert und geschrumpft",
"type": 1,
"type_display": "Euro Palette (80cm x 120cm)",
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 4,
"value": 0.0,
"is_dangerous_load": false,
"un_number": null,
"packing_unit": null,
"dangerous_points": null
}
],
"meta_data": {
"key0": "value0",
"key1": "value1"
}
}
Feld | Beschreibung |
---|---|
name String (max. 255 characters) Default: null |
Name des Frachtstückes. |
description String (max. 1200 characters) Default: null |
Beschreibung des Frachtstückes. |
type Integer Erforderlich |
Typ des Frachtstückes: 1: Euro Palette (80cm x 120cm) 3: Anderes 4: Einweg-Palette (max. 120cm x 120cm) |
type_display String Nicht schreibbar |
Siehe type. |
stackable Boolean Default: false |
Ist das Frachtstück stapelbar. |
packed_for_transport Boolean Default: true |
Transporttüchtig verpackt. |
change_pallet Integer Erforderlich falls type == 1, sonst Default: 0 |
Anzahl der Paletten zum tauschen. |
change_frame Integer Erforderlich falls type == 1, sonst Default: 0 |
Anzahl der Rahmen zum tauschen. |
change_cover Integer Erforderlich falls type == 1, sonst Default: 0 |
Anzahl der Deckel zum tauschen. |
weight Float Erforderlich |
Totalgewicht dieses Frachtstückes in Kilogram. Bsp. 4 Paletten à 200kg -> Totalgewicht: 8000kg |
length Float Erforderlich |
Länge des Frachtstückes in cm. |
width Float Erforderlich |
Breite des Frachtstückes in cm. |
height Float Erforderlich |
Höhe des Frachtstückes in cm. |
count Integer Erforderlich |
Anzahl Frachstücke |
value Float Default: null |
Total Warenwert aller Frachtstücke in CHF. Bsp. 4 Paletten mit Warenwert von je CHF 200.- -> Totalwarenwert: CHF 800.- |
is_dangerous_load Boolean Default: false |
Ist das Frachtstück Gefahrgut |
un_number String Erforderlich falls is_dangerous_load == true, sonst Default: null |
UN Nummer |
packing_unit String Erforderlich falls is_dangerous_load == true, sonst Default: null |
Packeinheit |
dangerous_points Integer Erforderlich falls is_dangerous_load == true, sonst Default: null |
Gefahrgutpunkte |
{
"name": "Handelsware Packstück 1",
"description": "Handelsware palettiert und geschrumpft",
"type": 1,
"type_display": 1,
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 1000.0,
"length": 120.0,
"width": 80.0,
"height": 160.0,
"count": 5,
"value": 250.0,
"is_dangerous_load": true,
"un_number": "2550",
"packing_unit": "-",
"dangerous_points": 4600
}
Feld | Beschreibung |
---|---|
token String Nicht schreibbar |
Token für die Freigabe der Sendung |
valid_until String (Datum ISO Format) Nicht schreibbar |
Gültigkeit des Tokens |
price Integer Nicht schreibbar |
Preis für die Sendung in Rappen |
draft_shipment DraftShipmentQuote Nicht schreibbar |
Siehe DraftShipmentQuote |
{
"token": "4c553421-b162-4fda-91e6-ad7190d7bef9",
"valid_until": "2019-03-14T11:22:40.057000+01:00",
"price": 43200,
"draft_shipment": {
"shipment_type": 1,
"shipment_type_display": "Express",
"price_mode": 0,
"price_mode_display": "Pickwings price",
"price": 43200,
"pickup_company": "",
"pickup_first_name": null,
"pickup_last_name": null,
"pickup_address": "Tellenmattstrasse 43",
"pickup_address_line2": "",
"pickup_zip": "6317",
"pickup_location": "Oberwil b. Zug",
"pickup_phone": "0797287243",
"pickup_email": "",
"pickup_date": "2019-12-27",
"pickup_time_start": "08:00:00",
"pickup_time_end": "09:00:00",
"pickup_reference_number": "",
"pickup_description": "",
"pickup_phone_call": true,
"pickup_floor_pickup": false,
"pickup_noon_possible": true,
"pickup_email_language": "de",
"pickup_on_delivery_day_possible": false,
"lodge_pickup": false,
"lodge_pickup_description": null,
"needs_second_person_pickup": false,
"truck_max_height_pickup": 3.4544,
"pickup_access_restriction": 0,
"pickup_access_restriction_display": "No restrictions",
"needs_crane_pickup": false,
"delivery_company": "",
"delivery_first_name": null,
"delivery_last_name": null,
"delivery_address": "Uferweg 23",
"delivery_address_line2": "",
"delivery_zip": "3920",
"delivery_location": "Zermatt",
"delivery_phone": "079 666 66 66",
"delivery_email": "",
"delivery_date": "2019-12-27",
"delivery_time_start": "13:00:00",
"delivery_time_end": "14:00:00",
"delivery_reference_number": "",
"delivery_description": "",
"delivery_phone_call": true,
"delivery_floor_delivery": false,
"delivery_noon_possible": true,
"delivery_email_language": "de",
"lodge_delivery": false,
"lodge_delivery_description": null,
"needs_second_person_delivery": false,
"neutral_delivery": false,
"neutral_delivery_comment": null,
"delivery_access_restriction": 0,
"delivery_access_restriction_display": "No restrictions",
"needs_crane_delivery": false,
"bundle": false,
"truck_max_height_delivery": null,
"truck_buildup": 1,
"truck_buildup_display": "Tarpaulin",
"dangerous_load": false,
"lifting_ramp_necessary": true,
"insured": false,
"chilled_load": false,
"chilled_temperature": null,
"packets": [
{
"name": "Fernseher",
"description": "",
"type": 3,
"type_display": "Anderes",
"stackable": false,
"packed_for_transport": true,
"change_pallet": 0,
"change_frame": 0,
"change_cover": 0,
"weight": 12.0,
"length": 80.0,
"width": 3.0,
"height": 40.0,
"count": 1,
"value": 200.0,
"is_dangerous_load": false,
"un_number": null,
"packing_unit": null,
"dangerous_points": null
}
],
"meta_data": {}
}
}
Feld | Beschreibung |
---|---|
id Integer |
ID des Webhook-Events |
event_type String |
Typ des Webhook-Events: shipment_accept shipment_pick shipment_athub shipment_indelivery shipment_deliver |
date_time String (ISO Date Format) |
Datum und Zeit des Webhook-Events |
data Dictionary |
Daten zum Event. Die Daten unterscheiden sich anhand des Event-Typs. |
Feld | Beschreibung |
---|---|
shipment_number String |
Sendungsnummer |
company String |
Name des Transportpartners |
date_time String (ISO Date Format) |
Datum und Zeit des Events |
Feld | Beschreibung |
---|---|
shipment_number String |
Sendungsnummer |
date_time String (ISO Date Format) |
Datum und Zeit des Events |
comment String |
Abholkommentar. |
signature Dictionary |
Dictionary mit Keys: name: Name der Unterschrift |
Feld | Beschreibung |
---|---|
shipment_number String |
Sendungsnummer |
date_time String (ISO Date Format) |
Datum und Zeit des Events |
Feld | Beschreibung |
---|---|
shipment_number String |
Sendungsnummer |
date_time String (ISO Date Format) |
Datum und Zeit des Events |
comment String |
Zustellkommentar. |
signature Dictionary |
Dictionary mit Keys: name: Name der Unterschrift |
conditional Boolean |
Ware mit Vorbehalt entgegen genommen. |
{
"id": 1,
"event_type": "pick",
"date_time": "2018-02-09T15:46:42.463552+01:00",
"data": {
"shipment_number": "094626737889017",
"date_time": "2018-02-09T15:46:00.000000+01:00",
"comment": "",
"signature": {
"name": "Max Muster"
},
}
}