relynolli-server/CDEK/v2/types.go

234 lines
15 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package v2
// ResponseEntity Информация о заказе
type ResponseEntity struct {
// Uuid Идентификатор заказа в ИС СДЭК
Uuid string `json:"uuid,omitempty"`
// Comment комментарий
Comment string `json:"comment,omitempty"`
}
type ResponseErr struct {
// Message Описание ошибки
Message string `json:"message"`
// Code string Код ошибки
Code string `json:"code"`
}
// ResponseRequests Информация о запросе над заказом
type ResponseRequests struct {
// RequestUuid Идентификатор запроса в ИС СДЭК
RequestUuid string `json:"request_uuid,omitempty"`
// Type Тип запроса. Может принимать значения: CREATE, UPDATE, DELETE, AUTH, GET
Type string `json:"type"`
// State Текущее состояние запроса. Может принимать значения:
// ACCEPTED - пройдена предварительная валидация и запрос принят
// WAITING - запрос ожидает обработки (зависит от выполнения другого запроса)
// SUCCESSFUL - запрос обработан успешно
// INVALID - запрос обработался с ошибкой
State string `json:"state"`
// DateTime Дата и время установки текущего состояния запроса (формат yyyy-MM-dd'T'HH:mm:ssZ)
DateTime string `json:"date_time"`
// Errors Ошибки, возникшие в ходе выполнения запроса
Errors []ResponseErr `json:"errors,omitempty"`
// Warnings Предупреждения, возникшие в ходе выполнения запроса
Warnings []ResponseErr `json:"warnings,omitempty"`
}
// ResponseRelatedEntities Связанные сущности (если в запросе был передан корректный print)
type ResponseRelatedEntities struct {
// Type Тип связанной сущности. Может принимать значения: waybill - квитанция к заказу, barcode - ШК места к заказу
Type string `json:"type"`
// Uuid Идентификатор сущности, связанной с заказом
Uuid string `json:"uuid"`
// Url Ссылка на скачивание печатной формы в статусе "Сформирован", только для type = waybill, barcode
Url string `json:"url,omitempty"`
// CdekNumber Номер заказа СДЭК. Может возвращаться для return_order, direct_order, reverse_order
CdekNumber string `json:"cdek_number,omitempty"`
// Date Дата доставки, согласованная с получателем. Только для типа delivery
Date string `json:"date,omitempty"`
// TimeFrom Время начала ожидания курьера (согласованное с получателем). Только для типа delivery
TimeFrom string `json:"time_from,omitempty"`
// Date Время окончания ожидания курьера (согласованное с получателем). Только для типа delivery
TimeTo string `json:"time_to,omitempty"`
}
type Response struct {
Entity ResponseEntity `json:"entity,omitempty"`
Requests []ResponseRequests `json:"requests"`
RelatedEntities *ResponseRelatedEntities `json:"related_entities,omitempty"`
}
type Location struct {
// Code Код населенного пункта СДЭК (метод "Список населенных пунктов")
Code int `json:"code,omitempty"`
// FiasGuid Уникальный идентификатор ФИАС UUID
FiasGuid string `json:"fias_guid,omitempty"`
// PostalCode Почтовый индекс
PostalCode string `json:"postal_code,omitempty"`
// Longitude Долгота
Longitude float64 `json:"longitude,omitempty"`
// Latitude Широта
Latitude float64 `json:"latitude,omitempty"`
// CountryCode
CountryCode string `json:"country_code,omitempty"`
// Region Название региона
Region string `json:"region,omitempty"`
// RegionCode Код региона СДЭК
RegionCode int `json:"region_code,omitempty"`
// SubRegion Название района региона
SubRegion string `json:"sub_region,omitempty"`
// City Название города
City string `json:"city,omitempty"`
// Address Строка адреса
Address string `json:"address"`
}
type Package struct {
// Number Номер упаковки (можно использовать порядковый номер упаковки заказа или номер заказа), уникален в пределах заказа. Идентификатор заказа в ИС Клиента
Number string `json:"number"`
// Weight Общий вес (в граммах)
Weight int `json:"weight"`
// Comment Комментарий к упаковке. Обязательно и только для заказа типа "доставка"
Comment string `json:"comment,omitempty"`
// Height Габариты упаковки. Высота (в сантиметрах). Поле обязательно если:
// если указаны остальные габариты
// если заказ до постамата
// если общий вес >=100 гр
Height int `json:"height,omitempty"`
// Length Габариты упаковки. Длина (в сантиметрах). Поле обязательно если:
// если указаны остальные габариты
// если заказ до постамата
// если общий вес >=100 гр
Length int `json:"length,omitempty"`
// Width Габариты упаковки. Ширина (в сантиметрах). Поле обязательно если:
// если указаны остальные габариты
// если заказ до постамата
// если общий вес >=100 гр
Width int `json:"width,omitempty"`
// Items Позиции товаров в упаковке. Только для заказов "интернет-магазин". Максимум 126 уникальных позиций в заказе. Общее количество товаров в заказе может быть от 1 до 10000
Items []PackageItem `json:"items,omitempty"`
}
type PackageItem struct {
// Name Наименование товара (может также содержать описание товара: размер, цвет)
Name string `json:"name"`
// WareKey Идентификатор/артикул товара. Артикул товара может содержать только символы: [A-z А-я 0-9 ! @ " # № $ ; % ^ : & ? * () _ - + = ? < > , .{ } [ ] \ / , пробел]
WareKey string `json:"ware_key"`
// Marking Маркировка товара. Если для товара/вложения указана маркировка, Amount не может быть больше 1.
// Для корректного отображения маркировки товара в чеке требуется передавать НЕ РАЗОБРАННЫЙ тип маркировки, который может выглядеть следующим образом:
// 1) Код товара в формате GS1. Пример: 010468008549838921AAA0005255832GS91EE06GS92VTwGVc7wKCc2tqRncUZ1RU5LeUKSXjWbfNQOpQjKK+A
// 2) Последовательность допустимых символов общей длиной в 29 символов. Пример: 00000046198488X?io+qCABm8wAYa
// 3) Меховые изделия. Имеют собственный формат. Пример: RU-430302-AAA7582720
Marking string `json:"marking,omitempty"`
// Payment Оплата за товар при получении (за единицу товара в валюте страны получателя, значение >=0) — наложенный платеж, в случае предоплаты значение = 0
Payment Payment `json:"payment"`
// Cost Объявленная стоимость товара (за единицу товара в валюте взаиморасчетов, значение >=0). С данного значения рассчитывается страховка
Cost float64 `json:"cost"`
// Amount Количество единиц товара (в штуках). Количество одного товара в заказе может быть от 1 до 999
Amount int `json:"amount"`
// NameI18N Наименование на иностранном языке. Только для международных заказов
NameI18N string `json:"name_i18n,omitempty"`
// Brand Бренд на иностранном языке. Только для международных заказов
Brand string `json:"brand,omitempty"`
// CountryCode Бренд на иностранном языке. Только для международных заказов
CountryCode string `json:"country_code,omitempty"`
// Weight Вес (за единицу товара, в граммах)
Weight int `json:"weight"`
// WeightGross Вес брутто. Только для международных заказов
WeightGross int `json:"weight_gross,omitempty"`
// Material Код материала (подробнее см. приложение 4). Только для международных заказов
Material string `json:"material,omitempty"`
// WifiGsm Содержит wifi/gsm. Только для международных заказов
WifiGsm bool `json:"wifi_gsm,omitempty"`
// Url Ссылка на сайт интернет-магазина с описанием товара. Только для международных заказов
Url string `json:"url,omitempty"`
}
type Payment struct {
// Value Сумма наложенного платежа (в случае предоплаты = 0)
Value int `json:"value"`
// VatSum Сумма НДС
VatSum int `json:"vat_sum,omitempty"`
// VatRate Ставка НДС (значение - 0, 10, 20, null - нет НДС)
VatRate int `json:"vat_rate,omitempty"`
}
type Cost struct {
// Sum Доп. сбор за доставку товаров, общая стоимость которых попадает в интервал
Sum int `json:"sum"`
// Threshold Порог стоимости товара (действует по условию меньше или равно) в целых единицах валюты
Threshold int `json:"threshold"`
// VatSum Сумма НДС
VatSum int `json:"vat_sum,omitempty"`
// VatRate Ставка НДС (значение - 0, 10, 20, null - нет НДС)
VatRate int `json:"vat_rate,omitempty"`
}
type Phone struct {
// Number Номер телефона. Должен передаваться в международном формате: код страны (для России +7) и сам номер (10 и более цифр)
// Обязателен если: нет, если заказ типа "интернет-магазин". да, если заказ типа "доставка"
Number string `json:"number,omitempty"`
// Additional Дополнительная информация (добавочный номер)
Additional string `json:"additional,omitempty"`
}
type RecipientSender struct {
// Name нет, если заказ типа "интернет-магазин"; да, если заказ типа "доставка"
Name string `json:"name,omitempty"`
// Company Название компании. нет, если заказ типа "интернет-магазин"; да, если заказ типа "доставка"
Company string `json:"company,omitempty"`
// Email Эл. адрес. нет, если заказ типа "интернет-магазин"; да, если заказ типа "доставка"
Email string `json:"email,omitempty"`
// PassportSeries Серия паспорта
PassportSeries string `json:"passport_series,omitempty"`
// PassportNumber Номер паспорта
PassportNumber string `json:"passport_number,omitempty"`
// PassportDateOfIssue Дата выдачи паспорта
PassportDateOfIssue string `json:"passport_date_of_issue,omitempty"`
// PassportOrganization Орган выдачи паспорта
PassportOrganization string `json:"passport_organization,omitempty"`
// Tin ИНН Может содержать 10, либо 12 символов
Tin string `json:"tin,omitempty"`
// PassportDateOfBirth Дата рождения (yyyy-MM-dd)
PassportDateOfBirth string `json:"passport_date_of_birth,omitempty"`
// PassportRequirementsSatisfied Требования по паспортным данным удовлетворены (актуально для
// международных заказов):
// true - паспортные данные собраны или не требуются
// false - паспортные данные требуются и не собраны
PassportRequirementsSatisfied bool `json:"passport_requirements_satisfied,omitempty"`
// Phones Список телефонов, Не более 10 номеров
Phones []Phone `json:"phones,omitempty"`
}
type Seller struct {
// Name Наименование истинного продавца. Обязателен если заполнен inn
Name string `json:"name,omitempty"`
// INN ИНН истинного продавца. Может содержать 10, либо 12 символов
INN string `json:"inn,omitempty"`
// Phone Телефон истинного продавца. Обязателен если заполнен inn
Phone string `json:"phone,omitempty"`
// OwnershipForm Код формы собственности (подробнее см. приложение 2). Обязателен если заполнен inn
OwnershipForm int `json:"ownership_form,omitempty"`
// Address Адрес истинного продавца. Используется при печати инвойсов для отображения адреса настоящего
// продавца товара, либо торгового названия. Только для международных заказов "интернет-магазин".
// Обязателен если заказ - международный
Address string `json:"address,omitempty"`
}
type Service struct {
// Code Тип дополнительной услуги (подробнее см. приложение 3)
Code string `json:"code"`
// Parameter Параметр дополнительной услуги:
// количество для услуг
// PACKAGE_1, COURIER_PACKAGE_A2, SECURE_PACKAGE_A2, SECURE_PACKAGE_A3, SECURE_PACKAGE_A4,
// SECURE_PACKAGE_A5, CARTON_BOX_XS, CARTON_BOX_S, CARTON_BOX_M, CARTON_BOX_L, CARTON_BOX_500GR,
// CARTON_BOX_1KG, CARTON_BOX_2KG, CARTON_BOX_3KG, CARTON_BOX_5KG, CARTON_BOX_10KG, CARTON_BOX_15KG,
// CARTON_BOX_20KG, CARTON_BOX_30KG, CARTON_FILLER (для всех типов заказа)
// объявленная стоимость заказа для услуги INSURANCE (только для заказов с типом "доставка")
// длина для услуг BUBBLE_WRAP, WASTE_PAPER (для всех типов заказа)
// номер телефона для услуги SMS
// код фотопроекта для услуги PHOTO_DOCUMENT
Parameter string `json:"parameter,omitempty"`
}