Микросервис price

В статье описываются функции, логика работы, конфигурация и методы микросервиса price.

Микросервис price предоставляет функциональность для управления валютами, ценами и прайс листами.

Доступ к сервису предоставляется по запросу.

В работе микросервиса задействованы следующие сущности:

  • Price - содержит данные о цене товара (артикул товара, статус цены, дата действия, минимальное количество товара, стоимость товара и валюта, в которой указана стоимость)
  • Currency - содержит данные о валюте (id валюты, пиктограмма, код валюты по ISO, название валюты)
  • Article - содержит информацию о продукте, его количестве, цене за единицу товара и общей стоимости указанного количества товара
  • PriceList - содержит информацию о прайс листе (id и название)

Для работы с микросервисом аутентификация не требуется.

/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": "порт_сервера"
  }
}

Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
  "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": "пароль"
  }
}

Copy-icon

Методы микросервиса Copy-icon

Работа с валютами Copy-icon

  • Получение списка валют, отсортированных по ISO коду по возрастанию - GET запрос, /v1/currencies
Request parameters

page, size - query-параметр, необязательный: номер и размер страницы с валютами
sort - query-параметр, необязательный: сортировка валют

Copy-icon
Response sample

{
  "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
}

Copy-icon
Response codes

200 - операция выполнена успешно, список валют получен

  • Получение валюты по ее ID - GET запрос, /v1/currencies/{id}
Request parameters

id - path-параметр, обязательный: идентификатор валюты

Copy-icon
Response sample

{
    "id": "02d3eb94-8d0c-4e21-a952-db8684a1534d",
    "isoCode": "EUR",
    "name": "Euro",
    "symbol": "€"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные о запрашиваемой валюте
  • 404 - ошибка, валюта с таким ID не найдена
  • Получение списка валют - GET запрос, /v1/currencies/list
Request parameters

Отсутствуют.

Response sample

[
  {
    "id": "90e5fed1-1eaa-4e45-8574-b687605817fd",
    "isoCode": "RUB",
    "name": "Российский рубль",
    "symbol": "₽"
  },
  {
    "id": "02d3eb94-8d0c-4e21-a952-db8684a1534d",
    "isoCode": "EUR",
    "name": "Euro",
    "symbol": "€"
  }
]

Copy-icon
Response codes

200 - операция выполнена успешно, получен список валют

  • Получение страницы с валютами (с возможностью фильтрации) - POST запрос, /v1/currencies/page
Request body sample

{
    "page": 0,
    "size": 10,
    "sort": [
        {
            "sortBy": "isoCode",
            "direction": "ASC"
        }
    ],
    "filter": {}
}

Copy-icon
Response sample

{
  "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
}

Copy-icon
Response codes

200 - операция выполнена успешно, получена страница с валютами

  • Получение отфильтрованного списка валют - POST запрос, /v1/currencies/list
Request body

{
  "searchTerm": "euro"
}

Copy-icon
Response sample

[
  {
    "id": "02d3eb94-8d0c-4e21-a952-db8684a1534d",
    "isoCode": "EUR",
    "name": "Euro",
    "symbol": "€"
  }
]

Copy-icon
Response codes

200 - операция успешно выполнена, получен отфильтрованный список валют

  • Получение символов валют - GET запрос, /v1/currencies/symbols/unique
Request parameters

Отсутствуют.

Response sample

[
  "€",
  "₽"
]

Copy-icon
Response codes

200 - операция выполнена успешно, получен список символов валют

  • Создание валюты - POST запрос, /v1/currencies
Request body sample

{
    "isoCode": "BYN",
    "name": "Белорусский рубль",
    "symbol": "Р"
}

Copy-icon
Response sample

{
  "id": "58fc8a3d-238b-4251-9af0-e9976738d3c2",
  "isoCode": "BYN",
  "name": "Белорусский рубль",
  "symbol": "Р"
}

Copy-icon
Response codes
  • 201 - операция выполнена успешно, новая валюта создана
  • 422 - ошибка, невалидные данные
  • Редактирование валюты - PATCH запрос, /v1/currencies/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор валюты

Copy-icon
Request body sample

{
  "id": "58fc8a3d-238b-4251-9af0-e9976738d3c2",
  "isoCode": "BN",
  "name": "Белорусский рубль",
  "symbol": "Р"
}

Copy-icon
Response sample

{
  "id": "58fc8a3d-238b-4251-9af0-e9976738d3c2",
  "isoCode": "BN",
  "name": "Белорусский рубль",
  "symbol": "Р"
}

Copy-icon
Response codes
  • 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}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор валюты

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, валюта удалена
  • 404 - ошибка, валюта не найдена
  • 422 - ошибка, валюта не может быть удалена

