Микросервис region
Микросервис region предоставляет функциональность для управления регионами (получение списка, создание и редактирование регионов).
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса участвует сущность Регион (Region), которая содержит данные географических зон, куда могут быть доставлены товары интернет-магазина, а именно: уникальный идентификатор, название, уровень региона, и др.
Аутентификация
При обращении к микросервису через API в запросах на получение иерархии региона и
создание и редактирование региона необходимо в заголовке Authorization указывать
токен: Authorization: Bearer
<токен>
.
Авторизация
Для обращения к сервису у пользователя должна быть роль Admin и/или Admin_Settings.
Подробнее о ролях можно узнать здесь.
Service context path
/api/region/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "region",
"POSTGRES_MIGRATION_USER": "region_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "region_user"
}
}
// пример взят с тестового стенда
{
"env": {
"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/regions
page - query-параметр: номер страницы
size -
query-параметр: количество регионов на странице
sort -
query-параметр: сортировка регионов на странице
name -
query-параметр: название региона
level - query-параметр: уровень
региона
default - query-параметр: флаг, является ли регион регионом
по умолчанию
[
{
"id":
"ad9f4c8e-9fc0-4393-9339-17a2c1ce66251",
"name": "г. Воронеж 2",
"headId":
"93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": true,
"inferiors": []
},
{
"id":
"ad9f4c8e-9fc0-4393-9339-17a2c1ce6625",
"name": "г. Воронеж",
"headId":
"93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": true,
"inferiors": []
},
{
"id":
"1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
"name": "Москва (за пределами МКАД)",
"headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
"level": 3,
"defaultRegion":
false,
"inferiors": []
},
{
"id":
"2dc99536-9423-4b7a-ac01-64ebd0950177",
"name": "Москва (в пределах МКАД)",
"headId":
"584c39b0-763e-40b8-89cb-3134c0c25932",
"level": 3,
"defaultRegion": false,
"inferiors": []
},
{
"id":
"aj8f90cv-f88d-elsi-ug4h-euv7zhw49j52",
"name": "г. Борисоглебск",
"headId":
"93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": false,
"inferiors": []
}
]
200 - операция успешно выполнена, получен список регионов
- Загрузка списка регионов - PUT запрос, /v1/regions/list
[
{
"id":
"4c4c0574-5c5e-4a64-8809-3194afaf4dc0",
"name": "г. Ржев",
"headId":
"6bee3c5d-3fff-4e86-9715-e4a2e2938053",
"level": 1,
"defaultRegion": false,
"inferiors": []
},
{
"id":
"10d16ca9-1012-4a62-8dd9-c306005f8d08",
"name": "г. Кимры",
"headId":
"6bee3c5d-3fff-4e86-9715-e4a2e2938053",
"level": 1,
"defaultRegion": false,
"inferiors": []
},
{
"id":
"c70c601d-6261-4126-b2e8-0b75500583ba",
"name": "г. Тверь",
"headId":
"6bee3c5d-3fff-4e86-9715-e4a2e2938053",
"level": 1,
"defaultRegion": false,
"inferiors": []
}
]
Отсутствуют. В ответе приходит только код операции, например, 202.
- 202 - операция выполнена успешно, список регионов загружен
- 204 - ошибка, no content
- Получение иерархии регионов - GET запрос, /v1/regions/hierarchy
name - query-параметр: название региона для фильтрации
иерархии
[
{
"id": "f3a7a81a-dd1d-4966-b666-55221e881131",
"name": "Россия",
"level": 1,
"defaultRegion": false,
"inferiors": [
{
"id": "584c39b0-763e-40b8-89cb-3134c0c25932",
"name": "г. Москва",
"headId":
"f3a7a81a-dd1d-4966-b666-55221e881131",
"level":
2,
"defaultRegion": false,
"inferiors": [
{
"id":
"2dc99536-9423-4b7a-ac01-64ebd0950177",
"name": "Москва (в пределах МКАД)",
"headId":
"584c39b0-763e-40b8-89cb-3134c0c25932",
"level": 3,
"defaultRegion": false,
"inferiors": []
},
{
"id": "1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
"name": "Москва (за пределами
МКАД)",
"headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
"level": 3,
"defaultRegion": false,
"inferiors":
[]
}
]
}
]
}
]
200 - операция выполнена успешно, получена иерархия региона
- Получение региона по его ID - GET запрос, /v1/regions/{id}
id - path-параметр, обязательный: уникальный идентификатор
региона
{
"id":
"1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
"name": "Москва (за пределами МКАД)",
"headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
"level": 3,
"defaultRegion":
false,
"inferiors": []
}
- 200 - операция выполнена успешно, получены данные региона
- 404 - ошибка, регион не
найден
- Создание региона - POST запрос, /v1/regions
{
"name": "Нововоронеж",
"headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": false
}
{
"id":
"9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
"name": "Нововоронеж",
"headId":
"93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": false,
"inferiors": []
}
- 200 - операция выполнена успешно, регион создан
- 400 - ошибка, невалидные
данные
- Обновление региона - PATCH запрос, /v1/regions/{id}
id - path-параметр, обязательный: уникальный идентификатор
региона
{
"id":
"9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
"name": "г.Нововоронеж"
}
{
"id":
"9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
"name": "г.Нововоронеж",
"headId":
"93a877db-9250-420a-ba58-aa9cd68ee180",
"level": 3,
"defaultRegion": false,
"inferiors": []
}
- 200 - операция выполнена успешно
- 400 - ошибка, невалидные данные