Clients

create

Чебокс "сохранить в журнале" вляет на параметр deleted в request body.
Если сохраняем в журнале -> deleted: false, если нет -> deleted: true
request
POST /api/v2/clients HTTP/1.1

{
  "firstName" : "Elon",
  "familyName" : "Musk",
  "patronymicName" : "Reeve",
  "city" : "California",
  "address" : "Hawthorne, 1 Rocket Rd",
  "federalSubjectCode" : null,
  "email" : "some_address@itigris.ru",
  "birthdayDay" : 28,
  "birthdayMonth" : 6,
  "birthdayYear" : 1971,
  "tel1" : "79990102233",
  "tel2" : "-",
  "gender" : true,
  "passportNumber" : "0000 000000",
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "2020-10-10",
  "passportIssueOn" : "2020-10-10",
  "passportIssuedBy" : "Брагинский РОВД Гомельской области",
  "informationSource" : null,
  "comment" : null,
  "profession" : "engineer",
  "employmentPlace" : "SpaceX, Tesla",
  "driver" : false,
  "computer" : false,
  "smsAccepted" : false,
  "emailAccepted" : false,
  "phoneAccepted" : false,
  "mailAccepted" : false,
  "deleted" : true,
  "vipDiscount" : null,
  "initialOrdersSum" : 0.0,
  "ordersSum" : 0.0,
  "mobileAppLastUsage" : null,
  "contractId" : "12345",
  "contractDate" : "2025-08-27",
  "clientCardId" : null,
  "assistantId" : 9000000008,
  "feedback" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : "2025-08-27"
}
response
HTTP/1.1 201 Created
Location: /api/v2/clients/1000110410

{
  "id" : 1000110410,
  "firstName" : "Elon",
  "familyName" : "Musk",
  "patronymicName" : "Reeve",
  "city" : "California",
  "address" : "Hawthorne, 1 Rocket Rd",
  "email" : "some_address@itigris.ru",
  "birthdayDay" : 28,
  "birthdayMonth" : 6,
  "birthdayYear" : 1971,
  "tel1" : "79990102233",
  "tel2" : "-",
  "gender" : true,
  "passportNumber" : "0000 000000",
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "2020-10-10",
  "passportIssueOn" : "2020-10-10",
  "passportIssuedBy" : "Брагинский РОВД Гомельской области",
  "informationSource" : null,
  "comment" : null,
  "profession" : "engineer",
  "employmentPlace" : "SpaceX, Tesla",
  "driver" : false,
  "computer" : false,
  "smsAccepted" : false,
  "emailAccepted" : false,
  "phoneAccepted" : false,
  "mailAccepted" : false,
  "deleted" : true,
  "vipDiscount" : null,
  "initialOrdersSum" : 0.0,
  "ordersSum" : 0.0,
  "mobileAppLastUsage" : null,
  "contractId" : "12345",
  "contractDate" : "2025-08-27",
  "clientCard" : null,
  "assistant" : {
    "id" : 9000000008,
    "firstName" : "topmanager",
    "familyName" : "topmanager",
    "patronymicName" : "topmanager",
    "fullName" : "topmanager topmanager topmanager",
    "shortName" : "topmanager t. t."
  },
  "lastUpdatedAt" : null,
  "feedback" : null,
  "lastSeen" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : "2025-08-27"
}
Table 92. request description
Path Type Description Constraints

firstName

String

firstName

Length must be between 0 and 30 inclusive.
Must not be blank

familyName

String

familyName

Length must be between 0 and 30 inclusive.
Must not be blank

patronymicName

String

patronymicName

Length must be between 0 and 30 inclusive

city

String

possible cities (that you can use or not) lies here

address

String

address

Length must be between 0 and 280 inclusive

email

String

email

Length must be between 0 and 50 inclusive.
Must be a well-formed email address

birthdayDay

Number

birthdayDay

birthdayMonth

Number

birthdayMonth

birthdayYear

Number

birthdayYear

tel1

String

tel1

Length must be between 0 and 20 inclusive.
Must not be blank

tel2

String

tel2

Length must be between 0 and 20 inclusive

gender

Boolean

gender

Must not be null

passportNumber

String

passportNumber

Length must be between 0 and 150 inclusive

informationSource

String

