Jak zwiększyć sprzedaż w okresie świątecznym z Kauflandem i Apilo? Zapisz się na darmowy webinar!

Apilo

[API] Tworzenie nowej przesyłki w Apilo

Połączenie z Shoper Połączenie z kontem Allegro Połączenie z Erli.pl Połączenie z kontem eBay Połączenie z kontem Amazon Połączenie z Empik Połączenie z Decathlon Połączenie z OLX Połączenie z Morele Marketplace Połączenie z Ceneo.pl Lista programów magazynowo – księgowych, które podłączysz pod Apilo Połączenie z Kaufland DE / PL / CZ / SK Połączenie z Shopify Połączenie z Etsy.com Połączenie z InPost Fresh Połączenie z IdoSell Połączenie z Prestashop Połączenie z WooCommerce Połączenie z ShopGold Połączenie z eMag Połączenie z RedCart Połączenie z Labelcall Połączenie z Magento Połączenie z kurierem Inpost Wysyłam z Allegro, Allegro Smart, Allegro One Połączenie z kurierem Rohling Suus Połączenie z kurierem DPD Połączenie z kurierem GLS Połączenie z kurierem UPS Połączenie z kurierem DHL Polska Połączenie z kurierem Poczta Polska Połączenie z Orlen Paczka Połączenie z Eurohermes Połączenie z kurierem Raben Połączenie z kurierem DPD (Niemcy) Połączenie z kurierem DHL (Niemcy) Połączenie z brokerem Erli.pl Połączenie z brokerem Furgonetka.pl Połączenie z brokerem Apaczka Połączenie z brokerem BliskaPaczka Lista wszystkich kurierów i brokerów, których podłączysz pod Apilo Magazyn Apilo – na podstawie zewnętrznego programu magazynowo – księgowego typu ERP Połączenie z wFirma.pl – faktury i paragony Połączenie z FakturaXL – faktury Połączenie z Fakturownia.pl – faktury i paragony Połączenie z inFakt Połączenie z Shoper Faktury i Magazyn Połączenie z iFirma.pl Połączenie z Subiekt GT – łącznik Sellintegro Połączenie z Subiekt GT/Nexo/Nexo Pro – łącznik integratory.pl Paragony – podłączenie drukarki fiskalnej Obsługa zamówień z wykorzystaniem skanera kodów kreskowych Kody kreskowe EAN – Skaner kodów kreskowych Etykiety – Podłączenie etykieciarki i drukowanie etykiet prosto na drukarkę (PrintNode)

Proces tworzenia nowej przesyłki za pomocą Apilo jest wieloetapowy i wymaga uprzedniej konfiguracji konta.

Konfiguracja:

– dodanie kont integracji kurierskich do konta w Apilo za pomocą formularza pod adresem

https://{{apilo_client_account}}.apilo.pl/admin/carrier-account/

Gdy zostaną utworzone konta integracji kurierskich, można przystąpić do pobiera informacji potrzebnych do utworzenia

nowej przesyłki:

– identyfikator konta kuriera (dodany w kroku Konfiguracja powyżej)

– metoda wysyłki (jeśli inna niż default)

– opcje przesyłki i pakowania (waga, wymiary)

Jak pobrać identyfikator konta kuriera? (kontekst tworzenia nowej przesyłki w Apilo)

 

Służy do tego endpoint:

GET https://{{apilo_client_account}}.apilo.pl/rest/api/shipping/carrier-account/map/

Zwrócona odpowiedź:

{
"carrierAccounts": [
{
"id": 1,
"key": "CARRIER_ACCOUNT_143_1",
"name": "AllegroBroker",
"description": "Wysyłam z Allegro",
"options": {
"isPickupInShipmentCreation": false,
"isPickupInShipmentConfirmation": true,
"isShipmentConfirmationRequired": true
}
},

{
"id": 3,
"key": "CARRIER_ACCOUNT_3_3",
"name": "Inpost",
"description": "Inpost (Kurier, Paczkomaty, Allegro)",
"options": {
"isPickupInShipmentCreation": false,
"isPickupInShipmentConfirmation": false,
"isShipmentConfirmationRequired": false
}
},
...
]
}

Zwrócone identyfikatory (pole: id) posłużą za argumenty do kolejnego endpointu.

Warto jednak przeanalizować otrzymane wraz z nimi opcje:

isPickupInShipmentCreation – informuje czy podjazd kuriera w ustalonych godzinach jest możliwy do zadeklarowania już na etapie tworzenia przesyłki

isPickupInShipmentConfirmation – informuje czy podjazd kuriera w ustalonych godzinach jest możliwy do zadeklarowania na etapie potwierdzenia przesyłki

isShipmentConfirmationRequired – informuje czy wymagane jest potwierdzenie przesyłki

