Обезличенные сделки
API обезличенных сделок
Описание
API для получения ваших сделок в обезличенном виде. Мы не получаем информацию о вас и ваших контрагентах. Через API передаются общие данные по сделке и грузу.
Обязательные параметры для передачи:
- дата погрузки;
- город или регион загрузки;
- город или регион разгрузки;
- расстояние;
- вес или объем груза;
- догруз или отдельная машина;
- тип кузова;
- ставка, с указанием типа.
Доступ к API
По вопросам обращайтесь к Александру Вильде.
Email: sas@ati.su
Телефон: + 7-812-602-01-04 доб.108
Методы
Предоставление обезличенных сделок
Передать нам обезличенные сделки. Массив json-объектов с параметрами, стандартизированными в ATI.SU.
Предоставить обезличенные сделки post /impersonaldeals/v1/give_deals
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
demo | boolean | query | Если `true`, сделки проходят ту же валидацию, что и при реальной отправке, но не сохраняются и не тарифицируются (тестовый режим). Пример: false |
Тело запроса на предоставление обезличенных сделок.
Сделки, которые вы хотите передать
Идентификатор груза в вашей системе (либо хэш идентификаторов, если несколько).
Минимальное количество символов: 1.
Не передавайте в одном пакете одинаковый LoadId.
Дата погрузки, в формате ISO-8601, без времени: YYYY-MM-DD
Гео-пункт загрузки
Гео-точка ATI.SU.
ID гео-пункта. Используется для города, региона или страны. Город — значение поля id в структуре city, регион — значение поля id в структуре region, страна — значение поля id в структуре country из словаря ATI.SU
Тип гео-пункта
0- страна1- регион2- город
FiasId гео-пункта.
Значение fias_id из
словаря Fias.
- Пример:
C2DEB16A-0330-4F05-821F-1D09C93331E6- Санкт-Петербург
Текстовое поле для описания гео-пункта.
- Пример:
город Санкт-Петербург, улица Народного Ополчения 10
Гео-пункт разгрузки
Гео-точка ATI.SU.
ID гео-пункта. Используется для города, региона или страны. Город — значение поля id в структуре city, регион — значение поля id в структуре region, страна — значение поля id в структуре country из словаря ATI.SU
Тип гео-пункта
0- страна1- регион2- город
FiasId гео-пункта.
Значение fias_id из
словаря Fias.
- Пример:
C2DEB16A-0330-4F05-821F-1D09C93331E6- Санкт-Петербург
Текстовое поле для описания гео-пункта.
- Пример:
город Санкт-Петербург, улица Народного Ополчения 10
Количество дополнительных точек на маршруте
Доп. точки маршрута в том же формате, что и From/To:
значение поля id в структуре city из словаря городов ATI.SU
или fias_id из словаря Fias или текст
Расстояние маршрута в километрах.
Если не передать, расстояние рассчитывается автоматически — но только когда и From, и To заданы городами.
Если хотя бы один из пунктов — регион или страна, параметр обязателен.
Идентификатор наименования груза.
Значение поля dictionary_item_id из
словаря наименований грузов.
Словарь нужно запрашивать с параметром attributeFieldFormat=2, иначе attributes_dictionary в ответе не вернётся.
Параметр, определяющий степень опасности груза. Допустимое значение от 0 до 9
Вес груза в тоннах. Обязательный параметр, если не задан параметр Volume.
Объем груза в кубических метрах. Обязательный параметр, если не задан параметр Weight.
Количество упаковок для груза
Тип кузова.
Значение поля mask из attributes_dictionary
словаря кузовов ATI.SU.
Словарь нужно запрашивать с параметром attributeFieldFormat=2, иначе attributes_dictionary в ответе не вернётся.
В словаре атрибуты приходят строками, а поле ожидает число: передавайте "1" как 1.
Не передавайте dictionary_item_id — это идентификатор элемента словаря, а не маска кузова.
Вариант перевозки:
1- отдельной машиной2- только догрузом
Ставка, по которой совершена сделка
Валюта ставки в сделке.
Значение поля dictionary_item_id из
словаря валют ATI.SU.
Словарь нужно запрашивать с параметром attributeFieldFormat=2, иначе attributes_dictionary в ответе не вернётся.
Параметр, определяющий тип ставки.
1- нал2- с НДС3- без НДС
Параметр, определяющий исполнителя перевозки:
* 1 - перевозчик — если сделка между вами и перевозчиком
* 2 - экспедитор — если сделка между вами и грузовладельцем
* null - неизвестно
curl 'https://api.ati.su/impersonaldeals/v1/give_deals' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"Data":[{"LoadId":"E45CCE73-Q040-6641-A19A-FFFFFFFFFFFF","Date":"2021-01-01","From":{"AtiId":{"Id":3611,"Type":2}},"To":{"AtiId":{"Id":1,"Type":2}},"Distance":750,"Weight":45.5,"CarType":1,"DogruzType":1,"Rate":"27500.00","CurrencyId":1,"PaymentType":2,"Executor":1}]}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/impersonaldeals/v1/give_deals", "{""Data"":[{""LoadId"":""E45CCE73-Q040-6641-A19A-FFFFFFFFFFFF"",""Date"":""2021-01-01"",""From"":{""AtiId"":{""Id"":3611,""Type"":2}},""To"":{""AtiId"":{""Id"":1,""Type"":2}},""Distance"":750,""Weight"":45.5,""CarType"":1,""DogruzType"":1,""Rate"":""27500.00"",""CurrencyId"":1,""PaymentType"":2,""Executor"":1}]}"); 200 Ваши данные успешно приняты. Тело ответа — boolean `true`. При `demo=true` означает, что сделки прошли валидацию, но сохранены не были.
402 Не удалось начислить атисы, сделки не были загружены. Код: `FACELESS_52_GIVE_DEALS_BILLING_ERROR`
Формат возвращаемых ошибок.
Сервис возвращает ошибки в двух видах, различать их нужно по error_list:
* error_list пуст — произошла одна ошибка, она описана в полях
error, reason и details;
* error_list не пуст — ошибок несколько, разбирать нужно каждый его
элемент, а верхнеуровневый error в этом случае всегда равен
validation_errors.
Как разбирать ошибку:
1. Ветвите логику по error — это стабильный машинный код.
2. reason предназначен для показа пользователю. Текст может меняться,
разбирать его не нужно.
3. details.location указывает на поле, вызвавшее ошибку.
4. details.index и details.LoadId указывают на конкретную сделку
в массиве Data и заполняются только для /v1/give_deals.
Машинный код ошибки.
Для ответов с несколькими ошибками (непустой error_list)
принимает фиксированное значение validation_errors.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Для ответов с несколькими ошибками всегда null: детали каждой ошибки
лежат в соответствующем элементе error_list.
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
Список ошибок. Пуст, если произошла одна ошибка — тогда она описана в полях выше.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
403 Доступ запрещён. Возможные коды: `FACELESS_42_FORBIDDEN`, `FACELESS_48_DATE_BLOCK`
Формат возвращаемых ошибок.
Сервис возвращает ошибки в двух видах, различать их нужно по error_list:
* error_list пуст — произошла одна ошибка, она описана в полях
error, reason и details;
* error_list не пуст — ошибок несколько, разбирать нужно каждый его
элемент, а верхнеуровневый error в этом случае всегда равен
validation_errors.
Как разбирать ошибку:
1. Ветвите логику по error — это стабильный машинный код.
2. reason предназначен для показа пользователю. Текст может меняться,
разбирать его не нужно.
3. details.location указывает на поле, вызвавшее ошибку.
4. details.index и details.LoadId указывают на конкретную сделку
в массиве Data и заполняются только для /v1/give_deals.
Машинный код ошибки.
Для ответов с несколькими ошибками (непустой error_list)
принимает фиксированное значение validation_errors.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Для ответов с несколькими ошибками всегда null: детали каждой ошибки
лежат в соответствующем элементе error_list.
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
Список ошибок. Пуст, если произошла одна ошибка — тогда она описана в полях выше.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
411 Все ошибки в пакете — одного кода: не удалось рассчитать расстояние. Если среди ошибок есть хотя бы одна с другим кодом, возвращается 422. Сделки без ошибок при этом сохраняются. Код: `FACELESS_3_UNCALCULATED_DISTANCE`
Формат возвращаемых ошибок.
Сервис возвращает ошибки в двух видах, различать их нужно по error_list:
* error_list пуст — произошла одна ошибка, она описана в полях
error, reason и details;
* error_list не пуст — ошибок несколько, разбирать нужно каждый его
элемент, а верхнеуровневый error в этом случае всегда равен
validation_errors.
Как разбирать ошибку:
1. Ветвите логику по error — это стабильный машинный код.
2. reason предназначен для показа пользователю. Текст может меняться,
разбирать его не нужно.
3. details.location указывает на поле, вызвавшее ошибку.
4. details.index и details.LoadId указывают на конкретную сделку
в массиве Data и заполняются только для /v1/give_deals.
Машинный код ошибки.
Для ответов с несколькими ошибками (непустой error_list)
принимает фиксированное значение validation_errors.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Для ответов с несколькими ошибками всегда null: детали каждой ошибки
лежат в соответствующем элементе error_list.
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
Список ошибок. Пуст, если произошла одна ошибка — тогда она описана в полях выше.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
422 Ошибки валидации переданных сделок. Одна сделка может дать несколько ошибок, все они перечислены в `error_list`: `details.index` и `details.LoadId` указывают на проблемную сделку в массиве `Data`, а `details.location` — на конкретное поле. Возможные значения `error` перечислены в схеме `FacelessErrorCode`. Сделки без ошибок при этом сохраняются: ответ 422 не означает, что не принят весь пакет. При `demo=true` не сохраняется ничего, но состав ошибок тот же.
Формат возвращаемых ошибок.
Сервис возвращает ошибки в двух видах, различать их нужно по error_list:
* error_list пуст — произошла одна ошибка, она описана в полях
error, reason и details;
* error_list не пуст — ошибок несколько, разбирать нужно каждый его
элемент, а верхнеуровневый error в этом случае всегда равен
validation_errors.
Как разбирать ошибку:
1. Ветвите логику по error — это стабильный машинный код.
2. reason предназначен для показа пользователю. Текст может меняться,
разбирать его не нужно.
3. details.location указывает на поле, вызвавшее ошибку.
4. details.index и details.LoadId указывают на конкретную сделку
в массиве Data и заполняются только для /v1/give_deals.
Машинный код ошибки.
Для ответов с несколькими ошибками (непустой error_list)
принимает фиксированное значение validation_errors.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Для ответов с несколькими ошибками всегда null: детали каждой ошибки
лежат в соответствующем элементе error_list.
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.
Список ошибок. Пуст, если произошла одна ошибка — тогда она описана в полях выше.
Машинный код ошибки сервиса.
Человекочитаемое описание ошибки.
Детали ошибки (null, если их нет).
Детали ошибки.
Набор заполненных полей зависит от вида ошибки: незаполненные поля
в ответе отсутствуют. Само наличие поля — признак того, что ошибка
относится к соответствующей сущности.
Путь до поля, к которому относится ошибка.
Сегменты пути разделены ->.
* Для /v1/give_deals путь начинается с Data -> <индекс сделки>.
* Для остальных методов путь состоит из имени поля, например StartDate.
* Пустая строка, если ошибка относится к телу запроса целиком.
Индекс сделки в массиве Data. Только для /v1/give_deals.
LoadId сделки, к которой относится ошибка.
Только для /v1/give_deals. Может быть null, если поле не передали.
Исходный текст ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Исходный тип ошибки Pydantic. Только для FACELESS_53_VALIDATION_ERROR.
Индекс сделки, которая была записана из группы дубликатов.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы всех сделок-дубликатов в группе.
Только для FACELESS_29_EQUAL_LOAD_ID.
Индексы сделок, сгруппированные по повторяющемуся LoadId.
Только для FACELESS_29_EQUAL_LOAD_ID, обнаруженной до разбора пакета по сделкам.
Пояснение по получению доступа. Только для FACELESS_42_FORBIDDEN.