Skip to main content

API reference

The reference is the complete list of External API methods with parameters, request bodies and response schemas. It is built from the same OpenAPI specification as the backend code and is updated with every release: a mismatch between the reference and the real endpoints fails the deployment check.

Authentication rules, formats, pagination, idempotency and error codes are described in External API — this page covers the methods only.

How to read the reference

  • Section — a resource: catalog, clients, orders, deals, bookings and so on. The table of contents on the right navigates by section.
  • Method and path — relative to the base URL https://app.easymb.ru/api/external/v1. {id} in a path is the record UUID.
  • Scopes — which permission the token needs. catalog:write includes catalog:read; *:read and *:write open every resource.
  • Component — which component must be enabled for the company, otherwise the response is 403. System components (core, catalog, calendar, messenger) are always enabled.
  • Parameters — query and path. Paginated lists accept page, pageSize and resource-specific filters (sort, order, search where listed); reference lists respond with an array, without pages. Mutating operations describe the X-Idempotency-Key header.
  • 4xx responses — every operation lists the common errors of the API with their codes; the body shape is the ExternalErrorResponse schema.
  • Request body and Responses — field schemas. The “required” mark applies to the request; in a response a field marked | null may be empty.
  • Data schemas at the end — named objects the methods refer to: the same order schema arrives in the list, in a single read and in creation.

How to download the specification and generate a client

The external-openapi.json file can be downloaded from the reference header. Import it into Postman or Insomnia to get a ready request collection, or let a client generator build a typed wrapper for your language:

npx @openapitools/openapi-generator-cli generate \
  -i https://docs.easymb.ru/external-openapi.json \
  -g typescript-fetch \
  -o ./easymb-client

The base URL is already set in the specification; pass the token in the Authorization: Bearer emb_live_… header.

Version
1.0
Base URL
https://app.easymb.ru/api/external/v1
Operations
85

catalog

Товары, услуги и категории каталога.

GET/catalog/products

Список товаров.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystring
categoryIdquerystring | null
statusquerystring
Values: activehiddenall
priceMinquerynumberМин. цена в копейках
priceMaxquerynumberМакс. цена в копейках
brandquerystringФильтр по бренду (точное совпадение).
attrquerydictionary of stringКарта фильтров по характеристикам: attr[<attributeId>]=<значение | minNumber:maxNumber | optionId>
sortquerystring
Values: nameskupricebrandmodelcreatedAt
orderquerystring
Values: ascdesc
includequerystring
Values: stock

Responses

200
FieldTypeDescription
itemsrequiredProductResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/catalog/products

Создать товар.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: CFE-0012
barcodestring | nullШтрихкод
Example: 4607034630621
namerequiredstringНазвание товара
Example: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
dictionary of string
descriptionI18nobjectПереводы описания по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
pricerequirednumberЦена в копейках
Example: 240000
costnumberСебестоимость в копейках
Default: 0
unitstringЕдиница измерения (код)
Default: pcs
unitIdstring (uuid) | nullFK на справочник единиц (C5).
packQtynumber | nullФасовка: кол-во packUnit в одной unit.
packUnitIdstring (uuid) | nullFK на единицу фасовки.
minOrderQtynumber | nullМинимальная партия к заказу (опт). Пусто — без ограничения.
orderStepQtynumber | nullКратность отгрузки (опт): коробка 12 шт → 12, 24, 36.
costComponentsobject[]Разбивка себестоимости (C8): [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlebooleanКомплект/набор (BOM)
Default: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
array of object
statusstring
Values: activehidden
Статус карточки
Default: active
hasStockbooleanВести складской учёт остатков по товару
Default: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Example:
brandstring | nullБренд
Example: Lavazza
modelstring | nullМодель
Example: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).

Responses

201
FieldTypeDescription
idrequiredstringID товара
companyIdrequiredstringID компании
skurequiredstringАртикул
barcoderequiredstring | nullШтрихкод
namerequiredstringНазвание товара
descriptionrequiredstring | nullОписание
nameI18nrequiredobjectПереводы названия по локали: { "de": "..." }
dictionary of string
descriptionI18nrequiredobjectПереводы описания по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
brandrequiredstring | nullБренд
modelrequiredstring | nullМодель
pricerequirednumberЦена в копейках
costrequirednumberСебестоимость в копейках
unitrequiredstringЕдиница измерения (код, денорм)
unitIdrequiredstring | nullID единицы измерения из справочника
packQtyrequirednumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyrequirednumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyrequirednumber | nullКратность отгрузки (опт); null — любая
packUnitIdrequiredstring | nullID единицы фасовки
costComponentsrequiredobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlerequiredbooleanКомплект/набор (BOM)
modifierGroupsrequiredobject[]Группы модификаторов позиции с надбавками
array of object
statusrequiredstring
Values: activehidden
Статус карточки
hasStockrequiredbooleanВедётся складской учёт остатков
defaultSupplierIdrequiredstring | nullID поставщика по умолчанию (авто-дозаказ)
emojirequiredstring | nullЭмодзи-иконка
photoFileIdrequiredstring | nullID файла основного фото
thumbnailFileIdrequiredstring | nullID файла миниатюры
attributeValuesrequiredProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/products/{id}

Получить товар.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID товара
companyIdrequiredstringID компании
skurequiredstringАртикул
barcoderequiredstring | nullШтрихкод
namerequiredstringНазвание товара
descriptionrequiredstring | nullОписание
nameI18nrequiredobjectПереводы названия по локали: { "de": "..." }
dictionary of string
descriptionI18nrequiredobjectПереводы описания по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
brandrequiredstring | nullБренд
modelrequiredstring | nullМодель
pricerequirednumberЦена в копейках
costrequirednumberСебестоимость в копейках
unitrequiredstringЕдиница измерения (код, денорм)
unitIdrequiredstring | nullID единицы измерения из справочника
packQtyrequirednumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyrequirednumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyrequirednumber | nullКратность отгрузки (опт); null — любая
packUnitIdrequiredstring | nullID единицы фасовки
costComponentsrequiredobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlerequiredbooleanКомплект/набор (BOM)
modifierGroupsrequiredobject[]Группы модификаторов позиции с надбавками
array of object
statusrequiredstring
Values: activehidden
Статус карточки
hasStockrequiredbooleanВедётся складской учёт остатков
defaultSupplierIdrequiredstring | nullID поставщика по умолчанию (авто-дозаказ)
emojirequiredstring | nullЭмодзи-иконка
photoFileIdrequiredstring | nullID файла основного фото
thumbnailFileIdrequiredstring | nullID файла миниатюры
attributeValuesrequiredProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/catalog/products/{id}

Изменить товар.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: CFE-0012
barcodestring | nullШтрихкод
Example: 4607034630621
namestringНазвание товара
Example: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
dictionary of string
descriptionI18nobjectПереводы описания по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
pricenumberЦена в копейках
Example: 240000
costnumberСебестоимость в копейках
Default: 0
unitstringЕдиница измерения (код)
Default: pcs
unitIdstring (uuid) | nullFK на справочник единиц (C5).
packQtynumber | nullФасовка: кол-во packUnit в одной unit.
packUnitIdstring (uuid) | nullFK на единицу фасовки.
minOrderQtynumber | nullМинимальная партия к заказу (опт). Пусто — без ограничения.
orderStepQtynumber | nullКратность отгрузки (опт): коробка 12 шт → 12, 24, 36.
costComponentsobject[]Разбивка себестоимости (C8): [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlebooleanКомплект/набор (BOM)
Default: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
array of object
statusstring
Values: activehidden
Статус карточки
Default: active
hasStockbooleanВести складской учёт остатков по товару
Default: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Example:
brandstring | nullБренд
Example: Lavazza
modelstring | nullМодель
Example: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).

Responses

200
FieldTypeDescription
idrequiredstringID товара
companyIdrequiredstringID компании
skurequiredstringАртикул
barcoderequiredstring | nullШтрихкод
namerequiredstringНазвание товара
descriptionrequiredstring | nullОписание
nameI18nrequiredobjectПереводы названия по локали: { "de": "..." }
dictionary of string
descriptionI18nrequiredobjectПереводы описания по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
brandrequiredstring | nullБренд
modelrequiredstring | nullМодель
pricerequirednumberЦена в копейках
costrequirednumberСебестоимость в копейках
unitrequiredstringЕдиница измерения (код, денорм)
unitIdrequiredstring | nullID единицы измерения из справочника
packQtyrequirednumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyrequirednumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyrequirednumber | nullКратность отгрузки (опт); null — любая
packUnitIdrequiredstring | nullID единицы фасовки
costComponentsrequiredobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlerequiredbooleanКомплект/набор (BOM)
modifierGroupsrequiredobject[]Группы модификаторов позиции с надбавками
array of object
statusrequiredstring
Values: activehidden
Статус карточки
hasStockrequiredbooleanВедётся складской учёт остатков
defaultSupplierIdrequiredstring | nullID поставщика по умолчанию (авто-дозаказ)
emojirequiredstring | nullЭмодзи-иконка
photoFileIdrequiredstring | nullID файла основного фото
thumbnailFileIdrequiredstring | nullID файла миниатюры
attributeValuesrequiredProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/catalog/products/{id}

Скрыть товар (soft-delete).

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID товара
companyIdrequiredstringID компании
skurequiredstringАртикул
barcoderequiredstring | nullШтрихкод
namerequiredstringНазвание товара
descriptionrequiredstring | nullОписание
nameI18nrequiredobjectПереводы названия по локали: { "de": "..." }
dictionary of string
descriptionI18nrequiredobjectПереводы описания по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
brandrequiredstring | nullБренд
modelrequiredstring | nullМодель
pricerequirednumberЦена в копейках
costrequirednumberСебестоимость в копейках
unitrequiredstringЕдиница измерения (код, денорм)
unitIdrequiredstring | nullID единицы измерения из справочника
packQtyrequirednumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyrequirednumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyrequirednumber | nullКратность отгрузки (опт); null — любая
packUnitIdrequiredstring | nullID единицы фасовки
costComponentsrequiredobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlerequiredbooleanКомплект/набор (BOM)
modifierGroupsrequiredobject[]Группы модификаторов позиции с надбавками
array of object
statusrequiredstring
Values: activehidden
Статус карточки
hasStockrequiredbooleanВедётся складской учёт остатков
defaultSupplierIdrequiredstring | nullID поставщика по умолчанию (авто-дозаказ)
emojirequiredstring | nullЭмодзи-иконка
photoFileIdrequiredstring | nullID файла основного фото
thumbnailFileIdrequiredstring | nullID файла миниатюры
attributeValuesrequiredProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/services

Список услуг.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystring
categoryIdquerystring
statusquerystring
Values: activehiddenall
priceMinquerynumberМин. цена в копейках
priceMaxquerynumberМакс. цена в копейках
priceModelquerystring
Values: fixedper_hourper_minuteper_dayper_item
sortquerystring
Values: nameskupricetotalCostcreatedAt
orderquerystring
Values: ascdesc

Responses

200
FieldTypeDescription
itemsrequiredServiceResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/catalog/services

Создать услугу.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: SVC-0001
namerequiredstringНазвание услуги
Example: Консультация бариста
nameI18nobjectПереводы названия по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
priceModelstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
Default: fixed
pricerequirednumberЦена в копейках
Example: 150000
durationMinutesnumber | nullДлительность услуги в минутах (для записи/брони)
Example: 60
statusstring
Values: activehidden
Статус карточки
Default: active
costItemsServiceCostItemInputDto[]Состав затрат (материалы и работы). Replace-all при наличии в запросе.

Responses

201
FieldTypeDescription
idrequiredstringID услуги
companyIdrequiredstringID компании
skurequiredstringАртикул
namerequiredstringНазвание услуги
nameI18nrequiredobjectПереводы названия по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
priceModelrequiredstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
pricerequirednumberЦена в копейках
durationMinutesrequirednumber | nullДлительность, мин
totalCostrequirednumberСумма по составу затрат, копейки
statusrequiredstring
Values: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/services/{id}

Получить услугу.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID услуги
companyIdrequiredstringID компании
skurequiredstringАртикул
namerequiredstringНазвание услуги
nameI18nrequiredobjectПереводы названия по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
priceModelrequiredstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
pricerequirednumberЦена в копейках
durationMinutesrequirednumber | nullДлительность, мин
totalCostrequirednumberСумма по составу затрат, копейки
statusrequiredstring
Values: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/catalog/services/{id}

Изменить услугу.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: SVC-0001
namestringНазвание услуги
Example: Консультация бариста
nameI18nobjectПереводы названия по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
priceModelstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
Default: fixed
pricenumberЦена в копейках
Example: 150000
durationMinutesnumber | nullДлительность услуги в минутах (для записи/брони)
Example: 60
statusstring
Values: activehidden
Статус карточки
Default: active
costItemsServiceCostItemInputDto[]Состав затрат (материалы и работы). Replace-all при наличии в запросе.

Responses

200
FieldTypeDescription
idrequiredstringID услуги
companyIdrequiredstringID компании
skurequiredstringАртикул
namerequiredstringНазвание услуги
nameI18nrequiredobjectПереводы названия по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
priceModelrequiredstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
pricerequirednumberЦена в копейках
durationMinutesrequirednumber | nullДлительность, мин
totalCostrequirednumberСумма по составу затрат, копейки
statusrequiredstring
Values: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/catalog/services/{id}

Скрыть услугу.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID услуги
companyIdrequiredstringID компании
skurequiredstringАртикул
namerequiredstringНазвание услуги
nameI18nrequiredobjectПереводы названия по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
priceModelrequiredstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
pricerequirednumberЦена в копейках
durationMinutesrequirednumber | nullДлительность, мин
totalCostrequirednumberСумма по составу затрат, копейки
statusrequiredstring
Values: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/categories

Список категорий.

Scopes
catalog:read
Component
catalog

Responses

200
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/catalog/categories

Создать категорию.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namerequiredstringНазвание категории
Example: Напитки
parentIdstring (uuid) | nullID родительской категории; null — корень
iconstringИмя иконки
Default: folder
colorstring | nullHEX цвета иконки
bgstring | nullHEX цвета фона иконки
sortOrdernumberПорядок сортировки
Default: 0
prefixstring | nullПрефикс артикула: A-Z, 1-4 символа
Example: CFE

Responses

201
FieldTypeDescription
idrequiredstringID категории
companyIdrequiredstringID компании
parentIdrequiredstring | nullID родительской категории; null — корень
namerequiredstringНазвание категории
iconrequiredstringИмя иконки
colorrequiredstring | nullHEX цвета иконки
bgrequiredstring | nullHEX цвета фона иконки
sortOrderrequirednumberПорядок сортировки
prefixrequiredstring | nullПрефикс артикулов: A-Z, 1-4 символа
Example: CFE
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/categories/{id}

Получить категорию.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID категории
companyIdrequiredstringID компании
parentIdrequiredstring | nullID родительской категории; null — корень
namerequiredstringНазвание категории
iconrequiredstringИмя иконки
colorrequiredstring | nullHEX цвета иконки
bgrequiredstring | nullHEX цвета фона иконки
sortOrderrequirednumberПорядок сортировки
prefixrequiredstring | nullПрефикс артикулов: A-Z, 1-4 символа
Example: CFE
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/catalog/categories/{id}

Изменить категорию.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namestringНазвание категории
Example: Напитки
parentIdstring (uuid) | nullID родительской категории; null — корень
iconstringИмя иконки
Default: folder
colorstring | nullHEX цвета иконки
bgstring | nullHEX цвета фона иконки
sortOrdernumberПорядок сортировки
Default: 0
prefixstring | nullПрефикс артикула: A-Z, 1-4 символа
Example: CFE

Responses

200
FieldTypeDescription
idrequiredstringID категории
companyIdrequiredstringID компании
parentIdrequiredstring | nullID родительской категории; null — корень
namerequiredstringНазвание категории
iconrequiredstringИмя иконки
colorrequiredstring | nullHEX цвета иконки
bgrequiredstring | nullHEX цвета фона иконки
sortOrderrequirednumberПорядок сортировки
prefixrequiredstring | nullПрефикс артикулов: A-Z, 1-4 символа
Example: CFE
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/catalog/categories/{id}

Удалить категорию.

Scopes
catalog:write
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

204

No content

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/products/{id}/variants

Варианты товара (SKU по размеру, цвету и т. п.).

Идентификаторы вариантов нужны в `variantId` строк заказа, продажи и приёмки, а также в корректировке остатков.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/attributes

Атрибуты товаров с вариантами значений.

Идентификаторы атрибутов и их опций подставляются в `attributes[]` при создании и изменении товара.

Scopes
catalog:read
Component
catalog

Parameters

ParameterInTypeDescription
categoryIdquerystring | null
primaryOnlyqueryboolean

Responses

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/catalog/units

Единицы измерения компании.

Идентификаторы — для `unitId` и `packUnitId` товара.

Scopes
catalog:read
Component
catalog

Responses

200
array of UnitResponse
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

clients

Клиенты компании.

GET/clients

Список клиентов.

Scopes
clients:read
Component
clients

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: displayNamecreatedAtupdatedAt
orderquerystring
Values: ascdesc
kindquerystring
Values: individuallegal
statusquerystring
Values: activearchived
assignedToIdquerystringID ответственного сотрудника
tagquerystringОдин тег для фильтра

Responses

200
FieldTypeDescription
itemsrequiredClientListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/clients

Создать клиента.

Scopes
clients:write
Component
clients

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamestring | nullИмя
lastNamestring | nullФамилия
middleNamestring | nullОтчество
companyNamestring | nullНазвание компании (юрлицо)
positionstring | nullДолжность контактного лица
phonestring | nullТелефон
emailstring | nullE-mail
telegramChatIdstring | nullTelegram chat id для исходящих сообщений (канал telegram).
whatsappPhonestring | nullНомер WhatsApp; пустой → используется phone.
notestring | nullВнутренняя заметка
tagsstring[]Теги
array of string
birthdaystring (date) | nullДата рождения / основания (ISO 8601)
assignedToIdstring (uuid) | nullID ответственного сотрудника
innstring | nullИНН (B2B, для документов)
kppstring | nullКПП (B2B)
legalAddressstring | nullЮр. адрес (B2B)
bankDetailsstring | nullБанковские реквизиты строкой (B2B)
contractNumberstring | nullНомер договора (B2B)
paymentTermsDaysnumber | nullСрок оплаты по договору, дни
creditLimitnumber | nullКредитный лимит B2B, копейки (0 = без лимита)
groupIdstring (uuid) | nullГруппа контрагентов (опт): общий прайс-лист и скидка сегмента
priceListIdstring (uuid) | nullПерсональный прайс-лист (опт), перекрывает прайс группы
slaHoursnumber | nullSLA по договору, часы
marketingConsentbooleanСогласие на маркетинговые рассылки (CL9)