Wartości zwrócone dla tych opcji mają wpływ na możliwość skorzystania z funkcjonalności zamawiania podjazdu kuriera i wiążą się z wywołaniem kolejnych endpoint-ów. Na ten moment można zamawiać podjazd jedynie poprzez „Wysyłam z Allegro”.

Jak pobrać metody wysyłki? (kontekst tworzenia nowej przesyłki w Apilo)

 

GET https://{{apilo_client_account}}.apilo.pl/rest/api/shipping/carrier-account/{{carrier_account_id}}/method/

gdzie:

{{carrier_account_id}} - identyfikator pobrany w poprzednim endpoincie, np. 1 dla Allegro.

Nie jest to wartość stała. Identyfikatory kont integracji kurierskich są nadawane

indywidualnie dla każdego klienta Apilo, a także zależą od kolejności ich dodawania w kroku Konfiguracja powyżej.

Zwrócona odpowiedź (fragment):

{
"methods": [
{
"id": "12d2c05d-5807-4fbe-8471-1ad29a637bdc",
"name": "Allegro Kurier Express One pobranie"
},
{
"id": "02d2c05d-e7f3-494f-a597-1ad29a637bdc",
"name": "Allegro Kurier Express One"
},
{
"id": "0099dbaa-be2e-430d-8f94-ab9c86ea6a5e",
"name": "Allegro Odbiór w Punkcie Express One"
},
{
"id": "1099dbaa-5a98-4c2a-a7b4-ab9c86ea6a5e",
"name": "Allegro Odbiór w Punkcie Express One pobranie"
},
{
"id": "0a6f5534-8f51-4912-ac40-2be5bbc1bd4d",
"name": "Allegro Automat Express One"
},
{
"id": "1a6f5534-a3b3-4cc7-bc02-2be5bbc1bd4d",
"name": "Allegro Automat Express One pobranie"
},
{
"id": "025cb739-ef8e-45c4-9e7b-ce4e7fece8be",
"name": "Allegro Odbiór w Punkcie ORLEN Paczka"
},
{
"id": "09164667-daa5-42dc-8087-33d7485790ac",
"name": "Allegro Automat ORLEN Paczka"
},
{
"id": "0e4c7d59-64b6-4b06-89c3-c1d941506dd0",
"name": "Allegro Kurier UPS"
},
{
"id": "199d2a2a-7c90-4ca7-aaf3-c1d941506dd0",
"name": "Allegro Kurier UPS pobranie"
},
{
"id": "0d69a62b-7a66-4bd1-9134-49dea68dccc8",
"name": "Allegro Odbiór w Punkcie UPS"
},
{
"id": "0d021121-97e5-4729-9af6-a05779c6b835",
"name": "Allegro MiniPrzesyłka"
},
{
"id": "aa1d05e0-943b-47cb-a759-9d8c16707129",
"name": "Allegro Przesyłka polecona"
},
{
"id": "093d950b-8497-4cc7-aa2a-6081e5e7e7e2",
"name": "Allegro Kurier Pocztex"
},
{
"id": "028e2be0-1c06-41cf-a309-ec5557273786",
"name": "Allegro Odbiór w Punkcie Pocztex"
},
{
"id": "0fc30a71-a1c3-4572-8217-c29515a5f0d1",
"name": "Allegro Automat Pocztex"
},
{
"id": "0660145a-f92f-417d-a88b-effb8240eb45",
"name": "Allegro Odbiór w Punkcie ORLEN Paczka (ważna do 21.10.2024)"
},
{
"id": "04c33651-bd96-484b-a89b-06a797d8eff4",
"name": "Allegro Automat ORLEN Paczka (ważna do 21.10.2024)"
},
{
"id": "31a306e6be3e352f452421b42ad44e22",
"name": "ORLEN Paczka (Orlen sandbox)"
},
{
"id": "046452898438bde4c58502a5a4896dbf",
"name": "ORLEN Paczka pobranie (Orlen sandbox)"
},
{
"id": "fcd8b669172c42e370971d860edf496f",
"name": "Kurier InPost (Inpost sandbox) (KURIER)"
},
{
"id": "f55a99ec6a31dce861fa4ab58d897c2d",
"name": "Kurier InPost pobranie (Inpost sandbox) (KURIER)"
},
{
"id": "24f5c55531899af0c841b52b3bbc0a54",
"name": "Paczkomaty InPost (Inpost sandbox) (PACZKOMAT)"
},
{
"id": "e1137a63bb53d38d9ba610dc8f553e9e",
"name": "Paczkomaty InPost pobranie (Inpost sandbox) (PACZKOMAT)"
},
{
"id": "250dbb2f9996b8308540160d1a9e1886",
"name": "Allegro Kurier24 InPost (Inpost sandbox) (KURIER)"
},
{
"id": "6d5bbfcbe809007f4e546df77cbf5752",
"name": "Allegro Kurier24 InPost pobranie (Inpost sandbox) (KURIER)"
},
{
"id": "2533b181a0810f248181f8bf365d7fd2",
"name": "Allegro miniKurier24 InPost (Inpost sandbox) (KURIER)"
},
{
"id": "75f35102762de75d2a827113c9fa88b6",
"name": "Allegro miniKurier24 InPost pobranie (Inpost sandbox) (KURIER)"
},
{
"id": "ffc173ce598becbf1dc8943bf57d6870",
"name": "Allegro Paczkomaty InPost (Inpost sandbox) (PACZKOMAT)"
},
{
"id": "358ca81df104d7f7ae28228b959f926f",
"name": "Allegro Paczkomaty InPost pobranie (Inpost sandbox) (PACZKOMAT)"
},,
{
"id": "c3066682-97a3-42fe-9eb5-3beeccab840c",
"name": "Allegro Kurier DPD"
},
{
"id": "259b5c7a-9056-4c74-80ec-8bdc50cb0413",
"name": "Allegro Kurier DPD pobranie"
},
{
"id": "08e2ef8e-90c8-49db-8970-d6c2773f1530",
"name": "Allegro Odbiór w Punkcie DPD Pickup"
},
{
"id": "1d037bcd-7e6a-4713-9015-d6c2773f1530",
"name": "Allegro Odbiór w Punkcie DPD Pickup pobranie"
},
{
"id": "0c330aea-900f-4830-9de8-72fadd2a3916",
"name": "Allegro Automat DHL BOX 24\/7"
},
{
"id": "a3b4db98-4a70-4542-84ee-c642604d9d8a",
"name": "Allegro Kurier DHL"
},
{
"id": "07c12933-584e-453d-bee5-60f3f32dfc73",
"name": "Allegro Odbiór w Punkcie DHL"
},
{
"id": "0d83955a-4297-4169-adef-9790d53b11ff",
"name": "Allegro One Kurier - dostawa jutro"
},
{
"id": "1d83955a-69c8-407c-becc-9790d53b11ff",
"name": "Allegro One Kurier pobranie - dostawa jutro"
},
{
"id": "08c15d0b-9b24-4b3f-89a8-7a2b502abe55",
"name": "Allegro One Punkt, UPS"
},
{
"id": "0aafb43c-e66a-46ec-9cc4-29bb39ebb483",
"name": "Allegro One Box, UPS"
},
{
"id": "0b9bed2c-0bc1-4e1f-9694-29bb39ebb483",
"name": "Allegro One Box, One Kurier"
},
{
"id": "0ee3467f-5451-4060-856e-7a2b502abe55",
"name": "Allegro One Punkt, One Kurier"
},
{
"id": "0e454c54-21dd-4e5c-9db2-0553724f9077",
"name": "Allegro One Box, One Kurier - dostawa dzisiaj"
},
{
"id": "0b257488-c85d-4507-b967-9b45ffbfa2e8",
"name": "Allegro One Box, DPD"
},
{
"id": "09ef5a54-c34d-41ef-908e-9b45ffbfa2e8",
"name": "Allegro One Punkt, DPD"
}
]
}