Работа с ценами Copy-icon

  • Получение списка цен - GET запрос, /v1/prices/list
Request parameters

articleId - query-параметр: уникальный идентификатор товара, к которому относится цена
statusFilter - query-параметр: статус цены (может быть ACTIVE, UPCOMING, INACTIVE, EDITABLE)
currencyId - query-параметр: уникальный идентификатор валюты

Copy-icon
Response sample

[
  {
    "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"
    }
  }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен отфильтрованный список цен
  • 422 - ошибка, Unprocessable Entity
  • Загрузка списка цен - PUT запрос, /v1/prices/list
Request body sample

{
  "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"
  }
}

Copy-icon
Response sample

{
  "created": 1,
  "updated": 0
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, список цен загружен
  • 422 - ошибка, Unprocessable Entity
  • Получение отфильтрованного списка цен - POST запрос, /v1/prices/list
Request body sample

{
  "articleId": "1001586DC",
  "validFrom": "2024-05-01T00:00:00.000"

}

Copy-icon
Response sample

[
  {
    "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"
    }
  }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен отфильтрованный список цен
  • 422 - ошибка, Unprocessable Entity
  • Получение списка цен, отсортированных по дате начала действия - GET запрос, /v1/prices
Request parameters

page, size - query-параметр, необязательный: номер и размер страницы с ценами
sort - query-параметр, необязательный: сортировка цен
articleId - query-параметр: уникальный идентификатор товара, к которому относится цена
statusFilter - query-параметр: статус цены (может быть ACTIVE, UPCOMING, INACTIVE, EDITABLE)
currencyId - query-параметр: уникальный идентификатор валюты

Copy-icon
Response sample

{
  "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
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список цен
  • 422 - ошибка, Unprocessable Entity
  • Получение цены по ее ID - GET запрос, /v1/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Response sample

{
  "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"
  }
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получена данные цены
  • 404 - ошибка, цена не найдена
  • 422 - ошибка, Unprocessable Entity
  • Получение отфильтрованной страницы с ценами - GET запрос, /v1/prices/page
Request parameters

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-параметр: уникальные идентификаторы валют, в которых указаны цены

Copy-icon
Response sample

{
  "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
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получена отфильтрованная страница цен
  • 422 - ошибка, Unprocessable Entity
  • Поиск активных цен по ID товаров - GET запрос, /v1/prices/find-active-by-article/{articleId}
Request parameters

articleId - path-параметр, обязательный: уникальный идентификатор товара, к которому относится цена

Copy-icon
Response sample

[
  {
    "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"
    }
  }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список цен, которые привязаны к товару
  • 422 - ошибка, Unprocessable Entity
  • Создание цены - POST запрос, /v1/prices
Request body sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response codes
  • 201 - операция успешно выполнена, создана новая цена
  • 422 - ошибка, отсутствуют обязательные данные (например, артикул товара)
  • Редактирование цены - PATCH запрос, /v1/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Request body sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, цена отредактирована
  • 404 - ошибка, цена не найдена
  • 409 - ошибка, нельзя изменить articleId и/или id
  • 422 - ошибка, отсутствуют обязательные данные
  • Удаление цены по ее ID - DELETE запрос, /v1/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, цена удалена
  • 404 - ошибка, цена не найдена
  • 422 - ошибка, Unprocessable Entity
  • Создание цены на товар - POST запрос, /v2/prices
Request body sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response sample

{
    "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_Беларусь"
    }
}

Copy-icon
Response codes
  • 201 - операция успешно выполнена, создана новая цена
  • 422 - ошибка, отсутствуют обязательные данные (например, артикул товара)
  • Получение страницы с ценами (с возможностью фильтрации) - POST запрос, /v2/prices/page
Request body sample

{
  "sort": [
    {
      "sortBy": "articleId",
      "direction": "ASC"
    }
  ],
  "page": 0,
  "size": 3,
  "filter": {
    "articleId": "1021531DC"
  }
}

Copy-icon
Response sample

{
  "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
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получена страница с ценами
  • 422 - ошибка, Unprocessable Entity
  • Получение списка цен (с возможностью фильтрации) - POST запрос, /v2/prices/list
Request body sample

{
  "articleId": "1021531DC"
}

Copy-icon
Response sample

[
  {
    "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_Беларусь"
    }
  }
]

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список цен
  • 422 - ошибка, Unprocessable Entity
  • Получение цены по ее ID - GET запрос, /v2/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Response sample

{
  "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_Беларусь"
  }
}

Copy-icon
Response codes
  • 200 - операция успешно выполнена, получены данные цены
  • 404 - ошибка, цена с таким ID не найдена
  • 422 - ошибка, Unprocessable Entity
  • Удаление цены по ее ID - DELETE запрос, /v2/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, цена удалена
  • 404 - ошибка, цена не найдена
  • 422 - ошибка, Unprocessable Entity
  • Изменение цены - PATCH запрос, /v2/prices/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор цены

Copy-icon
Request body sample

{
  "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_Беларусь"
  }
}

