Микросервис 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-параметр: второй
числовой оператор фильтра "Количество" (например, "больше")
{
"totalPages": 14,
"totalElements": 123,
"first": true,
"last": true,
"size": 3,
"content": [
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад F17",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
],
"number": 0,
"sort": [
[
{
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
}
]
],
"numberOfElements": 0,
"pageable": {
"pageNumber": 0,
"pageSize": 0,
"paged": true,
"unpaged": true,
"sort": {
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
},
"offset": 0
},
"empty": true
}
- 200 - операция выполнена успешно, возвращен список остатков
- 422 - ошибка, Unprocessable Entity
Получение информации о конкретном остатке по его ID - GET запрос, /v1/availabilities/{id}
id - path-параметр, обязательный: уникальный
идентификатор остатка
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад D333",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
- 200 - операция выполнена успешно, получены данные о запрашиваемом остатке
- 404 - ошибка, информация об остатке не найдена
- 422 - ошибка, отсутствуют обязательные данные (например, id остатка)
Получение списка с кодами локациями (используется для фильтра “Код локации”) - GET запрос, /v1/availabilities/location-codes/unique
page - query-параметр: номер страницы
size - query-параметр: количество локаций в списке
sort - query-параметр: сортировка страницы (например, по возрастанию артикула товара)
term - query-параметр: поисковый запрос
{
"totalPages": 14,
"totalElements": 121,
"first": true,
"last": true,
"size": 4,
"content": [
"23",
"22",
"21",
"20AB"
],
"number": 0,
"sort": [
[
{
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
}
]
],
"numberOfElements": 10,
"pageable": {
"pageNumber": 1,
"pageSize": 10,
"paged": true,
"unpaged": true,
"sort": {
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
},
"offset": 0
},
"empty": true
}
- 200 - операция выполнена успешно, возвращен список кодов локаций для фильтра “Код локации”
- 422 - ошибка, Unprocessable Entity
Получение списка с артикулами (используется для фильтра “Артикул”) - GET запрос, /v1/availabilities/articles/unique
page - query-параметр: номер страницы
size - query-параметр: количество артикулов в списке
sort - query-параметр: сортировка страницы (например, по возрастанию артикула товара)
term - query-параметр: поисковый запрос
{
"totalPages": 1,
"totalElements": 10,
"first": true,
"last": true,
"size": 1,
"content": [
"1000778DC"
],
"number": 0,
"sort": [
[
{
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
}
]
],
"numberOfElements": 1,
"pageable": {
"pageNumber": 0,
"pageSize": 0,
"paged": true,
"unpaged": true,
"sort": {
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
},
"offset": 0
},
"empty": true
}
- 200 - операция выполнена успешно, возвращен список артикулов для фильтра “Артикул”
- 422 - ошибка, Unprocessable Entity
Получение списка остатков - POST запрос, /v1/availabilities/total
[//массив articleId товаров]
[
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад D333",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
]
- 200 - операция выполнена успешно, возвращен список остатков
- 422 - ошибка, Unprocessable Entity
Получение списка остатков с аутентификацией - POST запрос, /v2/availabilities/total
[//массив articleId товаров]
[
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад D333",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
]
- 200 - операция выполнена успешно, возвращен список остатков
- 422 - ошибка, Unprocessable Entity
Получение отфильтрованного списка остатков - POST запрос, /v1/availabilities/list
{
"searchTerm": "string",
"articleId": "string",
"locationName": "string",
"locationCodeList": [
"string"
],
"quantityFirstValue": 0,
"quantityFirstOperator": "EQ",
"quantityFilterConnectiveType": "AND",
"quantitySecondValue": 0,
"quantitySecondOperator": "EQ",
"articleIds": [
"string"
]
}
[
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад D333",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
]
- 200 - операция выполнена успешно, возвращен список остатков с учетом примененных фильтров
- 422 - ошибка, Unprocessable Entity
Создание списка остатков - PUT запрос, /v1/availabilities/list
[
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Central Warehouse",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
]
{
"created": 0,
"updated": 0,
"rejected": 0,
"errors": [
"string"
]
}
- 200 - операция выполнена успешно, возвращен список остатков с учетом примененных фильтров
- 422 - ошибка, Unprocessable Entity
Создание нового остатка - POST запрос, /v2/availabilities
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад F17",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад F17",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
- 200 - операция выполнена успешно, новый остаток создан
- 400 - ошибка, не удалось создать остаток
- 409 - ошибка, остаток уже существует
- 422 - ошибка, невалидные параметры
Редактирование остатка - PATCH запрос, /v2/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
уникальный идентификатор остатка, который нужно отредактировать
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад F17",
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000419DC",
"quantity": 10,
"replenishmentTime": 14
}
{
"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
{
"locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"locationCode": "A007",
"locationName": "Главный склад D333"
}
Отсутствует. В ответе приходит только код операции, например, 202.
- 202 - операция выполнена успешно
- 422 - ошибка, Unprocessable Entity
Удаление остатка по его ID - DELETE запрос, /v1/availabilities/{availabilityId}
availabilityId - path-параметр, обязательный:
уникальный идентификатор остатка, который нужно удалить
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, остаток удален
- 404 - ошибка, не удалось найти нужный остаток
- 422 - ошибка, Unprocessable Entity