Микросервис availability-orchestration
Микросервис availability-orchestration используется для предоставления информации о наличии товара.
Доступ к сервису выдается по запросу.
Логика работы микросервиса
В работе микросервиса участвует сущность Остаток (Availability), которая содержит информацию об остатке (id, количество товаров в штуках, id/код/название склада (локации) и др.).
Аутентификация
При обращении к микросервису
availability-orchestration через API в запросах на создание, редактирование или удаление
остатков необходимо в заголовке Authorization указать
токен: Authorization: Bearer
<токен>
.
Service context path
/api/availability-orchestration/
Настройки и параметры конфигурации микросервиса
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm"
}
}
// пример взят с тестового стенда
{
"env": {
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
"OAUTH_ECOM_BLACKLIST_TYPE": "информация_о_черном_списке_ECOM_OAuth",
"OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel"
}
}
Методы микросервиса
- Получение остатков товаров - GET запрос, /v1/availabilities
pageable object // обязательный параметр, разбивает результат на
страницы, указывает, по какому свойству и порядок сортировки
{
"page": 0, // номер страницы
"size": 3, // количество показываемых элементов
"sort": [ // параметр сортировки, по какому свойству
идет сортировка и ее порядок
"id,asc"
]
}
articleId array // необязательный
параметр, массив id товаров, для отображения информации только по заданным
остаткам (если указан, то параметр разбивки на страницы
игнорируется)
{
"content": [ // содержит массив остатков, в
соответствии с запросом показано 3 объекта, отсортированных по id по
возрастанию
{
"id": "02b986c8-b44f-411c-9b2c-df8a9a29a925", // id
остатка
"articleId": "1000602DC",
// id товара
"quantity": 1, //
количество товара
"replenishmentTime": 0, // время поставки товара, это свойство не используется
на данный момент
"locationCode":
"21" // обязательный параметр, код локации
},
{
"id": "02c6deb3-5832-4774-a5dc-bf075e8f43f5",
"articleId": "1000195DC",
"quantity": 12,
"replenishmentTime": 0,
"locationCode": "21"
},
{
"id":
"041eac68-ce55-4d82-97b3-fdc812aa552b",
"articleId": "1000075",
"quantity": 0,
"replenishmentTime": 12,
"locationCode": "21"
}
],
"pageable": {
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"pageNumber": 0,
"pageSize": 3,
"offset": 0,
"paged": true,
"unpaged": false
},
"last":
false,
"totalPages": 51,
"totalElements": 151,
"first": true,
"numberOfElements": 3,
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"size": 3,
"number": 0,
"empty": false
}
200 - операция успешно выполнена. Отдает или массив объектов (если есть информация), или пустой массив (если информации по задаваемым параметрам нет).
- Создание остатка товара с кэшированием - POST запрос, /v3/availabilities
{
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14,
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Центральный склад"
}
{
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14,
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Центральный склад"
}
- 201 - Операция успешна. Создан остаток.
- 400 - Остаток не создан.
- 409 - Ошибка. Остаток уже существует.
- 422 -
Ошибка. Данные, передаваемые в запросе, невалидны.
- Получение остатка по его ID - GET запрос, /v1/availabilities/{id}
id - path-параметр, обязательный: идентификатор остатка
{
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
// id остатка
"articleId": "123", // id товара
"quantity": 10, // количество товара
"replenishmentTime": 0, // время поставки товара, сейчас не используется
"locationCode": "21" // обязательный параметр, код
локации
}
- 200 - Операция успешна. Выдана информация по остатку.
- 404 - Ошибка. Остаток не найден.
- 422 - Ошибка. Отсутствуют
обязательные данные (например, id остатка).
- Получение списка с кодами локациями (используется для фильтра “Код локации”) - GET запрос, /v1/availabilities/location-codes/unique
page - query-параметр: номер страницы
size -
query-параметр: количество локаций в списке
term - query-параметр:
поисковый запрос
{
"content": [
"23",
"22",
"21",
"20AB",
"20",
"17",
"15",
"12",
"1111",
"111"
],
"number": 1,
"size": 10,
"totalElements": 24,
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"pageNumber": 1,
"pageSize": 10,
"offset": 10,
"paged": true,
"unpaged": false
},
"last":
false,
"totalPages": 3,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"first": false,
"numberOfElements": 10,
"empty": false
}
200 - Операция выполнена успешно, возвращен список кодов локаций для фильтра “Код локации”.
- Получение списка с артикулами (используется для фильтра “Артикул”) - GET запрос, /v1/availabilities/articles/unique
page - query-параметр: номер страницы
size -
query-параметр: количество артикулов в списке
term -
query-параметр: поисковый запрос
{
"content": [
"1000778DC"
],
"number": 0,
"size": 1,
"totalElements":
1,
"pageable": "INSTANCE",
"last": true,
"totalPages": 1,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"first":
true,
"numberOfElements": 1,
"empty": false
}
200 - Операция выполнена успешно, возвращен список артикулов для фильтра “Артикул”.
- Удаление остатка по его ID с кэшированием - DELETE запрос, /v2/availabilities/{id}
id - path-параметр, обязательный: идентификатор остатка
Отсутствует. В ответе приходит только код операции, например,
204.
- 204 - операция выполнена успешно, остаток удален
- 404 - ошибка, остаток с таким ID не найден
- Создание остатка - POST запрос, /v2/availabilities
{
"articleId":
"1001626DC",
"quantity": 2,
"replenishmentTime": 5,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode":
"677F",
"locationName": "Главный склад F17"
}
{
"id":
"bfb9565e-2df2-4621-850f-02c4490c3af8",
"articleId": "1001626DC",
"quantity":
2,
"replenishmentTime": 5,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName":
"Главный склад F17"
}
- 201 - операция выполнена успешно, новый остаток создан
- 400 - ошибка, не удалось создать остаток
- 409 - ошибка, остаток уже существует
- 422 - ошибка, невалидные параметры
- Редактирование остатка с кэшированием - PATCH запрос, /v3/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
уникальный идентификатор остатка, который нужно отредактировать
{
"articleId":
"1001626DC",
"quantity": 5,
"replenishmentTime": 10,
"locationId": "6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName": "Главный склад F17"
}
{
"id":
"bfb9565e-2df2-4621-850f-02c4490c3af8",
"articleId": "1001626DC",
"quantity":
5,
"replenishmentTime": 10,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName":
"Главный склад F17"
}
- 204 - операция успешна, остаток обновлен и выдана обновленная информация по остатку
- 400 - ошибка, остаток не создан
- 409 - ошибка, такой остаток уже существует
- 422 - ошибка, невалидные данные в запросе
- Удаление остатка по его ID - DELETE запрос, /v1/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
уникальный идентификатор остатка, который нужно удалить
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - Операция успешна. Остаток удален.
- 404 - Ошибка. Остаток с таким ID не найден.
- Редактирование наличия товара по ID остатка - PATCH запрос, /v2/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
идентификатор остатка
{
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14,
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Центральный склад"
}
{
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14,
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Центральный склад"
}
- 204 - Операция успешна. Остаток обновлен, и выдана обновленная информация по остатку.
- 400 - Ошибка. Остаток не создан.
- 409 - Ошибка. Такой остаток уже существует.
- 422 - Ошибка. Невалидные данные в запросе.