Jak pobrać opcje przesyłki i pakowania? (kontekst tworzenia nowej przesyłki w Apilo)

 

GET https://{{apilo_client_account}}.apilo.pl/rest/api/shipping/carrier-account/{{carrier_account_id}}/method/{{method}}/map/

gdzie:

{{carrier_account_id}} – identyfikator konta integracji kurierskiej, np. 1 dla Allegro z przykładów powyżej

{{method}} – identyfikator metody, np. c3066682-97a3-42fe-9eb5-3beeccab840c dla Allegro Kurier DPD

Zwrócona odpowiedź:

{
"options": {
"id": "options",
"type": "definition",
"label": "Opcje przesyłki",
"multiple": false,
"properties": [
{
"id": "insurance",
"type": "money",
"label": "Wartość ubezpieczenia"
},
{
"id": "packageType",
"type": "choice",
"label": "Rodzaj przesyłki",
"choices": [
{
"value": "PACKAGE",
"label": "Paczka"
},
{
"value": "DOX",
"label": "Koperta (DOX)"
},
{
"value": "PALLET",
"label": "Paleta"
}
],
"multiple": false
},
{
"id": "services",
"type": "choice",
"label": "Usługi dodatkowe",
"choices": [
{
"value": "additionalHandling",
"label": "Paczka niestandardowa"
},
{
"value": "returnOfDocuments",
"label": "Dokumenty zwrotne"
},
{
"value": "collectionUponDelivery",
"label": "Przesyłka zwrotna"
},
{
"value": "guarantee0930",
"label": "Doręczenie do 09:30"
},
{
"value": "guarantee1200",
"label": "Doręczenie do 12:00"
},
{
"value": "guaranteeNextDay",
"label": "Doręczenie w następnym dniu roboczym"
},
{
"value": "saturdayDelivery",
"label": "Doręczenie w sobotę"
},
{
"value": "privateShipping",
"label": "Doręczenie do osoby prywatnej"
},
{
"value": "documentsSupply",
"label": "Dostarczenie dokumentów przewozowych przez kuriera"
},
{
"value": "personalDelivery",
"label": "Doręczenie do rąk własnych"
}
],
"multiple": true
},
{
"id": "dropoffPoint",
"type": "string",
"label": "Sposób nadania"
},
{
"id": "receiverParcel",
"type": "string",
"label": "Punkt odbioru"
},
{
"id": "comment",
"type": "string",
"label": "Komentarz"
}
],
"required": [
"packageType"
]
},
"parcels": {
"id": "parcels",
"type": "definition",
"label": "Opcje pakowania",
"multiple": true,
"properties": [
{
"id": "dimensions",
"type": "dimensions",
"label": "Wymiary"
},
{
"id": "weight",
"type": "integer",
"label": "Waga [gramy]"
}
],
"required": [
"dimensions",
"weight"
]
},
"maxParcelsCount": 1
}

