O fluxo GraphQL CreateDeclarationShipment leva um envio Japan Post de inputs brutos a uma etiqueta imprimível em uma única ida e volta.
CreateDeclarationShipment encadeia seis mutations *Workflow em uma única requisição GraphQL. Cada etapa usa os dados das anteriores, e todas são enviadas juntas para criar um envio completo em uma única ida e volta:
partyCreateWorkflow → descrever partes de origem e destino
itemCreateWorkflow → descrever os itens de linha
cartonsCreateWorkflow → descrever a embalagem física
shipmentRatingCreateWorkflow → registrar a cotação de frete da transportadora
landedCostCalculateWorkflow → calcular impostos / tributos / taxas
shipmentCreateWorkflow → criar o envio + etiqueta
As mutations Workflow são projetadas para ser encadeadas: você não precisa passar IDs de uma etapa para a próxima nem enviar uma requisição separada por etapa. Envie o documento inteiro e receba o Shipment final.
Quando o serviceLevel na etapa 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 usando os Later Pay Numbers da sua Verified Account, gera a etiqueta e o número de rastreamento, cria o Declaration ID e os vincula — tudo na etapa final shipmentCreateWorkflow.
Por que uma mutation? Cada etapa depende da anterior (landed cost precisa dos itens + partes; a etiqueta precisa de tudo). Agrupá-las em um único documento GraphQL mantém os dados consistentes e evita cinco idas e voltas extras.
Uma requisição CreateDeclarationShipment completa para copiar e adaptar — a mutation, variáveis e resposta — para um pacote Japan Post enviado DDP aos EUA. Cada input é detalhado na seção passo a passo abaixo.
A coluna Status em cada tabela abaixo usa estes termos:
Required — a requisição falha sem ele.
Required for label — opcional no schema GraphQL, mas necessário para produzir uma etiqueta Japan Post válida para os EUA.
Conditional — obrigatório conforme outro campo (indicado inline).
Recommended — opcional, mas determina impostos e tributos precisos.
Optional — não necessário.
1. partyCreateWorkflow
Cria as partes envolvidas no envio — no mínimo um ORIGIN (de onde o envio parte) e um DESTINATION (comprador / destinatário).
Campo↕
Status↕
Observações↕
type
Required
ORIGIN e DESTINATION são os dois que este fluxo precisa. Outros (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR, etc.) existem, mas não são usados aqui.
A resposta retorna os IDs Party criados e os campos de endereço resolvidos.
2. itemCreateWorkflow
Cria os itens de linha que compõem o envio. São os SKUs que aparecerão na fatura comercial e determinam o cálculo de landed cost.
Campo↕
Status↕
Observações↕
currencyCode
Required
Moeda do preço unitário.
quantity
Required
Número de unidades deste item.
amount
Conditional
Preço unitário (não total). Obrigatório salvo se totalAmount for informado.
totalAmount
Optional
Alternativa a amount; amount é derivado de totalAmount / quantity.
hsCode
Recommended
Código tarifário Harmonized System. Determina tarifas de imposto.
countryOfOrigin
Recommended
Código ISO-2 onde o item foi fabricado. Determina imposto / FTA.
name, description
Recommended
Nome e descrição do produto para o cliente.
customsDescription
Optional
Substituição da descrição aduaneira.
sku, productId
Optional
Seus identificadores internos.
measurements
Optional
Peso / dimensões por unidade.
O código HS, país de origem e valor são os três campos que mais influenciam o resultado de imposto/tributo na etapa 5.
3. cartonsCreateWorkflow
Cria os pacotes físicos — caixas, sacos plásticos ou cartas que conterão os itens.
Campo↕
Status↕
Observações↕
dimensionalUnit
Required
INCH ou CENTIMETER.
weight, weightUnit
Required for label
Japan Post exige peso do pacote.
length, width, height
Optional
Dimensões externas.
type
Optional
Estilo de embalagem (caixa, saco, carta). Padrão: PACKAGE.
Cada carton vira um pacote na etiqueta da transportadora na etapa 6. Vários cartons → envio multipiece com um número de rastreamento por carton.
4. shipmentRatingCreateWorkflow
Registra a cotação de frete que o comerciante cobra do comprador.
Campo↕
Status↕
Observações↕
amount
Required
O que o comprador paga pelo frete. Passe 0 se gratuito.
currencyCode
Required
Moeda de amount.
serviceLevelCode
Required
Código de serviço da transportadora (ex.: japan_post.air.parcel). Consulte Níveis de serviço Japan Post para a lista completa.
displayName
Optional
Nome amigável para recibo / fatura.
Esta é a tarifa cotada ao comprador no checkout. Alimenta o cálculo de landed cost como subtotal de "shipping" para que impostos e tributos sejam calculados sobre o valor CIF correto.
5. landedCostCalculateWorkflow
Executa o cálculo de impostos, tributos e taxas para o país de destino. Usa itens, partes e custo de frete das etapas anteriores.
Campo↕
Status↕
Observações↕
endUse
Required
NOT_FOR_RESALE ou FOR_RESALE. Alguns destinos aplicam tarifas diferentes para uso comercial vs pessoal.
tariffRate
Required
Padrão ZONOS_PREFERRED se omitido. Informa à Zonos qual fonte/metodologia tarifária aplicar.
calculationMethod
Recommended
DDP (comprador pré-paga) ou DDU (comprador paga na entrega). Use DDP para pré-pago. Determina se LandedCost.amountSubtotals inclui imposto/tributo.
currencyCode
Optional
Moeda em que os subtotais de landed cost são retornados.
arrivalDate
Optional
Taxas FX e tarifários são fixados nesta data se informada.
A resposta inclui amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — números exibidos ao comprador no checkout e impressos na fatura comercial.
6. shipmentCreateWorkflow
Etapa final — cria a entidade Shipment, gera a etiqueta da transportadora e (opcionalmente) fatura comercial / packing slip.
Para Japan Post Verified Accounts, é aqui que a Zonos chama a Japan Post Label API (código 52) em seu nome, injeta seus Later Pay Numbers, cria o Declaration ID e o vincula ao número de rastreamento retornado pelo Japan Post.
Campos principais:
Campo↕
Status↕
Observações↕
serviceLevel
Required for label
Serviço Japan Post para envio (ex.: japan_post.air.ems_merchandise). Deve ser nível japan_post.*.
generateLabel
Optional
Padrão true; deve ser true para retornar etiqueta.
contentsType
Recommended
Determina o tratamento aduaneiro. Um de SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Optional
O que a Japan Post deve fazer se o pacote não puder ser entregue. Veja abaixo.
references
Optional
Números de referência do comerciante impressos na etiqueta e fatura comercial. Veja abaixo.
Em contentsType, os dois valores mais comuns para tráfego de Verified Account são ECOMMERCE_GOODS (vendido a um consumidor, BtoC) e COMMERCIAL_GOODS (vendido entre empresas, BtoB). Eles definem o pkgType que a Zonos envia na chamada da etiqueta Japan Post, então a escolha muda o que é impresso na declaração aduaneira — não é apenas uma etiqueta.
Sub-input nonDelivery
Informa à Japan Post o que fazer com o pacote se ele não puder ser entregue — recusado pelo destinatário, rejeitado na fronteira ou não entregável no endereço informado.
option aceita exatamente estes quatro valores. Não existe o valor RETURN — use RETURN_AFTER_RETENTION ou RETURN_IMMEDIATELY para escolher quando o pacote retorna.
option↕
Equivalente no Dashboard↕
O que a Japan Post faz↕
RETURN_AFTER_RETENTION
Return
Retém o pacote no correio de destino durante o período de retenção e depois o devolve ao remetente.
RETURN_IMMEDIATELY
Return
Devolve o pacote ao remetente imediatamente, sem período de retenção.
FORWARD
Redirection
Redireciona o pacote para outro endereço. Postagem adicional se aplica.
ABANDON
Renounce
Descarta o pacote no destino. Nada é devolvido e nenhuma postagem de retorno é cobrada.
A API expõe as duas variantes de devolução separadamente; a opção Return do Dashboard cobre ambas.
transportMethod aceita AIR ou MOST_ECONOMICAL e define como um pacote devolvido é transportado de volta. Aplica-se apenas às duas opções RETURN_* — o Dashboard exibe o campo correspondente Return method somente quando Return está selecionado.
O seletor If undeliverable no diálogo Create label do Dashboard grava esse mesmo campo, então uma etiqueta criada no Dashboard e uma etiqueta criada via API se comportam de forma idêntica.
Sub-input references
Estes campos são impressos na etiqueta da transportadora e/ou fatura comercial. Use-os para exibir números de PO, licenças e observações que o destinatário ou alfândega precisam ver.
Campo↕
Status↕
Observações↕
Tamanho↕
invoiceNumber
Optional
Número da fatura do comerciante.
—
purchaseOrderNumber
Optional
Número de PO do comerciante.
—
licenseNumber
Optional
Número de licença de exportação/importação.
—
certificateNumber
Optional
Número de certificado aduaneiro.
—
paymentConditions
Optional
Termos de pagamento em texto livre na fatura comercial.
Limite de 200 caracteres — valores maiores estouram na fatura impressa.
customsRemarks
Optional
Observações aduaneiras em texto livre.
—
taxCode
Optional
Código fiscal personalizado impresso na etiqueta.
—
Resposta
Os campos relevantes no Shipment retornado são:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number é o número de rastreamento Japan Post.
O objeto label pode retornar a etiqueta de duas formas — solicite a que se adaptar ao seu fluxo (ou ambas):
Campo↕
Retorna↕
Use quando↕
url
Link hospedado para o arquivo de etiqueta (PDF), pronto para download ou impressão.
Você quer repassar um link — abrir, enviar por e-mail ou buscar o arquivo depois sem mantê-lo no payload.
labelImage
Imagem da etiqueta codificada em base64 (PNG/PDF/ZPL) inline na resposta.
Você quer os bytes da etiqueta diretamente na resposta para anexar ao fulfillment ou salvar no WMS.
Selecione apenas os campos necessários. Solicitar url mantém a resposta pequena; solicitar labelImage retorna a etiqueta completa inline, sem segunda ida e volta. O exemplo acima solicita url.
Os códigos de nível de serviço usam pontos, não underscores. Você pode ver a forma com underscore (japan_post_air_parcel) em mensagens de erro e referências internas, mas ela não é um input válido.
Serviços aéreos
Código↕
Serviço Japan Post↕
Tipo de correspondência↕
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
Pacote pequeno
1-9
japan_post.air.printed_matter_registered
Impresso, registrado
1-A
japan_post.air.printed_matter
Impresso
1-B
japan_post.air.letter_registered
Carta, registrada
1-C
japan_post.air.letter
Carta
1-D
Serviços de superfície
Código↕
Serviço Japan Post↕
Tipo de correspondência↕
japan_post.surface.parcel
Encomenda internacional
2-5
japan_post.surface.small_packet
Pacote pequeno
2-9
japan_post.surface.printed_matter
Impresso
2-B
japan_post.surface.letter
Carta
2-D
Escolhendo entre serviços semelhantes
Pacote pequeno vs. International Air Packet. Ambos têm limite de 2 kg. japan_post.air.packet é o serviço de pacote pequeno rastreado da Japan Post. japan_post.air.small_packet é o equivalente não rastreado. Se precisar de rastreamento para uma encomenda leve, use japan_post.air.packet.
Variantes registradas. Para cartas e impressos, o rastreamento é adicionado pela versão registrada (書留) do serviço. japan_post.air.printed_matter e japan_post.air.letter não o incluem por padrão.
Códigos descontinuados
japan_post.air.epacket_light era o International e-Packet Light. A Japan Post renomeou o serviço para International Air Packet em 1º de junho de 2026 e o expandiu para todos os países e regiões. O serviço em si não mudou.
O código antigo ainda funciona, então integrações existentes continuam funcionando, mas use japan_post.air.packet para novos desenvolvimentos.
Códigos de modo de transporte
japan_post.air, japan_post.surface, japan_post.economy_air e japan_post.custom também funcionam, mas identificam um modo de transporte ou um fallback, e não um produto postal específico. Use um dos códigos de serviço acima para envios normais.
Valide o código que você envia
Um serviceLevelCode não reconhecido não gera um erro. A requisição retorna HTTP 200 sem array errors, serviceLevel volta como null, e o frete some do total de landed cost — então a resposta parece correta, mas os valores estão errados.
Sempre verifique se 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
}}
Essa query recebe o ID da transportadora. Passar o código da transportadora japan_post retorna uma lista vazia sem erro.
Erros de validação (campos obrigatórios ausentes, códigos de país inválidos, etc.) retornam no array GraphQL errors padrão e abortam o restante da cadeia.
Erros Japan Post (falha na geração de etiqueta, endereço inválido, etc.) aparecem como erros GraphQL em shipmentCreateWorkflow. Se precisar tentar novamente, contate o suporte — o caminho recomendado é reenviar a mutation completa com input corrigido.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Este erro nomeia a variável inteira, não o campo que está realmente errado. Quase sempre significa que um valor de enum dentro dessa variável não é membro do seu enum — geralmente nonDelivery.option, contentsType ou serviceLevel.
Não é um problema de tipagem JSON. Colocar ou remover aspas dos seus booleanos e números não muda isso, porque o payload nem chega tão longe — o enum é rejeitado primeiro.
Para encontrar o campo problemático, verifique cada campo com valor de enum na variável em relação aos seus valores aceitos:
Campo↕
Valores aceitos↕
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.*
Os membros completos do enum para qualquer input estão listados na página de tipo correspondente na Referência da API.
Cada etapa é protegida independentemente. Sua API key deve ter escopo 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 em Verified Account concede todos.
Criar um envio único
Criar um envio único
O fluxo GraphQL
CreateDeclarationShipmentleva um envio Japan Post de inputs brutos a uma etiqueta imprimível em uma única ida e volta.CreateDeclarationShipmentencadeia seis mutations*Workflowem uma única requisição GraphQL. Cada etapa usa os dados das anteriores, e todas são enviadas juntas para criar um envio completo em uma única ida e volta:As mutations
Workflowsão projetadas para ser encadeadas: você não precisa passar IDs de uma etapa para a próxima nem enviar uma requisição separada por etapa. Envie o documento inteiro e receba oShipmentfinal.Quando o
serviceLevelna etapa 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 usando os Later Pay Numbers da sua Verified Account, gera a etiqueta e o número de rastreamento, cria o Declaration ID e os vincula — tudo na etapa finalshipmentCreateWorkflow.Endpoint e autenticação
As requisições desta cadeia usam o mesmo endpoint. O que você passa nos cabeçalhos depende da sua configuração — escolha sua aba.
URL:
Cabeçalhos:
Você envia seus próprios pedidos sob sua Verified Account. Autentique-se como você — sem account key.
Onde encontrar: Zonos Dashboard → Settings → Integrations → seção Account Key. Copie o token na linha API key; esse é seu
credentialToken.Exemplo de requisição
Uma requisição
CreateDeclarationShipmentcompleta para copiar e adaptar — a mutation, variáveis e resposta — para um pacote Japan Post enviado DDP aos EUA. Cada input é detalhado na seçã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
Statusem cada tabela abaixo usa estes termos:1.
partyCreateWorkflowCria as partes envolvidas no envio — no mínimo um
ORIGIN(de onde o envio parte) e umDESTINATION(comprador / destinatário).typeORIGINeDESTINATIONsão os dois que este fluxo precisa. Outros (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYOR, etc.) existem, mas não são usados 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 retorna os IDs
Partycriados e os campos de endereço resolvidos.2.
itemCreateWorkflowCria os itens de linha que compõem o envio. São os SKUs que aparecerão na fatura comercial e determinam o cálculo de landed cost.
currencyCodequantityamounttotalAmountfor informado.totalAmountamount;amounté derivado detotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsO código HS, país de origem e valor são os três campos que mais influenciam o resultado de imposto/tributo na etapa 5.
3.
cartonsCreateWorkflowCria os pacotes físicos — caixas, sacos plásticos ou cartas que conterão os itens.
dimensionalUnitINCHouCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Cada carton vira um pacote na etiqueta da transportadora na etapa 6. Vários cartons → envio multipiece com um número de rastreamento por carton.
4.
shipmentRatingCreateWorkflowRegistra a cotação de frete que o comerciante cobra do comprador.
amount0se gratuito.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Consulte Níveis de serviço Japan Post para a lista completa.displayNameEsta é a tarifa cotada ao comprador no checkout. Alimenta o cálculo de landed cost como subtotal de "shipping" para que impostos e tributos sejam calculados sobre o valor CIF correto.
5.
landedCostCalculateWorkflowExecuta o cálculo de impostos, tributos e taxas para o país de destino. Usa itens, partes e custo de frete das etapas anteriores.
endUseNOT_FOR_RESALEouFOR_RESALE. Alguns destinos aplicam tarifas diferentes para uso comercial vs pessoal.tariffRateZONOS_PREFERREDse omitido. Informa à Zonos qual fonte/metodologia tarifária aplicar.calculationMethodDDP(comprador pré-paga) ouDDU(comprador paga na entrega). UseDDPpara pré-pago. Determina seLandedCost.amountSubtotalsinclui imposto/tributo.currencyCodearrivalDateA resposta inclui
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — números exibidos ao comprador no checkout e impressos na fatura comercial.6.
shipmentCreateWorkflowEtapa final — cria a entidade
Shipment, gera a etiqueta da transportadora e (opcionalmente) fatura comercial / packing slip.Para Japan Post Verified Accounts, é aqui que a Zonos chama a Japan Post Label API (código 52) em seu nome, injeta seus Later Pay Numbers, cria o Declaration ID e o vincula ao número de rastreamento retornado pelo Japan Post.
Campos principais:
serviceLeveljapan_post.air.ems_merchandise). Deve ser níveljapan_post.*.generateLabeltrue; deve sertruepara retornar etiqueta.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdEm
contentsType, os dois valores mais comuns para tráfego de Verified Account sãoECOMMERCE_GOODS(vendido a um consumidor, BtoC) eCOMMERCIAL_GOODS(vendido entre empresas, BtoB). Eles definem opkgTypeque a Zonos envia na chamada da etiqueta Japan Post, então a escolha muda o que é impresso na declaração aduaneira — não é apenas uma etiqueta.Sub-input
nonDeliveryInforma à Japan Post o que fazer com o pacote se ele não puder ser entregue — recusado pelo destinatário, rejeitado na fronteira ou não entregável no endereço informado.
optionaceita exatamente estes quatro valores. Não existe o valorRETURN— useRETURN_AFTER_RETENTIONouRETURN_IMMEDIATELYpara escolher quando o pacote retorna.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONA API expõe as duas variantes de devolução separadamente; a opção Return do Dashboard cobre ambas.
transportMethodaceitaAIRouMOST_ECONOMICALe define como um pacote devolvido é transportado de volta. Aplica-se apenas às duas opçõesRETURN_*— o Dashboard exibe o campo correspondente Return method somente quando Return está selecionado.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }O seletor If undeliverable no diálogo Create label do Dashboard grava esse mesmo campo, então uma etiqueta criada no Dashboard e uma etiqueta criada via API se comportam de forma idêntica.
Sub-input
referencesEstes campos são impressos na etiqueta da transportadora e/ou fatura comercial. Use-os para exibir números de PO, licenças e observações que o destinatário ou alfândega precisam ver.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeResposta
Os campos relevantes no
Shipmentretornado são:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberé o número de rastreamento Japan Post.O objeto
labelpode retornar a etiqueta de duas formas — solicite a que se adaptar ao seu fluxo (ou ambas):urllabelImageSelecione apenas os campos necessários. Solicitar
urlmantém a resposta pequena; solicitarlabelImageretorna a etiqueta completa inline, sem segunda ida e volta. O exemplo acima solicitaurl.Níveis de serviço Japan Post
Passe um destes códigos como
serviceLevelCodeemshipmentRatingCreateWorkflow.Os códigos de nível de serviço usam pontos, não underscores. Você pode ver a forma com underscore (
japan_post_air_parcel) em mensagens de erro e referências internas, mas ela não é um input 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-DEscolhendo entre serviços semelhantes
Pacote pequeno vs. International Air Packet. Ambos têm limite de 2 kg.
japan_post.air.packeté o serviço de pacote pequeno rastreado da Japan Post.japan_post.air.small_packeté o equivalente não rastreado. Se precisar de rastreamento para uma encomenda leve, usejapan_post.air.packet.Variantes registradas. Para cartas e impressos, o rastreamento é adicionado pela versão registrada (書留) do serviço.
japan_post.air.printed_matterejapan_post.air.letternão o incluem por padrão.Códigos descontinuados
japan_post.air.epacket_lightera o International e-Packet Light. A Japan Post renomeou o serviço para International Air Packet em 1º de junho de 2026 e o expandiu para todos os países e regiões. O serviço em si não mudou.O código antigo ainda funciona, então integrações existentes continuam funcionando, mas use
japan_post.air.packetpara novos desenvolvimentos.Códigos de modo de transporte
japan_post.air,japan_post.surface,japan_post.economy_airejapan_post.customtambém funcionam, mas identificam um modo de transporte ou um fallback, e não um produto postal específico. Use um dos códigos de serviço acima para envios normais.Valide o código que você envia
Um
serviceLevelCodenão reconhecido não gera um erro. A requisição retorna HTTP 200 sem arrayerrors,serviceLevelvolta comonull, e o frete some do total de landed cost — então a resposta parece correta, mas os valores estão errados.Sempre verifique se
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 } }Essa query recebe o ID da transportadora. Passar o código da transportadora
japan_postretorna uma lista vazia sem erro.Tratamento de erros
errorspadrão e abortam o restante da cadeia.shipmentCreateWorkflow. Se precisar tentar novamente, contate o suporte — o caminho recomendado é reenviar a mutation completa com input corrigido.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Este erro nomeia a variável inteira, não o campo que está realmente errado. Quase sempre significa que um valor de enum dentro dessa variável não é membro do seu enum — geralmente
nonDelivery.option,contentsTypeouserviceLevel.Não é um problema de tipagem JSON. Colocar ou remover aspas dos seus booleanos e números não muda isso, porque o payload nem chega tão longe — o enum é rejeitado primeiro.
Para encontrar o campo problemático, verifique cada campo com valor de enum na variável em relação aos seus valores aceitos:
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.*Os membros completos do enum para qualquer input estão listados na página de tipo correspondente na Referência da API.
Permissões
Cada etapa é protegida independentemente. Sua API key deve ter escopo 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 em Verified Account concede todos.Próximos passos
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Esta página foi útil?