Punkt końcowy i uwierzytelnianie
Wszystkie żądania w tym łańcuchu używają tego samego punktu końcowego. Co przesyłasz w nagłówkach, zależy od Twojej konfiguracji – wybierz swoją kartę.
URL:
https://api.zonos.com/graphql
Nagłówki:
Wysyłasz własne zamówienia na swoje konto zweryfikowane. Uwierzytelniaj się jako ty – nie jest potrzebny klucz konta.
credentialToken: {{YOUR_API_TOKEN}}
Gdzie go znaleźć: Pulpit nawigacyjny Zonos → Ustawienia → Integracje → sekcja Klucz konta. Skopiuj token w wierszu Klucz API; to jest Twój credentialToken.
Przykładowe żądanie
Pełne żądanie CreateDeclarationShipment, które możesz skopiować i dostosować – mutacja, jej zmienne i odpowiedź – dla pojedynczej paczki Japan Post wysłanej DDP do USA. Każde wejście zostało rozbite w sekcji krok po kroku poniżej.
mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) { partyCreateWorkflow(input: $partyInput) { id type location { line1 locality postalCode countryCode } } itemCreateWorkflow(input: $itemInput) { id name sku amount currencyCode hsCode } cartonsCreateWorkflow(input: $cartonInput) { id length width height dimensionalUnit weight weightUnit } shipmentRatingCreateWorkflow(input: $shipmentRatingInput) { id amount } landedCostCalculateWorkflow(input: $landedCostInput) { id method currencyCode amountSubtotals { duties taxes fees shipping landedCostTotal } } shipmentCreateWorkflow(input: $shipmentInput) { id trackingDetails { number } shipmentCartons { label { url } } }}Krok po kroku
Kolumna Status w każdej tabeli poniżej używa tych terminów:
- Wymagane – żądanie nie powiedzie się bez tego.
- Wymagane dla etykiety – opcjonalne w schemacie GraphQL, ale potrzebne do utworzenia ważnej etykiety Japan Post USA.
- Warunkowe – wymagane w zależności od innego pola (zanotowane w tekście).
- Rekomendowane – opcjonalne, ale zapewnia dokładne cła i podatki.
- Opcjonalne – nie jest potrzebne.
1. partyCreateWorkflow
Tworzy strony zaangażowane w przesyłkę – co najmniej ORIGIN (skąd wysyłka wysyła) i DESTINATION (kupujący / adresat).
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
type | Wymagane | ORIGIN, DESTINATION, RETURN, itp. |
location.countryCode | Wymagane | Kod kraju ISO-2. |
location.line1, locality, administrativeAreaCode, postalCode | Wymagane dla etykiety | Pola adresu potrzebne do ważnej etykiety. |
person.firstName, lastName, phone | Wymagane dla etykiety | Szczegóły kontaktu potrzebne do ważnej etykiety. |
person.companyName, email | Opcjonalne |
Przykładowe ładowanie:
[
{ "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
{ "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]
Odpowiedź zwraca utworzone identyfikatory Party i rozwiązane pola adresu.
2. itemCreateWorkflow
Tworzy pozycje linii, które tworzą przesyłkę. Są to jednostki SKU, które pojawią się na fakturze handlowej i będą napędzać obliczenie kosztu przesłania.
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
currencyCode | Wymagane | Waluta ceny jednostkowej. |
quantity | Wymagane | Liczba jednostek tego elementu. |
amount | Warunkowe | Cena jednostkowa (nie całkowita). Wymagane, chyba że podano totalAmount. |
totalAmount | Opcjonalne | Alternatywa dla amount; amount pochodzi z totalAmount / quantity. |
hsCode | Rekomendowane | Kod taryfowy Sharmonizowanego Systemu. Wpływa na stawki ceł. |
countryOfOrigin | Rekomendowane | Kod ISO-2 miejsca produkcji artykułu. Wpływa na cło / FTA. |
name, description | Rekomendowane | Nazwa produktu dostępna dla klienta + opis. |
customsDescription | Opcjonalne | Przesłonięcie opisu celnego. |
sku, productId | Opcjonalne | Twoje wewnętrzne identyfikatory. |
measurements | Opcjonalne | Waga / wymiary na jednostkę. |
Kod HS, kraj pochodzenia i kwota to trzy pola, które najbardziej wpływają na wynik cła / podatku w kroku 5.
3. cartonsCreateWorkflow
Tworzy paczki fizyczne – pudełka, worki foliowe lub listy, które będą zawierać artykuły.
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
dimensionalUnit | Wymagane | INCH lub CENTIMETER. |
weight, weightUnit | Wymagane dla etykiety | Japan Post wymaga wagi paczki. |
length, width, height | Opcjonalne | Wymiary zewnętrzne. |
type | Opcjonalne | Styl opakowania (pudełko, worek foliowy, list). Domyślnie PACKAGE. |
Każdy karton staje się jedną przesyłką na etykiecie przewoźnika w kroku 6. Wiele kartonów → przesyłka wieloczęściowa z jednym numerem śledzenia na karton.
4. shipmentRatingCreateWorkflow
Rejestruje ofertę stawki, którą kupiec pobiera od kupującego za wysyłkę.
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
amount | Wymagane | Co kupujący płaci za wysyłkę. Przesyłaj 0, jeśli jest darmowe. |
currencyCode | Wymagane | Waluta amount. |
serviceLevelCode | Wymagane | Kod usługi przewoźnika (np. japan_post.air.parcel). |
displayName | Opcjonalne | Ładna nazwa do paragonu / faktury. |
To jest stawka, którą kupujący otrzymał w kasie. Wpływa na obliczenie kosztu przesłania jako „wysyłka" podsumy, aby cła i podatki były obliczane względem prawidłowej wartości CIF.
5. landedCostCalculateWorkflow
Uruchamia obliczenie ceł, podatków i opłat dla kraju docelowego. Używa artykułów, stron i kosztu wysyłki z poprzednich kroków.
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
endUse | Wymagane | NOT_FOR_RESALE lub FOR_RESALE. Niektóre miejsca docelowe stosują różne stawki dla użytku handlowego w stosunku do osobistego. |
tariffRate | Wymagane | Domyślnie ZONOS_PREFERRED, jeśli pominięte. Mówi Zonosowi, które źródło taryfy / metodologię zastosować. |
calculationMethod | Rekomendowane | DDP (kupujący opłaca z góry) lub DDU (kupujący płaci przy drzwiach). Użyj DDP dla opłacone z góry. Określa, czy LandedCost.amountSubtotals obejmuje cło / podatek. |
currencyCode | Opcjonalne | Waluta zwrócenia podsumowań kosztu lądowania. |
arrivalDate | Opcjonalne | Kursy wymiany i harmonogramy taryf są przypięte do tej daty, jeśli jest podana. |
Odpowiedź zawiera amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) – to są liczby, które pokazujesz kupującemu w kasie i które są drukowane na fakturze handlowej.
6. shipmentCreateWorkflow
Krok terminalowy – tworzy encję Shipment, generuje etykietę przewoźnika i (opcjonalnie) fakturę handlową / podsumowanie paczki.
W przypadku kont zweryfikowanych Japan Post, tutaj Zonos wywołuje Japan Post Label API (kod 52) w Twoim imieniu, wstrzykuje numery Late Pay, tworzy identyfikator deklaracji i łączy identyfikator deklaracji z numerem śledzenia zwracanym przez Japan Post.
Pola kluczowe:
| Pole↕ | Status↕ | Uwagi↕ |
|---|---|---|
serviceLevel | Wymagane dla etykiety | Usługa Japan Post do wysyłki (np. japan_post.air.ems_merchandise). Musi być japan_post.* poziomem usługi. |
generateLabel | Opcjonalne | Domyślnie true; musi być true aby zwrócić etykietę. |
contentsType | Rekomendowane | SALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, itp. Napędza obsługę celną. |
nonDelivery | Opcjonalne | Co przewoźnik powinien zrobić w przypadku nieudanej dostawy: RETURN, ABANDON, FORWARD. |
references | Opcjonalne | Numery referencyjne dostarczone przez kupca drukowane na etykiecie i fakturze handlowej. Patrz poniżej. |
declaredValue / isDeclaredValue | Opcjonalne | Wartość ubezpieczenia dla przesyłki. |
shipmentConsolidationId | Opcjonalne | Używane, gdy ta przesyłka jest częścią dispatch zbiorczego. |
references sub-input
Te pola są drukowane na etykiecie przewoźnika i / lub fakturze handlowej. Użyj ich do wyświetlenia numerów PO, numerów licencji i uwag w dowolnym tekście, które adresat lub władze celne muszą widzieć.
| Pole↕ | Status↕ | Uwagi↕ | Długość↕ |
|---|---|---|---|
invoiceNumber | Opcjonalne | Numer faktury kupca. | — |
purchaseOrderNumber | Opcjonalne | Numer PO kupca. | — |
licenseNumber | Opcjonalne | Numer licencji eksportowej / importowej. | — |
certificateNumber | Opcjonalne | Numer certyfikatu celnego. | — |
paymentConditions | Opcjonalne | Warunki płatności w dowolnym tekście wyświetlane na fakturze handlowej. | Ogranicz do 200 znaków – dłuższe wartości przepełniają drukowaną fakturę. |
customsRemarks | Opcjonalne | Uwagi celne w dowolnym tekście. | — |
taxCode | Opcjonalne | Niestandardowy kod podatkowy drukowany na etykiecie. | — |
Odpowiedź
Interesujące pola zwracanego Shipment:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}
}
}
trackingDetails.number to numer śledzenia Japan Post.
Obiekt label może zwrócić etykietę na dwa sposoby – poproś, która pasuje do Twojego przepływu pracy (lub obie):
| Pole↕ | Zwraca↕ | Użyj gdy↕ |
|---|---|---|
url | Link hostowany do wyrenderowanego pliku etykiety (PDF), gotowy do pobrania lub druku. | Chcesz przekazać link – otwórz go, wyślij e-mailem lub pobierz plik później bez przechowywania go w ładunku. |
labelImage | Obraz etykiety zakodowany w base64 (PNG / PDF / ZPL) umieszczony w odpowiedzi. | Chcesz bajty etykiety bezpośrednio w odpowiedzi, aby dołączyć do przepływu pracy realizacji lub zapisać w systemie zarządzania magazynem. |
Wybierz tylko pola, których potrzebujesz. Żądanie url utrzymuje odpowiedź małą; żądanie labelImage zwraca pełną etykietę w tekście, aby nie potrzebować drugiej rundy do pobrania. Przykład powyżej żądań url.
Obsługa błędów
- Błędy walidacji (brakujące wymagane pola, nieprawidłowe kody krajów, itp.) wracają w standardowej tablicy GraphQL
errorsi przerwają resztę łańcucha. - Błędy Japan Post (nieudana generacja etykiety, nieprawidłowy adres, itp.) pojawiają się jako błędy GraphQL na
shipmentCreateWorkflow. Jeśli wymagane jest ponowienie, skontaktuj się z pomocą – zalecaną ścieżką jest przesłanie pełnej mutacji z poprawnym wejściem.
Uprawnienia
Każdy krok jest niezależnie zabezpieczony. Twój klucz API musi posiadać zakres zapisu dla każdej encji w łańcuchu (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Standardowa rola kupca na koncie zweryfikowanym przyznaje wszystkie te.
Następne kroki
- Dispatch zbiorczy (konsolidacja) – spakuj dzienne paczki w jeden poślizg odroczonej płatności Japan Post.
Utwórz pojedynczą przesyłkę
Przepływ GraphQL
CreateDeclarationShipmenttworzy przesyłkę Japan Post od danych wyjściowych do gotowej do druku etykiety w jednej rundzie.CreateDeclarationShipmentłańcuchuje razem sześć mutacji*Workfloww jedno żądanie GraphQL. Każdy krok opiera się na danych, które dostarczyły poprzednie kroki, i wszystkie są przesyłane razem, aby można było utworzyć pełną przesyłkę w jednej rundzie:Mutacje
Workflowsą zaprojektowane do łańcuchowania: nie musisz przesyłać identyfikatorów z jednego kroku do następnego, a nie musisz wysyłać osobnego żądania na krok. Prześlij cały dokument, otrzymaj ostatecznyShipment.Gdy
serviceLevelw ostatnim kroku jest poziomem usług Japan Post (japan_post.*), Zonos wywołuje Japan Post Label API (kod 52) w Twoim imieniu, używając numerów Late Pay Twojego konta zweryfikowanego, generuje etykietę i numer śledzenia, tworzy identyfikator deklaracji i łączy je – wszystko wewnątrz ostatniego krokushipmentCreateWorkflow.