possible informations sources lies here

comment

String

comment

Length must be between 0 and 2000 inclusive

profession

String

profession

Length must be between 0 and 50 inclusive

employmentPlace

String

employmentPlace

Length must be between 0 and 100 inclusive

driver

Boolean

driver

computer

Boolean

computer

smsAccepted

Boolean

smsAccepted

emailAccepted

Boolean

emailAccepted

phoneAccepted

Boolean

phoneAccepted

mailAccepted

Boolean

mailAccepted

deleted

Boolean

deleted

vipDiscount

Number

vipDiscount

clReplacementDiscountDate

String

clReplacementDiscountDate

initialOrdersSum

Number

initialOrdersSum

Must be at least 0.
Must not be null

ordersSum

Number

ordersSum

Must be at least 0.
Must not be null

isMobileClient

Boolean

isMobileClient

mobileAppLastUsage

String

mobileAppLastUsage

contractId

String

contractId

Length must be between 0 and 100 inclusive

contractDate

String

contractDate

clientCardId

Number

how to check clientCard number read here

assistantId

Number

client’s assistant, list of assistants you can get here

Table 93. response description
Path Type Description

firstName

String

firstName

familyName

String

familyName

patronymicName

String

patronymicName

city

String

city

address

String

address

email

String

email

birthdayDay

Number

birthdayDay

birthdayMonth

Number

birthdayMonth

birthdayYear

Number

birthdayYear

tel1

String

tel1

tel2

String

tel2

gender

Boolean

gender

passportNumber

String

passportNumber

informationSource

String

informationSource

comment

String

comment

profession

String

profession

employmentPlace

String

employmentPlace

driver

Boolean

driver

computer

Boolean

computer

smsAccepted

Boolean

smsAccepted

emailAccepted

Boolean

emailAccepted

phoneAccepted

Boolean

phoneAccepted

mailAccepted

Boolean

mailAccepted

deleted

Boolean

deleted

vipDiscount

Number

vipDiscount

clReplacementDiscountDate

String

clReplacementDiscountDate

initialOrdersSum

Number

initialOrdersSum

ordersSum

Number

ordersSum

isMobileClient

Boolean

isMobileClient

mobileAppLastUsage

String

mobileAppLastUsage

contractId

String

contractId

contractDate

String

contractDate

clientCardId

Number

clientCardId

assistant

Object

assistant

assistant.id

Number

user’s id

assistant.firstName

String

user’s firstName

assistant.familyName

String

user’s familyName

assistant.patronymicName

String

user’s patronymicName

update

request
PUT /api/v2/clients/1000110396 HTTP/1.1

{
  "familyName" : "Иванов",
  "firstName" : "Иван",
  "patronymicName" : "Петрович",
  "gender" : false,
  "birthdayDay" : 1,
  "birthdayMonth" : 5,
  "birthdayYear" : 1965,
  "tel1" : "+7 (812)163-77-89",
  "tel2" : null,
  "email" : "some_address@itigris.ru",
  "informationSource" : "Проходил мимо",
  "passportNumber" : "1234567890",
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "2020-10-10",
  "passportIssueOn" : "2020-10-10",
  "passportIssuedBy" : "Брагинский РОВД Гомельской области",
  "city" : "Милан",
  "address" : "street 1",
  "profession" : "tester",
  "employmentPlace" : "itigris",
  "driver" : true,
  "computer" : true,
  "assistantId" : 1000000008,
  "feedback" : "new feedback",
  "clientCardId" : 8012,
  "vipDiscount" : 15.0,
  "ordersSum" : 100.0,
  "smsAccepted" : true,
  "emailAccepted" : true,
  "phoneAccepted" : true,
  "mailAccepted" : true,
  "contractId" : null,
  "contractDate" : null,
  "initialOrdersSum" : null,
  "mobileAppLastUsage" : null,
  "comment" : "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras ultricies mi eu turpis hendrerit fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In ac dui quis mi consectetuer lacinia. Nam pretium turpis et arcu. Duis arcu tortor, suscipit eget, imperdiet nec, imperdiet iaculis, ipsum. Sed aliquam ultrices mauris. Integer ante arcu, accumsan a, consectetuer eget, p333ere ut, mauris. Praesent adipiscing. Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. Vestib",
  "deleted" : false,
  "federalSubjectCode" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : "2023-08-01"
}
response
HTTP/1.1 200 OK

