Микросервис route-orchestration
Микросервис route-orchestration предоставляет функциональность для управления маршрутами доставки заказов (просмотр, создание, редактирование и удаление).
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса используются сущности:
- Маршрут (Route) - содержит данные о маршруте доставки (id маршрута; информацию о точке отправления и точке прибытия; тип доставки; информацию о перевозчике; время, необходимое на доставку, а также доступность или недоступность доставки)
- Референс (Reference) - содержит данные о типе запрашиваемого референса (id, ключ, название и содержимое референса (см. ReferenceItem ниже)
- Содержимое референса (ReferenceItem) - содержит данные о содержимом референса (id, ключ, название объекта)
Аутентификация
При обращении к сервису требуется в заголовке Authorization
указывать токен: Authorization: Bearer <токен>
.
Service context path
/api/route-orchestration/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "ХХm",
"JAVA_XMX": "YYYm"
}
}
// пример взят с тестового стенда
{
"env": {
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
"OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel"
}
}
name - query-параметр: название региона
{
"id": "anf8ch39-fj39-js2l-ybn3-l49xn2kr9lln",
"name": "г.Воронеж",
"headId": "jwic9v08-djw8-j301-соид-alvi48dn48fn",
"level": 3,
"defaultRegion": false,
"inferiors": []
}
200 - операция выполнена успешно, получен отфильтрованный список регионов
- Получение маршрута по его id - GET запрос, /v1/routes/{routeId}
routeId - path-параметр, обязательный: идентификационный номер
маршрута
language - query-параметр, необязательный: язык
страницы
{
"id": "route022317DC",
"departure": "a9efb6d6-4af5-4c2d-8af6-888777040e1d",
"departureName": "Склад 11-1",
"departureType":
"point.type.location",
"destination":
"7e82a62d-12a2-4947-9cb8-29717eebcddd",
"destinationName": "г. Валдай",
"destinationType":
"point.type.region",
"type": "delivery.courier",
"typeTranslation": "Курьерская доставка",
"companyName": "delivery.company.dc",
"companyNameTranslation": "DC",
"deliveryHours":
8.5,
"isAvailable": true
}
- 200 - операция выполнена успешно, информация о маршруте получена
- 404 - ошибка, не удалось найти маршрут
с таким id
- Удаление маршрута по его id - DELETE запрос, /v1/routes/{routeId}
routeId - path-параметр, обязательный: уникальный идентификатор
маршрута
В ответе приходит только код операции, например, 204.
- 204 - операция прошла успешно, маршрут удален
- 404 - ошибка, не удалось найти маршрут
с таким id
- Редактирование маршрута - PATCH запрос, /v1/routes/{routeId}
routeId - path-параметр: идентификатор маршрута
{
"id":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"departure":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"departureName":
"Main Store",
"departureType":
"point.type.location",
"destination":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"destinationName": "Belarus",
"destinationType":
"point.type.region",
"type": "delivery.courier",
"typeTranslation": "Courier",
"companyName": "delivery.company.dc",
"companyNameTranslation": "DC",
"deliveryHours":
12.5,
"isAvailable": true
}
{
"id":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"departure":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"departureName":
"Main Store",
"departureType":
"point.type.location",
"destination":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"destinationName": "Belarus",
"destinationType":
"point.type.region",
"type": "delivery.courier",
"typeTranslation": "Courier",
"companyName": "delivery.company.dc",
"companyNameTranslation": "DC",
"deliveryHours":
12.5,
"isAvailable": true
}
- 202 - операция прошла успешно, маршрут обновлен
- 204 - No Content
- 400 - ошибка, не удалось обновить маршрут
- Получение отфильтрованного списка маршрутов - POST запрос, /v1/routes/list
language - query-параметр: язык отображения списка с
маршрутами
{
"departure":
"7e4993a1-7804-45fb-ba46-6d0b0634adfb",
"destination":
"01e50a75-202f-46bf-a8e3-9491ec0407f7"
}
[
{
"id": "route022313DC",
"departure": "7e4993a1-7804-45fb-ba46-6d0b0634adfb",
"departureName": "г. Калининград",
"departureType": "point.type.region",
"destination": "01e50a75-202f-46bf-a8e3-9491ec0407f7",
"destinationName": "Главный склад",
"destinationType": "point.type.location",
"type": "delivery.courier",
"typeTranslation": "Курьерская доставка",
"companyName": "delivery.company.dc",
"companyNameTranslation": "DC",
"isAvailable": true
}
]
200 - операция выполнена успешно, список маршрутов получен
- Получение страницы с маршрутами - POST запрос, /v1/routes/page
language - query-параметр: язык отображения страницы с
маршрутами
{
"sort": [
{
"sortBy": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 10,
"filter": {
"departure":
"7e82a62d-12a2-4947-9cb8-29717eebcddd"
}
}
{
"content": [
{
"id": "route022318DC",
"departure":
"7e82a62d-12a2-4947-9cb8-29717eebcddd",
"departureName": "г. Валдай",
"departureType": "point.type.region",
"destination":
"a9efb6d6-4af5-4c2d-8af6-888777040e1d",
"destinationName": "Склад 11-1",
"destinationType": "point.type.location",
"type": "delivery.courier",
"typeTranslation": "Курьерская доставка",
"companyName":
"delivery.company.dc",
"companyNameTranslation": "DC",
"deliveryHours": 8.5,
"isAvailable": true
}
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"pageNumber": 0,
"pageSize": 10,
"offset": 0,
"paged": true,
"unpaged": false
},
"last":
true,
"totalPages": 1,
"totalElements": 1,
"first": true,
"numberOfElements": 1,
"sort": {
"sorted": true,
"unsorted":
false,
"empty": false
},
"size": 10,
"number": 0,
"empty": false
}
200 - операция выполнена успешно, получена страница с маршрутами
Работа с референсами
- Получение списка возможных типов доставки или курьерских компаний - GET запрос, /v1/references/{key}
key - path-параметр, обязательный: ключ референса (для получения
списка типов доставки используется ключ delivery.type; для списка курьерских
команий - delivery.company)
language - query-параметр: язык
отображения информации
{
"id":
"5dc618af-af49-4adc-bccd-4d17aeff7526",
"key":
"delivery.type",
"name": "Тип доставки ",
"items": [
{
"id":
"5dc618af-af49-4adc-bccd-4d17aeff7611",
"key": "delivery.courier",
"name": "Курьерская доставка"
}
]
}
- 200 - операция успешно выполнена
- 404 - ошибка, указанный ключ
не найден