UWAGA: Klucz „multiple” w ramach obiektów „options” i „parcels” (type: definition).

Oznacza, że w kolejnym endpoincie, tj. służącym do nadawania przesyłki, Apilo REST API oczekuje obiektu,

który zawiera 1 obiekt dla właściwości „options” i tablicy obiektów dla właściwości „parcels”. Najlepiej będzie to widoczne

na przykładzie w opisie kolejnego endpointu.

Jak utworzyć nową przesyłkę? (kontekst tworzenia nowej przesyłki w Apilo)

POST https://{{apilo_client_account}}.apilo.pl/rest/api/shipping/shipment/

W ramach treści żądania (body) należy przesłać obiekt JSON, który zawiera wszystkie wymagane właściwości.

Opcje dodatkowe są walidowane pod kątem poprawności, ale można je pominąć.

{
"carrierAccountId": 1,
"addressReceiver": {
"type": "house",
"name": "Jan Kowalski",
"streetName": "Kwiatowa",
"streetNumber": "1",
"zipCode": "01-001",
"city": "Warszawa",
"country": "PL",
"phone": "48500600700",
"email": "bb7ygt6xzx+5040fe591@user.allegrogroup.pl"
},
"orderId": "AL240800057",
"postDate": "2024-09-06T13:41:18+00:00",
"method": "c3066682-97a3-42fe-9eb5-3beeccab840c",
"options": [
{
"id": "insurance",
"type": "money",
"value": {
"amount": "2014.44",
"currency": "PLN"
}
},
{
"id": "packageType",
"type": "choice",
"value": ["PACKAGE"]
},
{
"id": "dropoffPoint",
"type": "string",
"value": "Allegro One Box, zielony automat||AL003KR1"
},
{
"id": "comment",
"type": "string",
"label": "Ostrożnie, paczka zawiera kruche elementy."
}
],
"parcels": [
{
"options": [
{
"id": "dimensions",
"type": "dimensions",
"value": {
"length": 50,
"width": 60,
"height": 70
}
},
{
"id": "weight",
"type": "integer",
"value": 2500
}
]
}
]
}

W odpowiedzi zostanie zwrócony ID nowoutworzonej przesyłki.

{
"shipments":[
{
"shipmentId": 169
}
]
}

W jakiej postaci przesłać wymiary ( dimensions) w parcels w akcji tworzenia paczki? (kontekst tworzenia nowej przesyłki w Apilo)

Sposób przekazania wymiarów jest zależny od integracji.

Znaczna część integracji stosuje postać:

{
"id": "dimensions",
"type": "dimensions",
"value": {
"length": 50,
"width": 60,
"height": 70
}
}

Jednak są wyjątki jak np. broker Allegro z metodą wysyłki Inpost Paczkomat:

{
"id": "dimensions",
"type": "choice",
"choices": [
{
"value": "A",
"label": "Gabaryt A - 64cm x 38cm x 8cm, 25kg"
},
{
"value": "B",
"label": "Gabaryt B - 64cm x 38cm x 19cm, 25kg"
},
{
"value": "C",
"label": "Gabaryt C - 64cm x 38cm x 41cm, 25kg"
}
]
}

Aby mieć pewność w jaka postać jest wymagane przez daną integrację, należy skorzystać z endpointu:

/rest/api/shipping/carrier-account/{carrierAccountId}/method/{method}/map/

Następnie zerknąć czy w polu parcels.properties[] jest obiekt z id dimensions i jaki jest jego typ.

Jeśli type = dimensions, to przesyłamy standardowy obiekt z length, width, height.

Jeśli type = choice, należy wówczas przesłać jedną z wylistowanych wartości.