Responses

201
FieldTypeDescription
idrequiredstringID клиента
companyIdrequiredstringID компании
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamerequiredstring | nullИмя
lastNamerequiredstring | nullФамилия
middleNamerequiredstring | nullОтчество
companyNamerequiredstring | nullНазвание компании (юрлицо)
positionrequiredstring | nullДолжность контактного лица
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
telegramChatIdrequiredstring | nullTelegram chat id для исходящих сообщений
whatsappPhonerequiredstring | nullНомер WhatsApp; null — используется phone
innrequiredstring | nullИНН (B2B)
kpprequiredstring | nullКПП (B2B)
legalAddressrequiredstring | nullЮр. адрес (B2B)
bankDetailsrequiredstring | nullБанковские реквизиты строкой (B2B)
noterequiredstring | nullВнутренняя заметка
tagsrequiredstring[]Теги
array of string
birthdayrequiredstring (date) | nullДата рождения / основания (ISO 8601)
statusrequiredstring
Values: activearchived
Статус клиента
balancerequirednumberБаланс/абонемент в копейках
pointsrequirednumberБаллы лояльности (копейки-эквивалент)
contractNumberrequiredstring | nullНомер договора (B2B)
groupIdrequiredstring | nullID группы контрагентов (опт)
priceListIdrequiredstring | nullID персонального прайс-листа (опт)
paymentTermsDaysrequirednumber | nullСрок оплаты по договору, дни
creditLimitrequirednumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursrequirednumber | nullSLA по договору, часы
marketingConsentrequiredbooleanСогласие на маркетинговые рассылки
marketingConsentAtrequiredstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourcerequiredstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtrequiredstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdrequiredstring | nullID ответственного сотрудника
createdByIdrequiredstringID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/clients/{id}

Получить клиента.

Scopes
clients:read
Component
clients

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID клиента
companyIdrequiredstringID компании
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamerequiredstring | nullИмя
lastNamerequiredstring | nullФамилия
middleNamerequiredstring | nullОтчество
companyNamerequiredstring | nullНазвание компании (юрлицо)
positionrequiredstring | nullДолжность контактного лица
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
telegramChatIdrequiredstring | nullTelegram chat id для исходящих сообщений
whatsappPhonerequiredstring | nullНомер WhatsApp; null — используется phone
innrequiredstring | nullИНН (B2B)
kpprequiredstring | nullКПП (B2B)
legalAddressrequiredstring | nullЮр. адрес (B2B)
bankDetailsrequiredstring | nullБанковские реквизиты строкой (B2B)
noterequiredstring | nullВнутренняя заметка
tagsrequiredstring[]Теги
array of string
birthdayrequiredstring (date) | nullДата рождения / основания (ISO 8601)
statusrequiredstring
Values: activearchived
Статус клиента
balancerequirednumberБаланс/абонемент в копейках
pointsrequirednumberБаллы лояльности (копейки-эквивалент)
contractNumberrequiredstring | nullНомер договора (B2B)
groupIdrequiredstring | nullID группы контрагентов (опт)
priceListIdrequiredstring | nullID персонального прайс-листа (опт)
paymentTermsDaysrequirednumber | nullСрок оплаты по договору, дни
creditLimitrequirednumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursrequirednumber | nullSLA по договору, часы
marketingConsentrequiredbooleanСогласие на маркетинговые рассылки
marketingConsentAtrequiredstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourcerequiredstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtrequiredstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdrequiredstring | nullID ответственного сотрудника
createdByIdrequiredstringID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/clients/{id}

Изменить клиента.

Scopes
clients:write
Component
clients

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
kindstring
Values: individuallegal
Физлицо или юрлицо
displayNamestringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamestring | nullИмя
lastNamestring | nullФамилия
middleNamestring | nullОтчество
companyNamestring | nullНазвание компании (юрлицо)
positionstring | nullДолжность контактного лица
phonestring | nullТелефон
emailstring | nullE-mail
telegramChatIdstring | nullTelegram chat id для исходящих сообщений (канал telegram).
whatsappPhonestring | nullНомер WhatsApp; пустой → используется phone.
notestring | nullВнутренняя заметка
tagsstring[]Теги
array of string
birthdaystring (date) | nullДата рождения / основания (ISO 8601)
assignedToIdstring (uuid) | nullID ответственного сотрудника
innstring | nullИНН (B2B, для документов)
kppstring | nullКПП (B2B)
legalAddressstring | nullЮр. адрес (B2B)
bankDetailsstring | nullБанковские реквизиты строкой (B2B)
contractNumberstring | nullНомер договора (B2B)
paymentTermsDaysnumber | nullСрок оплаты по договору, дни
creditLimitnumber | nullКредитный лимит B2B, копейки (0 = без лимита)
groupIdstring (uuid) | nullГруппа контрагентов (опт): общий прайс-лист и скидка сегмента
priceListIdstring (uuid) | nullПерсональный прайс-лист (опт), перекрывает прайс группы
slaHoursnumber | nullSLA по договору, часы
marketingConsentbooleanСогласие на маркетинговые рассылки (CL9)
statusstring
Values: activearchived
Статус клиента

Responses

200
FieldTypeDescription
idrequiredstringID клиента
companyIdrequiredstringID компании
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamerequiredstring | nullИмя
lastNamerequiredstring | nullФамилия
middleNamerequiredstring | nullОтчество
companyNamerequiredstring | nullНазвание компании (юрлицо)
positionrequiredstring | nullДолжность контактного лица
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
telegramChatIdrequiredstring | nullTelegram chat id для исходящих сообщений
whatsappPhonerequiredstring | nullНомер WhatsApp; null — используется phone
innrequiredstring | nullИНН (B2B)
kpprequiredstring | nullКПП (B2B)
legalAddressrequiredstring | nullЮр. адрес (B2B)
bankDetailsrequiredstring | nullБанковские реквизиты строкой (B2B)
noterequiredstring | nullВнутренняя заметка
tagsrequiredstring[]Теги
array of string
birthdayrequiredstring (date) | nullДата рождения / основания (ISO 8601)
statusrequiredstring
Values: activearchived
Статус клиента
balancerequirednumberБаланс/абонемент в копейках
pointsrequirednumberБаллы лояльности (копейки-эквивалент)
contractNumberrequiredstring | nullНомер договора (B2B)
groupIdrequiredstring | nullID группы контрагентов (опт)
priceListIdrequiredstring | nullID персонального прайс-листа (опт)
paymentTermsDaysrequirednumber | nullСрок оплаты по договору, дни
creditLimitrequirednumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursrequirednumber | nullSLA по договору, часы
marketingConsentrequiredbooleanСогласие на маркетинговые рассылки
marketingConsentAtrequiredstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourcerequiredstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtrequiredstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdrequiredstring | nullID ответственного сотрудника
createdByIdrequiredstringID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/clients/{id}/archive

Архивировать клиента (soft-delete).

Команда над существующим клиентом — отвечает 200.

Scopes
clients:write
Component
clients

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID клиента
companyIdrequiredstringID компании
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamerequiredstring | nullИмя
lastNamerequiredstring | nullФамилия
middleNamerequiredstring | nullОтчество
companyNamerequiredstring | nullНазвание компании (юрлицо)
positionrequiredstring | nullДолжность контактного лица
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
telegramChatIdrequiredstring | nullTelegram chat id для исходящих сообщений
whatsappPhonerequiredstring | nullНомер WhatsApp; null — используется phone
innrequiredstring | nullИНН (B2B)
kpprequiredstring | nullКПП (B2B)
legalAddressrequiredstring | nullЮр. адрес (B2B)
bankDetailsrequiredstring | nullБанковские реквизиты строкой (B2B)
noterequiredstring | nullВнутренняя заметка
tagsrequiredstring[]Теги
array of string
birthdayrequiredstring (date) | nullДата рождения / основания (ISO 8601)
statusrequiredstring
Values: activearchived
Статус клиента
balancerequirednumberБаланс/абонемент в копейках
pointsrequirednumberБаллы лояльности (копейки-эквивалент)
contractNumberrequiredstring | nullНомер договора (B2B)
groupIdrequiredstring | nullID группы контрагентов (опт)
priceListIdrequiredstring | nullID персонального прайс-листа (опт)
paymentTermsDaysrequirednumber | nullСрок оплаты по договору, дни
creditLimitrequirednumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursrequirednumber | nullSLA по договору, часы
marketingConsentrequiredbooleanСогласие на маркетинговые рассылки
marketingConsentAtrequiredstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourcerequiredstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtrequiredstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdrequiredstring | nullID ответственного сотрудника
createdByIdrequiredstringID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

leads

Лиды входящего контура: приём, статус, ответственный, конвертация.

GET/leads

Список лидов.

Scopes
leads:read
Component
marketing

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: createdAtstatus
orderquerystring
Values: ascdesc
statusquerystring
Values: newin_progressconvertedspam
sourcequerystring
assignedToIdquerystringID ответственного или `unassigned` (без ответственного).

Responses

200
FieldTypeDescription
itemsrequiredLeadResponse[]
array of LeadResponse
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/leads

Создать лид.

Идемпотентно по `externalId` в рамках источника: повторный запрос возвращает уже созданный лид без нового события `lead.created`.

Scopes
leads:write
Component
marketing

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namestringИмя контакта
phonestringТелефон
emailstringE-mail
messagestringТекст обращения
sourcestringИсточник (по умолчанию webhook).
externalIdstringВнешний id для дедупа.
utmobjectUTM-метки перехода: плоская карта строка → строка.
dictionary of string

Responses