Copy-icon
Response sample

{
  "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_Беларусь"
  }
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, цена отредактирована
  • 404 - ошибка, цена не найдена
  • 409 - ошибка, нельзя изменить articleId и/или id
  • 422 - ошибка, отсутствуют обязательные данные

Расчет стоимости товаров Copy-icon

  • Расчет итоговой стоимости товара в указанном количестве - GET запрос, /v1/article/{id}/prices/{quantity}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор товара
quantity - path-параметр, обязательный: количество единиц товара

Copy-icon
Response sample

{
  "id": "D000022DC",
  "quantity": 42,
  "totalPrice": 630,
  "unitPrice": 15
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, рассчитана итоговая стоимость товара в указанном количестве
  • 404 - ошибка, не удалось найти цену товара
  • 422 - ошибка, отсутствуют обязательные данные (например, articleId)
  • Расчет итоговой стоимости нескольких товаров в указанном количестве - POST запрос, /v1/article/prices
Request body sample

{
  "articles": [
    {
      "id": "D000044DC",
      "quantity": 2,
      "unitPrice": 1650
    },
    {
      "id": "D000033DC",
      "quantity": 3,
      "unitPrice": 1400
    }
  ]
}

Copy-icon
Response sample

{
  "articles": [
    {
      "id": "D000044DC",
      "quantity": 2,
      "totalPrice": 3300,
      "unitPrice": 1650
    },
    {
      "id": "D000033DC",
      "quantity": 3,
      "totalPrice": 4200,
      "unitPrice": 1400
    }
  ]
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, рассчитана итоговая стоимость каждого товара
  • 206 - ошибка, не все указанные товары имеют стоимость (будут возвращена информация только о тех товарах, у которых есть цена)
  • 422 - ошибка, отсутствуют обязательные данные (например, articleId)

Работа с прайс листами Copy-icon

  • Создание прайс листа для рынка - POST запрос, /v1/pricelists
Request body sample

{
  "name": "new_pricelist"
}

Copy-icon
Response sample

{
  "id": "aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
  "name": "new_pricelist"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, прайс лист создан
  • 422 - ошибка, отсутствуют обязательные данные
  • Получение прайс листа по его ID - GET запрос, /v1/pricelists/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор прайс листа

Copy-icon
Response sample

{
  "id": "aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
  "name": "new_pricelist"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные прайс листа
  • 404 - ошибка, прайс лист с таким ID не найден
  • Удаление прайс листа - DELETE запрос, /v1/pricelists/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор прайс листа

Copy-icon
Response sample

Отсутствует.

Response codes

204 - операция выполнена успешно, прайс лист удален

  • Редактирование прайс листа - PATCH запрос, /v1/pricelists/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор прайс листа

Copy-icon
Request body sample

{
  "name": "pricelist_edited"
}

Copy-icon
Response sample

{
  "id": "aa8db513-d7f6-4d29-87d2-11f2b8cd68ca",
  "name": "pricelist_edited"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, прайс лист отредактирован
  • 404 - ошибка, прайс лист с таким ID не найден