Микросервис store-orchestration
Микросервис store-orchestration предоставляет функциональность для управления локациями (складами).
Доступ к сервису предоставляется по запросу.
Логика работы микросервиса
В работе микросервиса используется сущность Location (Локация), которая содержит данные локации (ID, название, адрес, координаты, телефон, код, расписание, статус и др.).
Аутентификация
При обращении к микросервису store-orchestration через API необходимо в заголовке
Authorization указать токен: Authorization: Bearer
<токен>
.
Service context path
/api/store-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"
}
}
Методы микросервиса
- Получение страницы с локациями - GET запрос, /v1/locations
page, size - query-параметр: номер и размер страницы заказов
sort - query-параметр: сортировка по полю
code -
query-параметр, необязательный: фильтр по коду локации
{
"content": [
{
"id":
"01e50a75-202f-46bf-a8e3-9491ec0407f7",
"name": "Главный склад",
"region": "Беларусь",
"city": "Минск",
"postcode": "223112",
"address": "улица Немига 3",
"office": "76",
"phone": "+375 (29)
111-22-55",
"businessType": "Ритейл",
"coordinates": "хорошие",
"schedule": "круглосуточно, кроме 03:00-04:00",
"throughput":
10000.08,
"assemblyHours": 10000.99,
"code": "A003-01",
"onlineOrders": true,
"status": "ACTIVE"
},
{
"id": "6d162d69-76db-470d-be15-2d226e6afb19",
"name": "Главный склад
F17",
"region": "Россия",
"city": "Самара",
"postcode":
"13324567",
"address": "ул Арбат, д 11",
"office": "Главный офис",
"phone": "+879 04 55 063 ",
"businessType": "Продажа",
"coordinates": "",
"schedule": "",
"throughput": 0.00,
"assemblyHours": 0.00,
"code": "677F",
"onlineOrders": true,
"status": "INACTIVE"
}
],
"pageable": {
"sort":
{
"unsorted": true,
"sorted": false,
"empty": true
},
"pageNumber": 0,
"pageSize": 2,
"offset": 0,
"unpaged": false,
"paged": true
},
"totalPages": 7,
"totalElements": 13,
"last": false,
"first": true,
"numberOfElements": 2,
"sort": {
"unsorted": true,
"sorted": false,
"empty": true
},
"size":
2,
"number": 0,
"empty": false
}
200 - операция выполнена успешно, получена страница с локациями
- Получение локации по ее ID - GET запрос, /v1/locations/{id}
id - path-параметр, обязательный: уникальный идентификатор
локации
{
"id":
"6d162d69-76db-470d-be15-2d226e6afb19",
"name": "Главный склад F17",
"region":
"Россия",
"city": "Самара",
"postcode": "13324567",
"address": "ул Арбат, д 11",
"office": "Главный офис",
"phone": "+879 04
55 063 ",
"businessType": "Продажа",
"coordinates": "",
"schedule": "",
"throughput": 0.00,
"assemblyHours": 0.00,
"code": "677F",
"onlineOrders":
true,
"status": "INACTIVE"
}
- 200 - операция выполнена успешно, получены данные локации
- 404 - ошибка, локация не
найдена
- Получение отфильтрованного списка локаций - GET запрос, /v1/locations/filter
code - query-параметр, необязательный: фильтрация по коду
локации
[
{
"id":
"6d162d69-76db-470d-be15-2d226e6afb19",
"name": "Главный склад F17",
"region": "Россия",
"city": "Самара",
"postcode": "13324567",
"address": "ул Арбат, д 11",
"office": "Главный
офис",
"phone": "+879
04 55 063 ",
"businessType": "Продажа",
"coordinates": "",
"schedule": "",
"throughput": 0.00,
"assemblyHours": 0.00,
"code": "677F",
"onlineOrders": true,
"status": "INACTIVE"
}
]
200 - получен список локаций с учетом примененного фильтра
- Получение всех доступных локаций - GET запрос, /v1/locations/all
[
{
"id": "a9efb6d6-4af5-4c2d-8af6-888777040e1d",
"name": "Склад 11-1",
"region": "Россия",
"city": "москва",
"postcode": "222340",
"address": "ул Арбат, д
11",
"office": "Главный
офис",
"phone": "+879
04 55 063 x",
"businessType": "Продажа",
"coordinates": "\"55° 45’ 20.9916\"\"N,
37° 37’ 3.6228\"\"E\"",
"schedule": "0.00ч-0.00ч ",
"throughput": 0.00,
"assemblyHours": 33.00,
"code": "11-1",
"onlineOrders": true,
"status": "ACTIVE"
},
{
"id":
"a0f84bda-5e3d-4568-825b-680946defe58",
"name": "Главный склад D333",
"region": "Россия",
"city": "Москва",
"postcode": "",
"address": "ул Арбат, д 11",
"office": "",
"phone": "+879 04 55
063",
"businessType":
"Продажа",
"coordinates": "\"55° 45’ 20.9916\"\"N, 37°
37’ 3.6228\"\"E\"",
"schedule": "8.00-19.00",
"throughput": 22.50,
"assemblyHours": 1.50,
"code": "20AB",
"onlineOrders": true,
"status": "ACTIVE"
},
{
"id": "6d162d69-76db-470d-be15-2d226e6afb19",
"name": "Главный склад
F17",
"region":
"Россия",
"city":
"Самара",
"postcode":
"13324567",
"address":
"ул Арбат, д 11",
"office": "Главный офис",
"phone": "+879 04 55 063 ",
"businessType": "Продажа",
"coordinates": "",
"schedule": "",
"throughput": 0.00,
"assemblyHours": 0.00,
"code": "677F",
"onlineOrders": true,
"status": "INACTIVE"
}
]
200 - операция успешно выполнена, получен список всех локаций, заведенных в интернет-магазине
- Получение отфильтрованного списка локаций - POST запрос, /v1/locations/list
{
"searchTerm":
"11-1"
}
[
{
"id": "a9efb6d6-4af5-4c2d-8af6-888777040e1d",
"name": "Склад 11-1",
"region": "Россия",
"city": "москва",
"postcode": "222340",
"address": "ул Арбат, д
11",
"office": "Главный
офис",
"phone": "+879
04 55 063 x",
"businessType": "Продажа",
"coordinates": "\"55° 45’ 20.9916\"\"N,
37° 37’ 3.6228\"\"E\"",
"schedule": "0.00ч-0.00ч ",
"throughput": 0.00,
"assemblyHours": 33.00,
"code": "11-1",
"onlineOrders": true,
"status": "ACTIVE"
}
]
200 - операция выполнена успешно, получен отфильтрованный список локаций
- Создание локации - POST запрос, /v1/locations
{
"name": "Склад г. Сочи",
"region": "Россия",
"city":
"Сочи",
"postcode": "",
"address":
"ул. Набережная",
"office": "",
"phone": "+76528390283",
"businessType": "",
"coordinates": "",
"schedule":
"10:00-18:00",
"throughput": 0,
"assemblyHours": 0,
"code": "123321",
"onlineOrders": true,
"status":
"INACTIVE"
}
{
"id":
"70ee8f4f-fc07-4a44-8cfb-6546ad7d63f2",
"name": "Склад г. Сочи",
"region":
"Россия",
"city": "Сочи",
"postcode": "",
"address": "ул. Набережная",
"office":
"",
"phone": "+76528390283",
"businessType": "",
"coordinates": "",
"schedule":
"10:00-18:00",
"throughput": 0,
"assemblyHours": 0,
"code": "123321",
"onlineOrders":
true,
"status": "INACTIVE"
}
- 201 - операция выполнена успешно, локация создана
- 422 - недостаточно данных или они не валидны
- Редактирование локации - PATCH запрос, /v1/locations/{locationId}
locationID - path-параметр, обязательный: идентификатор локации для
редактирование
{
"name": "Склад г.
Сочи",
"region": "Россия",
"city":
"Сочи",
"postcode": "",
"address":
"ул. Новая д. 1",
"office": "",
"phone": "+7111111",
"businessType": "",
"coordinates": "",
"schedule":
"10:00-15:00",
"throughput": 0,
"assemblyHours": 0,
"code": "123001",
"onlineOrders": true,
"status":
"INACTIVE"
}
{
"id":
"70ee8f4f-fc07-4a44-8cfb-6546ad7d63f2",
"name": "Склад г. Сочи",
"region":
"Россия",
"city": "Сочи",
"postcode": "",
"address": "ул. Новая д. 1",
"office":
"",
"phone": "+7111111",
"businessType": "",
"coordinates": "",
"schedule":
"10:00-15:00",
"throughput": 0,
"assemblyHours": 0,
"code": "123001",
"onlineOrders":
true,
"status": "INACTIVE"
}
- 202 - операция выполнена успешно, данные локации обновлены
- 422 - недостаточно данных или они не валидны