Интеграция по API
- Просмотров: 229
Общая информация
Доступ к API по адресу: https://api.utsr.ru/
Аутентификация
Для аутентификации в API (подписи запросов) Вам необходимо запросить у менеджера API KEY и SECRET KEY
Аутентификация проводится с помощью двух заголовков (HEADER)
- X-PARTNER-ID - это API KEY
- X-PARTNER-SIGN - подпись запроса.
Формируется как md5 сумма от строки "SECRET KEY + body"
Для GET-запроса: md5(SECRET KEY)
Для POST-запроса: md5(SECRET KEY + POST body)
DEBUG-режим
По умолчанию, после получения API KEY и SECRET KEY при интеграции включен debug-режим.
С помощью данного режима можно "отладить" работу приложения, в ответе возвращается дополнительная информация. Например, если подпись запроса некорректна, то в debug-режиме в ответе будет возвращаться параметр "sign_must_be", который укажет корректную подпись для запроса. Также, в debug-режиме есть ограничения на количество запросов.
По завершении интеграции с API необходимо сообщить менеджеру, интеграция будет переведена в "боевой" режим (дополнительной информации возвращаться не будет)
Методы
Метод получения списка обслуживаемых городов
Метод запроса:
GET
Адрес метода:
/v1/city/
Ответ
| Параметр | Тип | Значение |
|---|---|---|
| id | string(36) | Идентификатор города в формате GUID |
| name | string | Наименование города |
| alias | string | Алиас |
Пример запроса:
curl --location --request GET 'https://api.utsr.ru/v1/city/' \ --header 'X-PARTNER-ID: c343652e-37ef-11eb-a671-00163e47de8a' \ --header 'X-PARTNER-SIGN: be8d082f097f0bb43dc666a03f67bd28'
Метод получения списка складов (терминалов)
Метод запроса:
GET
Адрес метода:
/v1/terminal/
Ответ
| Параметр | Тип | Значение |
|---|---|---|
| id | string(36) | Идентификатор терминала (склада) в формате GUID |
| name | string | Наименование терминала (адрес) |
| city | string(36) | Идентификатор города в формате GUID |
| phone | string | Контактный телефон (справочная информация) |
| string | Контактный email (справочная информация) | |
| timework | string | Время работы (справочная информация) |
| coordinates | string | Координаты (справочная информация, для отображения на карте) |
Пример запроса:
curl --location --request GET 'https://api.utsr.ru/v1/terminal/' \ --header 'X-PARTNER-ID: c343652e-37ef-11eb-a671-00163e47de8a' \ --header 'X-PARTNER-SIGN: be8d082f097f0bb43dc666a03f67bd28'
Метод определения стоимости грузоперевозки
Метод запроса:
POST
Адрес метода:
/v1/calculate/
Параметры запроса
| Параметр | Тип | Значение |
|---|---|---|
| sending | object | Объект Point, содержащий информацию о точке забора или доставки груза |
| weight | float | Вес, кг |
| volume | float | Объем, м3 |
| additionalPack | object | Объект, содержащий информацию о необходимости дополнительной упаковки |
| additionalPack.pack | boolean | Флаг для определения необходимости дополнительной упаковки |
| additionalPack.type | enum | lathing - обрешетка pallet - паллетный борт |
| insurance | object | Объект, содержащий информацию о необходимости страхования груза |
| insurance.add | boolean | Флаг для добавления услуги страхования груза |
| insurance.value | float | Оценочная стоимость груза, руб |
Объект Point
| Параметр | Тип | Значение |
|---|---|---|
| type | enum | terminal - склад address - адрес |
| id | string | При type = terminal, идентификатор терминала (склада) в формате GUID |
| city | string | При type = address, идентификатор города в формате GUID |
| address | string | При type = address, объект с информацией об адресе |
| address.street | string | При type = address, наименование улицы |
| address.house | string | При type = address, номер дома |
Ответ
| Параметр | Тип | Значение |
|---|---|---|
| price | float | Стоимость грузоперевозки |
Пример запроса:
curl --location --request POST 'https://api.utsr.ru/v1/calculate/' \
--header 'X-PARTNER-ID: c343652e-37ef-11eb-a671-00163e47de8a' \
--header 'X-PARTNER-SIGN: bb14314469c612f99e836b85cf4e4dd6' \
--header 'Content-Type: application/json' \
--data-raw '{
"sending": {
"type": "terminal",
"id": "db6b1ed1-d9f8-11e9-814c-00155d016401"
},
"delivery": {
"type": "address",
"city": "5f11ab0f-37ef-11eb-a671-00163e47de8a",
"address": {
"street": "Ленина",
"house": "1"
}
},
"weight": 10,
"volume": 0.1,
"additionalPack":{
"pack": true,
"type": "lathing"
},
"insurance":{
"add": true,
"value": 10000
}
}'
Коды ошибок
| Код ошибки | HTTP-код | Описание ошибки |
|---|---|---|
| missed_auth_credentials | 401 | Не найдены заголовки X-PARTNER-ID и X-PARTNER-SIGN |
| incorrect_partner | 401 | Не найдена информация по партнеру (по API KEY) |
| incorrect_sign | 401 | Некорректная подпись запроса |
| undefined_method | 500 | Некорректный метод для запроса по API. Поддерживаются только методы GET и POST |
| incorrect_parameter | 500 | Некорректно передан параметр в теле JSON Body (POST) |
| internal_error | 500 | Внутренняя ошибка |

