Рабочий процесс GraphQL CreateDeclarationShipment преобразует отправку Japan Post из исходных данных в готовый к печати ярлык за один раунд обмена данными.
CreateDeclarationShipment объединяет шесть мутаций *Workflow в один запрос GraphQL. Каждый этап построен на основе данных, предоставленных предыдущими этапами, и все они отправляются вместе, чтобы полная отправка могла быть создана за один раунд обмена данными:
Мутации Workflow разработаны для цепочечной обработки: вам не нужно передавать идентификаторы из одного этапа в следующий, и вам не нужно отправлять отдельный запрос для каждого этапа. Отправьте весь документ и получите финальный Shipment.
Когда serviceLevel на финальном этапе — это уровень обслуживания Japan Post (japan_post.*), Zonos вызывает Japan Post Label API (код 52) от вашего имени, используя номера Later Pay вашей проверенной учетной записи, генерирует ярлык и номер отслеживания, создает Declaration ID и связывает их — все внутри финального этапа shipmentCreateWorkflow.
Почему одна мутация? Каждый этап зависит от предыдущего (расчет приземленной стоимости требует позиций + сторон; ярлык требует всего). Объединение их в один документ GraphQL обеспечивает согласованность данных и избегает пяти дополнительных раундов обмена данными.
Полный запрос CreateDeclarationShipment, который вы можете скопировать и адаптировать — мутация, ее переменные и ответ — для одной посылки Japan Post, отправленной DDP в США. Каждый ввод разбирается в пошаговом разделе ниже.
Столбец Статус в каждой таблице ниже использует следующие термины:
Требуется — запрос не выполнится без этого.
Требуется для ярлыка — не обязательно в схеме GraphQL, но необходимо для создания действительного ярлыка Japan Post для США.
Условное — требуется в зависимости от другого поля (указано в строке).
Рекомендуется — необязательно, но обеспечивает точные пошлины и налоги.
Необязательно — не требуется.
1. partyCreateWorkflow
Создает стороны, участвующие в отправке — как минимум ORIGIN (откуда отправляется посылка) и DESTINATION (покупатель / получатель).
Поле↕
Статус↕
Примечания↕
type
Требуется
ORIGIN и DESTINATION — единственные два типа, которые нужны для этого процесса. Другие (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR и т. д.) существуют, но здесь не используются.
Ответ возвращает созданные идентификаторы Party и разрешенные поля адреса.
2. itemCreateWorkflow
Создает позиции строк, которые составляют отправку. Это артикулы (SKU), которые будут отображаться в коммерческом счете-фактуре и управлять расчетом приземленной стоимости.
Поле↕
Статус↕
Примечания↕
currencyCode
Требуется
Валюта цены за единицу.
quantity
Требуется
Количество единиц этого товара.
amount
Условное
Цена за единицу (не сумма). Требуется, если не указан totalAmount.
totalAmount
Необязательно
Альтернатива amount; amount получается из totalAmount / quantity.
hsCode
Рекомендуется
Код тарифа Гармонизированной системы. Управляет тарифными ставками.
countryOfOrigin
Рекомендуется
Код ISO-2 страны, где был произведен товар. Управляет пошлиной / ПЗС.
name, description
Рекомендуется
Ориентированное на клиента имя продукта + описание.
customsDescription
Необязательно
Переопределение описания для таможни.
sku, productId
Необязательно
Ваши внутренние идентификаторы.
measurements
Необязательно
Вес / размеры на единицу.
Код HS, страна происхождения и сумма — это три поля, которые в наибольшей степени влияют на результат пошлины / налога на этапе 5.
3. cartonsCreateWorkflow
Создает физические упаковки — коробки, полиэтиленовые пакеты или письма, которые будут содержать товары.
Поле↕
Статус↕
Примечания↕
dimensionalUnit
Требуется
INCH или CENTIMETER.
weight, weightUnit
Требуется для ярлыка
Japan Post требует вес упаковки.
length, width, height
Необязательно
Внешние размеры.
type
Необязательно
Стиль упаковки (коробка, полиэтиленовый пакет, письмо). По умолчанию PACKAGE.
Каждая коробка становится одной посылкой на ярлыке перевозчика на этапе 6. Несколько коробок → многокомпонентная отправка с одним номером отслеживания на коробку.
4. shipmentRatingCreateWorkflow
Записывает расценку, которую торговец взимает с покупателя за доставку.
Поле↕
Статус↕
Примечания↕
amount
Требуется
Что покупатель платит за доставку. Передайте 0, если бесплатно.
Это тариф, предложенный покупателю при оформлении покупки. Он входит в расчет приземленной стоимости как подитог «доставка», чтобы пошлины и налоги рассчитывались для правильного значения CIF.
5. landedCostCalculateWorkflow
Запускает расчет пошлин, налогов и сборов для страны назначения. Использует товары, стороны и стоимость доставки из предыдущих этапов.
Поле↕
Статус↕
Примечания↕
endUse
Требуется
NOT_FOR_RESALE или FOR_RESALE. Некоторые направления применяют разные тарифы для коммерческого и личного использования.
tariffRate
Требуется
По умолчанию ZONOS_PREFERRED, если опущено. Указывает Zonos, какой источник тарифа / методологию применять.
calculationMethod
Рекомендуется
DDP (покупатель предплачивает) или DDU (покупатель платит у двери). Используйте DDP для предоплаты. Определяет, включает ли LandedCost.amountSubtotals пошлину / налог.
currencyCode
Необязательно
Валюта, в которой возвращаются подитоги приземленной стоимости.
arrivalDate
Необязательно
Курсы валют и расписания тарифов привязываются к этой дате, если указано.
Ответ включает amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — это числа, которые вы отображаете покупателю при оформлении и которые печатаются в коммерческом счете-фактуре.
6. shipmentCreateWorkflow
Завершающий этап — создает сущность Shipment, генерирует ярлык перевозчика и (опционально) коммерческий счет-фактуру / лист упаковки.
Для проверенных учетных записей Japan Post это также место, где Zonos вызывает Japan Post Label API (код 52) от вашего имени, внедряет ваши номера Later Pay, создает Declaration ID и связывает Declaration ID с номером отслеживания, возвращенным Japan Post.
Ключевые поля:
Поле↕
Статус↕
Примечания↕
serviceLevel
Требуется для ярлыка
Сервис Japan Post для отправки (например, japan_post.air.ems_merchandise). Должен быть уровень обслуживания japan_post.*.
generateLabel
Необязательно
По умолчанию true; должно быть true для возврата ярлыка.
contentsType
Рекомендуется
Определяет таможенную обработку. Один из вариантов: SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Необязательно
Что должен делать Japan Post, если посылку не удаётся доставить. См. ниже.
references
Необязательно
Номера ссылок, предоставленные торговцем, которые печатаются на ярлыке и счете-фактуре. См. ниже.
Для contentsType два наиболее распространенных значения для трафика проверенных учетных записей — это ECOMMERCE_GOODS (продано потребителю, BtoC) и COMMERCIAL_GOODS (продано между компаниями, BtoB). Они задают pkgType, который Zonos отправляет в вызове Japan Post Label API, поэтому этот выбор меняет то, что печатается в таможенной декларации, — это не просто ярлык.
Вспомогательный ввод nonDelivery
Сообщает Japan Post, что делать с посылкой, если её не удаётся доставить — получатель отказался её принять, она была отклонена на границе или не может быть доставлена по указанному адресу.
option принимает ровно эти четыре значения. Значения RETURN не существует — используйте RETURN_AFTER_RETENTION или RETURN_IMMEDIATELY, чтобы выбрать, когда посылка возвращается.
option↕
Аналог в Dashboard↕
Что делает Japan Post↕
RETURN_AFTER_RETENTION
Возврат
Удерживает посылку на почте назначения в течение периода хранения, затем возвращает её отправителю.
RETURN_IMMEDIATELY
Возврат
Немедленно возвращает посылку отправителю без периода хранения.
FORWARD
Переадресация
Перенаправляет посылку на другой адрес. Взимается дополнительная плата за почтовые услуги.
ABANDON
Отказ
Утилизирует посылку в пункте назначения. Ничего не возвращается, и плата за возврат не взимается.
API предоставляет оба варианта возврата отдельно; опция Возврат в Dashboard объединяет оба.
transportMethod принимает AIR или MOST_ECONOMICAL и определяет, как возвращаемая посылка будет доставлена обратно. Это применяется только к двум опциям RETURN_* — Dashboard показывает соответствующее поле Способ возврата только тогда, когда выбрано Возврат.
Переключатель Если доставка невозможна в диалоге Создать ярлык в Dashboard записывает то же самое поле, поэтому ярлык, созданный в Dashboard, и ярлык, созданный через API, ведут себя одинаково.
Вспомогательный ввод references
Эти поля печатаются на ярлыке перевозчика и / или счете-фактуре. Используйте их для отображения номеров закупок, номеров лицензий и свободного текста замечаний, которые нужно видеть получателю или таможенному органу.
Поле↕
Статус↕
Примечания↕
Длина↕
invoiceNumber
Необязательно
Номер счета-фактуры торговца.
—
purchaseOrderNumber
Необязательно
Номер закупки торговца.
—
licenseNumber
Необязательно
Номер экспортной / импортной лицензии.
—
certificateNumber
Необязательно
Номер сертификата таможни.
—
paymentConditions
Необязательно
Условия платежа в свободном текстовом формате, показанные в счете-фактуре.
Ограничить до 200 символов — более длинные значения переполняют печатный счет.
customsRemarks
Необязательно
Замечания таможни в свободном текстовом формате.
—
taxCode
Необязательно
Пользовательский налоговый код, напечатанный на ярлыке.
—
Ответ
Интересующие поля на возвращенном Shipment:
{
id
trackingDetails {
number
}
shipmentCartons {
label {
url
labelImage
}}}
trackingDetails.number — это номер отслеживания Japan Post.
Объект label может возвращать ярлык двумя способами — запросите то, что подходит вашему рабочему процессу (или оба):
Поле↕
Возвращает↕
Используйте, когда↕
url
Размещенная ссылка на файл отрисованного ярлыка (PDF), готовый для загрузки или печати.
Вы хотите передать ссылку — открыть ее, отправить по электронной почте или загрузить файл позже, не удерживая его в полезной нагрузке.
labelImage
Изображение ярлыка в кодировке base64 (PNG / PDF / ZPL), встроенное в ответ.
Вы хотите байты ярлыка непосредственно в ответе, чтобы прикрепить его к рабочему процессу выполнения или сохранить в WMS.
Запросите только нужные вам поля. Запрос url уменьшает размер ответа; запрос labelImage возвращает полный ярлык встроенным, чтобы вам не понадобился второй раунд обмена данными для его загрузки. Пример выше запрашивает url.
Коды уровней обслуживания используют точки, а не подчеркивания. Вы можете встретить форму с подчеркиванием (japan_post_air_parcel) в сообщениях об ошибках и внутренних ссылках, но она не является допустимым вводом.
Воздушные услуги
Код↕
Услуга Japan Post↕
Тип почты↕
japan_post.air.ems_documents
EMS (документы)
1-0
japan_post.air.ems_merchandise
EMS (товары)
1-1
japan_post.air.parcel
Международная посылка
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Мелкий пакет
1-9
japan_post.air.printed_matter_registered
Печатные материалы, заказные
1-A
japan_post.air.printed_matter
Печатные материалы
1-B
japan_post.air.letter_registered
Письмо, заказное
1-C
japan_post.air.letter
Письмо
1-D
Наземные услуги
Код↕
Услуга Japan Post↕
Тип почты↕
japan_post.surface.parcel
Международная посылка
2-5
japan_post.surface.small_packet
Мелкий пакет
2-9
japan_post.surface.printed_matter
Печатные материалы
2-B
japan_post.surface.letter
Письмо
2-D
Выбор между похожими услугами
Мелкий пакет и International Air Packet. Обе услуги ограничены весом 2 кг. japan_post.air.packet — это отслеживаемая услуга Japan Post для мелких пакетов. japan_post.air.small_packet — её неотслеживаемый эквивалент. Если вам нужно отслеживание для легкой посылки, используйте japan_post.air.packet.
Заказные варианты. Для писем и печатных материалов отслеживание добавляется заказной (書留) версией услуги. japan_post.air.printed_matter и japan_post.air.letter сами по себе его не включают.
Устаревшие коды
japan_post.air.epacket_light — это бывший International e-Packet Light. Japan Post переименовала эту услугу в International Air Packet 1 июня 2026 года и расширила её на все страны и регионы. Сама услуга не изменилась.
Старый код по-прежнему распознаётся, поэтому существующие интеграции продолжают работать, но для новых разработок используйте japan_post.air.packet.
Коды транспортного режима
japan_post.air, japan_post.surface, japan_post.economy_air и japan_post.custom также распознаются, но они обозначают транспортный режим или запасной вариант, а не конкретный почтовый продукт. Используйте один из указанных выше кодов услуг для обычных отправок.
Проверка отправляемого кода
Нераспознанный serviceLevelCodeне вызывает ошибку. Запрос возвращает HTTP 200 без массива errors, serviceLevel возвращается как null, а стоимость доставки выпадает из итоговой приземленной стоимости — поэтому ответ выглядит корректным, хотя суммы неверны.
Всегда проверяйте, что shipmentRatingCreateWorkflow.serviceLevel не равен null, прежде чем полагаться на итоговые суммы.
Чтобы получить актуальный список в любой момент:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
Этот запрос принимает ID перевозчика. Передача кода перевозчика japan_post возвращает пустой список без ошибки.
Ошибки валидации (отсутствующие обязательные поля, неверные коды стран и т. д.) возвращаются в стандартный массив GraphQL errors и прерывают остальную цепочку.
Ошибки Japan Post (ошибка генерации ярлыка, неверный адрес и т. д.) отображаются как ошибки GraphQL на shipmentCreateWorkflow. Если требуется повторная попытка, свяжитесь с поддержкой — рекомендуемый путь — повторно отправить полную мутацию с исправленным вводом.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Эта ошибка называет всю переменную целиком, а не то поле, которое на самом деле неверно. Почти всегда это означает, что одно из значений перечисления внутри этой переменной не входит в набор допустимых значений — чаще всего это nonDelivery.option, contentsType или serviceLevel.
Это не проблема типизации JSON. Добавление или удаление кавычек у булевых значений и чисел ничего не изменит, потому что до этой проверки полезная нагрузка не доходит — сначала отклоняется значение перечисления.
Чтобы найти проблемное поле, проверьте каждое поле с типом перечисления в переменной на соответствие допустимым значениям:
Поле↕
Допустимые значения↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON — без RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Код уровня обслуживания japan_post.*
Полный список значений перечисления для любого ввода приведен на странице его типа в справочнике API.
Каждый этап защищен отдельно. Ваш API ключ должен иметь область записи для каждой сущности в цепочке (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Стандартная роль торговца на проверенной учетной записи предоставляет все это.
Создание одной отправки
Создание одной отправки
Рабочий процесс GraphQL
CreateDeclarationShipmentпреобразует отправку Japan Post из исходных данных в готовый к печати ярлык за один раунд обмена данными.CreateDeclarationShipmentобъединяет шесть мутаций*Workflowв один запрос GraphQL. Каждый этап построен на основе данных, предоставленных предыдущими этапами, и все они отправляются вместе, чтобы полная отправка могла быть создана за один раунд обмена данными:Мутации
Workflowразработаны для цепочечной обработки: вам не нужно передавать идентификаторы из одного этапа в следующий, и вам не нужно отправлять отдельный запрос для каждого этапа. Отправьте весь документ и получите финальныйShipment.Когда
serviceLevelна финальном этапе — это уровень обслуживания Japan Post (japan_post.*), Zonos вызывает Japan Post Label API (код 52) от вашего имени, используя номера Later Pay вашей проверенной учетной записи, генерирует ярлык и номер отслеживания, создает Declaration ID и связывает их — все внутри финального этапаshipmentCreateWorkflow.Конечная точка и аутентификация
Все запросы в этой цепочке используют одну и ту же конечную точку. Что вы передаете в заголовках, зависит от вашей установки — выберите вашу вкладку.
URL:
Заголовки:
Вы отправляете собственные заказы под своей собственной проверенной учетной записью. Аутентифицируйтесь как себя — ключ учетной записи не требуется.
Где его найти: Zonos Dashboard → Параметры → Интеграции → раздел Ключ учетной записи. Скопируйте токен в строке API ключ; это ваш
credentialToken.Пример запроса
Полный запрос
CreateDeclarationShipment, который вы можете скопировать и адаптировать — мутация, ее переменные и ответ — для одной посылки Japan Post, отправленной DDP в США. Каждый ввод разбирается в пошаговом разделе ниже.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}}}}Пошаговое выполнение
Столбец
Статусв каждой таблице ниже использует следующие термины:1.
partyCreateWorkflowСоздает стороны, участвующие в отправке — как минимум
ORIGIN(откуда отправляется посылка) иDESTINATION(покупатель / получатель).typeORIGINиDESTINATION— единственные два типа, которые нужны для этого процесса. Другие (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYORи т. д.) существуют, но здесь не используются.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailПример полезной нагрузки:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]Ответ возвращает созданные идентификаторы
Partyи разрешенные поля адреса.2.
itemCreateWorkflowСоздает позиции строк, которые составляют отправку. Это артикулы (SKU), которые будут отображаться в коммерческом счете-фактуре и управлять расчетом приземленной стоимости.
currencyCodequantityamounttotalAmount.totalAmountamount;amountполучается изtotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsКод HS, страна происхождения и сумма — это три поля, которые в наибольшей степени влияют на результат пошлины / налога на этапе 5.
3.
cartonsCreateWorkflowСоздает физические упаковки — коробки, полиэтиленовые пакеты или письма, которые будут содержать товары.
dimensionalUnitINCHилиCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.Каждая коробка становится одной посылкой на ярлыке перевозчика на этапе 6. Несколько коробок → многокомпонентная отправка с одним номером отслеживания на коробку.
4.
shipmentRatingCreateWorkflowЗаписывает расценку, которую торговец взимает с покупателя за доставку.
amount0, если бесплатно.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Полный список см. в разделе Уровни обслуживания Japan Post.displayNameЭто тариф, предложенный покупателю при оформлении покупки. Он входит в расчет приземленной стоимости как подитог «доставка», чтобы пошлины и налоги рассчитывались для правильного значения CIF.
5.
landedCostCalculateWorkflowЗапускает расчет пошлин, налогов и сборов для страны назначения. Использует товары, стороны и стоимость доставки из предыдущих этапов.
endUseNOT_FOR_RESALEилиFOR_RESALE. Некоторые направления применяют разные тарифы для коммерческого и личного использования.tariffRateZONOS_PREFERRED, если опущено. Указывает Zonos, какой источник тарифа / методологию применять.calculationMethodDDP(покупатель предплачивает) илиDDU(покупатель платит у двери). ИспользуйтеDDPдля предоплаты. Определяет, включает лиLandedCost.amountSubtotalsпошлину / налог.currencyCodearrivalDateОтвет включает
amountSubtotals(duties,taxes,fees,shipping,landedCostTotal) — это числа, которые вы отображаете покупателю при оформлении и которые печатаются в коммерческом счете-фактуре.6.
shipmentCreateWorkflowЗавершающий этап — создает сущность
Shipment, генерирует ярлык перевозчика и (опционально) коммерческий счет-фактуру / лист упаковки.Для проверенных учетных записей Japan Post это также место, где Zonos вызывает Japan Post Label API (код 52) от вашего имени, внедряет ваши номера Later Pay, создает Declaration ID и связывает Declaration ID с номером отслеживания, возвращенным Japan Post.
Ключевые поля:
serviceLeveljapan_post.air.ems_merchandise). Должен быть уровень обслуживанияjapan_post.*.generateLabeltrue; должно бытьtrueдля возврата ярлыка.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdДля
contentsTypeдва наиболее распространенных значения для трафика проверенных учетных записей — этоECOMMERCE_GOODS(продано потребителю, BtoC) иCOMMERCIAL_GOODS(продано между компаниями, BtoB). Они задаютpkgType, который Zonos отправляет в вызове Japan Post Label API, поэтому этот выбор меняет то, что печатается в таможенной декларации, — это не просто ярлык.Вспомогательный ввод
nonDeliveryСообщает Japan Post, что делать с посылкой, если её не удаётся доставить — получатель отказался её принять, она была отклонена на границе или не может быть доставлена по указанному адресу.
optionпринимает ровно эти четыре значения. ЗначенияRETURNне существует — используйтеRETURN_AFTER_RETENTIONилиRETURN_IMMEDIATELY, чтобы выбрать, когда посылка возвращается.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONAPI предоставляет оба варианта возврата отдельно; опция Возврат в Dashboard объединяет оба.
transportMethodпринимаетAIRилиMOST_ECONOMICALи определяет, как возвращаемая посылка будет доставлена обратно. Это применяется только к двум опциямRETURN_*— Dashboard показывает соответствующее поле Способ возврата только тогда, когда выбрано Возврат.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Переключатель Если доставка невозможна в диалоге Создать ярлык в Dashboard записывает то же самое поле, поэтому ярлык, созданный в Dashboard, и ярлык, созданный через API, ведут себя одинаково.
Вспомогательный ввод
referencesЭти поля печатаются на ярлыке перевозчика и / или счете-фактуре. Используйте их для отображения номеров закупок, номеров лицензий и свободного текста замечаний, которые нужно видеть получателю или таможенному органу.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeОтвет
Интересующие поля на возвращенном
Shipment:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.number— это номер отслеживания Japan Post.Объект
labelможет возвращать ярлык двумя способами — запросите то, что подходит вашему рабочему процессу (или оба):urllabelImageЗапросите только нужные вам поля. Запрос
urlуменьшает размер ответа; запросlabelImageвозвращает полный ярлык встроенным, чтобы вам не понадобился второй раунд обмена данными для его загрузки. Пример выше запрашиваетurl.Уровни обслуживания Japan Post
Передайте один из этих кодов в качестве
serviceLevelCodeвshipmentRatingCreateWorkflow.Коды уровней обслуживания используют точки, а не подчеркивания. Вы можете встретить форму с подчеркиванием (
japan_post_air_parcel) в сообщениях об ошибках и внутренних ссылках, но она не является допустимым вводом.Воздушные услуги
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-DНаземные услуги
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DВыбор между похожими услугами
Мелкий пакет и International Air Packet. Обе услуги ограничены весом 2 кг.
japan_post.air.packet— это отслеживаемая услуга Japan Post для мелких пакетов.japan_post.air.small_packet— её неотслеживаемый эквивалент. Если вам нужно отслеживание для легкой посылки, используйтеjapan_post.air.packet.Заказные варианты. Для писем и печатных материалов отслеживание добавляется заказной (書留) версией услуги.
japan_post.air.printed_matterиjapan_post.air.letterсами по себе его не включают.Устаревшие коды
japan_post.air.epacket_light— это бывший International e-Packet Light. Japan Post переименовала эту услугу в International Air Packet 1 июня 2026 года и расширила её на все страны и регионы. Сама услуга не изменилась.Старый код по-прежнему распознаётся, поэтому существующие интеграции продолжают работать, но для новых разработок используйте
japan_post.air.packet.Коды транспортного режима
japan_post.air,japan_post.surface,japan_post.economy_airиjapan_post.customтакже распознаются, но они обозначают транспортный режим или запасной вариант, а не конкретный почтовый продукт. Используйте один из указанных выше кодов услуг для обычных отправок.Проверка отправляемого кода
Нераспознанный
serviceLevelCodeне вызывает ошибку. Запрос возвращает HTTP 200 без массиваerrors,serviceLevelвозвращается какnull, а стоимость доставки выпадает из итоговой приземленной стоимости — поэтому ответ выглядит корректным, хотя суммы неверны.Всегда проверяйте, что
shipmentRatingCreateWorkflow.serviceLevelне равенnull, прежде чем полагаться на итоговые суммы.Чтобы получить актуальный список в любой момент:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }Этот запрос принимает ID перевозчика. Передача кода перевозчика
japan_postвозвращает пустой список без ошибки.Обработка ошибок
errorsи прерывают остальную цепочку.shipmentCreateWorkflow. Если требуется повторная попытка, свяжитесь с поддержкой — рекомендуемый путь — повторно отправить полную мутацию с исправленным вводом.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Эта ошибка называет всю переменную целиком, а не то поле, которое на самом деле неверно. Почти всегда это означает, что одно из значений перечисления внутри этой переменной не входит в набор допустимых значений — чаще всего это
nonDelivery.option,contentsTypeилиserviceLevel.Это не проблема типизации JSON. Добавление или удаление кавычек у булевых значений и чисел ничего не изменит, потому что до этой проверки полезная нагрузка не доходит — сначала отклоняется значение перечисления.
Чтобы найти проблемное поле, проверьте каждое поле с типом перечисления в переменной на соответствие допустимым значениям:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON— безRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*Полный список значений перечисления для любого ввода приведен на странице его типа в справочнике API.
Разрешения
Каждый этап защищен отдельно. Ваш API ключ должен иметь область записи для каждой сущности в цепочке (
ITEM_WRITE,CARTON_WRITE,SHIPMENT_RATING_WRITE,LANDED_COST_WRITE,SHIPMENT_WRITE). Стандартная роль торговца на проверенной учетной записи предоставляет все это.Следующие шаги
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Была ли эта страница полезной?