Bonus rules

list

request
GET /api/v2/bonus/rules?mode=ACCUMULATION&ruleType=ALL&isActive=true&departmentId=1000000003 HTTP/1.1
Table 16. request description
Parameter Description

mode

Bonus rule mode type: [SPENDING, ACCUMULATION]

isActive

Should server return active bonus rules or not

ruleType

Rule type

departmentId

Department id

pageable

Pageable description

response
HTTP/1.1 200 OK

{
  "content" : [ {
    "id" : 18,
    "name" : "Новое правило",
    "priceFrom" : 0.0,
    "priceTo" : 1000000.0,
    "bonusPoints" : 100,
    "discount" : null,
    "duration" : null,
    "mobileBonusPoints" : null,
    "mobileDiscount" : null,
    "departments" : [ {
      "id" : 1000000003,
      "name" : "Первый магазин"
    } ],
    "active" : true,
    "ruleType" : "ALL",
    "startDate" : "2025-08-27",
    "finishDate" : "2026-08-27",
    "lastUpdate" : "2025-08-27",
    "creator" : {
      "id" : 9000000008,
      "firstName" : "topmanager",
      "familyName" : "topmanager",
      "patronymicName" : "topmanager",
      "fullName" : "topmanager topmanager topmanager",
      "shortName" : "topmanager t. t."
    },
    "cancelDate" : null,
    "canceller" : null
  } ],
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : false,
      "sorted" : true,
      "unsorted" : false
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "last" : true,
  "totalElements" : 1,
  "totalPages" : 1,
  "first" : true,
  "size" : 10,
  "number" : 0,
  "sort" : {
    "empty" : false,
    "sorted" : true,
    "unsorted" : false
  },
  "numberOfElements" : 1,
  "empty" : false
}
Table 17. response description
Path Type Description

content[].

Array

bonus rules

[].id

Number

id

[].name

String

name

[].ruleType

String

Тип правила

[].startDate

String

Дата начала действия правила

[].finishDate

String

Дата конца действия правила

[].priceFrom

Number

Нижний порог ценника

[].priceTo

Number

Верхний порог ценника

[].bonusPoints

Number

Бонусы (для накопительного правила)

[].discount

Number

Скидка (для ненакопительного правила)

[].duration

Number

duration

[].mobileBonusPoints

Number

mobileBonusPoints

[].mobileDiscount

Number

mobileDiscount

[].lastUpdate

String

Время последнего изменения

[].creator

Object

Пользователь, создавший правило

[].creator.id

Number

creator.id

[].creator.firstName

String

creator.firstName

[].creator.familyName

String

creator.familyName

[].creator.patronymicName

String

creator.patronymicName

[].cancelDate

String

Время отмены правила

[].canceller

Object

Пользователь, отменивший правило

[].canceller.id

Number

canceller.id

[].canceller.firstName

String

canceller.firstName

[].canceller.familyName

String

canceller.familyName

[].canceller.patronymicName

String

canceller.patronymicName

[].active

Boolean

Активно ли правило

[].departments

Array

Департаменты, в которых действует это правило. Пустой список = правило действует во всех департаментах

get

request
GET /api/v2/bonus/rules/16 HTTP/1.1
Table 18. /api/v2/bonus/rules/{ruleId}
Parameter Description

ruleId

ruleId

response
HTTP/1.1 200 OK

{
  "id" : 16,
  "name" : "Новое правило",
  "priceFrom" : 0.0,
  "priceTo" : 1000000.0,
  "bonusPoints" : 100,
  "discount" : null,
  "duration" : null,
  "mobileBonusPoints" : null,
  "mobileDiscount" : null,
  "departments" : [ {
    "id" : 1000000003,
    "name" : "Первый магазин"
  } ],
  "active" : true,
  "ruleType" : "ALL",
  "startDate" : "2025-08-27",
  "finishDate" : "2026-08-27",
  "lastUpdate" : "2025-08-27",
  "creator" : {
    "id" : 9000000008,
    "firstName" : "topmanager",
    "familyName" : "topmanager",
    "patronymicName" : "topmanager",
    "fullName" : "topmanager topmanager topmanager",
    "shortName" : "topmanager t. t."
  },
  "cancelDate" : null,
  "canceller" : null
}
Table 19. response description
Path Type Description

id

Number

id

name

String

name

ruleType

String

Тип правила

startDate

String

Дата начала действия правила

finishDate

String

Дата конца действия правила

priceFrom

Number

Нижний порог ценника

priceTo

Number

Верхний порог ценника

bonusPoints

Number

Бонусы (для накопительного правила)

discount

Number

Скидка (для ненакопительного правила)

duration

Number

duration

mobileBonusPoints

Number

mobileBonusPoints

mobileDiscount

Number

mobileDiscount

lastUpdate

String

Время последнего изменения

creator

Object

Пользователь, создавший правило

creator.id

Number

creator.id

creator.firstName

String

creator.firstName

creator.familyName

String

creator.familyName

creator.patronymicName

String

creator.patronymicName

cancelDate

String

Время отмены правила

canceller

Object

Пользователь, отменивший правило

canceller.id

Number

canceller.id

canceller.firstName

String

canceller.firstName

canceller.familyName

String

canceller.familyName

canceller.patronymicName

String

canceller.patronymicName

active

Boolean

Активно ли правило

departments

Array

Департаменты, в которых действует это правило. Пустой список = правило действует во всех департаментах

create

