Микросервис price
Микросервис price предоставляет функциональность для управления валютами, ценами и прайс листами.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса задействованы следующие сущности:
- Price - содержит данные о цене товара (артикул товара, статус цены, дата действия, минимальное количество товара, стоимость товара и валюта, в которой указана стоимость)
- Currency - содержит данные о валюте (id валюты, пиктограмма, код валюты по ISO, название валюты)
- Article - содержит информацию о продукте, его количестве, цене за единицу товара и общей стоимости указанного количества товара
- PriceList - содержит информацию о прайс листе (id и название)
Аутентификация
Для работы с микросервисом аутентификация не требуется.
Service context path
/api/price/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"GRPC_SERVER_PORT": "порт_сервера_grpc",
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"LOGGING_LEVEL": "уровень_логирования",
"POSTGRES_DATABASE": "price",
"POSTGRES_MIGRATION_USER": "price_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "price_user",
"SERVER_PORT": "порт_сервера"
}
}
// пример взят с тестового стенда
{
"env": {
"OAUTH_ECOM_CLIENT_ID":
"токен_приложения_ECOM_OAuth",
"OAUTH_ECOM_ISSUER_URI": "url_ECOM_OAuth,
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
"POSTGRES_HOST": "адрес_хоста",
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль"
}
}
Методы микросервиса
Работа с валютами
- Получение списка валют, отсортированных по ISO коду по возрастанию - GET запрос, /v1/currencies
page, size - query-параметр, необязательный: номер и размер страницы
с валютами
sort - query-параметр, необязательный: сортировка
валют
{
"content": [
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol":
"€"
}
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"pageNumber": 0,
"pageSize": 10,
"offset": 0,
"paged": true,
"unpaged": false
},
"totalElements": 2,
"totalPages": 1,
"last": true,
"numberOfElements":
2,
"first": true,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"size": 10,
"number": 0,
"empty": false
}
200 - операция выполнена успешно, список валют получен
- Получение валюты по ее ID - GET запрос, /v1/currencies/{id}
id - path-параметр, обязательный: идентификатор
валюты
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
}
- 200 - операция выполнена успешно, получены данные о запрашиваемой валюте
- 404 - ошибка, валюта с таким ID не найдена
- Получение списка валют - GET запрос, /v1/currencies/list
Отсутствуют.
[
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский
рубль",
"symbol": "₽"
},
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
}
]
200 - операция выполнена успешно, получен список валют
- Получение страницы с валютами (с возможностью фильтрации) - POST запрос, /v1/currencies/page
{
"page": 0,
"size": 10,
"sort": [
{
"sortBy":
"isoCode",
"direction": "ASC"
}
],
"filter": {}
}
{
"content": [
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol":
"€"
},
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
}
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"pageNumber": 0,
"pageSize": 10,
"offset": 0,
"paged": true,
"unpaged": false
},
"totalElements": 2,
"totalPages": 1,
"last": true,
"numberOfElements":
2,
"first": true,
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"size": 10,
"number": 0,
"empty": false
}
200 - операция выполнена успешно, получена страница с валютами
- Получение отфильтрованного списка валют - POST запрос, /v1/currencies/list
{
"searchTerm": "euro"
}
[
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
}
]
200 - операция успешно выполнена, получен отфильтрованный список валют
- Получение символов валют - GET запрос, /v1/currencies/symbols/unique
Отсутствуют.
[
"€",
"₽"
]
200 - операция выполнена успешно, получен список символов валют
- Создание валюты - POST запрос, /v1/currencies
{
"isoCode": "BYN",
"name": "Белорусский рубль",
"symbol": "Р"
}
{
"id":
"58fc8a3d-238b-4251-9af0-e9976738d3c2",
"isoCode":
"BYN",
"name": "Белорусский рубль",
"symbol": "Р"
}
- 201 - операция выполнена успешно, новая валюта создана
- 422 - ошибка, невалидные данные
- Редактирование валюты - PATCH запрос, /v1/currencies/{id}
id - path-параметр, обязательный: уникальный идентификатор
валюты
{
"id":
"58fc8a3d-238b-4251-9af0-e9976738d3c2",
"isoCode":
"BN",
"name": "Белорусский рубль",
"symbol": "Р"
}
{
"id":
"58fc8a3d-238b-4251-9af0-e9976738d3c2",
"isoCode":
"BN",
"name": "Белорусский рубль",
"symbol": "Р"
}
- 200 - операция успешна, заказ обновлен
- 404 - ошибка, заказ не найден
- 412 - ошибка, заказ был изменен со времени последнего запроса, версия не валидна
- 417 - ошибка, изменения не выполнены
- 422 - ошибка, невалидные данные, передаваемые в запросе
- 428 - ошибка, If-Match header is empty. If-Match header must contain your cached Order ETag value
- Удаление валюты - DELETE запрос, /v1/currencies/{id}
id - path-параметр, обязательный: уникальный идентификатор
валюты
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, валюта удалена
- 404 - ошибка, валюта не найдена
- 422 - ошибка, валюта не может быть удалена
Работа с ценами
- Получение списка цен - GET запрос, /v1/prices/list
articleId - query-параметр: уникальный идентификатор
товара, к которому относится цена
statusFilter - query-параметр:
статус цены (может быть ACTIVE, UPCOMING, INACTIVE, EDITABLE)
currencyId - query-параметр: уникальный идентификатор валюты
[
{
"id": "45080ca2-e8d7-4722-8828-07301f043109",
"articleId": "1001600DC",
"validFrom": "2024-01-02T00:00:00",
"validTo": "2024-04-07T00:00:00",
"minQuantity": 0,
"unitPrice": 178990,
"active": true,
"currency": {
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"defaultPricelist",
"name":
"Default Price List"
}
},
{
"id":
"ee3b4039-abb1-42a6-b4b7-da5297a3c94d",
"articleId": "1001623DC",
"validFrom":
"2024-01-01T00:00:00",
"validTo":
"2024-02-11T00:00:00",
"minQuantity":
1,
"unitPrice": 11,
"active": false,
"currency":
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol":
"€"
},
"priceList": {
"id":
"defaultPricelist",
"name":
"Default Price List"
}
},
{
"id":
"10391eac-db31-4065-abbb-d193d341d103",
"articleId": "D000033DC",
"validFrom":
"2024-01-22T00:00:00",
"validTo":
"2024-12-31T00:00:00",
"minQuantity":
1,
"unitPrice": 1400,
"active": true,
"currency":
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"defaultPricelist",
"name":
"Default Price List"
}
}
]
- 200 - операция выполнена успешно, получен отфильтрованный список цен
- 422 - ошибка, Unprocessable Entity
- Загрузка списка цен - PUT запрос, /v1/prices/list
{
"id":
"10391eac-db31-4065-abbb-d193d341d103",
"articleId":
"D000033DC",
"validFrom": "2024-01-22T00:00:00",
"validTo": "2024-12-31T00:00:00",
"minQuantity": 1,
"unitPrice": 1400,
"active": true,
"currency": {
"id": "90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol":
"₽"
},
"priceList": {
"id": "defaultPricelist",
"name": "Default Price List"
}
}
{
"created": 1,
"updated": 0
}
- 200 - операция выполнена успешно, список цен загружен
- 422 - ошибка, Unprocessable Entity
- Получение отфильтрованного списка цен - POST запрос, /v1/prices/list
{
"articleId":
"1001586DC",
"validFrom":
"2024-05-01T00:00:00.000"
}
[
{
"id": "e02e492c-0cfd-453e-8544-e5cd4a326c51",
"articleId": "1001586DC",
"validFrom": "2024-05-02T00:00:00",
"validTo": "2024-12-31T23:59:59",
"minQuantity": 0,
"unitPrice": 500,
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol":
"€"
},
"priceList": {
"id":
"defaultPricelist",
"name":
"Default Price List"
}
}
]
- 200 - операция выполнена успешно, получен отфильтрованный список цен
- 422 - ошибка, Unprocessable Entity
- Получение списка цен, отсортированных по дате начала действия - GET запрос, /v1/prices
page, size - query-параметр, необязательный: номер и
размер страницы с ценами
sort - query-параметр, необязательный:
сортировка цен
articleId - query-параметр: уникальный идентификатор
товара, к которому относится цена
statusFilter - query-параметр:
статус цены (может быть ACTIVE, UPCOMING, INACTIVE, EDITABLE)
currencyId - query-параметр: уникальный идентификатор валюты
{
"content": [
{
"id":
"45080ca2-e8d7-4722-8828-07301f043109",
"articleId": "1001600DC",
"validFrom": "2024-01-02T00:00:00",
"validTo": "2024-04-07T00:00:00",
"minQuantity": 0,
"unitPrice": 178990,
"active": true,
"currency":
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"defaultPricelist",
"name": "Default Price List"
}
},
{
"id":
"ee3b4039-abb1-42a6-b4b7-da5297a3c94d",
"articleId": "1001623DC",
"validFrom": "2024-01-01T00:00:00",
"validTo": "2024-02-11T00:00:00",
"minQuantity": 1,
"unitPrice": 11,
"active": false,
"currency":
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"defaultPricelist",
"name": "Default Price List"
}
}
],
"pageable": {
"sort": {
"unsorted": true,
"sorted": false,
"empty": true
},
"pageNumber": 0,
"pageSize": 2,
"offset": 0,
"paged": true,
"unpaged": false
},
"last":
false,
"totalElements": 341,
"totalPages": 171,
"first": true,
"numberOfElements": 2,
"sort": {
"unsorted": true,
"sorted":
false,
"empty": true
},
"size": 2,
"number": 0,
"empty": false
}
- 200 - операция выполнена успешно, получен список цен
- 422 - ошибка, Unprocessable Entity
- Получение цены по ее ID - GET запрос, /v1/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
{
"id":
"10391eac-db31-4065-abbb-d193d341d103",
"articleId":
"D000033DC",
"validFrom": "2024-01-22T00:00:00",
"validTo": "2024-12-31T00:00:00",
"minQuantity": 1,
"unitPrice": 1400,
"active": true,
"currency": {
"id": "90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol":
"₽"
},
"priceList": {
"id": "defaultPricelist",
"name": "Default Price List"
}
}
- 200 - операция выполнена успешно, получена данные цены
- 404 - ошибка, цена не найдена
- 422 - ошибка, Unprocessable Entity
- Получение отфильтрованной страницы с ценами - GET запрос, /v1/prices/page
page, size - query-параметр, необязательный: номер и
размер страницы с ценами
sort - query-параметр, необязательный:
сортировка цен
articleId - query-параметр: уникальный идентификатор
товара, к которому относится цена
priceListIds - query-параметр:
уникальный идентификатор прайс листа, к которому относится цена
articleIds - query-параметр: уникальные идентификаторы товара, к которым
относится цена
statusSet - query-параметр: статус цены
validFrom - query-параметр: дата начала действия цены
validTo
- query-параметр: дата окончания действия цены
minQuantityFirstValue - query-параметр: первый числовой параметр фильтра
"Мин. кол-во"
minQuantityFirstOperator - query-параметр: первый
числовой оператор фильтра "Мин. кол-во" (например, "меньше")
minQuantityFilterConnectiveType - query-параметр: тип соединения числовых
параметров фильтра "Мин. кол-во" (например, "AND" или "OR")
minQuantitySecondValue - query-параметр: второй числовой параметр фильтра
"Мин. кол-во"
minQuantitySecondOperator - query-параметр: второй
числовой оператор фильтра "Мин. кол-во" (например, "больше")
priceFirstValue - query-параметр: первый числовой параметр фильтра
"Цена"
priceFirstOperator - query-параметр: первый числовой
оператор фильтра "Цена" (например, "меньше")
priceFilterConnectiveType - query-параметр: тип соединения числовых
параметров фильтра "Цена" (например, "AND" или "OR")
priceSecondValue - query-параметр: второй числовой параметр фильтра
"Цена"
priceSecondOperator - query-параметр: второй числовой
оператор фильтра "Цена" (например, "больше")
currenciesIds -
query-параметр: уникальные идентификаторы валют, в которых указаны
цены
{
"content": [
{
"id":
"45080ca2-e8d7-4722-8828-07301f043109",
"articleId": "1001600DC",
"validFrom": "2024-01-02T00:00:00",
"validTo": "2024-04-07T00:00:00",
"minQuantity": 0,
"unitPrice": 178990,
"active": true,
"currency":
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"defaultPricelist",
"name": "Default Price List"
}
},
{
"id":
"ee3b4039-abb1-42a6-b4b7-da5297a3c94d",
"articleId": "1001623DC",
"validFrom": "2024-01-01T00:00:00",
"validTo": "2024-02-11T00:00:00",
"minQuantity": 1,
"unitPrice": 11,
"active": false,
"currency":
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"defaultPricelist",
"name": "Default Price List"
}
}
],
"pageable": {
"sort": {
"unsorted": true,
"sorted": false,
"empty": true
},
"pageNumber": 0,
"pageSize": 2,
"offset": 0,
"paged": true,
"unpaged": false
},
"last":
false,
"totalElements": 341,
"totalPages": 171,
"first": true,
"numberOfElements": 2,
"sort": {
"unsorted": true,
"sorted":
false,
"empty": true
},
"size": 2,
"number": 0,
"empty": false
}
- 200 - операция выполнена успешно, получена отфильтрованная страница цен
- 422 - ошибка, Unprocessable Entity
- Поиск активных цен по ID товаров - GET запрос, /v1/prices/find-active-by-article/{articleId}
articleId - path-параметр, обязательный: уникальный
идентификатор товара, к которому относится цена
[
{
"id": "281a45b4-7b64-40d1-ba89-b6476d7af85b",
"articleId": "D000044DC",
"validFrom": "2024-01-01T00:00:00",
"validTo": "2024-12-31T00:00:00",
"minQuantity": 1,
"unitPrice": 1650,
"active": true,
"currency": {
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"defaultPricelist",
"name":
"Default Price List"
}
}
]
- 200 - операция выполнена успешно, получен список цен, которые привязаны к товару
- 422 - ошибка, Unprocessable Entity
- Создание цены - POST запрос, /v1/prices
{
"articleId":
"1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "100",
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
{
"id":
"5f68ab2f-bc15-42cd-a4bc-689bcabbdef5",
"articleId": "1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "100",
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
- 201 - операция успешно выполнена, создана новая цена
- 422 - ошибка, отсутствуют обязательные данные (например, артикул товара)
- Редактирование цены - PATCH запрос, /v1/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
{
"articleId":
"1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "50",
"active": true,
"currency":
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
{
"articleId":
"1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "50",
"active": true,
"currency":
{
"id":
"90e5fed1-1eaa-4e45-8574-b687605817fd",
"isoCode": "RUB",
"name": "Российский рубль",
"symbol": "₽"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
- 200 - операция выполнена успешно, цена отредактирована
- 404 - ошибка, цена не найдена
- 409 - ошибка, нельзя изменить
articleId
и/илиid
- 422 - ошибка, отсутствуют обязательные данные
- Удаление цены по ее ID - DELETE запрос, /v1/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, цена удалена
- 404 - ошибка, цена не найдена
- 422 - ошибка, Unprocessable Entity
- Создание цены на товар - POST запрос, /v2/prices
{
"articleId":
"1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "100",
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
{
"id":
"5f68ab2f-bc15-42cd-a4bc-689bcabbdef5",
"articleId": "1019724DC",
"validFrom":
"2024-06-13T00:00:00.000",
"validTo":
"2024-06-14T23:59:59.000",
"minQuantity":
"1",
"unitPrice": "100",
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
- 201 - операция успешно выполнена, создана новая цена
- 422 - ошибка, отсутствуют обязательные данные (например, артикул товара)
- Получение страницы с ценами (с возможностью фильтрации) - POST запрос, /v2/prices/page
{
"sort": [
{
"sortBy": "articleId",
"direction": "ASC"
}
],
"page": 0,
"size": 3,
"filter": {
"articleId":
"1021531DC"
}
}
{
"content": [
{
"id":
"c2122fd7-fef3-4801-aa06-49b4ebc91d05",
"articleId": "1021531DC",
"validFrom": "2024-05-27T00:00:00",
"validTo": "2024-09-29T23:59:59",
"minQuantity": 1,
"unitPrice": 123,
"active": true,
"currency":
{
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol": "€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
},
{
"id":
"03806b5d-2824-46b6-92cc-1039a553b378",
"articleId": "1021531DC",
"validFrom": "2024-05-28T00:00:00",
"validTo": "2024-07-07T23:59:59",
"minQuantity": 2,
"unitPrice": 560.89,
"active": true,
"currency":
{
"id":
"0a46630e-76d7-4eb3-b12a-79317dc871d7",
"isoCode": "TRY",
"name": "турецкая лира1",
"symbol": "₺"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
],
"pageable": {
"sort": {
"unsorted":
false,
"sorted": true,
"empty": false
},
"pageNumber": 0,
"pageSize": 3,
"offset": 0,
"paged": true,
"unpaged": false
},
"last": true,
"totalElements": 2,
"totalPages": 1,
"first": true,
"numberOfElements": 2,
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"size": 3,
"number": 0,
"empty": false
}
- 200 - операция выполнена успешно, получена страница с ценами
- 422 - ошибка, Unprocessable Entity
- Получение списка цен (с возможностью фильтрации) - POST запрос, /v2/prices/list
{
"articleId":
"1021531DC"
}
[
{
"id": "c2122fd7-fef3-4801-aa06-49b4ebc91d05",
"articleId": "1021531DC",
"validFrom": "2024-05-27T00:00:00",
"validTo": "2024-09-29T23:59:59",
"minQuantity": 1,
"unitPrice": 123,
"active": true,
"currency": {
"id":
"02d3eb94-8d0c-4e21-a952-db8684a1534d",
"isoCode": "EUR",
"name": "Euro",
"symbol":
"€"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
},
{
"id": "03806b5d-2824-46b6-92cc-1039a553b378",
"articleId": "1021531DC",
"validFrom": "2024-05-28T00:00:00",
"validTo": "2024-07-07T23:59:59",
"minQuantity": 2,
"unitPrice": 560.89,
"active": true,
"currency": {
"id":
"0a46630e-76d7-4eb3-b12a-79317dc871d7",
"isoCode": "TRY",
"name": "турецкая лира1",
"symbol": "₺"
},
"priceList": {
"id":
"2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
]
- 200 - операция выполнена успешно, получен список цен
- 422 - ошибка, Unprocessable Entity
- Получение цены по ее ID - GET запрос, /v2/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
{
"id":
"03806b5d-2824-46b6-92cc-1039a553b378",
"articleId":
"1021531DC",
"validFrom": "2024-05-28T00:00:00",
"validTo": "2024-07-07T23:59:59",
"minQuantity": 2,
"unitPrice": 560.89,
"active": true,
"currency": {
"id": "0a46630e-76d7-4eb3-b12a-79317dc871d7",
"isoCode": "TRY",
"name": "турецкая лира1",
"symbol": "₺"
},
"priceList": {
"id": "2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
- 200 - операция успешно выполнена, получены данные цены
- 404 - ошибка, цена с таким ID не найдена
- 422 - ошибка, Unprocessable Entity
- Удаление цены по ее ID - DELETE запрос, /v2/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, цена удалена
- 404 - ошибка, цена не найдена
- 422 - ошибка, Unprocessable Entity
- Изменение цены - PATCH запрос, /v2/prices/{id}
id - path-параметр, обязательный: уникальный
идентификатор цены
{
"id":
"03806b5d-2824-46b6-92cc-1039a553b378",
"articleId":
"1021531DC",
"validFrom": "2024-05-28T00:00:00",
"validTo": "2024-07-09T23:59:59",
"minQuantity": 1,
"unitPrice": 100,
"active": true,
"currency": {
"id": "0a46630e-76d7-4eb3-b12a-79317dc871d7",
"isoCode": "TRY",
"name": "турецкая лира1",
"symbol": "₺"
},
"priceList": {
"id": "2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
{
"id":
"03806b5d-2824-46b6-92cc-1039a553b378",
"articleId":
"1021531DC",
"validFrom": "2024-05-28T00:00:00",
"validTo": "2024-07-09T23:59:59",
"minQuantity": 1,
"unitPrice": 100,
"active": true,
"currency": {
"id": "0a46630e-76d7-4eb3-b12a-79317dc871d7",
"isoCode": "TRY",
"name": "турецкая лира1",
"symbol": "₺"
},
"priceList": {
"id": "2bcd9d1a-52cc-4828-98ab-1a013cbb4b9c",
"name": "priceList_Беларусь"
}
}
- 200 - операция выполнена успешно, цена отредактирована
- 404 - ошибка, цена не найдена
- 409 - ошибка, нельзя изменить articleId и/или id
- 422 - ошибка, отсутствуют обязательные данные
Расчет стоимости товаров
- Расчет итоговой стоимости товара в указанном количестве - GET запрос, /v1/article/{id}/prices/{quantity}
id - path-параметр, обязательный: уникальный
идентификатор товара
quantity - path-параметр, обязательный:
количество единиц товара
{
"id": "D000022DC",
"quantity": 42,
"totalPrice": 630,
"unitPrice": 15
}
- 200 - операция выполнена успешно, рассчитана итоговая стоимость товара в указанном количестве
- 404 - ошибка, не удалось найти цену товара
- 422 - ошибка, отсутствуют обязательные данные (например, articleId)
- Расчет итоговой стоимости нескольких товаров в указанном количестве - POST запрос, /v1/article/prices
{
"articles": [
{
"id":
"D000044DC",
"quantity": 2,
"unitPrice": 1650
},
{
"id": "D000033DC",
"quantity": 3,
"unitPrice": 1400
}
]
}
{
"articles": [
{
"id":
"D000044DC",
"quantity": 2,
"totalPrice": 3300,
"unitPrice": 1650
},
{
"id": "D000033DC",
"quantity": 3,
"totalPrice": 4200,
"unitPrice":
1400
}
]
}
- 200 - операция выполнена успешно, рассчитана итоговая стоимость каждого товара
- 206 - ошибка, не все указанные товары имеют стоимость (будут возвращена информация только о тех товарах, у которых есть цена)
- 422 - ошибка, отсутствуют обязательные данные (например, articleId)
Работа с прайс листами
- Создание прайс листа для рынка - POST запрос, /v1/pricelists
{
"name": "new_pricelist"
}
{
"id":
"aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
"name":
"new_pricelist"
}
- 200 - операция выполнена успешно, прайс лист создан
- 422 - ошибка, отсутствуют обязательные данные
- Получение прайс листа по его ID - GET запрос, /v1/pricelists/{id}
id - path-параметр, обязательный: уникальный
идентификатор прайс листа
{
"id":
"aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
"name":
"new_pricelist"
}
- 200 - операция выполнена успешно, получены данные прайс листа
- 404 - ошибка, прайс лист с таким ID не найден
- Удаление прайс листа - DELETE запрос, /v1/pricelists/{id}
id - path-параметр, обязательный: уникальный
идентификатор прайс листа
Отсутствует.
204 - операция выполнена успешно, прайс лист удален
- Редактирование прайс листа - PATCH запрос, /v1/pricelists/{id}
id - path-параметр, обязательный: уникальный
идентификатор прайс листа
{
"name":
"pricelist_edited"
}
{
"id":
"aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
"name":
"pricelist_edited"
}
- 200 - операция выполнена успешно, прайс лист отредактирован
- 404 - ошибка, прайс лист с таким ID не найден