Le flux de travail CreateDeclarationShipment GraphQL fait passer un envoi Japan Post des entrées brutes à une étiquette imprimable en un seul aller-retour.
CreateDeclarationShipment enchaîne six mutations *Workflow en une seule requête GraphQL. Chaque étape s'appuie sur les données fournies par les étapes précédentes, et toutes sont soumises ensemble afin qu'un envoi complet puisse être créé en un seul aller-retour :
partyCreateWorkflow → describe origin + destination parties
itemCreateWorkflow → describe the line items
cartonsCreateWorkflow → describe the physical packaging
shipmentRatingCreateWorkflow → record the carrier rate quote
landedCostCalculateWorkflow → calculate duties / taxes / fees
shipmentCreateWorkflow → create the shipment + label
Les mutations Workflow sont conçues pour être chaînées : vous n'avez pas besoin de transmettre les identifiants d'une étape à l'autre, et vous n'avez pas besoin d'envoyer une requête distincte par étape. Soumettez l'intégralité du document, récupérez le Shipment final.
Lorsque le serviceLevel de la dernière étape est un niveau de service Japan Post (japan_post.*), Zonos appelle l'API Japan Post Label (code 52) en votre nom à l'aide des numéros de paiement ultérieurs de votre compte vérifié, génère l'étiquette et le numéro de suivi, crée l'ID de déclaration et les relie, le tout dans cette dernière étape shipmentCreateWorkflow.
Pourquoi une mutation ? Chaque étape dépend de la précédente (le landed cost nécessite les articles + les parties ; l'étiquette a besoin de tout). Les regrouper dans un seul document GraphQL maintient les données cohérentes et évite cinq allers-retours supplémentaires.
Les requêtes de cette chaîne utilisent toutes le même point de terminaison. Ce que vous transmettez dans les en-têtes dépend de votre configuration : choisissez votre onglet.
URL :
https://api.zonos.com/graphql
En-têtes :
Vous expédiez vos propres commandes sous votre propre compte vérifié. Authentifiez-vous comme vous-même — aucune clé de compte n'est nécessaire.
credentialToken: {{YOUR_API_TOKEN}}
Où le trouver : Dashboard Zonos → Paramètres → Intégrations → section Clé de compte. Copiez le jeton sur la ligne Clé API ; c'est votre credentialToken.
Une requête CreateDeclarationShipment complète que vous pouvez copier et adapter (la mutation, ses variables et la réponse) pour un seul colis Japan Post expédié en DDP aux États-Unis. Chaque entrée est détaillée dans la section étape par étape ci-dessous.
La colonne Status de chaque tableau ci-dessous utilise ces termes :
Obligatoire — la requête échoue sans cela.
Obligatoire pour l'étiquette — facultatif dans le schéma GraphQL, mais nécessaire pour produire une étiquette Japan Post U.S. valide.
Conditionnel — obligatoire en fonction d'un autre champ (noté en ligne).
Recommandé — facultatif, mais génère des droits et taxes précis.
Facultatif — pas nécessaire.
1. partyCreateWorkflow
Crée les parties impliquées dans l'envoi : au minimum un ORIGIN (d'où l'envoi est expédié) et un DESTINATION (l'acheteur/le destinataire).
Champ↕
Statut↕
Remarques↕
type
Obligatoire
ORIGIN et DESTINATION sont les deux valeurs dont ce flux a besoin. D'autres (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR, etc.) existent mais ne sont pas utilisées ici.
La réponse renvoie les ID Party créés et les champs d'adresse résolus.
2. itemCreateWorkflow
Crée les articles qui composent l'envoi. Ce sont les SKU qui apparaîtront sur la facture commerciale et qui déterminent le calcul du landed cost.
Champ↕
Statut↕
Remarques↕
currencyCode
Obligatoire
Devise du prix unitaire.
quantity
Obligatoire
Nombre d'unités de cet article.
amount
Conditionnel
Prix unitaire (pas le total). Requis sauf si totalAmount est fourni.
totalAmount
Facultatif
Alternative à amount ; amount est dérivé de totalAmount / quantity.
hsCode
Recommandé
Code tarifaire du Système harmonisé. Détermine les taux de droits.
countryOfOrigin
Recommandé
Code ISO-2 du pays de fabrication. Détermine les droits / ALE.
name, description
Recommandé
Nom et description du produit destinés au client.
customsDescription
Facultatif
Remplacement de la description douanière.
sku, productId
Facultatif
Vos identifiants internes.
measurements
Facultatif
Poids / dimensions par unité.
Le code SH, le pays d'origine et le montant sont les trois champs qui influencent le plus le résultat des droits/taxes à l'étape 5.
3. cartonsCreateWorkflow
Crée les colis physiques — les boîtes, sacs en polyéthylène ou lettres qui contiendront les articles.
Champ↕
Statut↕
Remarques↕
dimensionalUnit
Obligatoire
INCH ou CENTIMETER.
weight, weightUnit
Obligatoire pour l'étiquette
Japan Post exige le poids du colis.
length, width, height
Facultatif
Dimensions extérieures.
type
Facultatif
Style d'emballage (boîte, sac, lettre). Par défaut PACKAGE.
Chaque carton devient un colis sur l'étiquette du transporteur à l'étape 6. Plusieurs cartons → envoi multi-pièces avec un numéro de suivi par carton.
4. shipmentRatingCreateWorkflow
Enregistre le devis tarifaire que le commerçant facture à l'acheteur pour l'expédition.
Champ↕
Statut↕
Remarques↕
amount
Obligatoire
Ce que l'acheteur paie pour l'expédition. Transmettez 0 si gratuit.
currencyCode
Obligatoire
Devise de amount.
serviceLevelCode
Obligatoire
Code de service du transporteur (e.g. japan_post.air.parcel). Voir Japan Post service levels pour la liste complète.
displayName
Facultatif
Nom affiché pour le reçu / la facture.
Il s'agit du tarif proposé à l'acheteur au paiement. Il alimente le calcul du landed cost comme sous-total « shipping » afin que les droits et taxes soient calculés sur la valeur CAF correcte.
5. landedCostCalculateWorkflow
Exécute le calcul des droits, taxes et frais pour le pays de destination. Utilise les articles, les parties et les frais d'expédition des étapes précédentes.
Champ↕
Statut↕
Remarques↕
endUse
Obligatoire
NOT_FOR_RESALE ou FOR_RESALE. Certaines destinations appliquent des taux différents pour un usage commercial ou personnel.
tariffRate
Obligatoire
Par défaut ZONOS_PREFERRED si omis. Indique à Zonos quelle source/méthodologie tarifaire appliquer.
calculationMethod
Recommandé
DDP (l'acheteur paie d'avance) ou DDU (l'acheteur paie à la livraison). Utilisez DDP pour le prépaiement. Détermine si LandedCost.amountSubtotals inclut les droits/taxes.
currencyCode
Facultatif
Devise dans laquelle les sous-totaux du landed cost sont renvoyés.
arrivalDate
Facultatif
Les taux de change et les barèmes tarifaires sont fixés à cette date si elle est fournie.
La réponse inclut amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — ce sont les montants affichés à l'acheteur au paiement et imprimés sur la facture commerciale.
6. shipmentCreateWorkflow
L'étape terminale — crée l'entité Shipment, génère l'étiquette du transporteur et (facultativement) la facture commerciale / le bordereau d'emballage.
Pour les comptes vérifiés Japan Post, c'est aussi là que Zonos appelle l'API Japan Post Label (code 52) en votre nom, injecte vos numéros de paiement ultérieur, crée l'ID de déclaration et le lie au numéro de suivi renvoyé par Japan Post.
Champs clés :
Champ↕
Statut↕
Remarques↕
serviceLevel
Obligatoire pour l'étiquette
Le service Japan Post à utiliser (e.g. japan_post.air.ems_merchandise). Doit être un niveau de service japan_post.*.
generateLabel
Facultatif
Par défaut true ; doit être true pour renvoyer une étiquette.
contentsType
Recommandé
Détermine le traitement douanier. L'une des valeurs suivantes : SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Facultatif
Ce que Japan Post doit faire si le colis ne peut pas être livré. Voir ci-dessous.
references
Facultatif
Numéros de référence fournis par le commerçant, imprimés sur l'étiquette et la facture commerciale. Voir ci-dessous.
declaredValue / isDeclaredValue
Facultatif
Valeur d'assurance de l'envoi.
shipmentConsolidationId
Facultatif
Utilisé lorsque cet envoi fait partie d'un envoi par lots.
Concernant contentsType, les deux valeurs les plus courantes pour le trafic des comptes vérifiés sont ECOMMERCE_GOODS (vendu à un consommateur, BtoC) et COMMERCIAL_GOODS (vendu entre entreprises, BtoB). Ces valeurs déterminent le pkgType que Zonos envoie lors de l'appel à l'étiquette Japan Post ; ce choix modifie donc ce qui est imprimé sur la déclaration douanière — ce n'est pas qu'une simple étiquette.
Sous-entrée nonDelivery
Indique à Japan Post quoi faire du colis s'il ne peut pas être livré — refusé par le destinataire, rejeté à la frontière, ou impossible à livrer à l'adresse indiquée.
option accepte exactement ces quatre valeurs. Il n'existe pas de valeur RETURN — utilisez RETURN_AFTER_RETENTION ou RETURN_IMMEDIATELY pour choisir quand le colis revient.
option↕
Équivalent Dashboard↕
Ce que fait Japan Post↕
RETURN_AFTER_RETENTION
Retour
Conserve le colis au bureau de poste de destination pendant sa période de rétention, puis le retourne à l'expéditeur.
RETURN_IMMEDIATELY
Retour
Retourne le colis à l'expéditeur immédiatement, sans période de rétention.
FORWARD
Redirection
Redirige le colis vers une autre adresse. Des frais d'affranchissement supplémentaires s'appliquent.
ABANDON
Renoncement
Élimine le colis à destination. Rien n'est retourné et aucun frais de retour n'est facturé.
L'API expose les deux variantes de retour séparément ; l'option Retour du Dashboard couvre les deux.
transportMethod accepte AIR ou MOST_ECONOMICAL, et définit la façon dont un colis retourné revient. Cela s'applique uniquement aux deux options RETURN_* — le Dashboard n'affiche le champ Méthode de retour correspondant que lorsque Retour est sélectionné.
Le sélecteur Si non livrable dans la boîte de dialogue Créer une étiquette du Dashboard écrit ce même champ, de sorte qu'une étiquette créée dans le Dashboard et une étiquette créée via l'API se comportent de manière identique.
Sous-entrée references
Ces champs s'impriment sur l'étiquette du transporteur et/ou la facture commerciale. Utilisez-les pour faire apparaître les numéros de bon de commande, de licence et les remarques en texte libre dont le destinataire ou l'autorité douanière a besoin.
Champ↕
Statut↕
Remarques↕
Longueur↕
invoiceNumber
Facultatif
Numéro de facture du commerçant.
—
purchaseOrderNumber
Facultatif
Numéro de bon de commande du commerçant.
—
licenseNumber
Facultatif
Numéro de licence d'exportation/importation.
—
certificateNumber
Facultatif
Numéro de certificat douanier.
—
paymentConditions
Facultatif
Conditions de paiement en texte libre affichées sur la facture commerciale.
Limité à 200 caractères — les valeurs plus longues débordent sur la facture imprimée.
customsRemarks
Facultatif
Remarques douanières en texte libre.
—
taxCode
Facultatif
Code fiscal personnalisé imprimé sur l'étiquette.
—
Réponse
Les champs utiles sur le Shipment renvoyé sont :
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number est le numéro de suivi de Japan Post.
L'objet label peut renvoyer l'étiquette de deux manières — demandez celle qui correspond à votre flux de travail (ou les deux) :
Champ↕
Retours↕
Utiliser quand↕
url
Un lien hébergé vers le fichier d'étiquette rendu (PDF), prêt à télécharger ou à imprimer.
Vous souhaitez transmettre un lien : ouvrez-le, envoyez-le par courrier électronique ou récupérez le fichier plus tard sans le conserver dans la charge utile.
labelImage
L'image d'étiquette codée en base64 (PNG/PDF/ZPL) intégrée dans la réponse.
Vous souhaitez que les octets d'étiquette directement dans la réponse soient joints à un flux de travail d'exécution ou enregistrés sur votre WMS.
Sélectionnez uniquement les champs dont vous avez besoin. Demander url maintient la réponse petite ; demander labelImage renvoie l'étiquette complète directement dans la réponse, vous n'avez donc pas besoin d'un deuxième aller-retour pour la récupérer. L'exemple ci-dessus demande url.
Les codes de niveau de service utilisent des points, pas des underscores. Vous pouvez voir la forme avec underscore (japan_post_air_parcel) dans les messages d'erreur et les références internes, mais elle n'est pas une entrée valide.
Services aériens
Code↕
Service Japan Post↕
Type de courrier↕
japan_post.air.ems_documents
EMS (documents)
1-0
japan_post.air.ems_merchandise
EMS (marchandises)
1-1
japan_post.air.parcel
Colis international
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Petit colis
1-9
japan_post.air.printed_matter_registered
Imprimés, recommandé
1-A
japan_post.air.printed_matter
Imprimés
1-B
japan_post.air.letter_registered
Lettre, recommandée
1-C
japan_post.air.letter
Lettre
1-D
Services de surface
Code↕
Service Japan Post↕
Type de courrier↕
japan_post.surface.parcel
Colis international
2-5
japan_post.surface.small_packet
Petit colis
2-9
japan_post.surface.printed_matter
Imprimés
2-B
japan_post.surface.letter
Lettre
2-D
Choisir entre des services similaires
Petit colis et International Air Packet. Les deux sont plafonnés à 2 kg. japan_post.air.packet est le service de petit colis suivi de Japan Post. japan_post.air.small_packet en est l'équivalent non suivi. Si vous avez besoin d'un suivi pour un colis léger, utilisez japan_post.air.packet.
Variantes recommandées. Pour les lettres et les imprimés, le suivi est ajouté par la version recommandée (書留) du service. japan_post.air.printed_matter et japan_post.air.letter ne l'incluent pas par eux-mêmes.
Codes obsolètes
japan_post.air.epacket_light correspondait à International e-Packet Light. Japan Post a renommé ce service International Air Packet le 1er juin 2026 et l'a étendu à tous les pays et régions. Le service lui-même reste inchangé.
L'ancien code reste résolu afin que les intégrations existantes continuent de fonctionner, mais utilisez japan_post.air.packet pour tout nouveau développement.
Codes de mode de transport
japan_post.air, japan_post.surface, japan_post.economy_air et japan_post.custom sont également résolus, mais ils identifient un mode de transport ou une solution de repli plutôt qu'un produit postal spécifique. Utilisez l'un des codes de service ci-dessus pour les envois normaux.
Validez le code que vous envoyez
Un serviceLevelCode non reconnu ne génère pas d'erreur. La requête renvoie un code HTTP 200 sans tableau errors, serviceLevel revient à null, et les frais d'expédition disparaissent du total du landed cost — la réponse paraît donc correcte alors que les montants sont faux.
Vérifiez toujours que shipmentRatingCreateWorkflow.serviceLevel n'est pas nul avant de vous fier aux totaux.
Pour récupérer la liste actuelle à tout moment :
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Cette requête prend l'ID du transporteur. Transmettre le code transporteur japan_post renvoie une liste vide sans erreur.
Les erreurs de validation (champs obligatoires manquants, codes de pays invalides, etc.) reviennent dans le tableau GraphQL errors standard et abandonnent le reste de la chaîne.
Les erreurs Japan Post (échec de génération d'étiquette, adresse invalide, etc.) apparaissent sous forme d'erreurs GraphQL sur shipmentCreateWorkflow. Si une nouvelle tentative est nécessaire, contactez le support — le chemin recommandé consiste à soumettre à nouveau la mutation complète avec la saisie corrigée.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Cette erreur nomme la variable entière, et non le champ réellement fautif. Elle signifie presque toujours qu'une valeur d'énumération à l'intérieur de cette variable n'appartient pas à son énumération — le plus souvent nonDelivery.option, contentsType, ou serviceLevel.
Ce n'est pas un problème de typage JSON. Mettre ou retirer des guillemets autour de vos booléens et nombres ne changera rien, car la charge utile n'est jamais analysée jusque-là — l'énumération est rejetée en premier.
Pour trouver le champ fautif, vérifiez chaque champ à valeur d'énumération dans la variable par rapport à ses valeurs acceptées :
Champ↕
Valeurs acceptées↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — pas de RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Un code de niveau de service japan_post.*
L'ensemble des valeurs d'énumération pour toute entrée est répertorié sur sa page de type dans la référence de l'API.
Chaque étape est sécurisée indépendamment. Votre clé API doit contenir la portée d'écriture pour chaque entité de la chaîne (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Le rôle de commerçant standard sur un compte vérifié accorde tout cela.
Créer un seul envoi
Créer un seul envoi
Le flux de travail
CreateDeclarationShipmentGraphQL fait passer un envoi Japan Post des entrées brutes à une étiquette imprimable en un seul aller-retour.CreateDeclarationShipmentenchaîne six mutations*Workflowen une seule requête GraphQL. Chaque étape s'appuie sur les données fournies par les étapes précédentes, et toutes sont soumises ensemble afin qu'un envoi complet puisse être créé en un seul aller-retour :Les mutations
Workflowsont conçues pour être chaînées : vous n'avez pas besoin de transmettre les identifiants d'une étape à l'autre, et vous n'avez pas besoin d'envoyer une requête distincte par étape. Soumettez l'intégralité du document, récupérez leShipmentfinal.Lorsque le
serviceLevelde la dernière étape est un niveau de service Japan Post (japan_post.*), Zonos appelle l'API Japan Post Label (code 52) en votre nom à l'aide des numéros de paiement ultérieurs de votre compte vérifié, génère l'étiquette et le numéro de suivi, crée l'ID de déclaration et les relie, le tout dans cette dernière étapeshipmentCreateWorkflow.Point de terminaison et authentification
Les requêtes de cette chaîne utilisent toutes le même point de terminaison. Ce que vous transmettez dans les en-têtes dépend de votre configuration : choisissez votre onglet.
URL :
En-têtes :
Vous expédiez vos propres commandes sous votre propre compte vérifié. Authentifiez-vous comme vous-même — aucune clé de compte n'est nécessaire.
Où le trouver : Dashboard Zonos → Paramètres → Intégrations → section Clé de compte. Copiez le jeton sur la ligne Clé API ; c'est votre
credentialToken.Exemple de requête
Une requête
CreateDeclarationShipmentcomplète que vous pouvez copier et adapter (la mutation, ses variables et la réponse) pour un seul colis Japan Post expédié en DDP aux États-Unis. Chaque entrée est détaillée dans la section étape par étape ci-dessous.mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) {partyCreateWorkflow(input: $partyInput) {idtypelocation {line1localitypostalCodecountryCode}}itemCreateWorkflow(input: $itemInput) {idnameskuamountcurrencyCodehsCode}cartonsCreateWorkflow(input: $cartonInput) {idlengthwidthheightdimensionalUnitweightweightUnit}shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {idamount}landedCostCalculateWorkflow(input: $landedCostInput) {idmethodcurrencyCodeamountSubtotals {dutiestaxesfeesshippinglandedCostTotal}}shipmentCreateWorkflow(input: $shipmentInput) {idtrackingDetails {number}shipmentCartons {label {url}}}}Étape par étape
La colonne
Statusde chaque tableau ci-dessous utilise ces termes :1.
partyCreateWorkflowCrée les parties impliquées dans l'envoi : au minimum un
ORIGIN(d'où l'envoi est expédié) et unDESTINATION(l'acheteur/le destinataire).typeORIGINetDESTINATIONsont les deux valeurs dont ce flux a besoin. D'autres (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYOR, etc.) existent mais ne sont pas utilisées ici.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailExemple de charge utile :
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]La réponse renvoie les ID
Partycréés et les champs d'adresse résolus.2.
itemCreateWorkflowCrée les articles qui composent l'envoi. Ce sont les SKU qui apparaîtront sur la facture commerciale et qui déterminent le calcul du landed cost.
currencyCodequantityamounttotalAmountest fourni.totalAmountamount;amountest dérivé detotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsLe code SH, le pays d'origine et le montant sont les trois champs qui influencent le plus le résultat des droits/taxes à l'étape 5.
3.
cartonsCreateWorkflowCrée les colis physiques — les boîtes, sacs en polyéthylène ou lettres qui contiendront les articles.
dimensionalUnitINCHouCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Chaque carton devient un colis sur l'étiquette du transporteur à l'étape 6. Plusieurs cartons → envoi multi-pièces avec un numéro de suivi par carton.
4.
shipmentRatingCreateWorkflowEnregistre le devis tarifaire que le commerçant facture à l'acheteur pour l'expédition.
amount0si gratuit.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Voir Japan Post service levels pour la liste complète.displayNameIl s'agit du tarif proposé à l'acheteur au paiement. Il alimente le calcul du landed cost comme sous-total « shipping » afin que les droits et taxes soient calculés sur la valeur CAF correcte.
5.
landedCostCalculateWorkflowExécute le calcul des droits, taxes et frais pour le pays de destination. Utilise les articles, les parties et les frais d'expédition des étapes précédentes.
endUseNOT_FOR_RESALEouFOR_RESALE. Certaines destinations appliquent des taux différents pour un usage commercial ou personnel.tariffRateZONOS_PREFERREDsi omis. Indique à Zonos quelle source/méthodologie tarifaire appliquer.calculationMethodDDP(l'acheteur paie d'avance) ouDDU(l'acheteur paie à la livraison). UtilisezDDPpour le prépaiement. Détermine siLandedCost.amountSubtotalsinclut les droits/taxes.currencyCodearrivalDateLa réponse inclut
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — ce sont les montants affichés à l'acheteur au paiement et imprimés sur la facture commerciale.6.
shipmentCreateWorkflowL'étape terminale — crée l'entité
Shipment, génère l'étiquette du transporteur et (facultativement) la facture commerciale / le bordereau d'emballage.Pour les comptes vérifiés Japan Post, c'est aussi là que Zonos appelle l'API Japan Post Label (code 52) en votre nom, injecte vos numéros de paiement ultérieur, crée l'ID de déclaration et le lie au numéro de suivi renvoyé par Japan Post.
Champs clés :
serviceLeveljapan_post.air.ems_merchandise). Doit être un niveau de servicejapan_post.*.generateLabeltrue; doit êtretruepour renvoyer une étiquette.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdConcernant
contentsType, les deux valeurs les plus courantes pour le trafic des comptes vérifiés sontECOMMERCE_GOODS(vendu à un consommateur, BtoC) etCOMMERCIAL_GOODS(vendu entre entreprises, BtoB). Ces valeurs déterminent lepkgTypeque Zonos envoie lors de l'appel à l'étiquette Japan Post ; ce choix modifie donc ce qui est imprimé sur la déclaration douanière — ce n'est pas qu'une simple étiquette.Sous-entrée
nonDeliveryIndique à Japan Post quoi faire du colis s'il ne peut pas être livré — refusé par le destinataire, rejeté à la frontière, ou impossible à livrer à l'adresse indiquée.
optionaccepte exactement ces quatre valeurs. Il n'existe pas de valeurRETURN— utilisezRETURN_AFTER_RETENTIONouRETURN_IMMEDIATELYpour choisir quand le colis revient.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONL'API expose les deux variantes de retour séparément ; l'option Retour du Dashboard couvre les deux.
transportMethodaccepteAIRouMOST_ECONOMICAL, et définit la façon dont un colis retourné revient. Cela s'applique uniquement aux deux optionsRETURN_*— le Dashboard n'affiche le champ Méthode de retour correspondant que lorsque Retour est sélectionné.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Le sélecteur Si non livrable dans la boîte de dialogue Créer une étiquette du Dashboard écrit ce même champ, de sorte qu'une étiquette créée dans le Dashboard et une étiquette créée via l'API se comportent de manière identique.
Sous-entrée
referencesCes champs s'impriment sur l'étiquette du transporteur et/ou la facture commerciale. Utilisez-les pour faire apparaître les numéros de bon de commande, de licence et les remarques en texte libre dont le destinataire ou l'autorité douanière a besoin.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeRéponse
Les champs utiles sur le
Shipmentrenvoyé sont :{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberest le numéro de suivi de Japan Post.L'objet
labelpeut renvoyer l'étiquette de deux manières — demandez celle qui correspond à votre flux de travail (ou les deux) :urllabelImageSélectionnez uniquement les champs dont vous avez besoin. Demander
urlmaintient la réponse petite ; demanderlabelImagerenvoie l'étiquette complète directement dans la réponse, vous n'avez donc pas besoin d'un deuxième aller-retour pour la récupérer. L'exemple ci-dessus demandeurl.Japan Post service levels
Transmettez l'un de ces codes comme
serviceLevelCodedansshipmentRatingCreateWorkflow.Les codes de niveau de service utilisent des points, pas des underscores. Vous pouvez voir la forme avec underscore (
japan_post_air_parcel) dans les messages d'erreur et les références internes, mais elle n'est pas une entrée valide.Services aériens
japan_post.air.ems_documents1-0japan_post.air.ems_merchandise1-1japan_post.air.parcel1-5japan_post.air.packet1-8japan_post.air.small_packet1-9japan_post.air.printed_matter_registered1-Ajapan_post.air.printed_matter1-Bjapan_post.air.letter_registered1-Cjapan_post.air.letter1-DServices de surface
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DChoisir entre des services similaires
Petit colis et International Air Packet. Les deux sont plafonnés à 2 kg.
japan_post.air.packetest le service de petit colis suivi de Japan Post.japan_post.air.small_packeten est l'équivalent non suivi. Si vous avez besoin d'un suivi pour un colis léger, utilisezjapan_post.air.packet.Variantes recommandées. Pour les lettres et les imprimés, le suivi est ajouté par la version recommandée (書留) du service.
japan_post.air.printed_matteretjapan_post.air.letterne l'incluent pas par eux-mêmes.Codes obsolètes
japan_post.air.epacket_lightcorrespondait à International e-Packet Light. Japan Post a renommé ce service International Air Packet le 1er juin 2026 et l'a étendu à tous les pays et régions. Le service lui-même reste inchangé.L'ancien code reste résolu afin que les intégrations existantes continuent de fonctionner, mais utilisez
japan_post.air.packetpour tout nouveau développement.Codes de mode de transport
japan_post.air,japan_post.surface,japan_post.economy_airetjapan_post.customsont également résolus, mais ils identifient un mode de transport ou une solution de repli plutôt qu'un produit postal spécifique. Utilisez l'un des codes de service ci-dessus pour les envois normaux.Validez le code que vous envoyez
Un
serviceLevelCodenon reconnu ne génère pas d'erreur. La requête renvoie un code HTTP 200 sans tableauerrors,serviceLevelrevient ànull, et les frais d'expédition disparaissent du total du landed cost — la réponse paraît donc correcte alors que les montants sont faux.Vérifiez toujours que
shipmentRatingCreateWorkflow.serviceLeveln'est pas nul avant de vous fier aux totaux.Pour récupérer la liste actuelle à tout moment :
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Cette requête prend l'ID du transporteur. Transmettre le code transporteur
japan_postrenvoie une liste vide sans erreur.Gestion des erreurs
errorsstandard et abandonnent le reste de la chaîne.shipmentCreateWorkflow. Si une nouvelle tentative est nécessaire, contactez le support — le chemin recommandé consiste à soumettre à nouveau la mutation complète avec la saisie corrigée.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Cette erreur nomme la variable entière, et non le champ réellement fautif. Elle signifie presque toujours qu'une valeur d'énumération à l'intérieur de cette variable n'appartient pas à son énumération — le plus souvent
nonDelivery.option,contentsType, ouserviceLevel.Ce n'est pas un problème de typage JSON. Mettre ou retirer des guillemets autour de vos booléens et nombres ne changera rien, car la charge utile n'est jamais analysée jusque-là — l'énumération est rejetée en premier.
Pour trouver le champ fautif, vérifiez chaque champ à valeur d'énumération dans la variable par rapport à ses valeurs acceptées :
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— pas deRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*L'ensemble des valeurs d'énumération pour toute entrée est répertorié sur sa page de type dans la référence de l'API.
Autorisations
Chaque étape est sécurisée indépendamment. Votre clé API doit contenir la portée d'écriture pour chaque entité de la chaîne (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). Le rôle de commerçant standard sur un compte vérifié accorde tout cela.Étapes suivantes
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Cette page a-t-elle été utile?