{
  "id" : 1000110396,
  "firstName" : "Иван",
  "familyName" : "Иванов",
  "patronymicName" : "Петрович",
  "city" : "Милан",
  "address" : "street 1",
  "email" : "some_address@itigris.ru",
  "birthdayDay" : 1,
  "birthdayMonth" : 5,
  "birthdayYear" : 1965,
  "tel1" : "79990102233",
  "tel2" : "-",
  "gender" : false,
  "passportNumber" : "1234567890",
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "2020-10-10",
  "passportIssueOn" : "2020-10-10",
  "passportIssuedBy" : "Брагинский РОВД Гомельской области",
  "informationSource" : "Проходил мимо",
  "comment" : "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui. Cras ultricies mi eu turpis hendrerit fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In ac dui quis mi consectetuer lacinia. Nam pretium turpis et arcu. Duis arcu tortor, suscipit eget, imperdiet nec, imperdiet iaculis, ipsum. Sed aliquam ultrices mauris. Integer ante arcu, accumsan a, consectetuer eget, p333ere ut, mauris. Praesent adipiscing. Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. Vestib",
  "profession" : "tester",
  "employmentPlace" : "itigris",
  "driver" : true,
  "computer" : true,
  "smsAccepted" : true,
  "emailAccepted" : true,
  "phoneAccepted" : true,
  "mailAccepted" : true,
  "deleted" : true,
  "vipDiscount" : null,
  "initialOrdersSum" : 0.0,
  "ordersSum" : 100.0,
  "mobileAppLastUsage" : null,
  "contractId" : null,
  "contractDate" : null,
  "clientCard" : null,
  "assistant" : {
    "id" : 1000000008,
    "firstName" : "Женек",
    "familyName" : "Балашов",
    "patronymicName" : "Оптовый",
    "fullName" : "Балашов Женек Оптовый",
    "shortName" : "Балашов Ж. О."
  },
  "lastUpdatedAt" : "2025-08-27T07:23:36.865552",
  "feedback" : "new feedback",
  "lastSeen" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : "2023-08-01"
}
Table 94. request description
Path Type Description Constraints

firstName

String

firstName

Length must be between 0 and 30 inclusive.
Must not be blank

familyName

String

familyName

Length must be between 0 and 30 inclusive.
Must not be blank

patronymicName

String

patronymicName

Length must be between 0 and 30 inclusive

city

String

possible cities (that you can use or not) lies here

address

String

address

Length must be between 0 and 280 inclusive

email

String

email

Length must be between 0 and 50 inclusive.
Must be a well-formed email address

birthdayDay

Number

birthdayDay

birthdayMonth

Number

birthdayMonth

birthdayYear

Number

birthdayYear

tel1

String

tel1

Length must be between 0 and 20 inclusive.
Must not be blank

tel2

String

tel2

Length must be between 0 and 20 inclusive

gender

Boolean

gender

Must not be null

passportNumber

String

passportNumber

Length must be between 0 and 150 inclusive

informationSource

String

possible informations sources lies here

comment

String

comment

Length must be between 0 and 2000 inclusive

profession

String

profession

Length must be between 0 and 50 inclusive

employmentPlace

String

employmentPlace

Length must be between 0 and 100 inclusive

driver

Boolean

driver

computer

Boolean

computer

smsAccepted

Boolean

smsAccepted

emailAccepted

Boolean

emailAccepted

phoneAccepted

Boolean

phoneAccepted

mailAccepted

Boolean

mailAccepted

deleted

Boolean

deleted

vipDiscount

Number

vipDiscount

clReplacementDiscountDate

String

clReplacementDiscountDate

initialOrdersSum

Number

initialOrdersSum

Must be at least 0.
Must not be null

ordersSum

Number

ordersSum

Must be at least 0.
Must not be null

isMobileClient

Boolean

isMobileClient

mobileAppLastUsage

String

mobileAppLastUsage

contractId

String

contractId

Length must be between 0 and 100 inclusive

contractDate

String

contractDate

clientCardId

Number

how to check clientCard number read here

assistantId

Number

client’s assistant, list of assistants you can get here

Table 95. response description
Path Type Description

