API Средних ставок
API позволяет получить цены и количество грузов из сервиса «Средние ставки».
API предоставляет средние ставки:
- по направлениям внутри России и за рубеж;
- для полностью загруженного транспорта со следующим тоннажем: 1,5 т, 3 т, 5 т, 10 т, 20 т;
- за интересующий вас период;
- для следующих типов кузовов: рефрижератор, тент, трал, контейнер, открытый и закрытый кузов.
Подробнее об API Средних ставок и методах получения данных.
Ограничения при работе с API
Время ответа API зависит от объёма данных, который вы запрашиваете.
Например: чтобы получить данные за 1 день потребуется 150 мс, за полгода по дням — 400 мс, за год по месяцам — 15 сек. и так далее.
Количество запросов к API — 10 000 в месяц.
Увеличить лимит можно по индивидуальному запросу: обратитесь в отдел продаж boards@ati.su.
Как получить доступ к API
Чтобы получить доступ к API – подключите лицензию «API Средних ставок» на странице оплаты.
Если у вас остались вопросы — напишите в техническую поддержку на api@ati.su.
Методы
Доступные направления для средних ставок
Для проверки корректности интеграции с данными API в запросе можно указать необязательный параметр, позволяющий получить демо-данные:
- demo - Флаг демо-режима (Boolean)
При указании этого параметра сервером будет возвращен тестовый набор данных с тем же контрактом ответа, что и в полноценном API.
Возвращает список всех доступных направлений и доступные типы кузова для направления get /priceline/license/v2/all_directions
curl 'https://api.ati.su/priceline/license/v2/all_directions' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура Выполнить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Запрос("GET", "https://api.ati.su", "/priceline/license/v2/all_directions"); 200 Successful Response
Справочник направлений: города/регионы и матрица доступных типов кузова и тоннажа
Все направления для средних ставок
ID города загрузки из геословаря ATI.SU
Название города загрузки
ID города разгрузки из геословаря ATI.SU
Название города разгрузки
ID региона загрузки из геословаря ATI.SU
Название региона загрузки
ID региона разгрузки из геословаря ATI.SU
Название региона разгрузки
Доступные сочетания типа кузова и тоннажа для прямого направления
Словарь доступных сочетаний тип кузова - тоннаж
Словарь доступных сочетаний тоннаж - тип кузова
Доступные сочетания типа кузова и тоннажа для кругорейса; отсутствует, если кругорейс недоступен
Доступные сочетания типа кузова и тоннажа для направления
Словарь доступных сочетаний тип кузова - тоннаж
Словарь доступных сочетаний тоннаж - тип кузова
422 Ошибка валидации параметров запроса
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
Возвращает список всех доступных направлений и доступные типы кузова для направления Данная версия метода устарела и её поддержка будет прекращена. Пожалуйста, пользуйтесь актуальной версией API. get /priceline/license/v1/all_directions
curl 'https://api.ati.su/priceline/license/v1/all_directions' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура Выполнить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Запрос("GET", "https://api.ati.su", "/priceline/license/v1/all_directions"); 200 Successful Response
Справочник направлений: города/регионы, типы кузова и кругорейсы
Список направлений, по которым доступен запрос средних ставок
ID города загрузки из геословаря ATI.SU
Название города загрузки
ID города разгрузки из геословаря ATI.SU
Название города разгрузки
ID региона загрузки из геословаря ATI.SU
Название региона загрузки
ID региона разгрузки из геословаря ATI.SU
Название региона разгрузки
Список типов кузова, доступных для этого направления
Список типов кузова, для которых доступен кругорейс (обратное направление)
422 Ошибка валидации параметров запроса
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
Запрос средних ставок
Для проверки корректности интеграции с данными API в запросе можно указать необязательный параметр, позволяющий получить демо-данные:
- demo - Флаг демо-режима (Boolean)
При указании этого параметра сервером будет возвращен тестовый набор данных с тем же контрактом ответа, что и в полноценном API.
Метод получения средних цен post /priceline/license/v1/average_prices
Параметры запроса средних ставок по направлению, типу кузова, тоннажу и периоду
Город или регион откуда. Указывается либо CityId, либо RegionId.
ID города из геословаря ATI.SU (поле id в объекте city)
ID региона из геословаря ATI.SU (поле id в объекте region)
Город или регион куда. Указывается либо CityId, либо RegionId.
ID города из геословаря ATI.SU (поле id в объекте city)
ID региона из геословаря ATI.SU (поле id в объекте region)
Тип кузова.
* ref - рефрижераторы.
* close - закрытые. Значение по умолчанию.
* open - открытые.
* tent - тентованный.
* tral - трал.
* docker - контейнер.
Начало периода. Формат ISO-8601.
Если интересует только одна дата, то передавать ее здесь.
По умолчанию - последний день, за который есть данные.
Конец периода. Формат ISO-8601.
Если интересует только одна дата, то данное поле не заполнять.
Дискретность выдачи данных.
day- для каждого дня будут выданы данные. Значение по умолчанию. Опцияdayдоступна только в том случае, если общий временной период составляет меньше 6 месяцев.week- будут выданы усредненные данные по неделе.month- будут выданы усредненные данные по месяцу.
Учитывать ли НДС в цене.
false- не учитывать. Значение по умолчанию.true- учитывать.
Параметр позволяет получить цену кругорейса, то есть ставку для маршрута «туда и обратно».
false- для прямого рейса. Значение по умолчанию.true- для кругового рейса (если доступен).
Тоннаж. Одно из:
* 1.5
* 3
* 5
* 10
* 20 - значение по умолчанию.
curl 'https://api.ati.su/priceline/license/v1/average_prices' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"From":{"CityId":1},"To":{"CityId":3611},"CarType":"close","DateFrom":"2024-03-01","DateTo":"2024-03-10","Frequency":"day","WithNds":false,"RoundTrip":true,"Tonnage":10}'Процедура Выполнить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", "/priceline/license/v1/average_prices", "{""From"":{""CityId"":1},""To"":{""CityId"":3611},""CarType"":""close"",""DateFrom"":""2024-03-01"",""DateTo"":""2024-03-10"",""Frequency"":""day"",""WithNds"":false,""RoundTrip"":true,""Tonnage"":10}"); 200 Successful Response
Средние ставки ATI.SU по направлению, типу кузова и тоннажу за запрошенный период
Данные по запрошенному интервалу
Начало периода. Формат ISO-8601.
Конец периода. Формат ISO-8601.
Данные по ставкам в руб/км
Верхняя граница ставок
Нижняя граница ставок
Средняя ставка
Данные по ставкам в руб за весь маршрут
Верхняя, нижняя и средняя ставка за период
Верхняя граница ставок
Нижняя граница ставок
Средняя ставка
Количество грузов
Расстояние маршрута в километрах
Признак того, что ставки в ответе рассчитаны с учётом НДС
402 Действие лицензии не покрывает текущий период
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
403 Нет доступа к API — требуется оплаченная лицензия
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
404 По запрошенным параметрам данные не найдены
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
422 Ошибка валидации параметров запроса
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
429 Превышен лимит запросов к API
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
Статистика использования API
Возвращает количество запросов к сервису за текущий период get /priceline/license/v1/usage-statistics
curl 'https://api.ati.su/priceline/license/v1/usage-statistics' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура Выполнить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Запрос("GET", "https://api.ati.su", "/priceline/license/v1/usage-statistics"); 200 Successful Response
Текущая статистика использования API интегратором: лимит, расход за период, остаток и дата сброса счётчика.
Месячный лимит на количество запросов
Количество запросов, выполненных за текущий период
Оставшееся количество запросов
Дата и время следующего сброса счётчика запросов в формате ISO-8601 (UTC).
После сброса начнётся новый период, а запросы снова станут доступны.
Дата сброса не привязана к дате окончания лицензии и может с ней не совпадать. Например, если лицензия действует 2 месяца, счётчик может сбрасываться каждый месяц.
Если вы ещё не начали использовать API, дата сброса не возвращается.
402 Действие лицензии не покрывает текущий период
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)
403 Нет доступа к API — требуется оплаченная лицензия
Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов
Код или текст ошибки (machine-readable)
Человекочитаемое описание причины ошибки
Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)