request
POST /api/v2/bonus/rules HTTP/1.1

{
  "mode" : "SPENDING",
  "name" : "Новое правило на всё",
  "priceFrom" : 1000.0,
  "priceTo" : 100000.0,
  "points" : 100,
  "mobilePoints" : null,
  "departmentIds" : [ 1000000003 ],
  "startDate" : "2025-08-27",
  "finishDate" : "2026-08-27"
}
Table 20. request description
Path Type Description Constraints

mode

String

Тип бонусного правила: [SPENDING, ACCUMULATION]

Must not be null

name

String

name

Length must be between 0 and 100 inclusive.
Must not be null

startDate

String

Дата начала действия правила

finishDate

String

Дата конца действия правила

priceFrom

Number

Нижний порог ценника

priceTo

Number

Верхний порог ценника

points

Number

Скидка по бонусному правилу (независимо от типа)

Must not be null

mobilePoints

Number

?

departmentIds

Array

Id департаментов

response
HTTP/1.1 201 Created
Location: /api/v2/bonus/rules/11

{
  "id" : 11,
  "name" : "Новое правило на всё",
  "priceFrom" : 1000.0,
  "priceTo" : 100000.0,
  "bonusPoints" : null,
  "discount" : 100,
  "duration" : null,
  "mobileBonusPoints" : null,
  "mobileDiscount" : null,
  "departments" : null,
  "active" : true,
  "ruleType" : "ALL",
  "startDate" : "2025-08-27",
  "finishDate" : "2026-08-27",
  "lastUpdate" : "2025-08-27",
  "creator" : {
    "id" : 9000000008,
    "firstName" : "topmanager",
    "familyName" : "topmanager",
    "patronymicName" : "topmanager",
    "fullName" : "topmanager topmanager topmanager",
    "shortName" : "topmanager t. t."
  },
  "cancelDate" : null,
  "canceller" : null
}
Table 21. response description
Path Type Description

id

Number

id

name

String

name

ruleType

String

Тип правила

startDate

String

Дата начала действия правила

finishDate

String

Дата конца действия правила

priceFrom

Number

Нижний порог ценника

priceTo

Number

Верхний порог ценника

bonusPoints

Number

Бонусы (для накопительного правила)

discount

Number

Скидка (для ненакопительного правила)

duration

Number

duration

mobileBonusPoints

Number

mobileBonusPoints

mobileDiscount

Number

mobileDiscount

lastUpdate

String

Время последнего изменения

creator

Object

Пользователь, создавший правило

creator.id

Number

creator.id

creator.firstName

String

creator.firstName

creator.familyName

String

creator.familyName

creator.patronymicName

String

creator.patronymicName

cancelDate

String

Время отмены правила

canceller

Object

Пользователь, отменивший правило

canceller.id

Number

canceller.id

canceller.firstName

String

canceller.firstName

canceller.familyName

String

canceller.familyName

canceller.patronymicName

String

canceller.patronymicName

active

Boolean

Активно ли правило

departments

Array

Департаменты, в которых действует это правило. Пустой список = правило действует во всех департаментах

update

request
PUT /api/v2/bonus/rules/14 HTTP/1.1

{
  "name" : "Новое имя бонусного правила",
  "departmentIds" : [ 1000000003 ],
  "finishDate" : "2028-08-27"
}
Table 22. /api/v2/bonus/rules/{ruleId}
Parameter Description

ruleId

ruleId

Path Type Description Constraints

name

String

name

Must not be null

finishDate

String

Дата конца действия правила

departmentIds

Array

Id департаментов

response
HTTP/1.1 200 OK

deactivate

request
DELETE /api/v2/bonus/rules/5 HTTP/1.1
Table 23. /api/v2/bonus/rules/{ruleId}
Parameter Description

ruleId

ruleId

response
HTTP/1.1 200 OK

types

request
GET /api/v2/bonus/rules/category HTTP/1.1
response
HTTP/1.1 200 OK

[ {
  "label" : "На все товары",
  "code" : "ALL"
}, {
  "label" : "Услуги",
  "code" : "SERVE"
}, {
  "label" : "Аксессуары",
  "code" : "ACCESSORIES"
}, {
  "label" : "Контактные линзы",
  "code" : "CONTACT_LENSES"
}, {
  "label" : "Линзы",
  "code" : "LENSES"
}, {
  "label" : "Оправы",
  "code" : "GLASSES"
}, {
  "label" : "Солнцезащитные очки",
  "code" : "SUNGLASSES"
}, {
  "label" : "Массовка",
  "code" : "EXTRAS"
} ]
Table 24. response description
Path Type Description

[]

Array

Типы бонусых правил

departments

request
GET /api/v2/bonus/rules/departments HTTP/1.1
response
HTTP/1.1 200 OK

[ {
  "id" : 1000000007,
  "name" : "Второй магазин"
}, {
  "id" : 1000000003,
  "name" : "Первый магазин"
}, {
  "id" : 1000000008,
  "name" : "Третий магазин"
}, {
  "id" : 1000000006,
  "name" : "Четвертый магазин"
} ]
Table 25. response description
Path Type Description

[]

Array

Все департаменты, в которых действует данное правило. Пустой список = все департаменты

mobile access

request
GET /api/v2/bonus/rules/mobile-access HTTP/1.1
response
HTTP/1.1 200 OK

{
  "hasMobileAccess" : true
}
Table 26. response description
Path Type Description

hasMobileAccess

Boolean

hasMobileAccess