firstName

String

firstName

familyName

String

familyName

patronymicName

String

patronymicName

city

String

city

address

String

address

email

String

email

birthdayDay

Number

birthdayDay

birthdayMonth

Number

birthdayMonth

birthdayYear

Number

birthdayYear

tel1

String

tel1

tel2

String

tel2

gender

Boolean

gender

passportNumber

String

passportNumber

informationSource

String

informationSource

comment

String

comment

profession

String

profession

employmentPlace

String

employmentPlace

driver

Boolean

driver

computer

Boolean

computer

smsAccepted

Boolean

smsAccepted

emailAccepted

Boolean

emailAccepted

phoneAccepted

Boolean

phoneAccepted

mailAccepted

Boolean

mailAccepted

deleted

Boolean

deleted

vipDiscount

Number

vipDiscount

clReplacementDiscountDate

String

clReplacementDiscountDate

initialOrdersSum

Number

initialOrdersSum

ordersSum

Number

ordersSum

isMobileClient

Boolean

isMobileClient

mobileAppLastUsage

String

mobileAppLastUsage

contractId

String

contractId

contractDate

String

contractDate

clientCardId

Number

clientCardId

assistant

Object

assistant

assistant.id

Number

user’s id

assistant.firstName

String

user’s firstName

assistant.familyName

String

user’s familyName

assistant.patronymicName

String

user’s patronymicName

get client phones

request
GET /api/v2/clients/1000000046/phones HTTP/1.1
Table 96. /api/v2/clients/{clientId}/phones
Parameter Description

clientId

clientId

response
HTTP/1.1 200 OK

{
  "phone" : "9990608500"
}
Table 97. response description
Path Type Description

phone

String

phone number

get client email

request
GET /api/v2/clients/1000000224/email HTTP/1.1
Table 98. /api/v2/clients/{clientId}/email
Parameter Description

clientId

clientId

response
HTTP/1.1 200 OK

{
  "email" : "li_m_u_r@mail.ru"
}
Table 99. response description
Path Type Description

email

String

Client email

client info

Основная информация о клиенте и его карте
request
GET /api/v2/clients/1000110403/info HTTP/1.1
Table 100. /api/v2/clients/{clientId}/info
Parameter Description

clientId

clientId

response
HTTP/1.1 200 OK

{
  "id" : 1000110403,
  "fullName" : "Musk Elon Reeve",
  "lastSeen" : "2025-08-27T00:00:00",
  "gender" : true,
  "age" : 54,
  "passportNumber" : "0000 000000",
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "2020-10-10",
  "passportIssueOn" : "2020-10-10",
  "passportIssuedBy" : "Брагинский РОВД Гомельской области",
  "city" : "California",
  "address" : "Hawthorne, 1 Rocket Rd",
  "tel1" : "79990102233",
  "tel2" : "-",
  "email" : "some_address@itigris.ru",
  "profession" : "engineer",
  "employmentPlace" : "SpaceX, Tesla",
  "phoneAccepted" : false,
  "mailAccepted" : false,
  "smsAccepted" : false,
  "emailAccepted" : false,
  "hasMedicalCharts" : false,
  "assistant" : {
    "id" : 9000000008,
    "firstName" : "topmanager",
    "familyName" : "topmanager",
    "patronymicName" : "topmanager",
    "fullName" : "topmanager topmanager topmanager",
    "shortName" : "topmanager t. t."
  },
  "informationSource" : null,
  "vipDiscount" : null,
  "ordersSum" : 0.0,
  "comment" : null,
  "contractId" : "12345",
  "contractDate" : "2025-08-27",
  "driver" : false,
  "computer" : false,
  "deleted" : true,
  "agreementAcception" : false,
  "clientCard" : {
    "id" : 9876,
    "sum" : 15000.0,
    "bonusesSum" : 0,
    "discount" : {
      "cardId" : 9876,
      "cardSum" : 15000.0,
      "accessories" : 10.0,
      "contactLenses" : 0.0,
      "glasses" : 5.0,
      "sunglasses" : 5.0,
      "lenses" : 5.0,
      "extras" : 0.0,
      "services" : 0.0
    }
  },
  "feedback" : null,
  "birthday" : "1971-06-28",
  "birthdayDay" : 28,
  "birthdayMonth" : 6,
  "birthdayYear" : 1971,
  "clReplacementDiscountDate" : "2025-09-10"
}
Table 101. response description
Path Type Description

