El flujo GraphQL CreateDeclarationShipment lleva un envío de Japan Post desde los datos de entrada hasta una etiqueta imprimible en una sola solicitud.
CreateDeclarationShipment encadena seis mutaciones *Workflow en una única solicitud GraphQL. Cada paso se basa en los datos que proporcionaron los pasos anteriores, y todos se envían juntos para que se pueda crear un envío completo en una sola solicitud:
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
Las mutaciones Workflow están diseñadas para encadenarse: no necesita pasar IDs de un paso al siguiente, ni enviar una solicitud separada por paso. Envíe el documento completo y reciba el Shipment final.
Cuando el serviceLevel del paso final es un nivel de servicio de Japan Post (japan_post.*), Zonos llama a la Japan Post Label API (código 52) en su nombre usando los Later Pay Numbers de su Verified Account, genera la etiqueta y el número de seguimiento, crea el Declaration ID y los vincula — todo dentro de ese paso final shipmentCreateWorkflow.
¿Por qué una sola mutación? Cada paso depende del anterior (Landed Cost necesita los artículos y las partes; la etiqueta necesita todo). Agruparlos en un único documento GraphQL mantiene los datos consistentes y evita cinco solicitudes adicionales.
Una solicitud completa de CreateDeclarationShipment que puede copiar y adaptar — la mutación, sus variables y la respuesta — para un paquete individual de Japan Post enviado DDP a EE. UU. Cada entrada se detalla en la sección paso a paso a continuación.
La respuesta devuelve los IDs de Party creados y los campos de dirección resueltos.
2. itemCreateWorkflow
Crea los artículos de línea que componen el envío. Son los SKU que aparecerán en la factura comercial y que determinan el cálculo de Landed Cost.
Campo↕
Estado↕
Notas↕
currencyCode
Obligatorio
Moneda del precio unitario.
quantity
Obligatorio
Número de unidades de este artículo.
amount
Condicional
Precio unitario (no total). Obligatorio a menos que se proporcione totalAmount.
totalAmount
Opcional
Alternativa a amount; amount se deriva de totalAmount / quantity.
hsCode
Recomendado
Código arancelario del Sistema Armonizado. Determina las tasas de aranceles.
countryOfOrigin
Recomendado
Código ISO-2 del país de fabricación. Determina aranceles / TLC.
name, description
Recomendado
Nombre y descripción del producto orientados al cliente.
customsDescription
Opcional
Descripción aduanera alternativa.
sku, productId
Opcional
Sus identificadores internos.
measurements
Opcional
Peso / dimensiones por unidad.
El código HS, el país de origen y el importe son los tres campos que más influyen en el resultado de aranceles/impuestos en el paso 5.
3. cartonsCreateWorkflow
Crea los paquetes físicos — las cajas, bolsas de polietileno o sobres que contendrán los artículos.
Campo↕
Estado↕
Notas↕
dimensionalUnit
Obligatorio
INCH o CENTIMETER.
weight, weightUnit
Obligatorio para la etiqueta
Japan Post requiere el peso del paquete.
length, width, height
Opcional
Dimensiones exteriores.
type
Opcional
Tipo de embalaje (caja, bolsa de polietileno, sobre). Valor predeterminado: PACKAGE.
Cada cartón se convierte en un paquete en la etiqueta del transportista en el paso 6. Varios cartones → envío multipieza con un número de seguimiento por cartón.
4. shipmentRatingCreateWorkflow
Registra la cotización de tarifa que el comerciante cobra al comprador por el envío.
Campo↕
Estado↕
Notas↕
amount
Obligatorio
Lo que paga el comprador por el envío. Pase 0 si es gratuito.
currencyCode
Obligatorio
Moneda de amount.
serviceLevelCode
Obligatorio
Código de servicio del transportista (p. ej., japan_post.air.parcel). Consulte Niveles de servicio de Japan Post para ver la lista completa.
displayName
Opcional
Nombre descriptivo para el recibo / factura.
Esta es la tarifa que se cotizó al comprador en Checkout. Se incorpora al cálculo de Landed Cost como subtotal de "shipping" para que los aranceles e impuestos se calculen contra el valor CIF correcto.
5. landedCostCalculateWorkflow
Ejecuta el cálculo de aranceles, impuestos y tasas para el país de destino. Utiliza los artículos, las partes y el costo de envío de los pasos anteriores.
Campo↕
Estado↕
Notas↕
endUse
Obligatorio
NOT_FOR_RESALE o FOR_RESALE. Algunos destinos aplican tasas distintas según el uso comercial o personal.
tariffRate
Obligatorio
Valor predeterminado ZONOS_PREFERRED si se omite. Indica a Zonos qué fuente/metodología arancelaria aplicar.
calculationMethod
Recomendado
DDP (el comprador prepaga) o DDU (el comprador paga en la entrega). Use DDP para prepago. Determina si LandedCost.amountSubtotals incluye aranceles/impuestos.
currencyCode
Opcional
Moneda en la que se devuelven los subtotales de Landed Cost.
arrivalDate
Opcional
Las tasas de cambio y los aranceles se fijan a esta fecha si se proporciona.
La respuesta incluye amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — son las cifras que muestra al comprador en Checkout y que se imprimen en la factura comercial.
6. shipmentCreateWorkflow
El paso final — crea la entidad Shipment, genera la etiqueta del transportista y (opcionalmente) la factura comercial / packing slip.
Para Japan Post Verified Accounts, aquí es donde Zonos llama a la Japan Post Label API (código 52) en su nombre, inserta sus Later Pay Numbers, crea el Declaration ID y vincula el Declaration ID al número de seguimiento devuelto por Japan Post.
Campos clave:
Campo↕
Estado↕
Notas↕
serviceLevel
Obligatorio para la etiqueta
El servicio de Japan Post con el que enviar (p. ej., japan_post.air.ems_merchandise). Debe ser un nivel de servicio japan_post.*.
generateLabel
Opcional
Valor predeterminado true; debe ser true para devolver una etiqueta.
contentsType
Recomendado
Determina el tratamiento aduanero. Uno de SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Opcional
Qué debe hacer Japan Post si no se puede entregar el paquete. Consulte a continuación.
references
Opcional
Números de referencia proporcionados por el comerciante impresos en la etiqueta y la factura comercial. Consulte a continuación.
En contentsType, los dos valores más comunes para el tráfico de Verified Account son ECOMMERCE_GOODS (vendido a un consumidor, BtoC) y COMMERCIAL_GOODS (vendido entre empresas, BtoB). Estos establecen el pkgType que Zonos envía en la llamada a la Japan Post Label API, por lo que la elección cambia lo que se imprime en la declaración aduanera — no es solo una etiqueta.
Subentrada nonDelivery
Indica a Japan Post qué hacer con el paquete si no se puede entregar — rechazado por el consignatario, rechazado en la frontera o no se puede entregar según la dirección indicada.
option acepta exactamente estos cuatro valores. No existe el valor RETURN — use RETURN_AFTER_RETENTION o RETURN_IMMEDIATELY para elegir cuándo regresa el paquete.
option↕
Equivalente en Dashboard↕
Qué hace Japan Post↕
RETURN_AFTER_RETENTION
Return
Retiene el paquete en la oficina postal de destino durante su período de retención y luego lo devuelve al remitente.
RETURN_IMMEDIATELY
Return
Devuelve el paquete al remitente de inmediato, sin período de retención.
FORWARD
Redirection
Redirige el paquete a una dirección diferente. Se aplican gastos de envío adicionales.
ABANDON
Renounce
Desecha el paquete en el destino. No se devuelve nada y no se cobran gastos de envío de devolución.
La API expone ambas variantes de devolución por separado; la opción Return del Dashboard cubre ambas.
transportMethod acepta AIR o MOST_ECONOMICAL, y determina cómo viaja de vuelta un paquete devuelto. Solo se aplica a las dos opciones RETURN_* — el Dashboard muestra el campo Return method correspondiente solo cuando se selecciona Return.
El selector If undeliverable del diálogo Create label del Dashboard escribe este mismo campo, por lo que una etiqueta creada en el Dashboard y una etiqueta creada a través de la API se comportan de forma idéntica.
Subentrada references
Estos campos se imprimen en la etiqueta del transportista y/o en la factura comercial. Úselos para mostrar números de PO, números de licencia y observaciones de texto libre que el consignatario o la autoridad aduanera necesiten ver.
Campo↕
Estado↕
Notas↕
Longitud↕
invoiceNumber
Opcional
Número de factura del comerciante.
—
purchaseOrderNumber
Opcional
Número de PO del comerciante.
—
licenseNumber
Opcional
Número de licencia de exportación/importación.
—
certificateNumber
Opcional
Número de certificado aduanero.
—
paymentConditions
Opcional
Condiciones de pago en texto libre mostradas en la factura comercial.
Límite de 200 caracteres — valores más largos desbordan la factura impresa.
customsRemarks
Opcional
Observaciones aduaneras en texto libre.
—
taxCode
Opcional
Código fiscal personalizado impreso en la etiqueta.
—
Respuesta
Los campos relevantes del Shipment devuelto son:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number es el número de seguimiento de Japan Post.
El objeto label puede devolver la etiqueta de dos formas — solicite la que se adapte a su flujo de trabajo (o ambas):
Campo↕
Devuelve↕
Usar cuando↕
url
Un enlace alojado al archivo de etiqueta renderizado (PDF), listo para descargar o imprimir.
Desea entregar un enlace — abrirlo, enviarlo por correo electrónico o recuperar el archivo más tarde sin incluirlo en la carga útil.
labelImage
La imagen de la etiqueta codificada en base64 (PNG/PDF/ZPL) en línea en la respuesta.
Desea los bytes de la etiqueta directamente en la respuesta para adjuntarlos a un flujo de cumplimiento o guardarlos en su WMS.
Seleccione solo los campos que necesite. Solicitar url mantiene la respuesta pequeña; solicitar labelImage devuelve la etiqueta completa en línea para que no necesite una segunda solicitud para obtenerla. El ejemplo anterior solicita url.
Los códigos de nivel de servicio usan puntos, no guiones bajos. Es posible que vea la forma con guion bajo (japan_post_air_parcel) en mensajes de error y referencias internas, pero no es una entrada válida.
Servicios aéreos
Código↕
Servicio de Japan Post↕
Tipo de correo↕
japan_post.air.ems_documents
EMS (documents)
1-0
japan_post.air.ems_merchandise
EMS (merchandise)
1-1
japan_post.air.parcel
International parcel
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Small packet
1-9
japan_post.air.printed_matter_registered
Printed matter, registered
1-A
japan_post.air.printed_matter
Printed matter
1-B
japan_post.air.letter_registered
Letter, registered
1-C
japan_post.air.letter
Letter
1-D
Servicios de superficie
Código↕
Servicio de Japan Post↕
Tipo de correo↕
japan_post.surface.parcel
International parcel
2-5
japan_post.surface.small_packet
Small packet
2-9
japan_post.surface.printed_matter
Printed matter
2-B
japan_post.surface.letter
Letter
2-D
Elegir entre servicios similares
Small packet frente a International Air Packet. Ambos están limitados a 2 kg. japan_post.air.packet es el servicio de paquete pequeño con seguimiento de Japan Post. japan_post.air.small_packet es el equivalente sin seguimiento. Si necesita seguimiento para un paquete ligero, use japan_post.air.packet.
Variantes certificadas. Para cartas e impresos, el seguimiento se añade con la versión certificada (書留) del servicio. japan_post.air.printed_matter y japan_post.air.letter no lo incluyen por sí solos.
Códigos obsoletos
japan_post.air.epacket_light era International e-Packet Light. Japan Post renombró el servicio a International Air Packet el 1 de junio de 2026 y lo amplió a todos los países y regiones. El servicio en sí no ha cambiado.
El código anterior todavía se resuelve, por lo que las integraciones existentes siguen funcionando, pero use japan_post.air.packet para trabajos nuevos.
Códigos de modo de transporte
japan_post.air, japan_post.surface, japan_post.economy_air y japan_post.custom también se resuelven, pero identifican un modo de transporte o un valor de reserva, en lugar de un producto de correo específico. Use uno de los códigos de servicio anteriores para envíos normales.
Valide el código que envía
Un serviceLevelCode no reconocido no genera un error. La solicitud devuelve HTTP 200 sin matriz errors, serviceLevel regresa como null, y el envío se excluye del total de Landed Cost — por lo que la respuesta parece correcta mientras los importes son incorrectos.
Verifique siempre que shipmentRatingCreateWorkflow.serviceLevel no sea null antes de confiar en los totales.
Para obtener la lista actual en cualquier momento:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Esta consulta toma el ID del transportista. Pasar el código de transportista japan_post devuelve una lista vacía sin error.
Errores de validación (campos obligatorios faltantes, códigos de país no válidos, etc.) se devuelven en la matriz estándar de errores GraphQL errors y detienen el resto de la cadena.
Errores de Japan Post (fallo en la generación de la etiqueta, dirección no válida, etc.) aparecen como errores GraphQL en shipmentCreateWorkflow. Si se necesita un reintento, contacte con soporte — la ruta recomendada es volver a enviar la mutación completa con la entrada corregida.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Este error nombra toda la variable, no el campo que realmente está mal. Casi siempre significa que un valor de enumeración dentro de esa variable no es miembro de su enum — con mayor frecuencia nonDelivery.option, contentsType o serviceLevel.
No es un problema de tipado JSON. Poner o quitar comillas en sus booleanos y números no cambiará esto, porque la carga útil nunca llega tan lejos — el enum se rechaza primero.
Para encontrar el campo incorrecto, verifique cada campo con valor de enumeración de la variable contra sus valores aceptados:
Campo↕
Valores aceptados↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — no RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Un código de nivel de servicio japan_post.*
Los miembros completos de la enumeración para cualquier input aparecen en su página de tipo en la Referencia de la API.
Cada paso está protegido de forma independiente. Su clave de API debe tener el alcance de escritura para cada entidad de la cadena (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). El rol estándar de comerciante en una Verified Account otorga todos estos permisos.
Crear un envío individual
Crear un envío individual
El flujo GraphQL
CreateDeclarationShipmentlleva un envío de Japan Post desde los datos de entrada hasta una etiqueta imprimible en una sola solicitud.CreateDeclarationShipmentencadena seis mutaciones*Workflowen una única solicitud GraphQL. Cada paso se basa en los datos que proporcionaron los pasos anteriores, y todos se envían juntos para que se pueda crear un envío completo en una sola solicitud:Las mutaciones
Workflowestán diseñadas para encadenarse: no necesita pasar IDs de un paso al siguiente, ni enviar una solicitud separada por paso. Envíe el documento completo y reciba elShipmentfinal.Cuando el
serviceLeveldel paso final es un nivel de servicio de Japan Post (japan_post.*), Zonos llama a la Japan Post Label API (código 52) en su nombre usando los Later Pay Numbers de su Verified Account, genera la etiqueta y el número de seguimiento, crea el Declaration ID y los vincula — todo dentro de ese paso finalshipmentCreateWorkflow.Endpoint y autenticación
Las solicitudes de esta cadena utilizan el mismo endpoint. Lo que pase en los encabezados depende de su configuración — elija su pestaña.
URL:
Encabezados:
Usted envía sus propios pedidos bajo su propia Verified Account. Autentíquese como usted mismo — no se necesita account key.
Dónde encontrarlo: Zonos Dashboard → Settings → Integrations → la sección Account Key. Copie el token de la fila API key; ese es su
credentialToken.Ejemplo de solicitud
Una solicitud completa de
CreateDeclarationShipmentque puede copiar y adaptar — la mutación, sus variables y la respuesta — para un paquete individual de Japan Post enviado DDP a EE. UU. Cada entrada se detalla en la sección paso a paso a continuación.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}}}}Paso a paso
La columna Estado de cada tabla a continuación utiliza estos términos:
1.
partyCreateWorkflowCrea las partes involucradas en el envío — como mínimo un
ORIGIN(desde dónde se envía) y unDESTINATION(el comprador / consignatario).typeORIGINyDESTINATIONson los dos que necesita este flujo. Existen otros (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYOR, etc.), pero no se usan aquí.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailEjemplo de carga útil:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]La respuesta devuelve los IDs de
Partycreados y los campos de dirección resueltos.2.
itemCreateWorkflowCrea los artículos de línea que componen el envío. Son los SKU que aparecerán en la factura comercial y que determinan el cálculo de Landed Cost.
currencyCodequantityamounttotalAmount.totalAmountamount;amountse deriva detotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsEl código HS, el país de origen y el importe son los tres campos que más influyen en el resultado de aranceles/impuestos en el paso 5.
3.
cartonsCreateWorkflowCrea los paquetes físicos — las cajas, bolsas de polietileno o sobres que contendrán los artículos.
dimensionalUnitINCHoCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Cada cartón se convierte en un paquete en la etiqueta del transportista en el paso 6. Varios cartones → envío multipieza con un número de seguimiento por cartón.
4.
shipmentRatingCreateWorkflowRegistra la cotización de tarifa que el comerciante cobra al comprador por el envío.
amount0si es gratuito.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Consulte Niveles de servicio de Japan Post para ver la lista completa.displayNameEsta es la tarifa que se cotizó al comprador en Checkout. Se incorpora al cálculo de Landed Cost como subtotal de "shipping" para que los aranceles e impuestos se calculen contra el valor CIF correcto.
5.
landedCostCalculateWorkflowEjecuta el cálculo de aranceles, impuestos y tasas para el país de destino. Utiliza los artículos, las partes y el costo de envío de los pasos anteriores.
endUseNOT_FOR_RESALEoFOR_RESALE. Algunos destinos aplican tasas distintas según el uso comercial o personal.tariffRateZONOS_PREFERREDsi se omite. Indica a Zonos qué fuente/metodología arancelaria aplicar.calculationMethodDDP(el comprador prepaga) oDDU(el comprador paga en la entrega). UseDDPpara prepago. Determina siLandedCost.amountSubtotalsincluye aranceles/impuestos.currencyCodearrivalDateLa respuesta incluye
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — son las cifras que muestra al comprador en Checkout y que se imprimen en la factura comercial.6.
shipmentCreateWorkflowEl paso final — crea la entidad
Shipment, genera la etiqueta del transportista y (opcionalmente) la factura comercial / packing slip.Para Japan Post Verified Accounts, aquí es donde Zonos llama a la Japan Post Label API (código 52) en su nombre, inserta sus Later Pay Numbers, crea el Declaration ID y vincula el Declaration ID al número de seguimiento devuelto por Japan Post.
Campos clave:
serviceLeveljapan_post.air.ems_merchandise). Debe ser un nivel de serviciojapan_post.*.generateLabeltrue; debe sertruepara devolver una etiqueta.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdEn
contentsType, los dos valores más comunes para el tráfico de Verified Account sonECOMMERCE_GOODS(vendido a un consumidor, BtoC) yCOMMERCIAL_GOODS(vendido entre empresas, BtoB). Estos establecen elpkgTypeque Zonos envía en la llamada a la Japan Post Label API, por lo que la elección cambia lo que se imprime en la declaración aduanera — no es solo una etiqueta.Subentrada
nonDeliveryIndica a Japan Post qué hacer con el paquete si no se puede entregar — rechazado por el consignatario, rechazado en la frontera o no se puede entregar según la dirección indicada.
optionacepta exactamente estos cuatro valores. No existe el valorRETURN— useRETURN_AFTER_RETENTIONoRETURN_IMMEDIATELYpara elegir cuándo regresa el paquete.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONLa API expone ambas variantes de devolución por separado; la opción Return del Dashboard cubre ambas.
transportMethodaceptaAIRoMOST_ECONOMICAL, y determina cómo viaja de vuelta un paquete devuelto. Solo se aplica a las dos opcionesRETURN_*— el Dashboard muestra el campo Return method correspondiente solo cuando se selecciona Return.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }El selector If undeliverable del diálogo Create label del Dashboard escribe este mismo campo, por lo que una etiqueta creada en el Dashboard y una etiqueta creada a través de la API se comportan de forma idéntica.
Subentrada
referencesEstos campos se imprimen en la etiqueta del transportista y/o en la factura comercial. Úselos para mostrar números de PO, números de licencia y observaciones de texto libre que el consignatario o la autoridad aduanera necesiten ver.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeRespuesta
Los campos relevantes del
Shipmentdevuelto son:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberes el número de seguimiento de Japan Post.El objeto
labelpuede devolver la etiqueta de dos formas — solicite la que se adapte a su flujo de trabajo (o ambas):urllabelImageSeleccione solo los campos que necesite. Solicitar
urlmantiene la respuesta pequeña; solicitarlabelImagedevuelve la etiqueta completa en línea para que no necesite una segunda solicitud para obtenerla. El ejemplo anterior solicitaurl.Niveles de servicio de Japan Post
Pase uno de estos códigos como
serviceLevelCodeenshipmentRatingCreateWorkflow.Los códigos de nivel de servicio usan puntos, no guiones bajos. Es posible que vea la forma con guion bajo (
japan_post_air_parcel) en mensajes de error y referencias internas, pero no es una entrada válida.Servicios 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-DServicios de superficie
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DElegir entre servicios similares
Small packet frente a International Air Packet. Ambos están limitados a 2 kg.
japan_post.air.packetes el servicio de paquete pequeño con seguimiento de Japan Post.japan_post.air.small_packetes el equivalente sin seguimiento. Si necesita seguimiento para un paquete ligero, usejapan_post.air.packet.Variantes certificadas. Para cartas e impresos, el seguimiento se añade con la versión certificada (書留) del servicio.
japan_post.air.printed_matteryjapan_post.air.letterno lo incluyen por sí solos.Códigos obsoletos
japan_post.air.epacket_lightera International e-Packet Light. Japan Post renombró el servicio a International Air Packet el 1 de junio de 2026 y lo amplió a todos los países y regiones. El servicio en sí no ha cambiado.El código anterior todavía se resuelve, por lo que las integraciones existentes siguen funcionando, pero use
japan_post.air.packetpara trabajos nuevos.Códigos de modo de transporte
japan_post.air,japan_post.surface,japan_post.economy_airyjapan_post.customtambién se resuelven, pero identifican un modo de transporte o un valor de reserva, en lugar de un producto de correo específico. Use uno de los códigos de servicio anteriores para envíos normales.Valide el código que envía
Un
serviceLevelCodeno reconocido no genera un error. La solicitud devuelve HTTP 200 sin matrizerrors,serviceLevelregresa comonull, y el envío se excluye del total de Landed Cost — por lo que la respuesta parece correcta mientras los importes son incorrectos.Verifique siempre que
shipmentRatingCreateWorkflow.serviceLevelno seanullantes de confiar en los totales.Para obtener la lista actual en cualquier momento:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Esta consulta toma el ID del transportista. Pasar el código de transportista
japan_postdevuelve una lista vacía sin error.Manejo de errores
errorsy detienen el resto de la cadena.shipmentCreateWorkflow. Si se necesita un reintento, contacte con soporte — la ruta recomendada es volver a enviar la mutación completa con la entrada corregida.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Este error nombra toda la variable, no el campo que realmente está mal. Casi siempre significa que un valor de enumeración dentro de esa variable no es miembro de su enum — con mayor frecuencia
nonDelivery.option,contentsTypeoserviceLevel.No es un problema de tipado JSON. Poner o quitar comillas en sus booleanos y números no cambiará esto, porque la carga útil nunca llega tan lejos — el enum se rechaza primero.
Para encontrar el campo incorrecto, verifique cada campo con valor de enumeración de la variable contra sus valores aceptados:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— noRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*Los miembros completos de la enumeración para cualquier input aparecen en su página de tipo en la Referencia de la API.
Permisos
Cada paso está protegido de forma independiente. Su clave de API debe tener el alcance de escritura para cada entidad de la cadena (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). El rol estándar de comerciante en una Verified Account otorga todos estos permisos.Próximos pasos
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
¿Fue útil esta página?