Микросервис availability
Микросервис availability используется для предоставления информации о наличии товара.
Доступ к сервису выдается по запросу.
Логика работы микросервиса
В работе микросервиса участвует сущность Остаток (Availability), которая содержит информацию об остатке (id, количество товаров в штуках, id/код/название склада (локации) и др.).
Аутентификация
Для работы с микросервисом аутентификация не требуется.
Service context path
/api/availability/
Настройки и параметры конфигурации микросервиса
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "availability",
"POSTGRES_MIGRATION_USER": "availability_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "availability_user"
}
}
// пример взят с тестового стенда
{
"env": {
"AUTH_ENABLED": "флаг_активации_аутентификации",
"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",
"POSTGRES_HOST": "адрес_хоста",
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль"
}
}
Методы микросервиса
Получение информации об остатках товаров - GET запрос, /v1/availabilities
page - query-параметр: номер страницы
size
- query-параметр: размер страницы
sort - query-параметр: сортировка
страницы (например, по возрастанию артикула товара)
searchTerm -
query-параметр: поисковый запрос
articleId - query-параметр:
артикул товара (указанный в фильтре)
locationName - query-параметр:
имя локации (указанное в фильтре)
locationCodeList -
query-параметр: код локации (указанный в фильтре)
quantityFirstValue - query-параметр: первый числовой параметр фильтра
"Количество"
quantityFirstOperator - query-параметр: первый
числовой оператор фильтра "Количество" (например, "меньше")
quantityFilterConnectiveType - query-параметр: тип соединения числовых
параметров фильтра "Количество" (например, "AND" или "OR")
quantitySecondValue - query-параметр: второй числовой параметр фильтра
"Количество"
quantitySecondOperator - query-параметр: второй
числовой оператор фильтра "Количество" (например, "больше")
{
"content": [
{
"id":
"7c856adf-a668-439c-8f82-3ad46e6aaacc",
"articleId": "1009012DC",
"quantity": 100.00,
"replenishmentTime": 0,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName": "Главный склад F17"
},
{
"id": "2b4d5f67-2425-454b-bb82-2d727909b9f8",
"articleId":
"1009010DC",
"quantity": 100.00,
"replenishmentTime": 0,
"locationId":
"a0f84bda-5e3d-4568-825b-680946defe58",
"locationCode": "20AB",
"locationName": "Главный склад D333"
},
{
"id": "35b4a654-6386-4e59-8d46-5b822edf59ef",
"articleId":
"1009007DC",
"quantity": 1000.00,
"replenishmentTime": 0,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName": "Главный склад F17"
}
],
"pageable": {
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"pageNumber": 0,
"pageSize": 3,
"offset": 0,
"paged": true,
"unpaged": false
},
"last":
false,
"totalPages": 41,
"totalElements": 123,
"first": true,
"numberOfElements":
3,
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"size": 3,
"number": 0,
"empty": false
}
- 200 - операция выполнена успешно, возвращен список остатков
- 422 - ошибка, Unprocessable Entity
Получение информации о конкретном остатке по его ID - GET запрос, /v1/availabilities/{id}
id - path-параметр, обязательный: уникальный
идентификатор остатка
{
"id":
"8a1f3d66-fc7f-49bf-ad2b-bee4a1c982d8",
"articleId": "1002354DC",
"quantity":
120.00,
"replenishmentTime": 0,
"locationId":
"a0f84bda-5e3d-4568-825b-680946defe58",
"locationCode": "20AB",
"locationName":
"Главный склад D333"
}
- 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 - операция выполнена успешно, возвращен список кодов локаций для фильтра “Код локации”
- 422 - ошибка, Unprocessable Entity
Получение списка с артикулами (используется для фильтра “Артикул”) - 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 - операция выполнена успешно, возвращен список артикулов для фильтра “Артикул”
- 422 - ошибка, Unprocessable Entity
Получение списка остатков - POST запрос, /v1/availabilities/total
[//массив articleId товаров]
{
"content": [
{
"id":
"7c856adf-a668-439c-8f82-3ad46e6aaacc",
"articleId": "1009012DC",
"quantity": 100.00,
"replenishmentTime": 0,
"locationId":
"6d162d69-76db-470d-be15-2d226e6afb19",
"locationCode": "677F",
"locationName": "Главный склад F17"
},
{
"id": "2b4d5f67-2425-454b-bb82-2d727909b9f8",
"articleId":
"1009010DC",
"quantity": 100.00,
"replenishmentTime": 0,
"locationId":
"a0f84bda-5e3d-4568-825b-680946defe58",
"locationCode": "20AB",
"locationName": "Главный склад D333"
}
]
}
- 200 - операция выполнена успешно, возвращен список остатков
- 422 - ошибка, Unprocessable Entity
Получение отфильтрованного списка остатков - POST запрос, /v1/availabilities/list
{
"searchTerm": "склад",
"articleId": "1001586DC",
"locationCode": "20AB",
"locationName": "Главный склад
D333"
}
[
{
"id":
"b96440db-fc18-4105-acaf-6a09c1e0d6e8",
"articleId": "1001586DC",
"quantity": 6.00,
"replenishmentTime": 0,
"locationId":
"a0f84bda-5e3d-4568-825b-680946defe58",
"locationCode": "20AB",
"locationName": "Главный склад D333"
}
]
- 200 - операция выполнена успешно, возвращен список остатков с учетом примененных фильтров
- 422 - ошибка, Unprocessable Entity
Создание нового остатка - 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"
}
- 200 - операция выполнена успешно, новый остаток создан
- 400 - ошибка, не удалось создать остаток
- 409 - ошибка, остаток уже существует
- 422 - ошибка, невалидные параметры
Редактирование остатка - PATCH запрос, /v2/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 - операция успешна, остаток обновлен и выдана обновленная информация по остатку
- 404 - ошибка, остаток не найден
- 409 - ошибка, остаток не может быть отредактирован
- 422 - ошибка, невалидные данные в запросе
Обновление данных о локации остатка - PATCH запрос, /v1/availabilities/location-info
{
"id":
"bfb9565e-2df2-4621-850f-02c4490c3af8",
"articleId": "1001626DC",
"quantity":
5,
"replenishmentTime": 10,
"locationId":
"20f340a2-17ee-47b2-81c2-793a5b265a3e",
"locationCode": "22",
"locationName":
"Материалы из дерева"
}
Отсутствует. В ответе приходит только код операции, например, 202.
- 202 - операция выполнена успешно
- 422 - ошибка, Unprocessable Entity
Удаление остатка по его ID - DELETE запрос, /v1/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
уникальный идентификатор остатка, который нужно удалить
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, остаток удален
- 404 - ошибка, не удалось найти нужный остаток
- 422 - ошибка, Unprocessable Entity