fullName

String

Полное имя в правильном формате (ФИО или ИОФ, в зависимости от региона)

lastSeen

String

Время и дата последнего посещения (последнего совершенного заказа)

gender

Boolean

Пол. true = мужчина, false - женщина

birthday

String

День рождения

age

Number

Возраст в полных годах

passportNumber

String

Серия и номер пасспорта через пробел

city

String

Название города

address

String

Адресс

tel1

String

Основной телефон

tel2

String

Дополнительный телефон

email

String

Почта

profession

String

Профессия

employmentPlace

String

Место работы

phoneAccepted

Boolean

Согласие на звонки

mailAccepted

Boolean

Согласие на получение писем (бумажных)

smsAccepted

Boolean

Согласие на СМС

emailAccepted

Boolean

Согласие на получение электронных писем

assistant

Object

Ассистент клиента

informationSource

String

Откуда узнал об оптике?

clReplacementDiscountDate

String

Дата скидки на контактные линзы клиента

vipDiscount

Number

VIP скидка

ordersSum

Number

Общая сумма заказов

comment

String

Комментарий

contractId

String

Номер медицинского договора

contractDate

String

Дата заключения медицинского договора

driver

Boolean

Является ли клиент водителем

computer

Boolean

Пользуется ли клиент компьютером постоянно

deleted

Boolean

Был ли клиент удален

agreementAcception

Boolean

Принял ли клиент согласие

clientCard

Object

Карта клиента

clientCard.id

Number

Id карты

clientCard.sum

Number

Сумма на карте

clientCard.bonusesSum

Number

Сумма бонусов на карте

clientCard.discount

Object

Скидки

clientCard.discount.accessories

Number

Скидка на аксессуары

clientCard.discount.contactlenses

Number

Скидка на КЛ

clientCard.discount.glasses

Number

Скидка на очки

clientCard.discount.sunglasses

Number

Скидка на солнечные очки

clientCard.discount.lenses

Number

Скидка на линзы

clientCard.discount.extras

Number

Скидка на массовку

clientCard.discount.services

Number

Скидка на услуги

list

сортировка по дате регистрации: registerDate,asc/desc
request
GET /api/v2/clients?clientSearchType=FULL_NAME&deleted=false&searchString=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%20%D0%98%D0%B2%D0%B0%D0%BD%20%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&sort=registrationDate,asc HTTP/1.1
Table 102. request description
Parameter Description

clientSearchType

Can be one from [FULL_NAME, PHONE_NUMBER, CARD_NUMBER, PRESCRIPTION_ID, CL_PRESCRIPTION_ID]

searchString

String that uses to search client

deleted

Show ONLY deleted or ONLY not deleted

pageable

Pageable description

response
HTTP/1.1 200 OK

{
  "content" : [ {
    "id" : 1000000011,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79211192854",
    "registrationDate" : "2019-01-09",
    "agreementAcception" : false,
    "comment" : null,
    "feedback" : null,
    "birthday" : null,
    "birthdayDay" : null,
    "birthdayMonth" : null,
    "birthdayYear" : null,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  }, {
    "id" : 1000029775,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79115555555",
    "registrationDate" : "2019-06-10",
    "agreementAcception" : false,
    "comment" : "",
    "feedback" : null,
    "birthday" : "1998-03-03",
    "birthdayDay" : 3,
    "birthdayMonth" : 3,
    "birthdayYear" : 1998,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  }, {
    "id" : 1000038709,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79996690458",
    "registrationDate" : "2019-12-30",
    "agreementAcception" : false,
    "comment" : null,
    "feedback" : null,
    "birthday" : null,
    "birthdayDay" : null,
    "birthdayMonth" : null,
    "birthdayYear" : null,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  }, {
    "id" : 1000038710,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79996690458",
    "registrationDate" : "2019-12-30",
    "agreementAcception" : false,
    "comment" : null,
    "feedback" : null,
    "birthday" : null,
    "birthdayDay" : null,
    "birthdayMonth" : null,
    "birthdayYear" : null,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  }, {
    "id" : 1000038711,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79996690458",
    "registrationDate" : "2019-12-30",
    "agreementAcception" : false,
    "comment" : null,
    "feedback" : null,
    "birthday" : null,
    "birthdayDay" : null,
    "birthdayMonth" : null,
    "birthdayYear" : null,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  }, {
    "id" : 1000038712,
    "familyName" : "Иванов",
    "firstName" : "Иван",
    "patronymicName" : "Иванович",
    "phoneNumber" : "+79996690458",
    "registrationDate" : "2019-12-30",
    "agreementAcception" : false,
    "comment" : null,
    "feedback" : null,
    "birthday" : null,
    "birthdayDay" : null,
    "birthdayMonth" : null,
    "birthdayYear" : null,
    "snilsNumber" : null,
    "snilsIssueOn" : null
  } ],
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : false,
      "sorted" : true,
      "unsorted" : false
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "last" : true,
  "totalElements" : 6,
  "totalPages" : 1,
  "first" : true,
  "size" : 10,
  "number" : 0,
  "sort" : {
    "empty" : false,
    "sorted" : true,
    "unsorted" : false
  },
  "numberOfElements" : 6,
  "empty" : false
}
Table 103. response description
Path Type Description

