O fluxo GraphQL CreateDeclarationShipment leva um envio Japan Post desde os dados de entrada em bruto até uma etiqueta pronta a imprimir, numa única ida e volta.
CreateDeclarationShipment encadeia seis mutations *Workflow num único pedido GraphQL. Cada passo baseia-se nos dados fornecidos pelos passos anteriores, e todos são submetidos em conjunto, para que um envio completo possa ser criado numa única ida e volta:
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
As mutations Workflow foram concebidas para serem encadeadas: não precisa de passar IDs de um passo para o seguinte, nem de enviar um pedido separado por passo. Submeta o documento completo e receba o Shipment final.
Quando o serviceLevel do passo final é um nível de serviço Japan Post (japan_post.*), a Zonos chama a Japan Post Label API (código 52) em seu nome, utilizando os Later Pay Numbers da sua Verified Account, gera a etiqueta e o número de seguimento, cria o Declaration ID e associa-os — tudo dentro desse passo final shipmentCreateWorkflow.
Porquê uma única mutation? Cada passo depende do anterior (o landed cost precisa dos itens + partes; a etiqueta precisa de tudo). Agrupá-los num único documento GraphQL mantém os dados consistentes e evita cinco idas e voltas adicionais.
Envia para a UE?
O fluxo é o mesmo para os destinos da UE suportados. Consulte Enviar para a UE para ver os campos de IOSS e IVA a definir em landedCostCalculateWorkflow.
Um pedido CreateDeclarationShipment completo que pode copiar e adaptar — a mutation, as respetivas variáveis e a resposta — para um único pacote Japan Post enviado em DDP para os EUA. Cada dado de entrada é detalhado na secção passo a passo abaixo.
A coluna Status de cada tabela abaixo utiliza estes termos:
Obrigatório — o pedido falha sem ele.
Obrigatório para a etiqueta — opcional no schema GraphQL, mas necessário para produzir uma etiqueta Japan Post válida para os EUA.
Condicional — obrigatório consoante outro campo (indicado na própria linha).
Recomendado — opcional, mas determina o cálculo exato de direitos e impostos.
Opcional — não é necessário.
1. partyCreateWorkflow
Cria as partes envolvidas no envio — no mínimo um ORIGIN (o local de onde o envio é expedido) e um DESTINATION (o comprador / destinatário).
Campo↕
Status↕
Notas↕
type
Obrigatório
ORIGIN e DESTINATION são os dois de que este fluxo precisa. Existem outros (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR, etc.), mas não são utilizados aqui.
A resposta devolve os IDs de Party criados e os campos de morada resolvidos.
2. itemCreateWorkflow
Cria as linhas de artigos que compõem o envio. São os SKUs que vão constar da fatura comercial e que determinam o cálculo do landed cost.
Campo↕
Status↕
Notas↕
currencyCode
Obrigatório
Moeda do preço unitário.
quantity
Obrigatório
Número de unidades deste item.
amount
Condicional
Preço unitário (não o total). Obrigatório, exceto se for indicado totalAmount.
totalAmount
Opcional
Alternativa a amount; amount é calculado a partir de totalAmount / quantity.
hsCode
Recomendado
Código pautal do Sistema Harmonizado. Determina as taxas de direitos.
countryOfOrigin
Recomendado
Código ISO-2 do país onde o item foi fabricado. Determina os direitos / acordos de comércio livre (FTA).
name, description
Recomendado
Nome e descrição do produto apresentados ao cliente.
customsDescription
Opcional
Substitui a descrição aduaneira.
sku
Condicional
Obrigatório nos envios para os EUA a partir de 22 de outubro de 2026, exceto se utilizar uma integração de canal. Tem de corresponder ao SKU do seu catálogo Zonos. Ver abaixo.
productId
Opcional
O seu ID interno do produto.
measurements
Opcional
Peso / dimensões por unidade.
O código HS, o país de origem e o valor são os três campos que mais influenciam o resultado de direitos/impostos no passo 5.
A partir de 22 de outubro de 2026: como a Zonos faz corresponder os seus itens
A partir de 22 de outubro de 2026, a Zonos regista cada envio postal para os EUA como uma declaração aduaneira, utilizando o registo de catálogo de cada item (código HS, país de origem e dados PGA). A Zonos encontra esse registo de uma de duas formas:
Com uma integração de canal que sincroniza encomendas e itens do catálogo: adicione o número de seguimento da Japan Post à encomenda no seu canal. A Zonos sincroniza-o de volta e utiliza os itens de catálogo da encomenda. Indicar sku é recomendado, mas não obrigatório. Serve de alternativa caso o número de seguimento esteja em falta na encomenda ou ainda não tenha sido sincronizado (as encomendas são sincronizadas de hora a hora).
Sem uma integração de canal (catálogo importado por CSV ou pela Catalog API): indique sku em todos os itens. Tem de corresponder exatamente ao SKU do item no seu catálogo Zonos. Sem ele, a Zonos não consegue associar o item aos respetivos dados PGA.
Cria os volumes físicos — as caixas, sacos de plástico ou cartas que vão conter os itens.
Campo↕
Status↕
Notas↕
dimensionalUnit
Obrigatório
INCH ou CENTIMETER.
weight, weightUnit
Obrigatório para a etiqueta
A Japan Post exige o peso do volume.
length, width, height
Opcional
Dimensões exteriores.
type
Opcional
Tipo de embalagem (caixa, saco de plástico, carta). A predefinição é PACKAGE.
Cada carton corresponde a um volume na etiqueta da transportadora no passo 6. Vários cartons → envio com vários volumes, com um número de seguimento por carton.
4. shipmentRatingCreateWorkflow
Regista a cotação de envio que o comerciante cobra ao comprador pelo envio.
Campo↕
Status↕
Notas↕
amount
Obrigatório
O que o comprador paga pelo envio. Indique 0 se for gratuito.
currencyCode
Obrigatório
Moeda de amount.
serviceLevelCode
Obrigatório
Código de serviço da transportadora (p. ex., japan_post.air.parcel). Consulte Níveis de serviço Japan Post para a lista completa.
displayName
Opcional
Nome apresentável para o recibo / fatura.
É a tarifa cotada ao comprador no checkout. Entra no cálculo do landed cost como subtotal de "shipping", para que os direitos e impostos sejam calculados sobre o valor CIF correto.
5. landedCostCalculateWorkflow
Executa o cálculo de direitos, impostos e taxas para o país de destino. Utiliza os itens, as partes e o custo de envio dos passos anteriores.
Campo↕
Status↕
Notas↕
endUse
Obrigatório
NOT_FOR_RESALE ou FOR_RESALE. Alguns destinos aplicam taxas diferentes consoante o uso final seja comercial ou pessoal.
tariffRate
Obrigatório
A predefinição é ZONOS_PREFERRED se for omitido. Indica à Zonos que fonte/metodologia pautal aplicar.
calculationMethod
Recomendado
DDP (o comprador paga antecipadamente) ou DDU (o comprador paga na entrega). Utilize DDP para pré-pagamento. Determina se LandedCost.amountSubtotals inclui direitos/impostos.
currencyCode
Opcional
Moeda em que os subtotais do landed cost são devolvidos.
arrivalDate
Opcional
Se for indicada, as taxas de câmbio e as pautas aduaneiras são fixadas nesta data.
A resposta inclui amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — são os valores que apresenta ao comprador no checkout e que são impressos na fatura comercial.
6. shipmentCreateWorkflow
O passo final — cria a entidade Shipment, gera a etiqueta da transportadora e (opcionalmente) a fatura comercial / guia de remessa.
Para as Verified Accounts da Japan Post, é também aqui que a Zonos chama a Japan Post Label API (código 52) em seu nome, insere os seus Later Pay Numbers, cria o Declaration ID e associa o Declaration ID ao número de seguimento devolvido pela Japan Post.
Campos principais:
Campo↕
Status↕
Notas↕
serviceLevel
Obrigatório para a etiqueta
O serviço Japan Post a utilizar no envio (p. ex., japan_post.air.ems_merchandise). Tem de ser um nível de serviço japan_post.*.
generateLabel
Opcional
A predefinição é true; tem de ser true para devolver uma etiqueta.
contentsType
Recomendado
Determina o tratamento aduaneiro. Um de SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Opcional
O que a Japan Post deve fazer se o volume não puder ser entregue. Ver abaixo.
references
Opcional
Números de referência fornecidos pelo comerciante, impressos na etiqueta e na fatura comercial. Ver abaixo.
Em contentsType, os dois valores mais comuns para o tráfego de Verified Accounts são ECOMMERCE_GOODS (vendido a um consumidor, BtoC) e COMMERCIAL_GOODS (vendido entre empresas, BtoB). Estes valores definem o pkgType que a Zonos envia na chamada de etiqueta da Japan Post, pelo que a escolha altera o que é impresso na declaração aduaneira — não é apenas uma classificação.
Sub-input nonDelivery
Indica à Japan Post o que fazer com o volume se não puder ser entregue — recusado pelo destinatário, rejeitado na fronteira ou impossível de entregar na morada indicada.
option aceita exatamente estes quatro valores. Não existe o valor RETURN — utilize RETURN_AFTER_RETENTION ou RETURN_IMMEDIATELY para escolher quando o volume é devolvido.
option↕
Equivalente no Dashboard↕
O que a Japan Post faz↕
RETURN_AFTER_RETENTION
Return
Retém o volume nos correios de destino durante o período de retenção e depois devolve-o ao remetente.
RETURN_IMMEDIATELY
Return
Devolve o volume ao remetente de imediato, sem período de retenção.
FORWARD
Redirection
Reencaminha o volume para outra morada. Aplicam-se portes adicionais.
ABANDON
Renounce
Elimina o volume no destino. Nada é devolvido e não são cobrados portes de devolução.
A API disponibiliza as duas variantes de devolução em separado; a opção Return do Dashboard abrange ambas.
transportMethod aceita AIR ou MOST_ECONOMICAL e define como um volume devolvido é transportado de volta. Aplica-se apenas às duas opções RETURN_* — o Dashboard só mostra o campo correspondente Return method quando Return está selecionado.
O seletor If undeliverable da caixa de diálogo Create label do Dashboard grava este mesmo campo, pelo que uma etiqueta criada no Dashboard e uma etiqueta criada através da API comportam-se de forma idêntica.
Sub-input references
Estes campos são impressos na etiqueta da transportadora e/ou na fatura comercial. Utilize-os para apresentar números de ordem de compra (PO), números de licença e observações em texto livre que o destinatário ou a autoridade aduaneira precisem de ver.
Campo↕
Status↕
Notas↕
Comprimento↕
invoiceNumber
Opcional
Número da fatura do comerciante.
—
purchaseOrderNumber
Opcional
Número da ordem de compra (PO) do comerciante.
—
licenseNumber
Opcional
Número da licença de exportação/importação.
—
certificateNumber
Opcional
Número do certificado aduaneiro.
—
paymentConditions
Opcional
Condições de pagamento em texto livre apresentadas na fatura comercial.
Limite de 200 caracteres — valores mais longos ultrapassam o espaço da fatura impressa.
customsRemarks
Opcional
Observações aduaneiras em texto livre.
—
taxCode
Opcional
Código fiscal personalizado impresso na etiqueta. Para envios para a UE com o seu próprio número IOSS, indique aqui o seu número IOSS. Consulte Enviar para a UE.
—
Resposta
Os campos relevantes do Shipment devolvido são:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number é o número de seguimento da Japan Post.
O objeto label pode devolver a etiqueta de duas formas — peça a que melhor se adequar ao seu fluxo (ou ambas):
Campo↕
Devolve↕
Utilize quando↕
url
Uma ligação alojada para o ficheiro da etiqueta gerada (PDF), pronto a transferir ou imprimir.
Pretende partilhar uma ligação — abri-la, enviá-la por e-mail ou obter o ficheiro mais tarde sem o guardar no payload.
labelImage
A imagem da etiqueta codificada em base64 (PNG/PDF/ZPL), incluída diretamente na resposta.
Pretende receber os bytes da etiqueta diretamente na resposta para os anexar a um fluxo de fulfillment ou guardar no seu WMS.
Selecione apenas os campos de que precisa. Pedir url mantém a resposta pequena; pedir labelImage devolve a etiqueta completa na resposta, sem necessidade de uma segunda ida e volta para a obter. O exemplo acima pede url.
Os códigos de nível de serviço utilizam pontos, não underscores. Pode ver a forma com underscores (japan_post_air_parcel) em mensagens de erro e referências internas, mas não é um dado de entrada válido.
Serviços aéreos
Código↕
Serviço Japan Post↕
Tipo de correio↕
japan_post.air.ems_documents
EMS (documentos)
1-0
japan_post.air.ems_merchandise
EMS (mercadorias)
1-1
japan_post.air.parcel
Encomenda internacional
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Pequeno pacote
1-9
japan_post.air.printed_matter_registered
Impressos, registado
1-A
japan_post.air.printed_matter
Impressos
1-B
japan_post.air.letter_registered
Carta, registada
1-C
japan_post.air.letter
Carta
1-D
Serviços de superfície
Código↕
Serviço Japan Post↕
Tipo de correio↕
japan_post.surface.parcel
Encomenda internacional
2-5
japan_post.surface.small_packet
Pequeno pacote
2-9
japan_post.surface.printed_matter
Impressos
2-B
japan_post.surface.letter
Carta
2-D
Escolher entre serviços semelhantes
Pequeno pacote vs. International Air Packet. Ambos estão limitados a 2 kg. japan_post.air.packet é o serviço de pequenos pacotes com seguimento da Japan Post. japan_post.air.small_packet é o equivalente sem seguimento. Se precisar de seguimento para um volume leve, utilize japan_post.air.packet.
Variantes registadas. Para cartas e impressos, o seguimento é acrescentado pela versão registada (書留) do serviço. japan_post.air.printed_matter e japan_post.air.letter não o incluem por si só.
Códigos descontinuados
japan_post.air.epacket_light correspondia ao International e-Packet Light. A Japan Post mudou o nome do serviço para International Air Packet a 1 de junho de 2026 e alargou-o a todos os países e regiões. O serviço em si não foi alterado.
O código antigo continua a ser reconhecido, para que as integrações existentes continuem a funcionar, mas utilize japan_post.air.packet em novos desenvolvimentos.
Códigos de modo de transporte
japan_post.air, japan_post.surface, japan_post.economy_air e japan_post.custom também são reconhecidos, mas identificam um modo de transporte ou uma alternativa de recurso, e não um produto postal específico. Utilize um dos códigos de serviço acima para envios normais.
Valide o código que envia
Um serviceLevelCode não reconhecido não gera um erro. O pedido devolve HTTP 200 sem array errors, serviceLevel é devolvido como null e o custo de envio deixa de constar do total do landed cost — pelo que a resposta parece correta, mas os valores estão errados.
Confirme sempre que shipmentRatingCreateWorkflow.serviceLevel não é nulo antes de confiar nos totais.
Para obter a lista atual a qualquer momento:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Esta query recebe o ID da transportadora. Indicar o código da transportadora japan_post devolve uma lista vazia, sem qualquer erro.
Erros de validação (campos obrigatórios em falta, códigos de país inválidos, etc.) são devolvidos no array errors padrão do GraphQL e interrompem o resto da cadeia.
Erros da Japan Post (falha na geração da etiqueta, morada inválida, etc.) surgem como erros GraphQL em shipmentCreateWorkflow. Se for necessário repetir, contacte o suporte — o procedimento recomendado é voltar a submeter a mutation completa com os dados de entrada corrigidos.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Este erro indica a variável completa, não o campo que está realmente errado. Quase sempre significa que um valor de enum dentro dessa variável não pertence ao respetivo enum — na maioria dos casos nonDelivery.option, contentsType ou serviceLevel.
Não é um problema de tipos JSON. Colocar ou retirar aspas nos seus booleanos e números não o resolve, porque o payload nem chega a essa fase — o enum é rejeitado primeiro.
Para encontrar o campo errado, compare cada campo com valor de enum na variável com os respetivos valores aceites:
Campo↕
Valores aceites↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — sem RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Um código de nível de serviço japan_post.*
Todos os membros do enum de qualquer input estão listados na página do respetivo tipo na referência da API.
Cada passo é protegido de forma independente. A sua API key tem de ter o âmbito de escrita para cada entidade da cadeia (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). A função padrão de comerciante numa Verified Account concede todos estes âmbitos.
Criar um envio único
Criar um envio único
O fluxo GraphQL
CreateDeclarationShipmentleva um envio Japan Post desde os dados de entrada em bruto até uma etiqueta pronta a imprimir, numa única ida e volta.CreateDeclarationShipmentencadeia seis mutations*Workflownum único pedido GraphQL. Cada passo baseia-se nos dados fornecidos pelos passos anteriores, e todos são submetidos em conjunto, para que um envio completo possa ser criado numa única ida e volta:As mutations
Workflowforam concebidas para serem encadeadas: não precisa de passar IDs de um passo para o seguinte, nem de enviar um pedido separado por passo. Submeta o documento completo e receba oShipmentfinal.Quando o
serviceLeveldo passo final é um nível de serviço Japan Post (japan_post.*), a Zonos chama a Japan Post Label API (código 52) em seu nome, utilizando os Later Pay Numbers da sua Verified Account, gera a etiqueta e o número de seguimento, cria o Declaration ID e associa-os — tudo dentro desse passo finalshipmentCreateWorkflow.O fluxo é o mesmo para os destinos da UE suportados. Consulte Enviar para a UE para ver os campos de IOSS e IVA a definir em
landedCostCalculateWorkflow.Endpoint e autenticação
Todos os pedidos desta cadeia utilizam o mesmo endpoint. O que indica nos cabeçalhos depende da sua configuração — escolha o separador correspondente.
URL:
Cabeçalhos:
Envia as suas próprias encomendas com a sua própria Verified Account. Autentique-se em seu próprio nome — não é necessária account key.
Onde o encontrar: Zonos Dashboard → Settings → Integrations → secção Account Key. Copie o token da linha API key; esse é o seu
credentialToken.Exemplo de pedido
Um pedido
CreateDeclarationShipmentcompleto que pode copiar e adaptar — a mutation, as respetivas variáveis e a resposta — para um único pacote Japan Post enviado em DDP para os EUA. Cada dado de entrada é detalhado na secção passo a passo abaixo.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}}}}Passo a passo
A coluna
Statusde cada tabela abaixo utiliza estes termos:1.
partyCreateWorkflowCria as partes envolvidas no envio — no mínimo um
ORIGIN(o local de onde o envio é expedido) e umDESTINATION(o comprador / destinatário).typeORIGINeDESTINATIONsão os dois de que este fluxo precisa. Existem outros (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYOR, etc.), mas não são utilizados aqui.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailExemplo de payload:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]A resposta devolve os IDs de
Partycriados e os campos de morada resolvidos.2.
itemCreateWorkflowCria as linhas de artigos que compõem o envio. São os SKUs que vão constar da fatura comercial e que determinam o cálculo do landed cost.
currencyCodequantityamounttotalAmount.totalAmountamount;amounté calculado a partir detotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionskuproductIdmeasurementsO código HS, o país de origem e o valor são os três campos que mais influenciam o resultado de direitos/impostos no passo 5.
A partir de 22 de outubro de 2026, a Zonos regista cada envio postal para os EUA como uma declaração aduaneira, utilizando o registo de catálogo de cada item (código HS, país de origem e dados PGA). A Zonos encontra esse registo de uma de duas formas:
skué recomendado, mas não obrigatório. Serve de alternativa caso o número de seguimento esteja em falta na encomenda ou ainda não tenha sido sincronizado (as encomendas são sincronizadas de hora a hora).skuem todos os itens. Tem de corresponder exatamente ao SKU do item no seu catálogo Zonos. Sem ele, a Zonos não consegue associar o item aos respetivos dados PGA.Envia para a UE? Também precisa de identificadores de produto da UE.
3.
cartonsCreateWorkflowCria os volumes físicos — as caixas, sacos de plástico ou cartas que vão conter os itens.
dimensionalUnitINCHouCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Cada carton corresponde a um volume na etiqueta da transportadora no passo 6. Vários cartons → envio com vários volumes, com um número de seguimento por carton.
4.
shipmentRatingCreateWorkflowRegista a cotação de envio que o comerciante cobra ao comprador pelo envio.
amount0se for gratuito.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Consulte Níveis de serviço Japan Post para a lista completa.displayNameÉ a tarifa cotada ao comprador no checkout. Entra no cálculo do landed cost como subtotal de "shipping", para que os direitos e impostos sejam calculados sobre o valor CIF correto.
5.
landedCostCalculateWorkflowExecuta o cálculo de direitos, impostos e taxas para o país de destino. Utiliza os itens, as partes e o custo de envio dos passos anteriores.
endUseNOT_FOR_RESALEouFOR_RESALE. Alguns destinos aplicam taxas diferentes consoante o uso final seja comercial ou pessoal.tariffRateZONOS_PREFERREDse for omitido. Indica à Zonos que fonte/metodologia pautal aplicar.calculationMethodDDP(o comprador paga antecipadamente) ouDDU(o comprador paga na entrega). UtilizeDDPpara pré-pagamento. Determina seLandedCost.amountSubtotalsinclui direitos/impostos.currencyCodearrivalDateA resposta inclui
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — são os valores que apresenta ao comprador no checkout e que são impressos na fatura comercial.6.
shipmentCreateWorkflowO passo final — cria a entidade
Shipment, gera a etiqueta da transportadora e (opcionalmente) a fatura comercial / guia de remessa.Para as Verified Accounts da Japan Post, é também aqui que a Zonos chama a Japan Post Label API (código 52) em seu nome, insere os seus Later Pay Numbers, cria o Declaration ID e associa o Declaration ID ao número de seguimento devolvido pela Japan Post.
Campos principais:
serviceLeveljapan_post.air.ems_merchandise). Tem de ser um nível de serviçojapan_post.*.generateLabeltrue; tem de sertruepara devolver uma etiqueta.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdEm
contentsType, os dois valores mais comuns para o tráfego de Verified Accounts sãoECOMMERCE_GOODS(vendido a um consumidor, BtoC) eCOMMERCIAL_GOODS(vendido entre empresas, BtoB). Estes valores definem opkgTypeque a Zonos envia na chamada de etiqueta da Japan Post, pelo que a escolha altera o que é impresso na declaração aduaneira — não é apenas uma classificação.Sub-input
nonDeliveryIndica à Japan Post o que fazer com o volume se não puder ser entregue — recusado pelo destinatário, rejeitado na fronteira ou impossível de entregar na morada indicada.
optionaceita exatamente estes quatro valores. Não existe o valorRETURN— utilizeRETURN_AFTER_RETENTIONouRETURN_IMMEDIATELYpara escolher quando o volume é devolvido.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONA API disponibiliza as duas variantes de devolução em separado; a opção Return do Dashboard abrange ambas.
transportMethodaceitaAIRouMOST_ECONOMICALe define como um volume devolvido é transportado de volta. Aplica-se apenas às duas opçõesRETURN_*— o Dashboard só mostra o campo correspondente Return method quando Return está selecionado.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }O seletor If undeliverable da caixa de diálogo Create label do Dashboard grava este mesmo campo, pelo que uma etiqueta criada no Dashboard e uma etiqueta criada através da API comportam-se de forma idêntica.
Sub-input
referencesEstes campos são impressos na etiqueta da transportadora e/ou na fatura comercial. Utilize-os para apresentar números de ordem de compra (PO), números de licença e observações em texto livre que o destinatário ou a autoridade aduaneira precisem de ver.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeResposta
Os campos relevantes do
Shipmentdevolvido são:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberé o número de seguimento da Japan Post.O objeto
labelpode devolver a etiqueta de duas formas — peça a que melhor se adequar ao seu fluxo (ou ambas):urllabelImageSelecione apenas os campos de que precisa. Pedir
urlmantém a resposta pequena; pedirlabelImagedevolve a etiqueta completa na resposta, sem necessidade de uma segunda ida e volta para a obter. O exemplo acima pedeurl.Níveis de serviço Japan Post
Indique um destes códigos como
serviceLevelCodeemshipmentRatingCreateWorkflow.Os códigos de nível de serviço utilizam pontos, não underscores. Pode ver a forma com underscores (
japan_post_air_parcel) em mensagens de erro e referências internas, mas não é um dado de entrada válido.Serviços aéreos
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-DServiços de superfície
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DEscolher entre serviços semelhantes
Pequeno pacote vs. International Air Packet. Ambos estão limitados a 2 kg.
japan_post.air.packeté o serviço de pequenos pacotes com seguimento da Japan Post.japan_post.air.small_packeté o equivalente sem seguimento. Se precisar de seguimento para um volume leve, utilizejapan_post.air.packet.Variantes registadas. Para cartas e impressos, o seguimento é acrescentado pela versão registada (書留) do serviço.
japan_post.air.printed_matterejapan_post.air.letternão o incluem por si só.Códigos descontinuados
japan_post.air.epacket_lightcorrespondia ao International e-Packet Light. A Japan Post mudou o nome do serviço para International Air Packet a 1 de junho de 2026 e alargou-o a todos os países e regiões. O serviço em si não foi alterado.O código antigo continua a ser reconhecido, para que as integrações existentes continuem a funcionar, mas utilize
japan_post.air.packetem novos desenvolvimentos.Códigos de modo de transporte
japan_post.air,japan_post.surface,japan_post.economy_airejapan_post.customtambém são reconhecidos, mas identificam um modo de transporte ou uma alternativa de recurso, e não um produto postal específico. Utilize um dos códigos de serviço acima para envios normais.Valide o código que envia
Um
serviceLevelCodenão reconhecido não gera um erro. O pedido devolve HTTP 200 sem arrayerrors,serviceLevelé devolvido comonulle o custo de envio deixa de constar do total do landed cost — pelo que a resposta parece correta, mas os valores estão errados.Confirme sempre que
shipmentRatingCreateWorkflow.serviceLevelnão é nulo antes de confiar nos totais.Para obter a lista atual a qualquer momento:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Esta query recebe o ID da transportadora. Indicar o código da transportadora
japan_postdevolve uma lista vazia, sem qualquer erro.Tratamento de erros
errorspadrão do GraphQL e interrompem o resto da cadeia.shipmentCreateWorkflow. Se for necessário repetir, contacte o suporte — o procedimento recomendado é voltar a submeter a mutation completa com os dados de entrada corrigidos.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Este erro indica a variável completa, não o campo que está realmente errado. Quase sempre significa que um valor de enum dentro dessa variável não pertence ao respetivo enum — na maioria dos casos
nonDelivery.option,contentsTypeouserviceLevel.Não é um problema de tipos JSON. Colocar ou retirar aspas nos seus booleanos e números não o resolve, porque o payload nem chega a essa fase — o enum é rejeitado primeiro.
Para encontrar o campo errado, compare cada campo com valor de enum na variável com os respetivos valores aceites:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— semRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*Todos os membros do enum de qualquer input estão listados na página do respetivo tipo na referência da API.
Permissões
Cada passo é protegido de forma independente. A sua API key tem de ter o âmbito de escrita para cada entidade da cadeia (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). A função padrão de comerciante numa Verified Account concede todos estes âmbitos.Próximos passos
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Esta página foi útil?