201
FieldTypeDescription
idrequiredstringID лида
sourcerequiredstringИсточник: `api`, `public_form`, `telegram`…
channelrequiredstring | nullКанал внутри источника (например, имя формы или бота)
namerequiredstring | nullИмя контакта
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
messagerequiredstring | nullТекст обращения
statusrequiredstring
Values: newin_progressconvertedspam
Статус обработки
externalIdrequiredstring | nullВнешний id из источника (для дедупликации)
rawrequiredobject | nullСырой payload источника (для ручного разбора).
object
clientIdrequiredstring (uuid) | nullID клиента после конвертации
dealIdrequiredstring (uuid) | nullID сделки после конвертации
assignedToIdrequiredstring (uuid) | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
utmrequiredobject | nullUTM-метки перехода.
dictionary of string
createdAtrequiredstring (date-time)Создан (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/leads/{id}

Получить лид.

Scopes
leads:read
Component
marketing

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID лида
sourcerequiredstringИсточник: `api`, `public_form`, `telegram`…
channelrequiredstring | nullКанал внутри источника (например, имя формы или бота)
namerequiredstring | nullИмя контакта
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
messagerequiredstring | nullТекст обращения
statusrequiredstring
Values: newin_progressconvertedspam
Статус обработки
externalIdrequiredstring | nullВнешний id из источника (для дедупликации)
rawrequiredobject | nullСырой payload источника (для ручного разбора).
object
clientIdrequiredstring (uuid) | nullID клиента после конвертации
dealIdrequiredstring (uuid) | nullID сделки после конвертации
assignedToIdrequiredstring (uuid) | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
utmrequiredobject | nullUTM-метки перехода.
dictionary of string
createdAtrequiredstring (date-time)Создан (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/leads/{id}/status

Сменить статус лида.

Scopes
leads:write
Component
marketing

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
statusrequiredstring
Values: newin_progressconvertedspam
Новый статус лида

Responses

200
FieldTypeDescription
idrequiredstringID лида
sourcerequiredstringИсточник: `api`, `public_form`, `telegram`…
channelrequiredstring | nullКанал внутри источника (например, имя формы или бота)
namerequiredstring | nullИмя контакта
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
messagerequiredstring | nullТекст обращения
statusrequiredstring
Values: newin_progressconvertedspam
Статус обработки
externalIdrequiredstring | nullВнешний id из источника (для дедупликации)
rawrequiredobject | nullСырой payload источника (для ручного разбора).
object
clientIdrequiredstring (uuid) | nullID клиента после конвертации
dealIdrequiredstring (uuid) | nullID сделки после конвертации
assignedToIdrequiredstring (uuid) | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
utmrequiredobject | nullUTM-метки перехода.
dictionary of string
createdAtrequiredstring (date-time)Создан (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/leads/{id}/assign

Назначить или снять ответственного за лид.

Команда над существующим лидом — отвечает 200.

Scopes
leads:write
Component
marketing

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
assigneeIdrequiredstring (uuid) | nullID сотрудника или null для снятия ответственного.

Responses

200
FieldTypeDescription
idrequiredstringID лида
sourcerequiredstringИсточник: `api`, `public_form`, `telegram`…
channelrequiredstring | nullКанал внутри источника (например, имя формы или бота)
namerequiredstring | nullИмя контакта
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
messagerequiredstring | nullТекст обращения
statusrequiredstring
Values: newin_progressconvertedspam
Статус обработки
externalIdrequiredstring | nullВнешний id из источника (для дедупликации)
rawrequiredobject | nullСырой payload источника (для ручного разбора).
object
clientIdrequiredstring (uuid) | nullID клиента после конвертации
dealIdrequiredstring (uuid) | nullID сделки после конвертации
assignedToIdrequiredstring (uuid) | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
utmrequiredobject | nullUTM-метки перехода.
dictionary of string
createdAtrequiredstring (date-time)Создан (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/leads/{id}/convert

Конвертировать лид в клиента.

Создаёт клиента в компоненте «Клиенты» по данным лида (или связывает с найденным по телефону/почте). Достаточно scope `leads:write` — отдельный `clients:write` не нужен.

Scopes
leads:write
Component
marketing

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

201
FieldTypeDescription
clientIdrequiredstring (uuid)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/leads/{id}/convert-deal

Конвертировать лид в клиента и сделку.

Создаёт клиента и сделку выбранного типа в дефолтном филиале. Достаточно scope `leads:write`; компонент «Сделки» должен быть включён у компании, иначе 403 `MODULE_ACCESS_INACTIVE`.

Scopes
leads:write
Component
marketing

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
typeIdstringID типа сделки; по умолчанию — тип-«лид».

Responses

201
FieldTypeDescription
dealIdrequiredstring (uuid)
clientIdrequiredstring (uuid)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

orders

Заказы клиентов и их статусы.

GET/orders

Список заказов.

Scopes
orders:read
Component
orders

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: createdAtnumberdueAtreadyBypayDueAttotalstatuspaymentStatus
orderquerystring
Values: ascdesc
statusquerystring
Values: newconfirmedin_progressreadycompletedcancelled
paymentStatusquerystring
Values: unpaidpartialpaidrefunded
assignedToIdquerystringID ответственного сотрудника
createdByIdquerystringID создателя
customerIdquerystringID клиента
dateFromquerystringСоздан от (ISO 8601)
dateToquerystringСоздан до (ISO 8601)
dueFromquerystringСрок от (ISO 8601)
dueToquerystringСрок до (ISO 8601)

Responses

200
FieldTypeDescription
itemsrequiredOrderListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/orders

Создать заказ.

Scopes
orders:write
Component
orders

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
itemsrequiredOrderLineInputDto[]
customerIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
addressIdstringID адреса клиента (ClientAddress)
customerNamestring
customerPhonestring
customerEmailstring
customerNotestring
channelstringКанал привлечения (manual|public_link|phone)
sourcestringИсточник (интеграция/форма)
dealIdstringID сделки, к которой привязан заказ-запчастей (D5)
dueAtstringСрок (legacy, ISO 8601)
readyBystringСрок готовности (ISO 8601, O8)
payDueAtstringСрок оплаты B2B-отсрочки (ISO 8601, O8)
notestringВнутренний комментарий по заказу
discountPercentnumber
Default: 0
prepaidAmountnumberПредоплата (копейки)
Default: 0
assignedToIdstringID ответственного сотрудника

Responses

201
FieldTypeDescription
idrequiredstringID заказа
companyIdrequiredstringID компании
numberrequirednumberНомер заказа (сквозной по компании)
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
customerIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
customerEmailrequiredstring | nullE-mail покупателя
customerNoterequiredstring | nullПожелания покупателя
channelrequiredstring | nullКанал привлечения
sourcerequiredstring | nullИсточник (интеграция/форма)
deliveryStatusrequiredstring | null
Values: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodrequiredstring | null
Values: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostrequirednumberСтоимость доставки (копейки)
deliveryAddressTextrequiredstring | nullАдрес доставки строкой
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог со скидкой, копейки
prepaidAmountrequirednumberПредоплата (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredOrderLineResponse[]Позиции заказа
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/orders/{id}

Получить заказ.

Scopes
orders:read
Component
orders

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID заказа
companyIdrequiredstringID компании
numberrequirednumberНомер заказа (сквозной по компании)
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
customerIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
customerEmailrequiredstring | nullE-mail покупателя
customerNoterequiredstring | nullПожелания покупателя
channelrequiredstring | nullКанал привлечения
sourcerequiredstring | nullИсточник (интеграция/форма)
deliveryStatusrequiredstring | null
Values: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodrequiredstring | null
Values: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostrequirednumberСтоимость доставки (копейки)
deliveryAddressTextrequiredstring | nullАдрес доставки строкой
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог со скидкой, копейки
prepaidAmountrequirednumberПредоплата (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredOrderLineResponse[]Позиции заказа
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/orders/{id}

Изменить заказ.

Scopes
orders:write
Component
orders

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
itemsOrderLineInputDto[]Полная замена позиций заказа (только в статусах new/confirmed)
customerIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
addressIdstring (uuid) | nullID адреса клиента (null — отвязать)
customerNamestring | nullИмя покупателя
customerPhonestring | nullТелефон покупателя
customerEmailstring | nullE-mail покупателя
customerNotestring | nullПожелания покупателя
channelstring | nullКанал привлечения
sourcestring | nullИсточник
dueAtstring (date-time) | nullСрок (legacy, ISO 8601)
readyBystring (date-time) | nullСрок готовности (ISO 8601, O8)
payDueAtstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601, O8)
notestring | nullВнутренний комментарий
discountPercentnumberСкидка на весь заказ, %
prepaidAmountnumberПредоплата — целевая Σ оплат (копейки)
assignedToIdstring (uuid) | nullID ответственного сотрудника (null — снять)

Responses

200
FieldTypeDescription
idrequiredstringID заказа
companyIdrequiredstringID компании
numberrequirednumberНомер заказа (сквозной по компании)
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
customerIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
customerEmailrequiredstring | nullE-mail покупателя
customerNoterequiredstring | nullПожелания покупателя
channelrequiredstring | nullКанал привлечения
sourcerequiredstring | nullИсточник (интеграция/форма)
deliveryStatusrequiredstring | null
Values: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodrequiredstring | null
Values: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostrequirednumberСтоимость доставки (копейки)
deliveryAddressTextrequiredstring | nullАдрес доставки строкой
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог со скидкой, копейки
prepaidAmountrequirednumberПредоплата (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredOrderLineResponse[]Позиции заказа
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/orders/{id}/status/{next}

Сменить статус заказа.

Команда над существующим заказом — отвечает 200 с обновлённым заказом. Недопустимый переход — 409 `ORDER_STATUS_TRANSITION_INVALID`, значение вне перечня — 400.

Scopes
orders:write
Component
orders

Parameters

ParameterInTypeDescription
idrequiredpathstring
nextrequiredpathOrderStatusЦелевой статус заказа
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID заказа
companyIdrequiredstringID компании
numberrequirednumberНомер заказа (сквозной по компании)
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
customerIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
customerEmailrequiredstring | nullE-mail покупателя
customerNoterequiredstring | nullПожелания покупателя
channelrequiredstring | nullКанал привлечения
sourcerequiredstring | nullИсточник (интеграция/форма)
deliveryStatusrequiredstring | null
Values: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodrequiredstring | null
Values: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostrequirednumberСтоимость доставки (копейки)
deliveryAddressTextrequiredstring | nullАдрес доставки строкой
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог со скидкой, копейки
prepaidAmountrequirednumberПредоплата (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredOrderLineResponse[]Позиции заказа
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

deals

Сделки с пайплайном стадий и их типы.

GET/deals/lost-reasons

Причины проигрыша сделки.

Идентификатор причины обязателен в `lostReasonId` при переводе сделки на терминальную стадию с исходом «проиграна»; в ответах сделок поле расшифровывается по этому списку. По умолчанию только активные.

Scopes
deals:read
Component
deals

Responses

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/deals/sources

Источники сделок и лидов.

Идентификатор источника — для `sourceId` при создании сделки и для расшифровки поля в ответах. По умолчанию только активные.

Scopes
deals:read
Component
deals

Responses

200
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/deals/types

Типы сделок со стадиями пайплайна.

Только типы включённых компонентов: id стадий отсюда нужны для создания сделки и смены стадии.

Scopes
deals:read
Component
deals

Responses

200
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/deals

Список сделок.

Scopes
deals:read
Component
deals

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: createdAtnumberdueAtscheduledAttotalboardOrder
orderquerystring
Values: ascdesc
typeIdquerystringID типа сделки
stageIdquerystringID стадии
outcomequerystring
Values: wonlostdonecancelled
openOnlyquerybooleanТолько открытые (без исхода) сделки
assignedToIdquerystringID ответственного
clientIdquerystringID клиента
addressIdquerystringID адреса клиента: все визиты по конкретной точке обслуживания
scheduledFromquerystringЗапланирован от (ISO 8601) — окно дня для полевого экрана
scheduledToquerystringЗапланирован до (ISO 8601)
sourceIdquerystringID источника лида (D7)
dateFromquerystringСоздан от (ISO 8601)
dateToquerystringСоздан до (ISO 8601)
noTaskquerybooleanТолько сделки без задачи (next-action отсутствует)
overduequerybooleanТолько сделки с просроченной задачей

Responses

200
FieldTypeDescription
itemsrequiredDealListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/deals

Создать сделку выбранного типа.

Scopes
deals:write
Component
deals

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
typeIdrequiredstringID типа сделки
itemsDealLineInputDto[]Позиции сметы (товары и услуги)
clientIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
addressIdstringID адреса клиента (ClientAddress)
customerNamestringИмя заказчика (если без карточки клиента)
customerPhonestringТелефон заказчика
customerEmailstringE-mail заказчика
customerNotestringПожелания заказчика
channelstringКанал привлечения (manual|public_link|phone)
sourcestringИсточник (интеграция/форма)
sourceIdstringID источника лида из справочника (D7)
budgetnumberПлановый бюджет проекта в копейках (D4)
assignedToIdstringID ответственного сотрудника
addressstringАдрес выполнения (для field_job)
venueResourceIdstring (uuid) | nullПлощадка мероприятия — ресурс расписания (зал, шатёр). По ней вешается бронь и сверяется вместимость; раньше зал угадывался по строке адреса.
scheduledAtstringЗапланированное время (ISO 8601)
dueAtstringСрок исполнения (ISO 8601)
headcountnumberЧисло гостей мероприятия: множитель для позиций с нормой на гостя.
notestringВнутренний комментарий
discountPercentnumberСкидка на всю сделку, %
Default: 0
intakeobjectСнапшот приёмки (для типа intake)
FieldTypeDescription
deviceKindstring | nullВид объекта (телефон, ноутбук, авто, обувь…)
brandstring | nullМарка/бренд
modelstring | nullМодель
serialstring | nullСерийный номер / IMEI / VIN
defectstring | nullЗаявленная неисправность
accessoriesstring | nullКомплектация (что принято вместе с устройством)
appearancestring | nullВнешний вид (царапины, сколы)
conditionstring | nullСостояние при приёмке
agreedPricenumber | nullСогласованная цена работ в копейках
agreedTermDaysnumber | nullСогласованный срок, дней
prepaymentnumber | nullПредоплата в копейках

Responses

201
FieldTypeDescription
idrequiredstringID сделки
companyIdrequiredstringID компании
numberrequirednumberНомер сделки (сквозной по компании)
typeIdrequiredstringID типа сделки
stageIdrequiredstringID текущей стадии
checklistDonerequiredstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
array of string
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
venueResourceIdrequiredstring | nullID площадки мероприятия (ресурс расписания)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
customerEmailrequiredstring | nullE-mail заказчика
customerNoterequiredstring | nullПожелания заказчика
channelrequiredstring | nullКанал привлечения (manual|public_link|phone)
sourcerequiredstring | nullИсточник строкой (интеграция/форма)
sourceIdrequiredstring | nullID источника лида из справочника
addressrequiredstring | nullАдрес выполнения (для field_job)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на всю сделку, %
totalrequirednumberИтог со скидкой, копейки
costrequirednumberСебестоимость по позициям, копейки
budgetrequirednumber | nullБюджет (копейки)
budgetExceededAtrequiredstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountrequirednumber | nullЧисло гостей мероприятия
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtrequiredstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdrequiredstringID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredDealLineResponse[]Позиции сметы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/deals/{id}

Получить сделку с позициями.

Scopes
deals:read
Component
deals

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID сделки
companyIdrequiredstringID компании
numberrequirednumberНомер сделки (сквозной по компании)
typeIdrequiredstringID типа сделки
stageIdrequiredstringID текущей стадии
checklistDonerequiredstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
array of string
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
venueResourceIdrequiredstring | nullID площадки мероприятия (ресурс расписания)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
customerEmailrequiredstring | nullE-mail заказчика
customerNoterequiredstring | nullПожелания заказчика
channelrequiredstring | nullКанал привлечения (manual|public_link|phone)
sourcerequiredstring | nullИсточник строкой (интеграция/форма)
sourceIdrequiredstring | nullID источника лида из справочника
addressrequiredstring | nullАдрес выполнения (для field_job)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на всю сделку, %
totalrequirednumberИтог со скидкой, копейки
costrequirednumberСебестоимость по позициям, копейки
budgetrequirednumber | nullБюджет (копейки)
budgetExceededAtrequiredstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountrequirednumber | nullЧисло гостей мероприятия
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtrequiredstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdrequiredstringID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredDealLineResponse[]Позиции сметы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/deals/{id}

Изменить сделку. Позиции и поля меняются, пока сделка не закрыта.

Scopes
deals:write
Component
deals

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
itemsDealLineInputDto[]Полная замена позиций сметы
clientIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
addressIdstring (uuid) | nullID адреса клиента (null — отвязать)
customerNamestring | nullИмя заказчика
customerPhonestring | nullТелефон заказчика
customerEmailstring | nullE-mail заказчика
customerNotestring | nullПожелания заказчика
assignedToIdstring (uuid) | nullID ответственного сотрудника (null — снять)
addressstring | nullАдрес выполнения (для field_job)
venueResourceIdstring (uuid) | nullПлощадка мероприятия — ресурс расписания (null — снять).
scheduledAtstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtstring (date-time) | nullСрок исполнения (ISO 8601)
notestring | nullВнутренний комментарий
discountPercentnumberСкидка на всю сделку, %
sourceIdstring (uuid) | nullID источника лида из справочника (D7), null — отвязать
budgetnumber | nullПлановый бюджет проекта в копейках (D4), null — снять
headcountnumber | nullЧисло гостей мероприятия, null — снять. Позиции сметы с нормой на гостя пересчитываются под новое значение.

Responses

200
FieldTypeDescription
idrequiredstringID сделки
companyIdrequiredstringID компании
numberrequirednumberНомер сделки (сквозной по компании)
typeIdrequiredstringID типа сделки
stageIdrequiredstringID текущей стадии
checklistDonerequiredstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
array of string
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
venueResourceIdrequiredstring | nullID площадки мероприятия (ресурс расписания)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
customerEmailrequiredstring | nullE-mail заказчика
customerNoterequiredstring | nullПожелания заказчика
channelrequiredstring | nullКанал привлечения (manual|public_link|phone)
sourcerequiredstring | nullИсточник строкой (интеграция/форма)
sourceIdrequiredstring | nullID источника лида из справочника
addressrequiredstring | nullАдрес выполнения (для field_job)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на всю сделку, %
totalrequirednumberИтог со скидкой, копейки
costrequirednumberСебестоимость по позициям, копейки
budgetrequirednumber | nullБюджет (копейки)
budgetExceededAtrequiredstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountrequirednumber | nullЧисло гостей мероприятия
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtrequiredstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdrequiredstringID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredDealLineResponse[]Позиции сметы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/deals/{id}/stage

Перевести сделку на другую стадию пайплайна её типа.

Scopes
deals:write
Component
deals

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
stageIdrequiredstring (uuid)ID целевой стадии (в рамках того же типа сделки)
lostReasonIdstring (uuid) | nullID причины проигрыша — при переходе на терминальную стадию с исходом Lost.

Responses

200
FieldTypeDescription
idrequiredstringID сделки
companyIdrequiredstringID компании
numberrequirednumberНомер сделки (сквозной по компании)
typeIdrequiredstringID типа сделки
stageIdrequiredstringID текущей стадии
checklistDonerequiredstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
array of string
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
venueResourceIdrequiredstring | nullID площадки мероприятия (ресурс расписания)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
customerEmailrequiredstring | nullE-mail заказчика
customerNoterequiredstring | nullПожелания заказчика
channelrequiredstring | nullКанал привлечения (manual|public_link|phone)
sourcerequiredstring | nullИсточник строкой (интеграция/форма)
sourceIdrequiredstring | nullID источника лида из справочника
addressrequiredstring | nullАдрес выполнения (для field_job)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на всю сделку, %
totalrequirednumberИтог со скидкой, копейки
costrequirednumberСебестоимость по позициям, копейки
budgetrequirednumber | nullБюджет (копейки)
budgetExceededAtrequiredstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountrequirednumber | nullЧисло гостей мероприятия
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtrequiredstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdrequiredstringID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredDealLineResponse[]Позиции сметы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

sales

Продажи, возвраты и кассовые смены.

GET/sales

Журнал продаж.

Scopes
sales:read
Component
cashier

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: createdAtnumbertotal
orderquerystring
Values: ascdesc
shiftIdquerystring
cashierIdquerystring
paymentMethodquerystring
Values: cashcardsbpmixed
dateFromquerystringISO 8601
dateToquerystringISO 8601
kindquerystring
Values: allsalerefund
customerIdquerystringФильтр по клиенту

Responses

200
FieldTypeDescription
itemsrequiredSaleListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/sales

Создать продажу.

Scopes
sales:write
Component
cashier

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
shiftIdrequiredstring
itemsrequiredSaleLineInputDto[]
discountPercentnumber
Default: 0
paymentMethodrequiredstring
Values: cashcardsbpmixed
paymentMethodExtstringАлиас способа оплаты интеграции (ozon-wallet и т.п.); базовый paymentMethod при этом — ближайший стандартный
receivedAmountnumberПолученная сумма в копейках (для cash)
customerIdstringID клиента из модуля Clients
redeemPointsnumberСписать N баллов лояльности клиента как скидку (1 балл = 1 копейка)
customerNamestringSnapshot имени клиента (опционально)
customerPhonestringSnapshot телефона клиента (опционально)
channelstringКанал продажи (default pos)
paymentsSalePaymentInputDto[]Платежи (K5). Для paymentMethod=mixed обязателен и Σamount = итог чека. Для одиночной оплаты можно опустить — сервер запишет один платёж зеркально.

Responses

201
FieldTypeDescription
idrequiredstringID чека
companyIdrequiredstringID компании
shiftIdrequiredstringID кассовой смены
numberrequirednumberНомер чека (сквозной по компании)
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь чек, %
totalrequirednumberИтог к оплате, копейки
paymentMethodrequiredstring
Values: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtrequiredstring | nullУточнение способа оплаты
receivedAmountrequirednumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdrequiredstringID кассира
refundOfSaleIdrequiredstring | nullID исходного чека; заполнен только у возврата
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
channelrequiredstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtrequiredstring (date-time)Момент продажи (ISO 8601)
linesrequiredSaleLineResponse[]Позиции чека
paymentsrequiredSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/sales/{id}

Получить продажу.

Scopes
sales:read
Component
cashier

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID чека
companyIdrequiredstringID компании
shiftIdrequiredstringID кассовой смены
numberrequirednumberНомер чека (сквозной по компании)
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь чек, %
totalrequirednumberИтог к оплате, копейки
paymentMethodrequiredstring
Values: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtrequiredstring | nullУточнение способа оплаты
receivedAmountrequirednumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdrequiredstringID кассира
refundOfSaleIdrequiredstring | nullID исходного чека; заполнен только у возврата
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
channelrequiredstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtrequiredstring (date-time)Момент продажи (ISO 8601)
linesrequiredSaleLineResponse[]Позиции чека
paymentsrequiredSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/sales/{id}/refund

Оформить возврат продажи целиком.

Команда над существующей продажей — отвечает 200.

Scopes
sales:write
Component
cashier

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID чека
companyIdrequiredstringID компании
shiftIdrequiredstringID кассовой смены
numberrequirednumberНомер чека (сквозной по компании)
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь чек, %
totalrequirednumberИтог к оплате, копейки
paymentMethodrequiredstring
Values: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtrequiredstring | nullУточнение способа оплаты
receivedAmountrequirednumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdrequiredstringID кассира
refundOfSaleIdrequiredstring | nullID исходного чека; заполнен только у возврата
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
channelrequiredstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtrequiredstring (date-time)Момент продажи (ISO 8601)
linesrequiredSaleLineResponse[]Позиции чека
paymentsrequiredSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/shifts/open

Открыть смену.

Scopes
sales:write
Component
cashier

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
openingCashrequirednumberНачальная сумма наличных в копейках
Example: 500000

Responses

201
FieldTypeDescription
idrequiredstringID смены
companyIdrequiredstringID компании
numberrequirednumberНомер смены (сквозной по компании)
openedAtrequiredstring (date-time)Открыта (ISO 8601)
closedAtrequiredstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashrequirednumberНачальная сумма в копейках
statusrequiredstring
Values: openclosed
Статус смены
openedByIdrequiredstringID сотрудника, открывшего смену
closedByIdrequiredstring | nullID сотрудника, закрывшего смену
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/shifts/current

Текущая открытая смена интеграции.

Смена, открытая этим же API-токеном через `POST /shifts/open` и ещё не закрытая. Нужна, чтобы восстановить `shiftId` для `POST /sales`, если ответ открытия потерян. Открытой смены нет — 404 `SHIFT_NOT_FOUND`.

Scopes
sales:read
Component
cashier

Responses

200
FieldTypeDescription
idrequiredstringID смены
companyIdrequiredstringID компании
numberrequirednumberНомер смены (сквозной по компании)
openedAtrequiredstring (date-time)Открыта (ISO 8601)
closedAtrequiredstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashrequirednumberНачальная сумма в копейках
statusrequiredstring
Values: openclosed
Статус смены
openedByIdrequiredstringID сотрудника, открывшего смену
closedByIdrequiredstring | nullID сотрудника, закрывшего смену
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/shifts/{id}

Получить смену.

Scopes
sales:read
Component
cashier

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID смены
companyIdrequiredstringID компании
numberrequirednumberНомер смены (сквозной по компании)
openedAtrequiredstring (date-time)Открыта (ISO 8601)
closedAtrequiredstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashrequirednumberНачальная сумма в копейках
statusrequiredstring
Values: openclosed
Статус смены
openedByIdrequiredstringID сотрудника, открывшего смену
closedByIdrequiredstring | nullID сотрудника, закрывшего смену
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/shifts/{id}/close

Закрыть смену.

Команда над существующей сменой — отвечает 200.

Scopes
sales:write
Component
cashier

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
closingCashnumberФактический остаток наличных в копейках

Responses

200
FieldTypeDescription
idrequiredstringID смены
companyIdrequiredstringID компании
numberrequirednumberНомер смены (сквозной по компании)
openedAtrequiredstring (date-time)Открыта (ISO 8601)
closedAtrequiredstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashrequirednumberНачальная сумма в копейках
statusrequiredstring
Values: openclosed
Статус смены
openedByIdrequiredstringID сотрудника, открывшего смену
closedByIdrequiredstring | nullID сотрудника, закрывшего смену
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

warehouse

Склады, поставщики, остатки и приёмки.

GET/warehouse/warehouses

Список складов.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: namecreatedAt
orderquerystring
Values: ascdesc

Responses

200
FieldTypeDescription
itemsrequiredWarehouseListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/warehouse/warehouses

Создать склад.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namerequiredstringНазвание склада
Example: Основной
addressstring | nullАдрес склада
managerUserIdstring (uuid) | nullID ответственного сотрудника
branchIdstring (uuid)Филиал склада (1:1). Если не указан — берётся филиал компании без склада.

Responses

201
FieldTypeDescription
idrequiredstringID склада
companyIdrequiredstringID компании
namerequiredstringНазвание склада
addressrequiredstring | nullАдрес склада
isDefaultrequiredbooleanСклад по умолчанию для приёмок и списаний
managerUserIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/warehouses/{id}

Получить склад.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID склада
companyIdrequiredstringID компании
namerequiredstringНазвание склада
addressrequiredstring | nullАдрес склада
isDefaultrequiredbooleanСклад по умолчанию для приёмок и списаний
managerUserIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/warehouse/warehouses/{id}

Изменить склад.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namestringНазвание склада
Example: Основной
addressstring | nullАдрес склада
managerUserIdstring (uuid) | nullID ответственного сотрудника
branchIdstring (uuid)Филиал склада (1:1). Если не указан — берётся филиал компании без склада.

Responses

200
FieldTypeDescription
idrequiredstringID склада
companyIdrequiredstringID компании
namerequiredstringНазвание склада
addressrequiredstring | nullАдрес склада
isDefaultrequiredbooleanСклад по умолчанию для приёмок и списаний
managerUserIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/warehouse/warehouses/{id}

Удалить склад.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

204

No content

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/suppliers

Список поставщиков.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: namecreatedAt
orderquerystring
Values: ascdesc

Responses

200
FieldTypeDescription
itemsrequiredSupplierResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/warehouse/suppliers

Создать поставщика.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namerequiredstringНазвание поставщика
contactNamestring | nullКонтактное лицо
phonestring | nullТелефон
emailstring | nullE-mail
innstring | nullИНН
addressstring | nullАдрес
notestring | nullВнутренняя заметка

Responses

201
FieldTypeDescription
idrequiredstringID поставщика
companyIdrequiredstringID компании
namerequiredstringНазвание поставщика
contactNamerequiredstring | nullКонтактное лицо
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
innrequiredstring | nullИНН
addressrequiredstring | nullАдрес
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/suppliers/{id}

Получить поставщика.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID поставщика
companyIdrequiredstringID компании
namerequiredstringНазвание поставщика
contactNamerequiredstring | nullКонтактное лицо
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
innrequiredstring | nullИНН
addressrequiredstring | nullАдрес
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/warehouse/suppliers/{id}

Изменить поставщика.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
namestringНазвание поставщика
contactNamestring | nullКонтактное лицо
phonestring | nullТелефон
emailstring | nullE-mail
innstring | nullИНН
addressstring | nullАдрес
notestring | nullВнутренняя заметка

Responses

200
FieldTypeDescription
idrequiredstringID поставщика
companyIdrequiredstringID компании
namerequiredstringНазвание поставщика
contactNamerequiredstring | nullКонтактное лицо
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
innrequiredstring | nullИНН
addressrequiredstring | nullАдрес
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/warehouse/suppliers/{id}

Удалить поставщика.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

204

No content

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/stocks

Остатки по товарам.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: productNameproductSkuqtyupdatedAt
orderquerystring
Values: ascdesc
warehouseIdquerystringФильтр по складу
categoryIdquerystringФильтр по категории товара
levelquerystring
Values: alllownegativereorder
groupByquerystring
Values: product
Режим агрегации: product — сводка по сети (W4)

Responses

200
FieldTypeDescription
itemsrequiredStockListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/warehouse/stocks/adjust

Скорректировать остаток (инвентаризация).

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
productIdrequiredstring
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
warehouseIdrequiredstring
targetQtyrequirednumberНовое значение остатка (целое число, может быть отрицательным).
reasonrequiredstringПричина корректировки (обязательно).

Responses

201
FieldTypeDescription
idrequiredstringID записи остатка
productIdrequiredstringID товара
productNamerequiredstringНазвание товара
productSkurequiredstringАртикул товара
variantIdrequiredstring | nullID варианта товара; null — товар без вариантов
variantSkurequiredstring | nullАртикул варианта
variantAttributesrequiredobject | nullАтрибуты варианта: { "color": "red", "size": "M" }
dictionary of string
categoryIdrequiredstring | nullID категории товара
categoryNamerequiredstring | nullНазвание категории
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
qtyrequirednumberФизический остаток
reservedrequirednumberЗарезервировано под незавершённые заказы
availablerequirednumberСвободно к продаже: qty − reserved
reorderPointrequirednumberПорог дозаказа (0 — не задан)
isLowStockrequiredbooleanОстаток на пороге или ниже
updatedAtrequiredstring (date-time)Последнее движение по остатку (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/receipts

Список приёмок.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: createdAtdatenumbertotalQtytotalAmount
orderquerystring
Values: ascdesc
statusquerystring
Values: postedcancelled
warehouseIdquerystring
supplierIdquerystring
dateFromquerystringДата приёмки от (ISO 8601)
dateToquerystringДата приёмки до (ISO 8601)

Responses

200
FieldTypeDescription
itemsrequiredReceiptListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/warehouse/receipts

Создать приёмку.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
warehouseIdrequiredstring (uuid)ID склада
supplierIdstring (uuid) | nullID поставщика
purchaseOrderIdstring (uuid) | nullID заказа поставщику (W3)
datestringДата приёмки (ISO 8601)
notestring | nullКомментарий к приёмке
itemsrequiredReceiptLineInputDto[]Позиции приёмки

Responses

201
FieldTypeDescription
idrequiredstringID приёмки
companyIdrequiredstringID компании
numberrequirednumberНомер приёмки (сквозной по компании)
statusrequiredstring
Values: postedcancelled
Статус приёмки
daterequiredstring (date-time)Дата приёмки (ISO 8601)
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
supplierIdrequiredstring | nullID поставщика
supplierNamerequiredstring | nullНазвание поставщика
purchaseOrderIdrequiredstring | nullID заказа поставщику, по которому пришёл товар
noterequiredstring | nullКомментарий к приёмке
totalQtyrequirednumberСумма qty по всем позициям
totalAmountrequirednumberСумма приёмки в копейках
createdByIdrequiredstringID сотрудника-автора
createdByNamerequiredstringИмя сотрудника-автора
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
linesrequiredReceiptLineResponse[]Позиции приёмки
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/warehouse/receipts/{id}

Получить приёмку.

Scopes
warehouse:read
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID приёмки
companyIdrequiredstringID компании
numberrequirednumberНомер приёмки (сквозной по компании)
statusrequiredstring
Values: postedcancelled
Статус приёмки
daterequiredstring (date-time)Дата приёмки (ISO 8601)
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
supplierIdrequiredstring | nullID поставщика
supplierNamerequiredstring | nullНазвание поставщика
purchaseOrderIdrequiredstring | nullID заказа поставщику, по которому пришёл товар
noterequiredstring | nullКомментарий к приёмке
totalQtyrequirednumberСумма qty по всем позициям
totalAmountrequirednumberСумма приёмки в копейках
createdByIdrequiredstringID сотрудника-автора
createdByNamerequiredstringИмя сотрудника-автора
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
linesrequiredReceiptLineResponse[]Позиции приёмки
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/warehouse/receipts/{id}/cancel

Отменить приёмку.

Команда над существующей приёмкой — отвечает 200.

Scopes
warehouse:write
Component
warehouse

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

200
FieldTypeDescription
idrequiredstringID приёмки
companyIdrequiredstringID компании
numberrequirednumberНомер приёмки (сквозной по компании)
statusrequiredstring
Values: postedcancelled
Статус приёмки
daterequiredstring (date-time)Дата приёмки (ISO 8601)
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
supplierIdrequiredstring | nullID поставщика
supplierNamerequiredstring | nullНазвание поставщика
purchaseOrderIdrequiredstring | nullID заказа поставщику, по которому пришёл товар
noterequiredstring | nullКомментарий к приёмке
totalQtyrequirednumberСумма qty по всем позициям
totalAmountrequirednumberСумма приёмки в копейках
createdByIdrequiredstringID сотрудника-автора
createdByNamerequiredstringИмя сотрудника-автора
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
linesrequiredReceiptLineResponse[]Позиции приёмки
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

scheduling

Ресурсы (кабинеты, мастера, юниты) и брони.

GET/scheduling/resources

Список ресурсов (кабинеты, мастера, юниты).

Scopes
scheduling:read
Component
scheduling

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: nametypecreatedAt
orderquerystring
Values: ascdesc
typequerystring
Values: staffseatunitequipment
serviceIdquerystringS7: только ресурсы, оказывающие эту услугу (или агностики).
activeOnlyqueryboolean

Responses

200
FieldTypeDescription
itemsrequiredResourceResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/scheduling/resources

Создать ресурс.

Scopes
scheduling:write
Component
scheduling

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacitynumberСколько броней ресурс держит одновременно
Default: 1
seatsnumberСколько гостей вмещает площадка (зал, веранда, беседка). Отличается от `capacity`: та говорит, сколько броней ресурса идут одновременно.
colorstringЦвет в календаре (HEX)
Example: #0ea5e9
bufferMinutesnumberБуфер между бронями, минут
Default: 0
minDurationMinutesnumberМинимальная длительность брони, минут
availabilityResourceAvailabilityWindowDto[]Окна доступности по дням недели
userIdstring (uuid)Учётка сотрудника за ресурсом (мастер салона): из неё подставляется ответственный записи, чтобы комиссия считалась по тому же человеку.
notestringВнутренняя заметка

Responses

201
FieldTypeDescription
idrequiredstringID ресурса
companyIdrequiredstringID компании
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacityrequirednumberСколько броней ресурс держит одновременно
seatsrequirednumber | nullСколько гостей вмещает площадка; null — неприменимо
colorrequiredstring | nullЦвет в календаре (HEX)
bufferMinutesrequirednumberБуфер между бронями, минут
minDurationMinutesrequirednumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityrequiredobject[]Окна доступности по дням недели: [{ weekday, from, to }]
array of object
isActiverequiredbooleanРесурс активен и доступен для записи
housekeepingStaterequiredstring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdrequiredstring | nullУчётка сотрудника за ресурсом (мастер)
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/scheduling/resources/{id}

Получить ресурс.

Scopes
scheduling:read
Component
scheduling

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID ресурса
companyIdrequiredstringID компании
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacityrequirednumberСколько броней ресурс держит одновременно
seatsrequirednumber | nullСколько гостей вмещает площадка; null — неприменимо
colorrequiredstring | nullЦвет в календаре (HEX)
bufferMinutesrequirednumberБуфер между бронями, минут
minDurationMinutesrequirednumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityrequiredobject[]Окна доступности по дням недели: [{ weekday, from, to }]
array of object
isActiverequiredbooleanРесурс активен и доступен для записи
housekeepingStaterequiredstring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdrequiredstring | nullУчётка сотрудника за ресурсом (мастер)
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/scheduling/resources/{id}

Изменить ресурс.

Scopes
scheduling:write
Component
scheduling

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
typestring
Values: staffseatunitequipment
Тип ресурса
namestringНазвание ресурса
capacitynumberСколько броней ресурс держит одновременно
seatsnumber | nullЧисло мест площадки; null — снять.
colorstring | nullЦвет в календаре (HEX)
bufferMinutesnumberБуфер между бронями, минут
minDurationMinutesnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityResourceAvailabilityWindowDto[]Окна доступности по дням недели
isActivebooleanРесурс активен и доступен для записи
housekeepingStatestring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (ручная установка).
userIdstring (uuid) | nullУчётка сотрудника за ресурсом (null — отвязать).
notestring | nullВнутренняя заметка

Responses

200
FieldTypeDescription
idrequiredstringID ресурса
companyIdrequiredstringID компании
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacityrequirednumberСколько броней ресурс держит одновременно
seatsrequirednumber | nullСколько гостей вмещает площадка; null — неприменимо
colorrequiredstring | nullЦвет в календаре (HEX)
bufferMinutesrequirednumberБуфер между бронями, минут
minDurationMinutesrequirednumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityrequiredobject[]Окна доступности по дням недели: [{ weekday, from, to }]
array of object
isActiverequiredbooleanРесурс активен и доступен для записи
housekeepingStaterequiredstring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdrequiredstring | nullУчётка сотрудника за ресурсом (мастер)
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/scheduling/bookings/slots

Свободные и занятые слоты ресурса на день.

Scopes
scheduling:read
Component
scheduling

Parameters

ParameterInTypeDescription
resourceIdrequiredquerystring
serviceIdquerystring
daterequiredquerystringДата YYYY-MM-DD

Responses

200
array of
FieldTypeDescription
startAtrequiredstring (date-time)
endAtrequiredstring (date-time)
freerequiredboolean
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/scheduling/bookings

Список броней.

Scopes
scheduling:read
Component
scheduling

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Values: startAtcreatedAtnumber
orderquerystring
Values: ascdesc
resourceIdquerystring
statusquerystring
Values: pendingconfirmedcompletedno_showcancelled
assignedToIdquerystring
clientIdquerystring
fromquerystringНачало от (ISO 8601)
toquerystringНачало до (ISO 8601)
classesOnlyquerybooleanТолько групповые занятия (с вместимостью).

Responses

200
FieldTypeDescription
itemsrequiredBookingListItemResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/scheduling/bookings

Создать бронь (с проверкой пересечений и вместимости ресурса).

Scopes
scheduling:write
Component
scheduling

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
resourceIdrequiredstringID ресурса
startAtrequiredstringНачало интервала (ISO 8601)
endAtstringКонец интервала (ISO 8601). Опционален при serviceId — считается из длительности услуги.
serviceIdstringID услуги каталога (запись на услугу)
clientIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
customerNamestringИмя клиента (если без карточки)
customerPhonestringТелефон клиента
dealIdstringID связанной сделки
assignedToIdstringID ответственного сотрудника
pricenumberЦена брони в копейках; не задана — авторасчёт по тарифу
depositAmountnumberДепозит в копейках
Default: 0
depositStatusstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumberВместимость группового занятия (число мест); опускается для обычной брони.
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Доп.ресурсы мультиресурсной брони (S8); guard по каждому.
array of string
addressstringАдрес проведения (выезд). Не задан при привязке к сделке — подставляется адрес сделки.
notestringВнутренний комментарий

Responses

201
FieldTypeDescription
idrequiredstringID брони
companyIdrequiredstringID компании
numberrequirednumberНомер брони (сквозной по компании)
resourceIdrequiredstringID ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
customerNamerequiredstring | nullИмя клиента (если без карточки)
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги каталога
assignedToIdrequiredstring | nullID исполнителя
pricerequirednumberЦена брони в копейках (P0.4)
saleIdrequiredstring | nullID чека, в который конвертирована бронь
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacityrequirednumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassrequiredbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressrequiredstring | nullАдрес проведения (выездная смена)
noterequiredstring | nullВнутренний комментарий
visitNoterequiredstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdrequiredstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtrequiredstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdrequiredstring | nullID серии повторяющихся броней
rentalStaterequiredstring | null
Values: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtrequiredstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtrequiredstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoterequiredstring | nullЗаметка при возврате из проката
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtrequiredstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdrequiredstring | nullID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/scheduling/bookings/{id}

Получить бронь.

Scopes
scheduling:read
Component
scheduling

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID брони
companyIdrequiredstringID компании
numberrequirednumberНомер брони (сквозной по компании)
resourceIdrequiredstringID ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
customerNamerequiredstring | nullИмя клиента (если без карточки)
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги каталога
assignedToIdrequiredstring | nullID исполнителя
pricerequirednumberЦена брони в копейках (P0.4)
saleIdrequiredstring | nullID чека, в который конвертирована бронь
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacityrequirednumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassrequiredbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressrequiredstring | nullАдрес проведения (выездная смена)
noterequiredstring | nullВнутренний комментарий
visitNoterequiredstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdrequiredstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtrequiredstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdrequiredstring | nullID серии повторяющихся броней
rentalStaterequiredstring | null
Values: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtrequiredstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtrequiredstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoterequiredstring | nullЗаметка при возврате из проката
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtrequiredstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdrequiredstring | nullID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/scheduling/bookings/{id}

Изменить бронь.

Scopes
scheduling:write
Component
scheduling

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
resourceIdstring (uuid)ID ресурса
startAtstringISO 8601
endAtstringISO 8601
serviceIdstring (uuid) | nullID услуги каталога (null — снять)
clientIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
customerNamestring | nullИмя клиента (если без карточки)
customerPhonestring | nullТелефон клиента
dealIdstring (uuid) | nullID связанной сделки (null — отвязать)
assignedToIdstring (uuid) | nullID исполнителя (null — снять)
pricenumberЦена брони в копейках
depositAmountnumberЗалог в копейках
depositStatusstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumber | nullВместимость группового занятия (null — снять групповой режим).
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Полная замена доп.ресурсов мультиресурсной брони (S8).
array of string
addressstring | nullАдрес проведения (выезд); null — снять адрес.
notestring | nullВнутренний комментарий
visitNotestring | nullЗаметка мастера по визиту (формула, результат работы, пожелания). Разрешена и после завершения записи — её пишут по факту приёма.

Responses

200
FieldTypeDescription
idrequiredstringID брони
companyIdrequiredstringID компании
numberrequirednumberНомер брони (сквозной по компании)
resourceIdrequiredstringID ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
customerNamerequiredstring | nullИмя клиента (если без карточки)
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги каталога
assignedToIdrequiredstring | nullID исполнителя
pricerequirednumberЦена брони в копейках (P0.4)
saleIdrequiredstring | nullID чека, в который конвертирована бронь
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacityrequirednumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassrequiredbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressrequiredstring | nullАдрес проведения (выездная смена)
noterequiredstring | nullВнутренний комментарий
visitNoterequiredstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdrequiredstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtrequiredstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdrequiredstring | nullID серии повторяющихся броней
rentalStaterequiredstring | null
Values: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtrequiredstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtrequiredstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoterequiredstring | nullЗаметка при возврате из проката
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtrequiredstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdrequiredstring | nullID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/scheduling/bookings/{id}/status

Сменить статус брони.

Scopes
scheduling:write
Component
scheduling

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Целевой статус брони

Responses

200
FieldTypeDescription
idrequiredstringID брони
companyIdrequiredstringID компании
numberrequirednumberНомер брони (сквозной по компании)
resourceIdrequiredstringID ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
customerNamerequiredstring | nullИмя клиента (если без карточки)
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги каталога
assignedToIdrequiredstring | nullID исполнителя
pricerequirednumberЦена брони в копейках (P0.4)
saleIdrequiredstring | nullID чека, в который конвертирована бронь
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacityrequirednumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassrequiredbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressrequiredstring | nullАдрес проведения (выездная смена)
noterequiredstring | nullВнутренний комментарий
visitNoterequiredstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdrequiredstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtrequiredstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdrequiredstring | nullID серии повторяющихся броней
rentalStaterequiredstring | null
Values: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtrequiredstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtrequiredstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoterequiredstring | nullЗаметка при возврате из проката
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtrequiredstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdrequiredstring | nullID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

calendar

События календаря.

GET/calendar/events

Развёрнутые экземпляры событий за период (raw + recurrence expansion).

Отдаёт массив без пагинации: экземпляры повторяющихся событий разворачиваются на лету, и страницы по ним не считаются. Период ограничен 92 днями — шире → 400 `VALIDATION_ERROR`.

Scopes
calendar:read
Component
calendar

Parameters

ParameterInTypeDescription
fromquerystringНачало периода (ISO 8601, включается)
toquerystringКонец периода (ISO 8601, не включается)
kindquerystring
Values: eventwork_shiftday_offtaskreminder
userIdquerystringID участника/создателя для фильтра
companyWidequerybooleantrue=только события компании, false=только личные
searchquerystringПоиск по заголовку (case-insensitive)

Responses

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

POST/calendar/events

Создать событие.

Scopes
calendar:write
Component
calendar

Parameters

ParameterInTypeDescription
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionstring | nullОписание события
startAtrequiredstringНачало события (ISO 8601)
endAtrequiredstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
Default: false
isCompanyWidebooleanВидно всем сотрудникам компании
Default: false
colorstring | nullЦвет события (HEX)
Example: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
array of string
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
Default: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

Responses

201
FieldTypeDescription
idrequiredstringID события
companyIdrequiredstringID компании
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionrequiredstring | nullОписание
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
allDayrequiredbooleanСобытие на весь день
isCompanyWiderequiredbooleanВидно всем сотрудникам компании
colorrequiredstring | nullЦвет (HEX)
locationrequiredstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayrequirednumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilrequiredstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforerequirednumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDonerequiredbooleanСобытие отмечено выполненным
doneAtrequiredstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdrequiredstringID сотрудника-автора
attendeeIdsrequiredstring[]ID участников события
array of string
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/calendar/events/{id}

Получить событие.

Scopes
calendar:read
Component
calendar

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID события
companyIdrequiredstringID компании
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionrequiredstring | nullОписание
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
allDayrequiredbooleanСобытие на весь день
isCompanyWiderequiredbooleanВидно всем сотрудникам компании
colorrequiredstring | nullЦвет (HEX)
locationrequiredstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayrequirednumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilrequiredstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforerequirednumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDonerequiredbooleanСобытие отмечено выполненным
doneAtrequiredstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdrequiredstringID сотрудника-автора
attendeeIdsrequiredstring[]ID участников события
array of string
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

PATCH/calendar/events/{id}

Изменить событие.

Scopes
calendar:write
Component
calendar

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Request body

FieldTypeDescription
kindstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlestringЗаголовок события
descriptionstring | nullОписание события
startAtstringНачало события (ISO 8601)
endAtstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
Default: false
isCompanyWidebooleanВидно всем сотрудникам компании
Default: false
colorstring | nullЦвет события (HEX)
Example: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
array of string
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
Default: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

Responses

200
FieldTypeDescription
idrequiredstringID события
companyIdrequiredstringID компании
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionrequiredstring | nullОписание
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
allDayrequiredbooleanСобытие на весь день
isCompanyWiderequiredbooleanВидно всем сотрудникам компании
colorrequiredstring | nullЦвет (HEX)
locationrequiredstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayrequirednumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilrequiredstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforerequirednumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDonerequiredbooleanСобытие отмечено выполненным
doneAtrequiredstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdrequiredstringID сотрудника-автора
attendeeIdsrequiredstring[]ID участников события
array of string
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

DELETE/calendar/events/{id}

Удалить событие.

Scopes
calendar:write
Component
calendar

Parameters

ParameterInTypeDescription
idrequiredpathstring
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Responses

204

No content

400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

audit

Журнал действий компании.

GET/audit

Журнал действий компании.

Scopes
audit:read
Component
core

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
entityquerystringФильтр по типу сущности
actionquerystring
Values: createupdatedeleteloginlogoutshift_openshift_closecash_movement_createsalerefund_issueinvitation_sendorder_createorder_updateorder_status_changeorder_cancelorder_paymentorder_payment_deleteorder_checkoutorder_line_fulfillorder_template_createorder_template_updateorder_template_deletedeal_createdeal_updatedeal_stage_changedeal_checkoutdeal_share_enabledeal_share_revokedeal_share_filesdeal_file_approval_requestdeal_file_approvedeal_file_rejectdeal_type_createdeal_type_updatedeal_type_deleteexpense_createexpense_updateexpense_deleteother_income_createother_income_updateother_income_deletecash_account_createcash_account_updatecash_account_deletecash_transaction_createcash_transaction_deleterecurring_expense_createrecurring_expense_updaterecurring_expense_deletebudget_createbudget_updatebudget_deleteresource_createresource_updateresource_deletebooking_createbooking_updatebooking_status_changebooking_attendee_enrollbooking_attendee_updatebooking_attendee_removehousekeeping_task_createhousekeeping_task_updatehousekeeping_task_generatewarehouse_createwarehouse_updatewarehouse_deletewarehouse_set_defaultbranch_createbranch_updatebranch_deletebranch_set_defaultsupplier_createsupplier_updatesupplier_deletereceipt_createreceipt_cancelstock_adjustmentproduct_bom_setproduction_run_createproduction_run_cancelproduct_variant_createproduct_variant_updateproduct_variant_deleteautomation_rule_createautomation_rule_updateautomation_rule_deletestock_write_offstock_reorder_setstocktake_createstocktake_applystocktake_cancelpurchase_order_createpurchase_order_sendpurchase_order_cancelpurchase_order_receivestock_bulk_reorder_setstock_bulk_adjuststock_transfer_shipstock_transfer_receivestock_transfer_cancelclient_createclient_updateclient_archiveclient_restoreclient_asset_createclient_asset_updateclient_asset_deleteclient_address_createclient_address_updateclient_address_deleteclient_balance_topupclient_balance_chargeclient_package_createclient_package_updateclient_package_deleteclient_package_useclient_package_refundpackage_template_createpackage_template_updatepackage_template_deleteclient_relation_createclient_relation_deletestudent_group_createstudent_group_updatestudent_group_deletestudent_group_schedulestudent_group_member_addstudent_group_member_updatestudent_group_member_removeservice_contract_createservice_contract_updateservice_contract_deleteservice_contract_generateclient_price_setclient_price_deleteprice_list_createprice_list_updateprice_list_deleteprice_list_fillclient_group_createclient_group_updateclient_group_deleteshipment_createshipment_shipshipment_cancelclient_portal_enableclient_portal_disableb2b_portal_order_createinteraction_createinteraction_updateinteraction_deletecalendar_event_createcalendar_event_updatecalendar_event_deleteproduct_bulk_repriceproduct_bulk_set_categoryproduct_bulk_set_brandproduct_bulk_hideproduct_bulk_restoreproduct_duplicateclient_mergeclient_importclient_bulk_assignclient_bulk_tagclient_bulk_archiveclient_bulk_restoreclient_asset_service_doneclient_segment_createclient_segment_updateclient_segment_deleteclient_segment_broadcastclient_marketing_consentmessage_template_createmessage_template_updatemessage_template_deleteclient_anonymizeclient_tag_setclient_tag_deleteloyalty_tier_setloyalty_tier_deletepromo_code_createpromo_code_updatepromo_code_deletepromo_code_redeemdeal_comment_createdeal_comment_deletedeal_task_createdeal_task_updatedeal_task_deletedeal_template_createdeal_template_deletelead_source_createlead_source_updatelead_source_deletedeal_lost_reason_createdeal_lost_reason_updatedeal_lost_reason_deletebooking_issuebooking_returnwaitlist_createwaitlist_notifystorefront_settings_updatestorefront_product_publishdelivery_zone_createdelivery_zone_updatedelivery_zone_deletestorefront_payment_paidorder_delivery_status_changerestaurant_settings_updaterestaurant_menu_visibilityrestaurant_table_createrestaurant_table_updaterestaurant_table_deleterestaurant_session_closerestaurant_session_cancelkds_ticket_status_changerestaurant_payment_paidhardware_enrollment_issuehardware_agent_enrollhardware_agent_updatehardware_agent_revokehardware_command_dispatchcrew_createcrew_updatecrew_deletework_order_creatework_order_updatework_order_completework_order_canceldeal_material_issuedeal_material_returnestimate_version_createestimate_version_approveuser_ip_restriction_disablecompany_deletion_requestcompany_deletion_cancelcompany_deletion_confirmcompany_restoredata_exportpassword_changetwo_factor_enabletwo_factor_disableip_restriction_updateuser_createuser_updateuser_role_changeuser_status_changeuser_password_resetuser_deletesa_company_updatesa_billing_updatesa_user_updatesa_session_revokeaccess_deniedfile_downloadfile_delete
actorIdquerystring
dateFromquerystringISO дата начала
dateToquerystringISO дата окончания
sortquerystring
Values: createdAt
orderquerystring
Values: ascdesc

Responses

200
FieldTypeDescription
itemsrequiredAuditLogResponse[]
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

users

Сотрудники компании (только чтение).

GET/users

Список сотрудников.

Scopes
users:read
Component
core

Parameters

ParameterInTypeDescription
pagequerynumber
pageSizequerynumber
searchquerystringПоиск по email/имени/фамилии
rolequerystring
Values: adminmanageremployeedirector
statusquerynumber
Values: 0123
sortquerystring
Values: lastNameemailrolestatuscreatedAtupdatedAt
orderquerystring
Values: ascdesc

Responses

200
FieldTypeDescription
itemsrequiredUserResponse[]
array of UserResponse
totalrequiredintegerВсего записей по фильтру
pagerequiredintegerНомер страницы, с 1
pageSizerequiredintegerРазмер страницы
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

GET/users/{id}

Получить сотрудника.

Scopes
users:read
Component
core

Parameters

ParameterInTypeDescription
idrequiredpathstring

Responses

200
FieldTypeDescription
idrequiredstringID сотрудника
firstNamerequiredstringИмя
lastNamerequiredstringФамилия
emailrequiredstringE-mail (логин)
rolerequiredstring
Values: adminmanageremployeedirector
Роль-персона (admin, manager, employee…)
roleIdrequiredstring | nullРоль компании
roleNamerequiredstring | nullНазвание роли
companyIdrequiredstringID компании
statusrequirednumberСтатус: 0=Registered, 1=Active, 2=Blocked, 3=Deleted
aboutrequiredstring | nullО себе
phonerequiredstring | nullТелефон
timezonerequiredstring | nullЧасовой пояс (IANA, например Europe/Moscow)
avatarFileIdrequiredstring | nullID файла аватара
avatarUrlrequiredstring | nullURL аватара
twoFactorEnabledrequiredbooleanВключена двухфакторная аутентификация
ipRestrictionEnabledrequiredbooleanСотрудник ограничил себе вход списком IP-адресов.
emailVerifiedAtrequiredstring (date-time) | nullКогда подтверждён e-mail (ISO 8601)
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
400Ошибка валидации тела или параметров (`VALIDATION_ERROR`, `message` — массив строк).

ExternalErrorResponse

401Токен отсутствует, недействителен, отозван или истёк (`AUTH_API_TOKEN_INVALID`, `AUTH_API_TOKEN_EXPIRED`), компания архивирована (`COMPANY_ARCHIVED`).

ExternalErrorResponse

403Не хватает scope (`AUTH_API_SCOPE_INSUFFICIENT`, нужные — в `meta.scopes`), компонент выключен у компании (`MODULE_ACCESS_INACTIVE`, алиас — в `meta.alias`), API недоступно на тарифе (`PLAN_API_DISABLED`).

ExternalErrorResponse

404Сущность не найдена в компании (`<ENTITY>_NOT_FOUND`).

ExternalErrorResponse

409Конфликт состояния: недопустимый переход статуса, занятый артикул, повтор `X-Idempotency-Key` с незавершённым запросом (`IDEMPOTENCY_IN_FLIGHT`).

ExternalErrorResponse

429Лимит частоты по токену; пауза — в заголовке `Retry-After`, остаток — в `X-RateLimit-Remaining`.

ExternalErrorResponse

Data schemas

AdjustStockDto

FieldTypeDescription
productIdrequiredstring
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
warehouseIdrequiredstring
targetQtyrequirednumberНовое значение остатка (целое число, может быть отрицательным).
reasonrequiredstringПричина корректировки (обязательно).

AssignLeadDto

FieldTypeDescription
assigneeIdrequiredstring (uuid) | nullID сотрудника или null для снятия ответственного.

AttributeDefinitionResponse

FieldTypeDescription
idrequiredstringID характеристики
companyIdrequiredstringID компании
namerequiredstringНазвание характеристики
typerequiredstring
Values: colorstringnumberoption_setboolean
Тип значения: определяет, какое поле заполняется в значении
isPrimaryrequiredbooleanОсновная характеристика: показывается в карточке и списках
categoryIdrequiredstring | nullID категории, к которой привязана; null — общая
positionrequirednumberПорядок в списке
optionsrequiredAttributeOptionResponse[]Варианты значений (для типа select)
createdAtrequiredstring (date-time)Создана (ISO 8601)
updatedAtrequiredstring (date-time)Обновлена (ISO 8601)

AttributeOptionResponse

FieldTypeDescription
idrequiredstringID опции
attributeIdrequiredstringID характеристики
valuerequiredstringЗначение опции
positionrequirednumberПорядок в списке
createdAtrequiredstring (date-time)Создана (ISO 8601)

AuditActorResponse

FieldTypeDescription
idrequiredstringID сотрудника
firstNamerequiredstringИмя
lastNamerequiredstringФамилия
emailrequiredstringE-mail

AuditLogResponse

FieldTypeDescription
idrequiredstringID записи
companyIdrequiredstringID компании
actorIdrequiredstring (uuid) | nullID сотрудника-инициатора; null — системное действие
actorrequiredobjectСотрудник-инициатор; null — системное действие или сотрудник удалён
FieldTypeDescription
idrequiredstringID сотрудника
firstNamerequiredstringИмя
lastNamerequiredstringФамилия
emailrequiredstringE-mail
actionrequiredstring
Values: createupdatedeleteloginlogoutshift_openshift_closecash_movement_createsalerefund_issueinvitation_sendorder_createorder_updateorder_status_changeorder_cancelorder_paymentorder_payment_deleteorder_checkoutorder_line_fulfillorder_template_createorder_template_updateorder_template_deletedeal_createdeal_updatedeal_stage_changedeal_checkoutdeal_share_enabledeal_share_revokedeal_share_filesdeal_file_approval_requestdeal_file_approvedeal_file_rejectdeal_type_createdeal_type_updatedeal_type_deleteexpense_createexpense_updateexpense_deleteother_income_createother_income_updateother_income_deletecash_account_createcash_account_updatecash_account_deletecash_transaction_createcash_transaction_deleterecurring_expense_createrecurring_expense_updaterecurring_expense_deletebudget_createbudget_updatebudget_deleteresource_createresource_updateresource_deletebooking_createbooking_updatebooking_status_changebooking_attendee_enrollbooking_attendee_updatebooking_attendee_removehousekeeping_task_createhousekeeping_task_updatehousekeeping_task_generatewarehouse_createwarehouse_updatewarehouse_deletewarehouse_set_defaultbranch_createbranch_updatebranch_deletebranch_set_defaultsupplier_createsupplier_updatesupplier_deletereceipt_createreceipt_cancelstock_adjustmentproduct_bom_setproduction_run_createproduction_run_cancelproduct_variant_createproduct_variant_updateproduct_variant_deleteautomation_rule_createautomation_rule_updateautomation_rule_deletestock_write_offstock_reorder_setstocktake_createstocktake_applystocktake_cancelpurchase_order_createpurchase_order_sendpurchase_order_cancelpurchase_order_receivestock_bulk_reorder_setstock_bulk_adjuststock_transfer_shipstock_transfer_receivestock_transfer_cancelclient_createclient_updateclient_archiveclient_restoreclient_asset_createclient_asset_updateclient_asset_deleteclient_address_createclient_address_updateclient_address_deleteclient_balance_topupclient_balance_chargeclient_package_createclient_package_updateclient_package_deleteclient_package_useclient_package_refundpackage_template_createpackage_template_updatepackage_template_deleteclient_relation_createclient_relation_deletestudent_group_createstudent_group_updatestudent_group_deletestudent_group_schedulestudent_group_member_addstudent_group_member_updatestudent_group_member_removeservice_contract_createservice_contract_updateservice_contract_deleteservice_contract_generateclient_price_setclient_price_deleteprice_list_createprice_list_updateprice_list_deleteprice_list_fillclient_group_createclient_group_updateclient_group_deleteshipment_createshipment_shipshipment_cancelclient_portal_enableclient_portal_disableb2b_portal_order_createinteraction_createinteraction_updateinteraction_deletecalendar_event_createcalendar_event_updatecalendar_event_deleteproduct_bulk_repriceproduct_bulk_set_categoryproduct_bulk_set_brandproduct_bulk_hideproduct_bulk_restoreproduct_duplicateclient_mergeclient_importclient_bulk_assignclient_bulk_tagclient_bulk_archiveclient_bulk_restoreclient_asset_service_doneclient_segment_createclient_segment_updateclient_segment_deleteclient_segment_broadcastclient_marketing_consentmessage_template_createmessage_template_updatemessage_template_deleteclient_anonymizeclient_tag_setclient_tag_deleteloyalty_tier_setloyalty_tier_deletepromo_code_createpromo_code_updatepromo_code_deletepromo_code_redeemdeal_comment_createdeal_comment_deletedeal_task_createdeal_task_updatedeal_task_deletedeal_template_createdeal_template_deletelead_source_createlead_source_updatelead_source_deletedeal_lost_reason_createdeal_lost_reason_updatedeal_lost_reason_deletebooking_issuebooking_returnwaitlist_createwaitlist_notifystorefront_settings_updatestorefront_product_publishdelivery_zone_createdelivery_zone_updatedelivery_zone_deletestorefront_payment_paidorder_delivery_status_changerestaurant_settings_updaterestaurant_menu_visibilityrestaurant_table_createrestaurant_table_updaterestaurant_table_deleterestaurant_session_closerestaurant_session_cancelkds_ticket_status_changerestaurant_payment_paidhardware_enrollment_issuehardware_agent_enrollhardware_agent_updatehardware_agent_revokehardware_command_dispatchcrew_createcrew_updatecrew_deletework_order_creatework_order_updatework_order_completework_order_canceldeal_material_issuedeal_material_returnestimate_version_createestimate_version_approveuser_ip_restriction_disablecompany_deletion_requestcompany_deletion_cancelcompany_deletion_confirmcompany_restoredata_exportpassword_changetwo_factor_enabletwo_factor_disableip_restriction_updateuser_createuser_updateuser_role_changeuser_status_changeuser_password_resetuser_deletesa_company_updatesa_billing_updatesa_user_updatesa_session_revokeaccess_deniedfile_downloadfile_delete
Действие
entityrequiredstringИмя сущности, к которой относится действие
entityIdrequiredstring | nullID затронутой сущности
payloadrequiredobject | nullДетали действия — произвольный JSON, состав зависит от действия
object
iprequiredstring | nullIP-адрес инициатора
createdAtrequiredstring (date-time)Момент действия (ISO 8601)

BookingListItemResponse

FieldTypeDescription
idrequiredstringID брони
numberrequirednumberНомер брони
resourceIdrequiredstringID ресурса
resourceNamerequiredstringНазвание ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя клиента
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги
serviceNamerequiredstring | nullНазвание услуги
assignedToIdrequiredstring | nullID исполнителя
assignedToNamerequiredstring | nullИмя исполнителя
capacityrequirednumber | nullМест в занятии. null — обычная бронь без ростера.
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога

BookingResponse

FieldTypeDescription
idrequiredstringID брони
companyIdrequiredstringID компании
numberrequirednumberНомер брони (сквозной по компании)
resourceIdrequiredstringID ресурса
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Статус брони
sourcerequiredstring
Values: adminpublic_linkchannel
Откуда создана бронь
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
customerNamerequiredstring | nullИмя клиента (если без карточки)
customerPhonerequiredstring | nullТелефон клиента
dealIdrequiredstring | nullID связанной сделки
serviceIdrequiredstring | nullID услуги каталога
assignedToIdrequiredstring | nullID исполнителя
pricerequirednumberЦена брони в копейках (P0.4)
saleIdrequiredstring | nullID чека, в который конвертирована бронь
depositAmountrequirednumberЗалог в копейках
depositStatusrequiredstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacityrequirednumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassrequiredbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressrequiredstring | nullАдрес проведения (выездная смена)
noterequiredstring | nullВнутренний комментарий
visitNoterequiredstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdrequiredstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtrequiredstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdrequiredstring | nullID серии повторяющихся броней
rentalStaterequiredstring | null
Values: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtrequiredstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtrequiredstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoterequiredstring | nullЗаметка при возврате из проката
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtrequiredstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdrequiredstring | nullID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

CalendarEventInstanceResponse

FieldTypeDescription
originIdrequiredstringID master-события (одинаков для всех инстансов серии)
companyIdrequiredstringID компании
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionrequiredstring | nullОписание
startAtrequiredstring (date-time)Начало инстанса (ISO 8601)
endAtrequiredstring (date-time)Окончание инстанса (ISO 8601)
allDayrequiredbooleanСобытие на весь день
isCompanyWiderequiredbooleanВидно всем сотрудникам компании
colorrequiredstring | nullЦвет (HEX)
locationrequiredstring | nullМесто проведения
isRecurringInstancerequiredbooleanИнстанс развёрнут из повторяющейся серии, а не разовое событие
isDonerequiredbooleanСобытие отмечено выполненным
createdByIdrequiredstringID сотрудника-автора
attendeeIdsrequiredstring[]ID участников события
array of string

CalendarEventResponse

FieldTypeDescription
idrequiredstringID события
companyIdrequiredstringID компании
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionrequiredstring | nullОписание
startAtrequiredstring (date-time)Начало (ISO 8601)
endAtrequiredstring (date-time)Окончание (ISO 8601)
allDayrequiredbooleanСобытие на весь день
isCompanyWiderequiredbooleanВидно всем сотрудникам компании
colorrequiredstring | nullЦвет (HEX)
locationrequiredstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayrequirednumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilrequiredstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforerequirednumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtrequiredstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDonerequiredbooleanСобытие отмечено выполненным
doneAtrequiredstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdrequiredstringID сотрудника-автора
attendeeIdsrequiredstring[]ID участников события
array of string
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)

CalendarRecurrenceDto

FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
Default: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно

CalendarRecurrenceResponse

FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayrequirednumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilrequiredstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно

CategoryResponse

FieldTypeDescription
idrequiredstringID категории
companyIdrequiredstringID компании
parentIdrequiredstring | nullID родительской категории; null — корень
namerequiredstringНазвание категории
iconrequiredstringИмя иконки
colorrequiredstring | nullHEX цвета иконки
bgrequiredstring | nullHEX цвета фона иконки
sortOrderrequirednumberПорядок сортировки
prefixrequiredstring | nullПрефикс артикулов: A-Z, 1-4 символа
Example: CFE
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

ChangeBookingStatusDto

FieldTypeDescription
statusrequiredstring
Values: pendingconfirmedcompletedno_showcancelled
Целевой статус брони

ChangeDealStageDto

FieldTypeDescription
stageIdrequiredstring (uuid)ID целевой стадии (в рамках того же типа сделки)
lostReasonIdstring (uuid) | nullID причины проигрыша — при переходе на терминальную стадию с исходом Lost.

ClientListItemResponse

FieldTypeDescription
idrequiredstringID клиента
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
tagsrequiredstring[]Теги
array of string
statusrequiredstring
Values: activearchived
Статус клиента
assignedToIdrequiredstring | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
lastInteractionAtrequiredstring (date-time) | nullПоследнее взаимодействие (ISO 8601)
ordersCountrequirednumberЧисло заказов клиента
balancerequirednumberБаланс клиента, копейки (может быть < 0 = долг)
totalSpentrequirednumberСовокупная выручка (LTV-прокси), копейки
lastOrderAtrequiredstring (date-time) | nullПоследний заказ (ISO 8601)
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

ClientResponse

FieldTypeDescription
idrequiredstringID клиента
companyIdrequiredstringID компании
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamerequiredstring | nullИмя
lastNamerequiredstring | nullФамилия
middleNamerequiredstring | nullОтчество
companyNamerequiredstring | nullНазвание компании (юрлицо)
positionrequiredstring | nullДолжность контактного лица
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
telegramChatIdrequiredstring | nullTelegram chat id для исходящих сообщений
whatsappPhonerequiredstring | nullНомер WhatsApp; null — используется phone
innrequiredstring | nullИНН (B2B)
kpprequiredstring | nullКПП (B2B)
legalAddressrequiredstring | nullЮр. адрес (B2B)
bankDetailsrequiredstring | nullБанковские реквизиты строкой (B2B)
noterequiredstring | nullВнутренняя заметка
tagsrequiredstring[]Теги
array of string
birthdayrequiredstring (date) | nullДата рождения / основания (ISO 8601)
statusrequiredstring
Values: activearchived
Статус клиента
balancerequirednumberБаланс/абонемент в копейках
pointsrequirednumberБаллы лояльности (копейки-эквивалент)
contractNumberrequiredstring | nullНомер договора (B2B)
groupIdrequiredstring | nullID группы контрагентов (опт)
priceListIdrequiredstring | nullID персонального прайс-листа (опт)
paymentTermsDaysrequirednumber | nullСрок оплаты по договору, дни
creditLimitrequirednumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursrequirednumber | nullSLA по договору, часы
marketingConsentrequiredbooleanСогласие на маркетинговые рассылки
marketingConsentAtrequiredstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourcerequiredstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtrequiredstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdrequiredstring | nullID ответственного сотрудника
createdByIdrequiredstringID сотрудника-автора
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

CloseShiftDto

FieldTypeDescription
closingCashnumberФактический остаток наличных в копейках

ConvertLeadToDealDto

FieldTypeDescription
typeIdstringID типа сделки; по умолчанию — тип-«лид».

CreateBookingDto

FieldTypeDescription
resourceIdrequiredstringID ресурса
startAtrequiredstringНачало интервала (ISO 8601)
endAtstringКонец интервала (ISO 8601). Опционален при serviceId — считается из длительности услуги.
serviceIdstringID услуги каталога (запись на услугу)
clientIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
customerNamestringИмя клиента (если без карточки)
customerPhonestringТелефон клиента
dealIdstringID связанной сделки
assignedToIdstringID ответственного сотрудника
pricenumberЦена брони в копейках; не задана — авторасчёт по тарифу
depositAmountnumberДепозит в копейках
Default: 0
depositStatusstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumberВместимость группового занятия (число мест); опускается для обычной брони.
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Доп.ресурсы мультиресурсной брони (S8); guard по каждому.
array of string
addressstringАдрес проведения (выезд). Не задан при привязке к сделке — подставляется адрес сделки.
notestringВнутренний комментарий

CreateCalendarEventDto

FieldTypeDescription
kindrequiredstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlerequiredstringЗаголовок события
descriptionstring | nullОписание события
startAtrequiredstringНачало события (ISO 8601)
endAtrequiredstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
Default: false
isCompanyWidebooleanВидно всем сотрудникам компании
Default: false
colorstring | nullЦвет события (HEX)
Example: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
array of string
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
Default: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

CreateCategoryDto

FieldTypeDescription
namerequiredstringНазвание категории
Example: Напитки
parentIdstring (uuid) | nullID родительской категории; null — корень
iconstringИмя иконки
Default: folder
colorstring | nullHEX цвета иконки
bgstring | nullHEX цвета фона иконки
sortOrdernumberПорядок сортировки
Default: 0
prefixstring | nullПрефикс артикула: A-Z, 1-4 символа
Example: CFE

CreateClientDto

FieldTypeDescription
kindrequiredstring
Values: individuallegal
Физлицо или юрлицо
displayNamerequiredstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamestring | nullИмя
lastNamestring | nullФамилия
middleNamestring | nullОтчество
companyNamestring | nullНазвание компании (юрлицо)
positionstring | nullДолжность контактного лица
phonestring | nullТелефон
emailstring | nullE-mail
telegramChatIdstring | nullTelegram chat id для исходящих сообщений (канал telegram).
whatsappPhonestring | nullНомер WhatsApp; пустой → используется phone.
notestring | nullВнутренняя заметка
tagsstring[]Теги
array of string
birthdaystring (date) | nullДата рождения / основания (ISO 8601)
assignedToIdstring (uuid) | nullID ответственного сотрудника
innstring | nullИНН (B2B, для документов)
kppstring | nullКПП (B2B)
legalAddressstring | nullЮр. адрес (B2B)
bankDetailsstring | nullБанковские реквизиты строкой (B2B)
contractNumberstring | nullНомер договора (B2B)
paymentTermsDaysnumber | nullСрок оплаты по договору, дни
creditLimitnumber | nullКредитный лимит B2B, копейки (0 = без лимита)
groupIdstring (uuid) | nullГруппа контрагентов (опт): общий прайс-лист и скидка сегмента
priceListIdstring (uuid) | nullПерсональный прайс-лист (опт), перекрывает прайс группы
slaHoursnumber | nullSLA по договору, часы
marketingConsentbooleanСогласие на маркетинговые рассылки (CL9)

CreateDealDto

FieldTypeDescription
typeIdrequiredstringID типа сделки
itemsDealLineInputDto[]Позиции сметы (товары и услуги)
clientIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
addressIdstringID адреса клиента (ClientAddress)
customerNamestringИмя заказчика (если без карточки клиента)
customerPhonestringТелефон заказчика
customerEmailstringE-mail заказчика
customerNotestringПожелания заказчика
channelstringКанал привлечения (manual|public_link|phone)
sourcestringИсточник (интеграция/форма)
sourceIdstringID источника лида из справочника (D7)
budgetnumberПлановый бюджет проекта в копейках (D4)
assignedToIdstringID ответственного сотрудника
addressstringАдрес выполнения (для field_job)
venueResourceIdstring (uuid) | nullПлощадка мероприятия — ресурс расписания (зал, шатёр). По ней вешается бронь и сверяется вместимость; раньше зал угадывался по строке адреса.
scheduledAtstringЗапланированное время (ISO 8601)
dueAtstringСрок исполнения (ISO 8601)
headcountnumberЧисло гостей мероприятия: множитель для позиций с нормой на гостя.
notestringВнутренний комментарий
discountPercentnumberСкидка на всю сделку, %
Default: 0
intakeobjectСнапшот приёмки (для типа intake)
FieldTypeDescription
deviceKindstring | nullВид объекта (телефон, ноутбук, авто, обувь…)
brandstring | nullМарка/бренд
modelstring | nullМодель
serialstring | nullСерийный номер / IMEI / VIN
defectstring | nullЗаявленная неисправность
accessoriesstring | nullКомплектация (что принято вместе с устройством)
appearancestring | nullВнешний вид (царапины, сколы)
conditionstring | nullСостояние при приёмке
agreedPricenumber | nullСогласованная цена работ в копейках
agreedTermDaysnumber | nullСогласованный срок, дней
prepaymentnumber | nullПредоплата в копейках

CreateOrderDto

FieldTypeDescription
itemsrequiredOrderLineInputDto[]
customerIdstringID клиента из модуля Clients
assetIdstringID объекта обслуживания (ClientAsset)
addressIdstringID адреса клиента (ClientAddress)
customerNamestring
customerPhonestring
customerEmailstring
customerNotestring
channelstringКанал привлечения (manual|public_link|phone)
sourcestringИсточник (интеграция/форма)
dealIdstringID сделки, к которой привязан заказ-запчастей (D5)
dueAtstringСрок (legacy, ISO 8601)
readyBystringСрок готовности (ISO 8601, O8)
payDueAtstringСрок оплаты B2B-отсрочки (ISO 8601, O8)
notestringВнутренний комментарий по заказу
discountPercentnumber
Default: 0
prepaidAmountnumberПредоплата (копейки)
Default: 0
assignedToIdstringID ответственного сотрудника

CreateProductDto

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: CFE-0012
barcodestring | nullШтрихкод
Example: 4607034630621
namerequiredstringНазвание товара
Example: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
dictionary of string
descriptionI18nobjectПереводы описания по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
pricerequirednumberЦена в копейках
Example: 240000
costnumberСебестоимость в копейках
Default: 0
unitstringЕдиница измерения (код)
Default: pcs
unitIdstring (uuid) | nullFK на справочник единиц (C5).
packQtynumber | nullФасовка: кол-во packUnit в одной unit.
packUnitIdstring (uuid) | nullFK на единицу фасовки.
minOrderQtynumber | nullМинимальная партия к заказу (опт). Пусто — без ограничения.
orderStepQtynumber | nullКратность отгрузки (опт): коробка 12 шт → 12, 24, 36.
costComponentsobject[]Разбивка себестоимости (C8): [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlebooleanКомплект/набор (BOM)
Default: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
array of object
statusstring
Values: activehidden
Статус карточки
Default: active
hasStockbooleanВести складской учёт остатков по товару
Default: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Example:
brandstring | nullБренд
Example: Lavazza
modelstring | nullМодель
Example: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).

CreateReceiptDto

FieldTypeDescription
warehouseIdrequiredstring (uuid)ID склада
supplierIdstring (uuid) | nullID поставщика
purchaseOrderIdstring (uuid) | nullID заказа поставщику (W3)
datestringДата приёмки (ISO 8601)
notestring | nullКомментарий к приёмке
itemsrequiredReceiptLineInputDto[]Позиции приёмки

CreateResourceDto

FieldTypeDescription
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacitynumberСколько броней ресурс держит одновременно
Default: 1
seatsnumberСколько гостей вмещает площадка (зал, веранда, беседка). Отличается от `capacity`: та говорит, сколько броней ресурса идут одновременно.
colorstringЦвет в календаре (HEX)
Example: #0ea5e9
bufferMinutesnumberБуфер между бронями, минут
Default: 0
minDurationMinutesnumberМинимальная длительность брони, минут
availabilityResourceAvailabilityWindowDto[]Окна доступности по дням недели
userIdstring (uuid)Учётка сотрудника за ресурсом (мастер салона): из неё подставляется ответственный записи, чтобы комиссия считалась по тому же человеку.
notestringВнутренняя заметка

CreateSaleDto

FieldTypeDescription
shiftIdrequiredstring
itemsrequiredSaleLineInputDto[]
discountPercentnumber
Default: 0
paymentMethodrequiredstring
Values: cashcardsbpmixed
paymentMethodExtstringАлиас способа оплаты интеграции (ozon-wallet и т.п.); базовый paymentMethod при этом — ближайший стандартный
receivedAmountnumberПолученная сумма в копейках (для cash)
customerIdstringID клиента из модуля Clients
redeemPointsnumberСписать N баллов лояльности клиента как скидку (1 балл = 1 копейка)
customerNamestringSnapshot имени клиента (опционально)
customerPhonestringSnapshot телефона клиента (опционально)
channelstringКанал продажи (default pos)
paymentsSalePaymentInputDto[]Платежи (K5). Для paymentMethod=mixed обязателен и Σamount = итог чека. Для одиночной оплаты можно опустить — сервер запишет один платёж зеркально.

CreateServiceDto

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: SVC-0001
namerequiredstringНазвание услуги
Example: Консультация бариста
nameI18nobjectПереводы названия по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
priceModelstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
Default: fixed
pricerequirednumberЦена в копейках
Example: 150000
durationMinutesnumber | nullДлительность услуги в минутах (для записи/брони)
Example: 60
statusstring
Values: activehidden
Статус карточки
Default: active
costItemsServiceCostItemInputDto[]Состав затрат (материалы и работы). Replace-all при наличии в запросе.

CreateSupplierDto

FieldTypeDescription
namerequiredstringНазвание поставщика
contactNamestring | nullКонтактное лицо
phonestring | nullТелефон
emailstring | nullE-mail
innstring | nullИНН
addressstring | nullАдрес
notestring | nullВнутренняя заметка

CreateWarehouseDto

FieldTypeDescription
namerequiredstringНазвание склада
Example: Основной
addressstring | nullАдрес склада
managerUserIdstring (uuid) | nullID ответственного сотрудника
branchIdstring (uuid)Филиал склада (1:1). Если не указан — берётся филиал компании без склада.

DealIntakeDto

FieldTypeDescription
deviceKindstring | nullВид объекта (телефон, ноутбук, авто, обувь…)
brandstring | nullМарка/бренд
modelstring | nullМодель
serialstring | nullСерийный номер / IMEI / VIN
defectstring | nullЗаявленная неисправность
accessoriesstring | nullКомплектация (что принято вместе с устройством)
appearancestring | nullВнешний вид (царапины, сколы)
conditionstring | nullСостояние при приёмке
agreedPricenumber | nullСогласованная цена работ в копейках
agreedTermDaysnumber | nullСогласованный срок, дней
prepaymentnumber | nullПредоплата в копейках

DealLineInputDto

FieldTypeDescription
kindrequiredstring
Values: productservicepackage
refIdrequiredstringID товара или услуги
qtyrequirednumber
Example: 1
unitPricerequirednumberЦена за единицу в копейках
perGuestQtynumberНорма на одного гостя: 1 порция сет-меню — 1, две закуски на гостя — 2. Задана — количество пересчитывается от числа гостей мероприятия.
Example: 2

DealLineResponse

FieldTypeDescription
idrequiredstringID позиции
dealIdrequiredstringID сделки
kindrequiredstring
Values: productservicepackage
Товар или услуга
productIdrequiredstring | nullID товара
serviceIdrequiredstring | nullID услуги
namerequiredstringНазвание (snapshot на момент добавления)
qtyrequirednumberКоличество
unitPricerequirednumberЦена за единицу в копейках
costrequirednumberСебестоимость за единицу в копейках
lineTotalrequirednumberСтоимость позиции в копейках
perGuestQtyrequirednumber | nullНорма на одного гостя; null — количество от числа гостей не зависит

DealListItemResponse

FieldTypeDescription
idrequiredstringID сделки
numberrequirednumberНомер сделки
typeIdrequiredstringID типа сделки
typeNamerequiredstringНазвание типа сделки
stageIdrequiredstringID текущей стадии
stageNamerequiredstringНазвание стадии
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
createdAtrequiredstring (date-time)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
clientIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
addressrequiredstring | nullАдрес выполнения
itemsCountrequirednumberСумма qty по всем позициям
totalrequirednumberИтог в копейках
costrequirednumberСебестоимость в копейках
budgetrequirednumber | nullБюджет (копейки)
assignedToIdrequiredstring | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
sourceIdrequiredstring | nullID источника лида из справочника
stageEnteredAtrequiredstring (date-time) | nullКогда вошла в текущую стадию (для «дней в стадии» на доске).
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи; null — «без задачи».
boardOrderrequirednumber | nullРучной порядок карточки в колонке доски; null — не сортировалась.
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null

DealLostReasonResponse

FieldTypeDescription
idrequiredstringID причины
namerequiredstringНазвание причины
isActiverequiredbooleanАктивна: доступна при закрытии сделки
positionrequirednumberПорядок в списке
createdAtrequiredstring (date-time)Создана (ISO 8601)

DealResponse

FieldTypeDescription
idrequiredstringID сделки
companyIdrequiredstringID компании
numberrequirednumberНомер сделки (сквозной по компании)
typeIdrequiredstringID типа сделки
stageIdrequiredstringID текущей стадии
checklistDonerequiredstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
array of string
outcomerequiredstring | null
Values: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
venueResourceIdrequiredstring | nullID площадки мероприятия (ресурс расписания)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя заказчика
customerPhonerequiredstring | nullТелефон заказчика
customerEmailrequiredstring | nullE-mail заказчика
customerNoterequiredstring | nullПожелания заказчика
channelrequiredstring | nullКанал привлечения (manual|public_link|phone)
sourcerequiredstring | nullИсточник строкой (интеграция/форма)
sourceIdrequiredstring | nullID источника лида из справочника
addressrequiredstring | nullАдрес выполнения (для field_job)
scheduledAtrequiredstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtrequiredstring (date-time) | nullСрок исполнения (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на всю сделку, %
totalrequirednumberИтог со скидкой, копейки
costrequirednumberСебестоимость по позициям, копейки
budgetrequirednumber | nullБюджет (копейки)
budgetExceededAtrequiredstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountrequirednumber | nullЧисло гостей мероприятия
lostReasonIdrequiredstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtrequiredstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtrequiredstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdrequiredstringID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredDealLineResponse[]Позиции сметы

DealStageResponse

FieldTypeDescription
idrequiredstringID стадии
sortOrderrequirednumberПорядок в пайплайне
namerequiredstringНазвание стадии
isInitialrequiredbooleanНачальная стадия для новых сделок
terminalOutcomerequiredstring | null
Values: wonlostdonecancelled
Исход терминальной стадии (won/lost); null — промежуточная
kindrequiredstring | null
Values: in_transiton_site
Семантика стадии для автоматики; null — обычная
checklistrequiredobject[] | nullЧек-лист стадии: [{ label, done? }]
array of object
wipLimitrequirednumber | nullМягкий лимит карточек в колонке доски (WIP)

DealTypeResponse

FieldTypeDescription
idrequiredstringID типа сделки
aliasrequiredstring
Values: sale_orderprojectproductionfield_jobleadintakemaintenanceevent
Системный алиас типа (sale_order, project, field_job, intake…)
namerequiredstringНазвание типа
featuresrequiredstring[]Включённые возможности типа (lines, payments, schedule, address…)
array of string
configrequiredobjectКонфигурация типа (правила доски, печати, автоматики)
object
isActiverequiredbooleanТип активен и доступен для новых сделок
isSystemrequiredbooleanСистемный тип: нельзя удалить
availablerequiredbooleanКомпонент типа включён у компании
stagesrequiredDealStageResponse[]Стадии пайплайна по порядку

ExternalErrorResponse

FieldTypeDescription
statusCoderequirednumberHTTP-статус
Example: 403
errorrequiredstringНазвание статуса
Example: Forbidden
messagerequiredstringТекст ошибки (английский)
Example: Insufficient permissions. One of the following scopes is required: deals:write
codestringМашинный код ошибки (CAPS_ENUM) — по нему ветвится обработка на стороне интеграции
Example: AUTH_API_SCOPE_INSUFFICIENT
metaobjectПараметры ошибки: значения плейсхолдеров `message` (например, требуемые scope или алиас неактивного компонента)
Example: {"scopes":"deals:write"}
object
timestamprequiredstringМомент ошибки, ISO 8601
pathrequiredstringПуть запроса
Example: /api/external/v1/deals

IntakeLeadDto

FieldTypeDescription
namestringИмя контакта
phonestringТелефон
emailstringE-mail
messagestringТекст обращения
sourcestringИсточник (по умолчанию webhook).
externalIdstringВнешний id для дедупа.
utmobjectUTM-метки перехода: плоская карта строка → строка.
dictionary of string

LeadResponse

FieldTypeDescription
idrequiredstringID лида
sourcerequiredstringИсточник: `api`, `public_form`, `telegram`…
channelrequiredstring | nullКанал внутри источника (например, имя формы или бота)
namerequiredstring | nullИмя контакта
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
messagerequiredstring | nullТекст обращения
statusrequiredstring
Values: newin_progressconvertedspam
Статус обработки
externalIdrequiredstring | nullВнешний id из источника (для дедупликации)
rawrequiredobject | nullСырой payload источника (для ручного разбора).
object
clientIdrequiredstring (uuid) | nullID клиента после конвертации
dealIdrequiredstring (uuid) | nullID сделки после конвертации
assignedToIdrequiredstring (uuid) | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника
utmrequiredobject | nullUTM-метки перехода.
dictionary of string
createdAtrequiredstring (date-time)Создан (ISO 8601)

LeadSourceResponse

FieldTypeDescription
idrequiredstringUUID источника
namerequiredstringНазвание
isActiverequiredbooleanАктивен ли источник
positionrequirednumberПорядок сортировки
createdAtrequiredstring (date-time)

OpenShiftDto

FieldTypeDescription
openingCashrequirednumberНачальная сумма наличных в копейках
Example: 500000

OrderLineInputDto

FieldTypeDescription
kindrequiredstring
Values: productservicepackage
refIdrequiredstringID товара или услуги
variantIdstringВариант товара (SKU-вариация)
qtyrequirednumber
Example: 1
unitPricerequirednumberЦена за единицу в копейках

OrderLineResponse

FieldTypeDescription
idrequiredstringID позиции
orderIdrequiredstringID заказа
kindrequiredstring
Values: productservicepackage
Товар или услуга
productIdrequiredstring | nullID товара
variantIdrequiredstring | nullID варианта товара (SKU-вариация)
serviceIdrequiredstring | nullID услуги
namerequiredstringНазвание (snapshot на момент добавления)
qtyrequirednumberКоличество
unitPricerequirednumberЦена за единицу в копейках
fulfilledQtyrequirednumberОтгружено/готово (O6)
lineTotalrequirednumberСтоимость позиции в копейках

OrderListItemResponse

FieldTypeDescription
idrequiredstringID заказа
numberrequirednumberНомер заказа
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
createdAtrequiredstring (date-time)
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
itemsCountrequirednumberСумма qty по всем позициям
subtotalrequirednumberПодытог в копейках
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог в копейках
prepaidAmountrequirednumberВнесено (копейки)
balanceDuerequirednumberОстаток к оплате (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
createdByNamerequiredstring | nullИмя сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
assignedToNamerequiredstring | nullИмя ответственного сотрудника

OrderResponse

FieldTypeDescription
idrequiredstringID заказа
companyIdrequiredstringID компании
numberrequirednumberНомер заказа (сквозной по компании)
statusrequiredstring
Values: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusrequiredstring
Values: unpaidpartialpaidrefunded
Статус оплаты
customerIdrequiredstring | nullID клиента
assetIdrequiredstring | nullID объекта обслуживания (ClientAsset)
addressIdrequiredstring | nullID адреса клиента (ClientAddress)
addressLabelrequiredstring | nullНазвание адреса клиента (denorm по addressId)
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
customerEmailrequiredstring | nullE-mail покупателя
customerNoterequiredstring | nullПожелания покупателя
channelrequiredstring | nullКанал привлечения
sourcerequiredstring | nullИсточник (интеграция/форма)
deliveryStatusrequiredstring | null
Values: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodrequiredstring | null
Values: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostrequirednumberСтоимость доставки (копейки)
deliveryAddressTextrequiredstring | nullАдрес доставки строкой
dueAtrequiredstring (date-time) | nullСрок (legacy, ISO 8601)
readyByrequiredstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtrequiredstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noterequiredstring | nullВнутренний комментарий
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь заказ, %
totalrequirednumberИтог со скидкой, копейки
prepaidAmountrequirednumberПредоплата (копейки)
createdByIdrequiredstring | nullID сотрудника-автора
assignedToIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)
linesrequiredOrderLineResponse[]Позиции заказа

OrderStatus

string
Values: newconfirmedin_progressreadycompletedcancelled

ProductAttributeValueInput

FieldTypeDescription
attributeIdrequiredstring (uuid)ID характеристики
valueStringstring | nullСтроковое значение (тип text)
valueNumbernumber | nullЧисловое значение (тип number)
valueColorstring | nullЦвет HEX (тип color)
Example: #1ABC9C
colorNamestring | null
Values: blackwhitegraydark_graylight_grayredorangelight_orangeyellowgoldgreenlight_greendark_greenlight_bluebluedark_blueindigopurplepinklight_pinkbrownbeigeburgundykhaki
Имя цвета из палитры NamedColor; пара с `valueColor`.
valueBooleanboolean | nullЛогическое значение (тип boolean)
optionIdstring (uuid) | nullID выбранной опции (тип select)

ProductAttributeValueResponse

FieldTypeDescription
attributeIdrequiredstringID характеристики
valueStringrequiredstring | nullСтроковое значение (тип text)
valueNumberrequirednumber | nullЧисловое значение (тип number)
valueColorrequiredstring | nullЦвет HEX (тип color)
colorNamerequiredstring | nullИмя цвета из палитры NamedColor; пара с valueColor
valueBooleanrequiredboolean | nullЛогическое значение (тип boolean)
optionIdrequiredstring | nullID выбранной опции (тип select)

ProductResponse

FieldTypeDescription
idrequiredstringID товара
companyIdrequiredstringID компании
skurequiredstringАртикул
barcoderequiredstring | nullШтрихкод
namerequiredstringНазвание товара
descriptionrequiredstring | nullОписание
nameI18nrequiredobjectПереводы названия по локали: { "de": "..." }
dictionary of string
descriptionI18nrequiredobjectПереводы описания по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
brandrequiredstring | nullБренд
modelrequiredstring | nullМодель
pricerequirednumberЦена в копейках
costrequirednumberСебестоимость в копейках
unitrequiredstringЕдиница измерения (код, денорм)
unitIdrequiredstring | nullID единицы измерения из справочника
packQtyrequirednumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyrequirednumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyrequirednumber | nullКратность отгрузки (опт); null — любая
packUnitIdrequiredstring | nullID единицы фасовки
costComponentsrequiredobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlerequiredbooleanКомплект/набор (BOM)
modifierGroupsrequiredobject[]Группы модификаторов позиции с надбавками
array of object
statusrequiredstring
Values: activehidden
Статус карточки
hasStockrequiredbooleanВедётся складской учёт остатков
defaultSupplierIdrequiredstring | nullID поставщика по умолчанию (авто-дозаказ)
emojirequiredstring | nullЭмодзи-иконка
photoFileIdrequiredstring | nullID файла основного фото
thumbnailFileIdrequiredstring | nullID файла миниатюры
attributeValuesrequiredProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

ProductVariantResponse

FieldTypeDescription
idrequiredstringID варианта
companyIdrequiredstringID компании
productIdrequiredstringID родительского товара
skurequiredstringАртикул варианта
barcoderequiredstring | nullШтрихкод
attributesrequiredobjectАтрибуты варианта: { "color": "red", "size": "M" }
dictionary of string
pricerequirednumberЦена варианта в копейках
costrequirednumberСебестоимость варианта в копейках
statusrequiredstring
Values: activehidden
Статус варианта
stockQtynumberСуммарный остаток по складам (матрица).
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

ReceiptLineInputDto

FieldTypeDescription
productIdrequiredstring (uuid)ID товара
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
qtyrequirednumberКоличество
Example: 1
unitCostrequirednumberЗакупочная цена за единицу в копейках
batchNumberstringНомер партии (информационный учёт)
expiryDatestringСрок годности партии (ISO 8601)

ReceiptLineResponse

FieldTypeDescription
idrequiredstringID позиции
receiptIdrequiredstringID приёмки
productIdrequiredstringID товара
variantIdrequiredstring | nullID варианта товара (SKU-вариация)
productNamerequiredstringНазвание товара
productSkurequiredstringАртикул товара
qtyrequirednumberКоличество
unitCostrequirednumberЗакупочная цена за единицу в копейках
lineTotalrequirednumberСтоимость позиции в копейках

ReceiptListItemResponse

FieldTypeDescription
idrequiredstringID приёмки
numberrequirednumberНомер приёмки
statusrequiredstring
Values: postedcancelled
Статус приёмки
daterequiredstring (date-time)Дата приёмки (ISO 8601)
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
supplierIdrequiredstring | nullID поставщика
supplierNamerequiredstring | nullНазвание поставщика
purchaseOrderIdrequiredstring | nullID заказа поставщику
purchaseOrderNumberrequirednumber | nullНомер заказа поставщику
itemsCountrequirednumberЧисло позиций
totalQtyrequirednumberСумма qty по всем позициям
totalAmountrequirednumberСумма приёмки в копейках
createdByIdrequiredstringID сотрудника-автора
createdByNamerequiredstringИмя сотрудника-автора
createdAtrequiredstring (date-time)Создано (ISO 8601)

ReceiptResponse

FieldTypeDescription
idrequiredstringID приёмки
companyIdrequiredstringID компании
numberrequirednumberНомер приёмки (сквозной по компании)
statusrequiredstring
Values: postedcancelled
Статус приёмки
daterequiredstring (date-time)Дата приёмки (ISO 8601)
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
supplierIdrequiredstring | nullID поставщика
supplierNamerequiredstring | nullНазвание поставщика
purchaseOrderIdrequiredstring | nullID заказа поставщику, по которому пришёл товар
noterequiredstring | nullКомментарий к приёмке
totalQtyrequirednumberСумма qty по всем позициям
totalAmountrequirednumberСумма приёмки в копейках
createdByIdrequiredstringID сотрудника-автора
createdByNamerequiredstringИмя сотрудника-автора
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)
linesrequiredReceiptLineResponse[]Позиции приёмки

ResourceAvailabilityWindowDto

FieldTypeDescription
weekdayrequirednumberДень недели: 0=вс … 6=сб
fromrequiredstringНачало окна, HH:MM
Example: 09:00
torequiredstringКонец окна, HH:MM
Example: 18:00

ResourceResponse

FieldTypeDescription
idrequiredstringID ресурса
companyIdrequiredstringID компании
typerequiredstring
Values: staffseatunitequipment
Тип ресурса
namerequiredstringНазвание ресурса
capacityrequirednumberСколько броней ресурс держит одновременно
seatsrequirednumber | nullСколько гостей вмещает площадка; null — неприменимо
colorrequiredstring | nullЦвет в календаре (HEX)
bufferMinutesrequirednumberБуфер между бронями, минут
minDurationMinutesrequirednumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityrequiredobject[]Окна доступности по дням недели: [{ weekday, from, to }]
array of object
isActiverequiredbooleanРесурс активен и доступен для записи
housekeepingStaterequiredstring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdrequiredstring | nullУчётка сотрудника за ресурсом (мастер)
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

SaleLineInputDto

FieldTypeDescription
kindrequiredstring
Values: productservicepackage
refIdrequiredstringID товара или услуги
variantIdstringВариант товара (SKU-вариация), если продаётся конкретный вариант (kind=product).
packageHolderIdstringКому выдать абонемент (kind=package), если платит не он сам: родитель оплачивает занятия ребёнка. Пусто — владельцем становится клиент чека.
qtyrequirednumber
Example: 1
unitPricerequirednumberБазовая цена за единицу в копейках
modifiersobject[]Выбранные модификаторы (P1.3b): [{ groupId, optionId }]. Надбавки считает сервер.
array of object
lineDiscountPercentnumberПострочная скидка в процентах (0..100) на позицию (K3)
lineDiscountAmountnumberПострочная скидка фиксированной суммой за единицу, копейки (K3)

SaleLineResponse

FieldTypeDescription
idrequiredstringID позиции
saleIdrequiredstringID чека
kindrequiredstring
Values: productservicepackage
Товар или услуга
productIdrequiredstring | nullID товара
variantIdrequiredstring | nullID варианта товара (SKU-вариация)
serviceIdrequiredstring | nullID услуги
namerequiredstringНазвание (snapshot на момент продажи)
qtyrequirednumberКоличество
unitPricerequirednumberЦена за единицу в копейках
lineDiscountPercentrequirednumberПострочная скидка в процентах (K3)
lineDiscountAmountrequirednumberПострочная скидка суммой за единицу, копейки (K3)
lineTotalrequirednumberСтоимость позиции в копейках
refundedQtyrequirednumberСколько единиц уже возвращено предыдущими возвратами. Доступно к возврату — qty минус это число.
modifiersrequiredobject[] | nullВыбранные модификаторы (P1.3b); null — без них.
array of object

SaleListItemResponse

FieldTypeDescription
idrequiredstringID чека
numberrequirednumberНомер чека
createdAtrequiredstring (date-time)Момент продажи (ISO 8601)
shiftIdrequiredstringID кассовой смены
shiftNumberrequirednumberНомер смены
cashierIdrequiredstringID кассира
cashierNamerequiredstringИмя кассира
itemsCountrequirednumberСумма qty по всем позициям
subtotalrequirednumberПодытог в копейках (со знаком)
discountPercentrequirednumberСкидка на весь чек, %
totalrequirednumberИтог в копейках (со знаком)
paymentMethodrequiredstring
Values: cashcardsbpmixed
Способ оплаты
isRefundrequiredbooleanЧек возврата
refundOfSaleIdrequiredstring | nullID исходного чека (у возврата)
refundOfSaleNumberrequirednumber | nullНомер исходного чека (у возврата)
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя

SalePaymentInputDto

FieldTypeDescription
methodrequiredstring
Values: cashcardsbpmixed
amountrequirednumberСумма платежа в копейках
extstringАлиас интеграционного способа оплаты

SalePaymentResponse

FieldTypeDescription
idrequiredstringID платежа
methodrequiredstring
Values: cashcardsbpmixed
Способ оплаты
amountrequirednumberСумма платежа в копейках
extrequiredstring | nullУточнение способа (эквайринг, СБП, сертификат…)

SaleResponse

FieldTypeDescription
idrequiredstringID чека
companyIdrequiredstringID компании
shiftIdrequiredstringID кассовой смены
numberrequirednumberНомер чека (сквозной по компании)
subtotalrequirednumberСумма позиций до скидки, копейки
discountPercentrequirednumberСкидка на весь чек, %
totalrequirednumberИтог к оплате, копейки
paymentMethodrequiredstring
Values: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtrequiredstring | nullУточнение способа оплаты
receivedAmountrequirednumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdrequiredstringID кассира
refundOfSaleIdrequiredstring | nullID исходного чека; заполнен только у возврата
customerIdrequiredstring | nullID клиента
customerNamerequiredstring | nullИмя покупателя
customerPhonerequiredstring | nullТелефон покупателя
channelrequiredstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtrequiredstring (date-time)Момент продажи (ISO 8601)
linesrequiredSaleLineResponse[]Позиции чека
paymentsrequiredSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)

ServiceCostItemInputDto

FieldTypeDescription
kindrequiredstring
Values: materiallabor
Тип позиции
productIdstring (uuid) | nullUUID товара из справочника. null/undefined — freeform.
namerequiredstringНазвание (snapshot)
Example: Цемент М500
quantityrequirednumberКоличество (десятичное)
Example: 2.5
unitCostrequirednumberСебестоимость единицы, копейки
Example: 50000

ServiceCostItemResponse

FieldTypeDescription
idrequiredstringID позиции
serviceIdrequiredstringID услуги
kindrequiredstring
Values: materiallabor
Тип позиции
productIdrequiredstring | nullID товара из справочника; null — freeform-позиция
namerequiredstringНазвание (snapshot)
quantityrequirednumberКоличество (десятичное)
unitCostrequirednumberСебестоимость единицы, копейки
lineTotalrequirednumberИтог по строке, копейки
positionrequirednumberПорядок в составе

ServiceResponse

FieldTypeDescription
idrequiredstringID услуги
companyIdrequiredstringID компании
skurequiredstringАртикул
namerequiredstringНазвание услуги
nameI18nrequiredobjectПереводы названия по локали
dictionary of string
categoryIdrequiredstring | nullID категории; null — без категории
priceModelrequiredstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
pricerequirednumberЦена в копейках
durationMinutesrequirednumber | nullДлительность, мин
totalCostrequirednumberСумма по составу затрат, копейки
statusrequiredstring
Values: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

ShiftResponse

FieldTypeDescription
idrequiredstringID смены
companyIdrequiredstringID компании
numberrequirednumberНомер смены (сквозной по компании)
openedAtrequiredstring (date-time)Открыта (ISO 8601)
closedAtrequiredstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashrequirednumberНачальная сумма в копейках
statusrequiredstring
Values: openclosed
Статус смены
openedByIdrequiredstringID сотрудника, открывшего смену
closedByIdrequiredstring | nullID сотрудника, закрывшего смену

StockListItemResponse

FieldTypeDescription
idrequiredstringID записи остатка
productIdrequiredstringID товара
productNamerequiredstringНазвание товара
productSkurequiredstringАртикул товара
variantIdrequiredstring | nullID варианта товара; null — товар без вариантов
variantSkurequiredstring | nullАртикул варианта
variantAttributesrequiredobject | nullАтрибуты варианта: { "color": "red", "size": "M" }
dictionary of string
categoryIdrequiredstring | nullID категории товара
categoryNamerequiredstring | nullНазвание категории
warehouseIdrequiredstringID склада
warehouseNamerequiredstringНазвание склада
qtyrequirednumberФизический остаток
reservedrequirednumberЗарезервировано под незавершённые заказы
availablerequirednumberСвободно к продаже: qty − reserved
reorderPointrequirednumberПорог дозаказа (0 — не задан)
isLowStockrequiredbooleanОстаток на пороге или ниже
updatedAtrequiredstring (date-time)Последнее движение по остатку (ISO 8601)

SupplierResponse

FieldTypeDescription
idrequiredstringID поставщика
companyIdrequiredstringID компании
namerequiredstringНазвание поставщика
contactNamerequiredstring | nullКонтактное лицо
phonerequiredstring | nullТелефон
emailrequiredstring | nullE-mail
innrequiredstring | nullИНН
addressrequiredstring | nullАдрес
noterequiredstring | nullВнутренняя заметка
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)

UnitResponse

FieldTypeDescription
idrequiredstringID единицы
companyIdrequiredstringID компании
coderequiredstringКод, уникален в компании
namerequiredstringНазвание
kindrequiredstring
Values: countweightvolumetimelength
Род единицы
baseRatiorequirednumberКоэффициент к базовой единице рода.
isFractionalrequiredbooleanРазрешён дробный ввод количества
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

UpdateBookingDto

FieldTypeDescription
resourceIdstring (uuid)ID ресурса
startAtstringISO 8601
endAtstringISO 8601
serviceIdstring (uuid) | nullID услуги каталога (null — снять)
clientIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
customerNamestring | nullИмя клиента (если без карточки)
customerPhonestring | nullТелефон клиента
dealIdstring (uuid) | nullID связанной сделки (null — отвязать)
assignedToIdstring (uuid) | nullID исполнителя (null — снять)
pricenumberЦена брони в копейках
depositAmountnumberЗалог в копейках
depositStatusstring
Values: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumber | nullВместимость группового занятия (null — снять групповой режим).
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Полная замена доп.ресурсов мультиресурсной брони (S8).
array of string
addressstring | nullАдрес проведения (выезд); null — снять адрес.
notestring | nullВнутренний комментарий
visitNotestring | nullЗаметка мастера по визиту (формула, результат работы, пожелания). Разрешена и после завершения записи — её пишут по факту приёма.

UpdateCalendarEventDto

FieldTypeDescription
kindstring
Values: eventwork_shiftday_offtaskreminder
Вид события
titlestringЗаголовок события
descriptionstring | nullОписание события
startAtstringНачало события (ISO 8601)
endAtstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
Default: false
isCompanyWidebooleanВидно всем сотрудникам компании
Default: false
colorstring | nullЦвет события (HEX)
Example: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
array of string
recurrenceobjectПравило повторения; null — разовое событие
FieldTypeDescription
freqrequiredstring
Values: dailyweeklymonthly
Частота повторения
intervalrequirednumberШаг повторения: каждые N дней/недель/месяцев
Default: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
array of number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

UpdateCategoryDto

FieldTypeDescription
namestringНазвание категории
Example: Напитки
parentIdstring (uuid) | nullID родительской категории; null — корень
iconstringИмя иконки
Default: folder
colorstring | nullHEX цвета иконки
bgstring | nullHEX цвета фона иконки
sortOrdernumberПорядок сортировки
Default: 0
prefixstring | nullПрефикс артикула: A-Z, 1-4 символа
Example: CFE

UpdateClientDto

FieldTypeDescription
kindstring
Values: individuallegal
Физлицо или юрлицо
displayNamestringОтображаемое имя — ФИО для физлица, название для юрлица
firstNamestring | nullИмя
lastNamestring | nullФамилия
middleNamestring | nullОтчество
companyNamestring | nullНазвание компании (юрлицо)
positionstring | nullДолжность контактного лица
phonestring | nullТелефон
emailstring | nullE-mail
telegramChatIdstring | nullTelegram chat id для исходящих сообщений (канал telegram).
whatsappPhonestring | nullНомер WhatsApp; пустой → используется phone.
notestring | nullВнутренняя заметка
tagsstring[]Теги
array of string
birthdaystring (date) | nullДата рождения / основания (ISO 8601)
assignedToIdstring (uuid) | nullID ответственного сотрудника
innstring | nullИНН (B2B, для документов)
kppstring | nullКПП (B2B)
legalAddressstring | nullЮр. адрес (B2B)
bankDetailsstring | nullБанковские реквизиты строкой (B2B)
contractNumberstring | nullНомер договора (B2B)
paymentTermsDaysnumber | nullСрок оплаты по договору, дни
creditLimitnumber | nullКредитный лимит B2B, копейки (0 = без лимита)
groupIdstring (uuid) | nullГруппа контрагентов (опт): общий прайс-лист и скидка сегмента
priceListIdstring (uuid) | nullПерсональный прайс-лист (опт), перекрывает прайс группы
slaHoursnumber | nullSLA по договору, часы
marketingConsentbooleanСогласие на маркетинговые рассылки (CL9)
statusstring
Values: activearchived
Статус клиента

UpdateDealDto

FieldTypeDescription
itemsDealLineInputDto[]Полная замена позиций сметы
clientIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
addressIdstring (uuid) | nullID адреса клиента (null — отвязать)
customerNamestring | nullИмя заказчика
customerPhonestring | nullТелефон заказчика
customerEmailstring | nullE-mail заказчика
customerNotestring | nullПожелания заказчика
assignedToIdstring (uuid) | nullID ответственного сотрудника (null — снять)
addressstring | nullАдрес выполнения (для field_job)
venueResourceIdstring (uuid) | nullПлощадка мероприятия — ресурс расписания (null — снять).
scheduledAtstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtstring (date-time) | nullСрок исполнения (ISO 8601)
notestring | nullВнутренний комментарий
discountPercentnumberСкидка на всю сделку, %
sourceIdstring (uuid) | nullID источника лида из справочника (D7), null — отвязать
budgetnumber | nullПлановый бюджет проекта в копейках (D4), null — снять
headcountnumber | nullЧисло гостей мероприятия, null — снять. Позиции сметы с нормой на гостя пересчитываются под новое значение.

UpdateLeadDto

FieldTypeDescription
statusrequiredstring
Values: newin_progressconvertedspam
Новый статус лида

UpdateOrderDto

FieldTypeDescription
itemsOrderLineInputDto[]Полная замена позиций заказа (только в статусах new/confirmed)
customerIdstring (uuid) | nullID клиента (null — отвязать)
assetIdstring (uuid) | nullID объекта обслуживания (null — отвязать)
addressIdstring (uuid) | nullID адреса клиента (null — отвязать)
customerNamestring | nullИмя покупателя
customerPhonestring | nullТелефон покупателя
customerEmailstring | nullE-mail покупателя
customerNotestring | nullПожелания покупателя
channelstring | nullКанал привлечения
sourcestring | nullИсточник
dueAtstring (date-time) | nullСрок (legacy, ISO 8601)
readyBystring (date-time) | nullСрок готовности (ISO 8601, O8)
payDueAtstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601, O8)
notestring | nullВнутренний комментарий
discountPercentnumberСкидка на весь заказ, %
prepaidAmountnumberПредоплата — целевая Σ оплат (копейки)
assignedToIdstring (uuid) | nullID ответственного сотрудника (null — снять)

UpdateProductDto

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: CFE-0012
barcodestring | nullШтрихкод
Example: 4607034630621
namestringНазвание товара
Example: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
dictionary of string
descriptionI18nobjectПереводы описания по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
pricenumberЦена в копейках
Example: 240000
costnumberСебестоимость в копейках
Default: 0
unitstringЕдиница измерения (код)
Default: pcs
unitIdstring (uuid) | nullFK на справочник единиц (C5).
packQtynumber | nullФасовка: кол-во packUnit в одной unit.
packUnitIdstring (uuid) | nullFK на единицу фасовки.
minOrderQtynumber | nullМинимальная партия к заказу (опт). Пусто — без ограничения.
orderStepQtynumber | nullКратность отгрузки (опт): коробка 12 шт → 12, 24, 36.
costComponentsobject[]Разбивка себестоимости (C8): [{ label, productId?, qty?, unitId?, unitCost?, amount }]
array of object
isBundlebooleanКомплект/набор (BOM)
Default: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
array of object
statusstring
Values: activehidden
Статус карточки
Default: active
hasStockbooleanВести складской учёт остатков по товару
Default: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Example:
brandstring | nullБренд
Example: Lavazza
modelstring | nullМодель
Example: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).

UpdateResourceDto

FieldTypeDescription
typestring
Values: staffseatunitequipment
Тип ресурса
namestringНазвание ресурса
capacitynumberСколько броней ресурс держит одновременно
seatsnumber | nullЧисло мест площадки; null — снять.
colorstring | nullЦвет в календаре (HEX)
bufferMinutesnumberБуфер между бронями, минут
minDurationMinutesnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityResourceAvailabilityWindowDto[]Окна доступности по дням недели
isActivebooleanРесурс активен и доступен для записи
housekeepingStatestring
Values: readydirtycleaningout_of_service
Состояние уборки юнита (ручная установка).
userIdstring (uuid) | nullУчётка сотрудника за ресурсом (null — отвязать).
notestring | nullВнутренняя заметка

UpdateServiceDto

FieldTypeDescription
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Example: SVC-0001
namestringНазвание услуги
Example: Консультация бариста
nameI18nobjectПереводы названия по локали (C9).
dictionary of string
categoryIdstring (uuid) | nullID категории; null — без категории
priceModelstring
Values: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
Default: fixed
pricenumberЦена в копейках
Example: 150000
durationMinutesnumber | nullДлительность услуги в минутах (для записи/брони)
Example: 60
statusstring
Values: activehidden
Статус карточки
Default: active
costItemsServiceCostItemInputDto[]Состав затрат (материалы и работы). Replace-all при наличии в запросе.

UpdateSupplierDto

FieldTypeDescription
namestringНазвание поставщика
contactNamestring | nullКонтактное лицо
phonestring | nullТелефон
emailstring | nullE-mail
innstring | nullИНН
addressstring | nullАдрес
notestring | nullВнутренняя заметка

UpdateWarehouseDto

FieldTypeDescription
namestringНазвание склада
Example: Основной
addressstring | nullАдрес склада
managerUserIdstring (uuid) | nullID ответственного сотрудника
branchIdstring (uuid)Филиал склада (1:1). Если не указан — берётся филиал компании без склада.

UserResponse

FieldTypeDescription
idrequiredstringID сотрудника
firstNamerequiredstringИмя
lastNamerequiredstringФамилия
emailrequiredstringE-mail (логин)
rolerequiredstring
Values: adminmanageremployeedirector
Роль-персона (admin, manager, employee…)
roleIdrequiredstring | nullРоль компании
roleNamerequiredstring | nullНазвание роли
companyIdrequiredstringID компании
statusrequirednumberСтатус: 0=Registered, 1=Active, 2=Blocked, 3=Deleted
aboutrequiredstring | nullО себе
phonerequiredstring | nullТелефон
timezonerequiredstring | nullЧасовой пояс (IANA, например Europe/Moscow)
avatarFileIdrequiredstring | nullID файла аватара
avatarUrlrequiredstring | nullURL аватара
twoFactorEnabledrequiredbooleanВключена двухфакторная аутентификация
ipRestrictionEnabledrequiredbooleanСотрудник ограничил себе вход списком IP-адресов.
emailVerifiedAtrequiredstring (date-time) | nullКогда подтверждён e-mail (ISO 8601)
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

WarehouseListItemResponse

FieldTypeDescription
idrequiredstringID склада
namerequiredstringНазвание склада
addressrequiredstring | nullАдрес склада
isDefaultrequiredbooleanСклад по умолчанию
managerUserIdrequiredstring | nullID ответственного сотрудника
managerNamerequiredstring | nullИмя ответственного сотрудника
totalQtyrequirednumberСумма qty по складу
productsCountrequirednumberКол-во SKU с qty > 0 на складе
createdAtrequiredstring (date-time)
updatedAtrequiredstring (date-time)

WarehouseResponse

FieldTypeDescription
idrequiredstringID склада
companyIdrequiredstringID компании
namerequiredstringНазвание склада
addressrequiredstring | nullАдрес склада
isDefaultrequiredbooleanСклад по умолчанию для приёмок и списаний
managerUserIdrequiredstring | nullID ответственного сотрудника
createdAtrequiredstring (date-time)Создано (ISO 8601)
updatedAtrequiredstring (date-time)Обновлено (ISO 8601)