content[].

Array

an array of bills

[].id

Number

Client’s id

[].familyName

String

Client’s familyName

[].firstName

String

Client’s firstName

[].patronymicName

String

Client’s patronymicName

[].birthday

String

Client’s birthday

[].phoneNumber

String

Client’s phoneNumber

[].registrationDate

String

Client’s registrationDate

[].agreementAcception

Boolean

Is client accept agreements?

accept questionnaire

Используется для подтверждения анкеты раннее созданного пользователя.
Если клиент уже подписал анкету, выкинет 400 статус.
request
POST /api/v2/clients/1000110395/agree HTTP/1.1
Content-Type: application/x-www-form-urlencoded
response
HTTP/1.1 200 OK
Table 104. /api/v2/clients/{clientId}/agree
Parameter Description

clientId

clientId

information source

Варианты ответа для вопроса "откуда узнал об оптике".
request
GET /api/v2/clients/information-source HTTP/1.1
response
HTTP/1.1 200 OK

[ "Проходил мимо", "Реклама", "Рекомендации", "Сайт", "Социальные сети" ]
Table 105. response description
Path Type Description

[]

Array

array of possible information source

orders

История заказов клиента
request
GET /api/v2/clients/1000000010/orders?statuses=ACCEPTED&sort=createdAt HTTP/1.1
Table 106. /api/v2/clients/{clientId}/orders
Parameter Description

clientId

client id

Parameter Description

status

filter’s order statuses

pageable

pageable object that contain information about pageable and sort

response
HTTP/1.1 200 OK

{
  "content" : [ {
    "id" : 1000000001,
    "createdAt" : "2018-10-04T18:31:00.000Z",
    "clientId" : 1000000010,
    "type" : "GLASSES",
    "departmentName" : "Первый магазин",
    "productionDepartmentName" : null,
    "status" : "ACCEPTED",
    "sum" : 600.0,
    "paidSum" : 600.0,
    "comment" : ""
  }, {
    "id" : 1000000002,
    "createdAt" : "2018-10-04T18:32:00.000Z",
    "clientId" : 1000000010,
    "type" : "GLASSES",
    "departmentName" : "Первый магазин",
    "productionDepartmentName" : null,
    "status" : "ACCEPTED",
    "sum" : 3000.0,
    "paidSum" : 3000.0,
    "comment" : ""
  } ],
  "totalPages" : 1,
  "totalElements" : 2,
  "size" : 10,
  "page" : 0,
  "number" : 0,
  "pageable" : {
    "pageSize" : 10,
    "pageNumber" : 0
  },
  "totalResult" : null
}
Table 107. response description
Path Type Description

content[].

Array

An array of orders

[].id

Number

id

[].createdAt

String

createdAt

[].type

String

type

[].departmentName

String

departmentName

[].productionDepartmentName

String

productionDepartmentName

[].status

String

status

[].sum

Number

Discount order sum

[].paidSum

Number

Сумма, оплаченная за заказ

update client tel1

request
PUT /api/v2/clients/1000000046/tel1 HTTP/1.1

{
  "tel1" : "9990608500"
}
Table 108. /api/v2/clients/{clientId}/tel1
Parameter Description

clientId

clientId

response
HTTP/1.1 200 OK

{
  "id" : 1000000046,
  "firstName" : "Оксана",
  "familyName" : "-",
  "patronymicName" : "-",
  "city" : "",
  "address" : "",
  "email" : "",
  "birthdayDay" : null,
  "birthdayMonth" : null,
  "birthdayYear" : null,
  "tel1" : "9990608500",
  "tel2" : "",
  "gender" : false,
  "passportNumber" : null,
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "1990-10-10",
  "passportIssueOn" : null,
  "passportIssuedBy" : null,
  "informationSource" : null,
  "comment" : "ПАРТНЕРСКАЯ ПРОГРАММА",
  "profession" : "",
  "employmentPlace" : "",
  "driver" : false,
  "computer" : false,
  "smsAccepted" : true,
  "emailAccepted" : true,
  "phoneAccepted" : false,
  "mailAccepted" : false,
  "deleted" : false,
  "vipDiscount" : 0.0,
  "initialOrdersSum" : 0.0,
  "ordersSum" : 0.0,
  "mobileAppLastUsage" : null,
  "contractId" : null,
  "contractDate" : null,
  "clientCard" : {
    "id" : 9031878823,
    "sum" : 0.0,
    "bonusesSum" : 0,
    "discount" : {
      "cardId" : 9031878823,
      "cardSum" : 0.0,
      "accessories" : 0.0,
      "contactLenses" : 0.0,
      "glasses" : 0.0,
      "sunglasses" : 0.0,
      "lenses" : 0.0,
      "extras" : 0.0,
      "services" : 0.0
    }
  },
  "assistant" : null,
  "lastUpdatedAt" : "2025-08-27T07:23:37.464102",
  "feedback" : null,
  "lastSeen" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : null
}

update client tel2

request
PUT /api/v2/clients/1000000046/tel2 HTTP/1.1

{
  "tel2" : "9990608500"
}
Table 109. /api/v2/clients/{clientId}/tel2
Parameter Description

clientId

clientId

response
HTTP/1.1 200 OK

{
  "id" : 1000000046,
  "firstName" : "Оксана",
  "familyName" : "-",
  "patronymicName" : "-",
  "city" : "",
  "address" : "",
  "email" : "",
  "birthdayDay" : null,
  "birthdayMonth" : null,
  "birthdayYear" : null,
  "tel1" : "9990608500",
  "tel2" : "9990608500",
  "gender" : false,
  "passportNumber" : null,
  "snilsNumber" : "116-973-385 89",
  "snilsIssueOn" : "1990-10-10",
  "passportIssueOn" : null,
  "passportIssuedBy" : null,
  "informationSource" : null,
  "comment" : "ПАРТНЕРСКАЯ ПРОГРАММА",
  "profession" : "",
  "employmentPlace" : "",
  "driver" : false,
  "computer" : false,
  "smsAccepted" : true,
  "emailAccepted" : true,
  "phoneAccepted" : false,
  "mailAccepted" : false,
  "deleted" : false,
  "vipDiscount" : 0.0,
  "initialOrdersSum" : 0.0,
  "ordersSum" : 0.0,
  "mobileAppLastUsage" : null,
  "contractId" : null,
  "contractDate" : null,
  "clientCard" : {
    "id" : 9031878823,
    "sum" : 0.0,
    "bonusesSum" : 0,
    "discount" : {
      "cardId" : 9031878823,
      "cardSum" : 0.0,
      "accessories" : 0.0,
      "contactLenses" : 0.0,
      "glasses" : 0.0,
      "sunglasses" : 0.0,
      "lenses" : 0.0,
      "extras" : 0.0,
      "services" : 0.0
    }
  },
  "assistant" : null,
  "lastUpdatedAt" : "2025-08-27T07:23:37.530708",
  "feedback" : null,
  "lastSeen" : null,
  "snilsVerificationStatus" : null,
  "mobileClient" : false,
  "clReplacementDiscountDate" : null
}

delete

request
DELETE /api/v2/clients/1000110394 HTTP/1.1
Table 110. /api/v2/clients/{clientId}
Parameter Description

clientId

clientId