Перейти к основному содержимому

Справочник API

Справочник — полный перечень методов External API с параметрами, телами запросов и схемами ответов. Он собран из той же OpenAPI-спецификации, что и код backend, и обновляется вместе с каждым релизом: расхождение между справочником и реальными ручками не проходит проверку при выкате.

Правила аутентификации, форматы, пагинация, идемпотентность и коды ошибок описаны в статье External API — здесь только сами методы.

Как читать справочник

  • Раздел — ресурс: каталог, клиенты, заказы, сделки, брони и так далее. Оглавление справа ведёт по разделам.
  • Метод и путь — относительно базового URL https://app.easymb.ru/api/external/v1. {id} в пути — UUID записи.
  • Scope — какое право должно быть у токена. catalog:write включает catalog:read; *:read и *:write открывают все ресурсы.
  • Компонент — какой компонент должен быть включён у компании, иначе ответ 403. Системные (core, catalog, calendar, messenger) включены всегда.
  • Параметры — query и path. Постраничные списки принимают page, pageSize и фильтры конкретного ресурса (sort, order, search — где перечислены); справочники отвечают массивом без страниц. У мутирующих операций описан заголовок X-Idempotency-Key.
  • Ответы 4xx — у каждой операции перечислены общие ошибки контура с их кодами; форма тела — схема ExternalErrorResponse.
  • Тело запроса и Ответы — схемы полей. Пометка «обязательно» относится к запросу; в ответе поле с | null может быть пустым.
  • Схемы данных в конце — именованные объекты, на которые ссылаются методы: одна и та же схема заказа приходит и в списке, и в чтении, и в создании.

Как скачать спецификацию и сгенерировать клиент

Файл external-openapi.json доступен для скачивания в шапке справочника. Его можно импортировать в Postman или Insomnia и получить готовую коллекцию запросов, а генератор клиентов соберёт типизированную обёртку под ваш язык:

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

Базовый URL уже прописан в спецификации, токен передайте в заголовке Authorization: Bearer emb_live_….

Версия
1.0
Базовый URL
https://app.easymb.ru/api/external/v1
Операций
85
Спецификация
external-openapi.json

catalog

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

GET/catalog/products

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

Scope
catalog:read
Компонент
catalog

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноProductResponse[]
массив из ProductResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

ПолеТипОписание
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Пример: CFE-0012
barcodestring | nullШтрихкод
Пример: 4607034630621
nameобязательноstringНазвание товара
Пример: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
словарь значений string
descriptionI18nobjectПереводы описания по локали (C9).
словарь значений string
categoryIdstring (uuid) | nullID категории; null — без категории
priceобязательноnumberЦена в копейках
Пример: 240000
costnumberСебестоимость в копейках
По умолчанию: 0
unitstringЕдиница измерения (код)
По умолчанию: 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 }]
массив из object
isBundlebooleanКомплект/набор (BOM)
По умолчанию: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
массив из object
statusstring
Значения: activehidden
Статус карточки
По умолчанию: active
hasStockbooleanВести складской учёт остатков по товару
По умолчанию: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Пример:
brandstring | nullБренд
Пример: Lavazza
modelstring | nullМодель
Пример: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).
массив из ProductAttributeValueInput

Ответы

201
ПолеТипОписание
idобязательноstringID товара
companyIdобязательноstringID компании
skuобязательноstringАртикул
barcodeобязательноstring | nullШтрихкод
nameобязательноstringНазвание товара
descriptionобязательноstring | nullОписание
nameI18nобязательноobjectПереводы названия по локали: { "de": "..." }
словарь значений string
descriptionI18nобязательноobjectПереводы описания по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
brandобязательноstring | nullБренд
modelобязательноstring | nullМодель
priceобязательноnumberЦена в копейках
costобязательноnumberСебестоимость в копейках
unitобязательноstringЕдиница измерения (код, денорм)
unitIdобязательноstring | nullID единицы измерения из справочника
packQtyобязательноnumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyобязательноnumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyобязательноnumber | nullКратность отгрузки (опт); null — любая
packUnitIdобязательноstring | nullID единицы фасовки
costComponentsобязательноobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
массив из object
isBundleобязательноbooleanКомплект/набор (BOM)
modifierGroupsобязательноobject[]Группы модификаторов позиции с надбавками
массив из object
statusобязательноstring
Значения: activehidden
Статус карточки
hasStockобязательноbooleanВедётся складской учёт остатков
defaultSupplierIdобязательноstring | nullID поставщика по умолчанию (авто-дозаказ)
emojiобязательноstring | nullЭмодзи-иконка
photoFileIdобязательноstring | nullID файла основного фото
thumbnailFileIdобязательноstring | nullID файла миниатюры
attributeValuesобязательноProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID товара
companyIdобязательноstringID компании
skuобязательноstringАртикул
barcodeобязательноstring | nullШтрихкод
nameобязательноstringНазвание товара
descriptionобязательноstring | nullОписание
nameI18nобязательноobjectПереводы названия по локали: { "de": "..." }
словарь значений string
descriptionI18nобязательноobjectПереводы описания по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
brandобязательноstring | nullБренд
modelобязательноstring | nullМодель
priceобязательноnumberЦена в копейках
costобязательноnumberСебестоимость в копейках
unitобязательноstringЕдиница измерения (код, денорм)
unitIdобязательноstring | nullID единицы измерения из справочника
packQtyобязательноnumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyобязательноnumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyобязательноnumber | nullКратность отгрузки (опт); null — любая
packUnitIdобязательноstring | nullID единицы фасовки
costComponentsобязательноobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
массив из object
isBundleобязательноbooleanКомплект/набор (BOM)
modifierGroupsобязательноobject[]Группы модификаторов позиции с надбавками
массив из object
statusобязательноstring
Значения: activehidden
Статус карточки
hasStockобязательноbooleanВедётся складской учёт остатков
defaultSupplierIdобязательноstring | nullID поставщика по умолчанию (авто-дозаказ)
emojiобязательноstring | nullЭмодзи-иконка
photoFileIdобязательноstring | nullID файла основного фото
thumbnailFileIdобязательноstring | nullID файла миниатюры
attributeValuesобязательноProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

ПолеТипОписание
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Пример: CFE-0012
barcodestring | nullШтрихкод
Пример: 4607034630621
namestringНазвание товара
Пример: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
словарь значений string
descriptionI18nobjectПереводы описания по локали (C9).
словарь значений string
categoryIdstring (uuid) | nullID категории; null — без категории
pricenumberЦена в копейках
Пример: 240000
costnumberСебестоимость в копейках
По умолчанию: 0
unitstringЕдиница измерения (код)
По умолчанию: 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 }]
массив из object
isBundlebooleanКомплект/набор (BOM)
По умолчанию: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
массив из object
statusstring
Значения: activehidden
Статус карточки
По умолчанию: active
hasStockbooleanВести складской учёт остатков по товару
По умолчанию: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Пример:
brandstring | nullБренд
Пример: Lavazza
modelstring | nullМодель
Пример: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).
массив из ProductAttributeValueInput

Ответы

200
ПолеТипОписание
idобязательноstringID товара
companyIdобязательноstringID компании
skuобязательноstringАртикул
barcodeобязательноstring | nullШтрихкод
nameобязательноstringНазвание товара
descriptionобязательноstring | nullОписание
nameI18nобязательноobjectПереводы названия по локали: { "de": "..." }
словарь значений string
descriptionI18nобязательноobjectПереводы описания по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
brandобязательноstring | nullБренд
modelобязательноstring | nullМодель
priceобязательноnumberЦена в копейках
costобязательноnumberСебестоимость в копейках
unitобязательноstringЕдиница измерения (код, денорм)
unitIdобязательноstring | nullID единицы измерения из справочника
packQtyобязательноnumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyобязательноnumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyобязательноnumber | nullКратность отгрузки (опт); null — любая
packUnitIdобязательноstring | nullID единицы фасовки
costComponentsобязательноobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
массив из object
isBundleобязательноbooleanКомплект/набор (BOM)
modifierGroupsобязательноobject[]Группы модификаторов позиции с надбавками
массив из object
statusобязательноstring
Значения: activehidden
Статус карточки
hasStockобязательноbooleanВедётся складской учёт остатков
defaultSupplierIdобязательноstring | nullID поставщика по умолчанию (авто-дозаказ)
emojiобязательноstring | nullЭмодзи-иконка
photoFileIdобязательноstring | nullID файла основного фото
thumbnailFileIdобязательноstring | nullID файла миниатюры
attributeValuesобязательноProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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).

Scope
catalog:write
Компонент
catalog

Параметры

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

Ответы

200
ПолеТипОписание
idобязательноstringID товара
companyIdобязательноstringID компании
skuобязательноstringАртикул
barcodeобязательноstring | nullШтрихкод
nameобязательноstringНазвание товара
descriptionобязательноstring | nullОписание
nameI18nобязательноobjectПереводы названия по локали: { "de": "..." }
словарь значений string
descriptionI18nобязательноobjectПереводы описания по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
brandобязательноstring | nullБренд
modelобязательноstring | nullМодель
priceобязательноnumberЦена в копейках
costобязательноnumberСебестоимость в копейках
unitобязательноstringЕдиница измерения (код, денорм)
unitIdобязательноstring | nullID единицы измерения из справочника
packQtyобязательноnumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyобязательноnumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyобязательноnumber | nullКратность отгрузки (опт); null — любая
packUnitIdобязательноstring | nullID единицы фасовки
costComponentsобязательноobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
массив из object
isBundleобязательноbooleanКомплект/набор (BOM)
modifierGroupsобязательноobject[]Группы модификаторов позиции с надбавками
массив из object
statusобязательноstring
Значения: activehidden
Статус карточки
hasStockобязательноbooleanВедётся складской учёт остатков
defaultSupplierIdобязательноstring | nullID поставщика по умолчанию (авто-дозаказ)
emojiобязательноstring | nullЭмодзи-иконка
photoFileIdобязательноstring | nullID файла основного фото
thumbnailFileIdобязательноstring | nullID файла миниатюры
attributeValuesобязательноProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

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

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystring
categoryIdquerystring
statusquerystring
Значения: activehiddenall
priceMinquerynumberМин. цена в копейках
priceMaxquerynumberМакс. цена в копейках
priceModelquerystring
Значения: fixedper_hourper_minuteper_dayper_item
sortquerystring
Значения: nameskupricetotalCostcreatedAt
orderquerystring
Значения: ascdesc

Ответы

200
ПолеТипОписание
itemsобязательноServiceResponse[]
массив из ServiceResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID услуги
companyIdобязательноstringID компании
skuобязательноstringАртикул
nameобязательноstringНазвание услуги
nameI18nобязательноobjectПереводы названия по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
priceModelобязательноstring
Значения: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
priceобязательноnumberЦена в копейках
durationMinutesобязательноnumber | nullДлительность, мин
totalCostобязательноnumberСумма по составу затрат, копейки
statusобязательноstring
Значения: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
массив из ServiceCostItemResponse
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID услуги
companyIdобязательноstringID компании
skuобязательноstringАртикул
nameобязательноstringНазвание услуги
nameI18nобязательноobjectПереводы названия по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
priceModelобязательноstring
Значения: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
priceобязательноnumberЦена в копейках
durationMinutesобязательноnumber | nullДлительность, мин
totalCostобязательноnumberСумма по составу затрат, копейки
statusобязательноstring
Значения: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
массив из ServiceCostItemResponse
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID услуги
companyIdобязательноstringID компании
skuобязательноstringАртикул
nameобязательноstringНазвание услуги
nameI18nобязательноobjectПереводы названия по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
priceModelобязательноstring
Значения: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
priceобязательноnumberЦена в копейках
durationMinutesобязательноnumber | nullДлительность, мин
totalCostобязательноnumberСумма по составу затрат, копейки
statusобязательноstring
Значения: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
массив из ServiceCostItemResponse
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Ответы

200
ПолеТипОписание
idобязательноstringID услуги
companyIdобязательноstringID компании
skuобязательноstringАртикул
nameобязательноstringНазвание услуги
nameI18nобязательноobjectПереводы названия по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
priceModelобязательноstring
Значения: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
priceобязательноnumberЦена в копейках
durationMinutesобязательноnumber | nullДлительность, мин
totalCostобязательноnumberСумма по составу затрат, копейки
statusобязательноstring
Значения: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
массив из ServiceCostItemResponse
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

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

Scope
catalog:read
Компонент
catalog

Ответы

200
массив из CategoryResponse
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

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID категории
companyIdобязательноstringID компании
parentIdобязательноstring | nullID родительской категории; null — корень
nameобязательноstringНазвание категории
iconобязательноstringИмя иконки
colorобязательноstring | nullHEX цвета иконки
bgобязательноstring | nullHEX цвета фона иконки
sortOrderобязательноnumberПорядок сортировки
prefixобязательноstring | nullПрефикс артикулов: A-Z, 1-4 символа
Пример: CFE
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID категории
companyIdобязательноstringID компании
parentIdобязательноstring | nullID родительской категории; null — корень
nameобязательноstringНазвание категории
iconобязательноstringИмя иконки
colorобязательноstring | nullHEX цвета иконки
bgобязательноstring | nullHEX цвета фона иконки
sortOrderобязательноnumberПорядок сортировки
prefixобязательноstring | nullПрефикс артикулов: A-Z, 1-4 символа
Пример: CFE
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID категории
companyIdобязательноstringID компании
parentIdобязательноstring | nullID родительской категории; null — корень
nameобязательноstringНазвание категории
iconобязательноstringИмя иконки
colorобязательноstring | nullHEX цвета иконки
bgобязательноstring | nullHEX цвета фона иконки
sortOrderобязательноnumberПорядок сортировки
prefixобязательноstring | nullПрефикс артикулов: A-Z, 1-4 символа
Пример: CFE
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
catalog:write
Компонент
catalog

Параметры

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

Ответы

204

Без тела

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` строк заказа, продажи и приёмки, а также в корректировке остатков.

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
массив из ProductVariantResponse
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[]` при создании и изменении товара.

Scope
catalog:read
Компонент
catalog

Параметры

ПараметрГдеТипОписание
categoryIdquerystring | null
primaryOnlyqueryboolean

Ответы

200
массив из AttributeDefinitionResponse
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` товара.

Scope
catalog:read
Компонент
catalog

Ответы

200
массив из 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

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

Scope
clients:read
Компонент
clients

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноClientListItemResponse[]
массив из ClientListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
clients:write
Компонент
clients

Параметры

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

Тело запроса

ПолеТипОписание
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
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[]Теги
массив из 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)

Ответы

201
ПолеТипОписание
idобязательноstringID клиента
companyIdобязательноstringID компании
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNameобязательноstring | nullИмя
lastNameобязательноstring | nullФамилия
middleNameобязательноstring | nullОтчество
companyNameобязательноstring | nullНазвание компании (юрлицо)
positionобязательноstring | nullДолжность контактного лица
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
telegramChatIdобязательноstring | nullTelegram chat id для исходящих сообщений
whatsappPhoneобязательноstring | nullНомер WhatsApp; null — используется phone
innобязательноstring | nullИНН (B2B)
kppобязательноstring | nullКПП (B2B)
legalAddressобязательноstring | nullЮр. адрес (B2B)
bankDetailsобязательноstring | nullБанковские реквизиты строкой (B2B)
noteобязательноstring | nullВнутренняя заметка
tagsобязательноstring[]Теги
массив из string
birthdayобязательноstring (date) | nullДата рождения / основания (ISO 8601)
statusобязательноstring
Значения: activearchived
Статус клиента
balanceобязательноnumberБаланс/абонемент в копейках
pointsобязательноnumberБаллы лояльности (копейки-эквивалент)
contractNumberобязательноstring | nullНомер договора (B2B)
groupIdобязательноstring | nullID группы контрагентов (опт)
priceListIdобязательноstring | nullID персонального прайс-листа (опт)
paymentTermsDaysобязательноnumber | nullСрок оплаты по договору, дни
creditLimitобязательноnumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursобязательноnumber | nullSLA по договору, часы
marketingConsentобязательноbooleanСогласие на маркетинговые рассылки
marketingConsentAtобязательноstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourceобязательноstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtобязательноstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdобязательноstring | nullID ответственного сотрудника
createdByIdобязательноstringID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
clients:read
Компонент
clients

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID клиента
companyIdобязательноstringID компании
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNameобязательноstring | nullИмя
lastNameобязательноstring | nullФамилия
middleNameобязательноstring | nullОтчество
companyNameобязательноstring | nullНазвание компании (юрлицо)
positionобязательноstring | nullДолжность контактного лица
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
telegramChatIdобязательноstring | nullTelegram chat id для исходящих сообщений
whatsappPhoneобязательноstring | nullНомер WhatsApp; null — используется phone
innобязательноstring | nullИНН (B2B)
kppобязательноstring | nullКПП (B2B)
legalAddressобязательноstring | nullЮр. адрес (B2B)
bankDetailsобязательноstring | nullБанковские реквизиты строкой (B2B)
noteобязательноstring | nullВнутренняя заметка
tagsобязательноstring[]Теги
массив из string
birthdayобязательноstring (date) | nullДата рождения / основания (ISO 8601)
statusобязательноstring
Значения: activearchived
Статус клиента
balanceобязательноnumberБаланс/абонемент в копейках
pointsобязательноnumberБаллы лояльности (копейки-эквивалент)
contractNumberобязательноstring | nullНомер договора (B2B)
groupIdобязательноstring | nullID группы контрагентов (опт)
priceListIdобязательноstring | nullID персонального прайс-листа (опт)
paymentTermsDaysобязательноnumber | nullСрок оплаты по договору, дни
creditLimitобязательноnumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursобязательноnumber | nullSLA по договору, часы
marketingConsentобязательноbooleanСогласие на маркетинговые рассылки
marketingConsentAtобязательноstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourceобязательноstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtобязательноstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdобязательноstring | nullID ответственного сотрудника
createdByIdобязательноstringID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
clients:write
Компонент
clients

Параметры

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

Тело запроса

ПолеТипОписание
kindstring
Значения: 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[]Теги
массив из 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
Значения: activearchived
Статус клиента

Ответы

200
ПолеТипОписание
idобязательноstringID клиента
companyIdобязательноstringID компании
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNameобязательноstring | nullИмя
lastNameобязательноstring | nullФамилия
middleNameобязательноstring | nullОтчество
companyNameобязательноstring | nullНазвание компании (юрлицо)
positionобязательноstring | nullДолжность контактного лица
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
telegramChatIdобязательноstring | nullTelegram chat id для исходящих сообщений
whatsappPhoneобязательноstring | nullНомер WhatsApp; null — используется phone
innобязательноstring | nullИНН (B2B)
kppобязательноstring | nullКПП (B2B)
legalAddressобязательноstring | nullЮр. адрес (B2B)
bankDetailsобязательноstring | nullБанковские реквизиты строкой (B2B)
noteобязательноstring | nullВнутренняя заметка
tagsобязательноstring[]Теги
массив из string
birthdayобязательноstring (date) | nullДата рождения / основания (ISO 8601)
statusобязательноstring
Значения: activearchived
Статус клиента
balanceобязательноnumberБаланс/абонемент в копейках
pointsобязательноnumberБаллы лояльности (копейки-эквивалент)
contractNumberобязательноstring | nullНомер договора (B2B)
groupIdобязательноstring | nullID группы контрагентов (опт)
priceListIdобязательноstring | nullID персонального прайс-листа (опт)
paymentTermsDaysобязательноnumber | nullСрок оплаты по договору, дни
creditLimitобязательноnumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursобязательноnumber | nullSLA по договору, часы
marketingConsentобязательноbooleanСогласие на маркетинговые рассылки
marketingConsentAtобязательноstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourceобязательноstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtобязательноstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdобязательноstring | nullID ответственного сотрудника
createdByIdобязательноstringID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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.

Scope
clients:write
Компонент
clients

Параметры

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

Ответы

200
ПолеТипОписание
idобязательноstringID клиента
companyIdобязательноstringID компании
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNameобязательноstring | nullИмя
lastNameобязательноstring | nullФамилия
middleNameобязательноstring | nullОтчество
companyNameобязательноstring | nullНазвание компании (юрлицо)
positionобязательноstring | nullДолжность контактного лица
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
telegramChatIdобязательноstring | nullTelegram chat id для исходящих сообщений
whatsappPhoneобязательноstring | nullНомер WhatsApp; null — используется phone
innобязательноstring | nullИНН (B2B)
kppобязательноstring | nullКПП (B2B)
legalAddressобязательноstring | nullЮр. адрес (B2B)
bankDetailsобязательноstring | nullБанковские реквизиты строкой (B2B)
noteобязательноstring | nullВнутренняя заметка
tagsобязательноstring[]Теги
массив из string
birthdayобязательноstring (date) | nullДата рождения / основания (ISO 8601)
statusобязательноstring
Значения: activearchived
Статус клиента
balanceобязательноnumberБаланс/абонемент в копейках
pointsобязательноnumberБаллы лояльности (копейки-эквивалент)
contractNumberобязательноstring | nullНомер договора (B2B)
groupIdобязательноstring | nullID группы контрагентов (опт)
priceListIdобязательноstring | nullID персонального прайс-листа (опт)
paymentTermsDaysобязательноnumber | nullСрок оплаты по договору, дни
creditLimitобязательноnumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursобязательноnumber | nullSLA по договору, часы
marketingConsentобязательноbooleanСогласие на маркетинговые рассылки
marketingConsentAtобязательноstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourceобязательноstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtобязательноstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdобязательноstring | nullID ответственного сотрудника
createdByIdобязательноstringID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

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

Scope
leads:read
Компонент
marketing

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Значения: createdAtstatus
orderquerystring
Значения: ascdesc
statusquerystring
Значения: newin_progressconvertedspam
sourcequerystring
assignedToIdquerystringID ответственного или `unassigned` (без ответственного).

Ответы

200
ПолеТипОписание
itemsобязательноLeadResponse[]
массив из LeadResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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`.

Scope
leads:write
Компонент
marketing

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID лида
sourceобязательноstringИсточник: `api`, `public_form`, `telegram`…
channelобязательноstring | nullКанал внутри источника (например, имя формы или бота)
nameобязательноstring | nullИмя контакта
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
messageобязательноstring | nullТекст обращения
statusобязательноstring
Значения: newin_progressconvertedspam
Статус обработки
externalIdобязательноstring | nullВнешний id из источника (для дедупликации)
rawобязательноobject | nullСырой payload источника (для ручного разбора).
object
clientIdобязательноstring (uuid) | nullID клиента после конвертации
dealIdобязательноstring (uuid) | nullID сделки после конвертации
assignedToIdобязательноstring (uuid) | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
utmобязательноobject | nullUTM-метки перехода.
словарь значений string
createdAtобязательноstring (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}

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

Scope
leads:read
Компонент
marketing

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID лида
sourceобязательноstringИсточник: `api`, `public_form`, `telegram`…
channelобязательноstring | nullКанал внутри источника (например, имя формы или бота)
nameобязательноstring | nullИмя контакта
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
messageобязательноstring | nullТекст обращения
statusобязательноstring
Значения: newin_progressconvertedspam
Статус обработки
externalIdобязательноstring | nullВнешний id из источника (для дедупликации)
rawобязательноobject | nullСырой payload источника (для ручного разбора).
object
clientIdобязательноstring (uuid) | nullID клиента после конвертации
dealIdобязательноstring (uuid) | nullID сделки после конвертации
assignedToIdобязательноstring (uuid) | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
utmобязательноobject | nullUTM-метки перехода.
словарь значений string
createdAtобязательноstring (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

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

Scope
leads:write
Компонент
marketing

Параметры

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

Тело запроса

ПолеТипОписание
statusобязательноstring
Значения: newin_progressconvertedspam
Новый статус лида

Ответы

200
ПолеТипОписание
idобязательноstringID лида
sourceобязательноstringИсточник: `api`, `public_form`, `telegram`…
channelобязательноstring | nullКанал внутри источника (например, имя формы или бота)
nameобязательноstring | nullИмя контакта
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
messageобязательноstring | nullТекст обращения
statusобязательноstring
Значения: newin_progressconvertedspam
Статус обработки
externalIdобязательноstring | nullВнешний id из источника (для дедупликации)
rawобязательноobject | nullСырой payload источника (для ручного разбора).
object
clientIdобязательноstring (uuid) | nullID клиента после конвертации
dealIdобязательноstring (uuid) | nullID сделки после конвертации
assignedToIdобязательноstring (uuid) | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
utmобязательноobject | nullUTM-метки перехода.
словарь значений string
createdAtобязательноstring (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.

Scope
leads:write
Компонент
marketing

Параметры

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

Тело запроса

ПолеТипОписание
assigneeIdобязательноstring (uuid) | nullID сотрудника или null для снятия ответственного.

Ответы

200
ПолеТипОписание
idобязательноstringID лида
sourceобязательноstringИсточник: `api`, `public_form`, `telegram`…
channelобязательноstring | nullКанал внутри источника (например, имя формы или бота)
nameобязательноstring | nullИмя контакта
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
messageобязательноstring | nullТекст обращения
statusобязательноstring
Значения: newin_progressconvertedspam
Статус обработки
externalIdобязательноstring | nullВнешний id из источника (для дедупликации)
rawобязательноobject | nullСырой payload источника (для ручного разбора).
object
clientIdобязательноstring (uuid) | nullID клиента после конвертации
dealIdобязательноstring (uuid) | nullID сделки после конвертации
assignedToIdобязательноstring (uuid) | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
utmобязательноobject | nullUTM-метки перехода.
словарь значений string
createdAtобязательноstring (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` не нужен.

Scope
leads:write
Компонент
marketing

Параметры

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

Ответы

201
ПолеТипОписание
clientIdобязательноstring (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`.

Scope
leads:write
Компонент
marketing

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
dealIdобязательноstring (uuid)
clientIdобязательноstring (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

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

Scope
orders:read
Компонент
orders

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноOrderListItemResponse[]
массив из OrderListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
orders:write
Компонент
orders

Параметры

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

Тело запроса

ПолеТипОписание
itemsобязательноOrderLineInputDto[]
массив из OrderLineInputDto
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
По умолчанию: 0
prepaidAmountnumberПредоплата (копейки)
По умолчанию: 0
assignedToIdstringID ответственного сотрудника

Ответы

201
ПолеТипОписание
idобязательноstringID заказа
companyIdобязательноstringID компании
numberобязательноnumberНомер заказа (сквозной по компании)
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
customerIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
customerEmailобязательноstring | nullE-mail покупателя
customerNoteобязательноstring | nullПожелания покупателя
channelобязательноstring | nullКанал привлечения
sourceобязательноstring | nullИсточник (интеграция/форма)
deliveryStatusобязательноstring | null
Значения: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodобязательноstring | null
Значения: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostобязательноnumberСтоимость доставки (копейки)
deliveryAddressTextобязательноstring | nullАдрес доставки строкой
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог со скидкой, копейки
prepaidAmountобязательноnumberПредоплата (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноOrderLineResponse[]Позиции заказа
массив из OrderLineResponse
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}

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

Scope
orders:read
Компонент
orders

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID заказа
companyIdобязательноstringID компании
numberобязательноnumberНомер заказа (сквозной по компании)
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
customerIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
customerEmailобязательноstring | nullE-mail покупателя
customerNoteобязательноstring | nullПожелания покупателя
channelобязательноstring | nullКанал привлечения
sourceобязательноstring | nullИсточник (интеграция/форма)
deliveryStatusобязательноstring | null
Значения: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodобязательноstring | null
Значения: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostобязательноnumberСтоимость доставки (копейки)
deliveryAddressTextобязательноstring | nullАдрес доставки строкой
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог со скидкой, копейки
prepaidAmountобязательноnumberПредоплата (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноOrderLineResponse[]Позиции заказа
массив из OrderLineResponse
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}

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

Scope
orders:write
Компонент
orders

Параметры

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

Тело запроса

ПолеТипОписание
itemsOrderLineInputDto[]Полная замена позиций заказа (только в статусах new/confirmed)
массив из OrderLineInputDto
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 — снять)

Ответы

200
ПолеТипОписание
idобязательноstringID заказа
companyIdобязательноstringID компании
numberобязательноnumberНомер заказа (сквозной по компании)
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
customerIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
customerEmailобязательноstring | nullE-mail покупателя
customerNoteобязательноstring | nullПожелания покупателя
channelобязательноstring | nullКанал привлечения
sourceобязательноstring | nullИсточник (интеграция/форма)
deliveryStatusобязательноstring | null
Значения: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodобязательноstring | null
Значения: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostобязательноnumberСтоимость доставки (копейки)
deliveryAddressTextобязательноstring | nullАдрес доставки строкой
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог со скидкой, копейки
prepaidAmountобязательноnumberПредоплата (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноOrderLineResponse[]Позиции заказа
массив из OrderLineResponse
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.

Scope
orders:write
Компонент
orders

Параметры

ПараметрГдеТипОписание
idобязательноpathstring
nextобязательноpathOrderStatusЦелевой статус заказа
X-Idempotency-Keyheaderstring (uuid)UUID запроса. Повтор с тем же ключом в течение 7 дней вернёт сохранённый ответ вместо второго заказа или продажи; пока первый запрос не завершён — 409 `IDEMPOTENCY_IN_FLIGHT`.

Ответы

200
ПолеТипОписание
idобязательноstringID заказа
companyIdобязательноstringID компании
numberобязательноnumberНомер заказа (сквозной по компании)
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
customerIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
customerEmailобязательноstring | nullE-mail покупателя
customerNoteобязательноstring | nullПожелания покупателя
channelобязательноstring | nullКанал привлечения
sourceобязательноstring | nullИсточник (интеграция/форма)
deliveryStatusобязательноstring | null
Значения: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodобязательноstring | null
Значения: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostобязательноnumberСтоимость доставки (копейки)
deliveryAddressTextобязательноstring | nullАдрес доставки строкой
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог со скидкой, копейки
prepaidAmountобязательноnumberПредоплата (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноOrderLineResponse[]Позиции заказа
массив из OrderLineResponse
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` при переводе сделки на терминальную стадию с исходом «проиграна»; в ответах сделок поле расшифровывается по этому списку. По умолчанию только активные.

Scope
deals:read
Компонент
deals

Ответы

200
массив из DealLostReasonResponse
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` при создании сделки и для расшифровки поля в ответах. По умолчанию только активные.

Scope
deals:read
Компонент
deals

Ответы

200
массив из LeadSourceResponse
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 стадий отсюда нужны для создания сделки и смены стадии.

Scope
deals:read
Компонент
deals

Ответы

200
массив из DealTypeResponse
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

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

Scope
deals:read
Компонент
deals

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноDealListItemResponse[]
массив из DealListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
deals:write
Компонент
deals

Параметры

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

Тело запроса

ПолеТипОписание
typeIdобязательноstringID типа сделки
itemsDealLineInputDto[]Позиции сметы (товары и услуги)
массив из DealLineInputDto
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Скидка на всю сделку, %
По умолчанию: 0
intakeobjectСнапшот приёмки (для типа intake)
ПолеТипОписание
deviceKindstring | nullВид объекта (телефон, ноутбук, авто, обувь…)
brandstring | nullМарка/бренд
modelstring | nullМодель
serialstring | nullСерийный номер / IMEI / VIN
defectstring | nullЗаявленная неисправность
accessoriesstring | nullКомплектация (что принято вместе с устройством)
appearancestring | nullВнешний вид (царапины, сколы)
conditionstring | nullСостояние при приёмке
agreedPricenumber | nullСогласованная цена работ в копейках
agreedTermDaysnumber | nullСогласованный срок, дней
prepaymentnumber | nullПредоплата в копейках

Ответы

201
ПолеТипОписание
idобязательноstringID сделки
companyIdобязательноstringID компании
numberобязательноnumberНомер сделки (сквозной по компании)
typeIdобязательноstringID типа сделки
stageIdобязательноstringID текущей стадии
checklistDoneобязательноstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
массив из string
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
venueResourceIdобязательноstring | nullID площадки мероприятия (ресурс расписания)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
customerEmailобязательноstring | nullE-mail заказчика
customerNoteобязательноstring | nullПожелания заказчика
channelобязательноstring | nullКанал привлечения (manual|public_link|phone)
sourceобязательноstring | nullИсточник строкой (интеграция/форма)
sourceIdобязательноstring | nullID источника лида из справочника
addressобязательноstring | nullАдрес выполнения (для field_job)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на всю сделку, %
totalобязательноnumberИтог со скидкой, копейки
costобязательноnumberСебестоимость по позициям, копейки
budgetобязательноnumber | nullБюджет (копейки)
budgetExceededAtобязательноstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountобязательноnumber | nullЧисло гостей мероприятия
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtобязательноstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdобязательноstringID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноDealLineResponse[]Позиции сметы
массив из DealLineResponse
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}

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

Scope
deals:read
Компонент
deals

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID сделки
companyIdобязательноstringID компании
numberобязательноnumberНомер сделки (сквозной по компании)
typeIdобязательноstringID типа сделки
stageIdобязательноstringID текущей стадии
checklistDoneобязательноstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
массив из string
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
venueResourceIdобязательноstring | nullID площадки мероприятия (ресурс расписания)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
customerEmailобязательноstring | nullE-mail заказчика
customerNoteобязательноstring | nullПожелания заказчика
channelобязательноstring | nullКанал привлечения (manual|public_link|phone)
sourceобязательноstring | nullИсточник строкой (интеграция/форма)
sourceIdобязательноstring | nullID источника лида из справочника
addressобязательноstring | nullАдрес выполнения (для field_job)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на всю сделку, %
totalобязательноnumberИтог со скидкой, копейки
costобязательноnumberСебестоимость по позициям, копейки
budgetобязательноnumber | nullБюджет (копейки)
budgetExceededAtобязательноstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountобязательноnumber | nullЧисло гостей мероприятия
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtобязательноstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdобязательноstringID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноDealLineResponse[]Позиции сметы
массив из DealLineResponse
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}

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

Scope
deals:write
Компонент
deals

Параметры

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

Тело запроса

ПолеТипОписание
itemsDealLineInputDto[]Полная замена позиций сметы
массив из DealLineInputDto
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 — снять. Позиции сметы с нормой на гостя пересчитываются под новое значение.

Ответы

200
ПолеТипОписание
idобязательноstringID сделки
companyIdобязательноstringID компании
numberобязательноnumberНомер сделки (сквозной по компании)
typeIdобязательноstringID типа сделки
stageIdобязательноstringID текущей стадии
checklistDoneобязательноstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
массив из string
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
venueResourceIdобязательноstring | nullID площадки мероприятия (ресурс расписания)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
customerEmailобязательноstring | nullE-mail заказчика
customerNoteобязательноstring | nullПожелания заказчика
channelобязательноstring | nullКанал привлечения (manual|public_link|phone)
sourceобязательноstring | nullИсточник строкой (интеграция/форма)
sourceIdобязательноstring | nullID источника лида из справочника
addressобязательноstring | nullАдрес выполнения (для field_job)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на всю сделку, %
totalобязательноnumberИтог со скидкой, копейки
costобязательноnumberСебестоимость по позициям, копейки
budgetобязательноnumber | nullБюджет (копейки)
budgetExceededAtобязательноstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountобязательноnumber | nullЧисло гостей мероприятия
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtобязательноstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdобязательноstringID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноDealLineResponse[]Позиции сметы
массив из DealLineResponse
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

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

Scope
deals:write
Компонент
deals

Параметры

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

Тело запроса

ПолеТипОписание
stageIdобязательноstring (uuid)ID целевой стадии (в рамках того же типа сделки)
lostReasonIdstring (uuid) | nullID причины проигрыша — при переходе на терминальную стадию с исходом Lost.

Ответы

200
ПолеТипОписание
idобязательноstringID сделки
companyIdобязательноstringID компании
numberобязательноnumberНомер сделки (сквозной по компании)
typeIdобязательноstringID типа сделки
stageIdобязательноstringID текущей стадии
checklistDoneобязательноstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
массив из string
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
venueResourceIdобязательноstring | nullID площадки мероприятия (ресурс расписания)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
customerEmailобязательноstring | nullE-mail заказчика
customerNoteобязательноstring | nullПожелания заказчика
channelобязательноstring | nullКанал привлечения (manual|public_link|phone)
sourceобязательноstring | nullИсточник строкой (интеграция/форма)
sourceIdобязательноstring | nullID источника лида из справочника
addressобязательноstring | nullАдрес выполнения (для field_job)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на всю сделку, %
totalобязательноnumberИтог со скидкой, копейки
costобязательноnumberСебестоимость по позициям, копейки
budgetобязательноnumber | nullБюджет (копейки)
budgetExceededAtобязательноstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountобязательноnumber | nullЧисло гостей мероприятия
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtобязательноstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdобязательноstringID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноDealLineResponse[]Позиции сметы
массив из DealLineResponse
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

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

Scope
sales:read
Компонент
cashier

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Значения: createdAtnumbertotal
orderquerystring
Значения: ascdesc
shiftIdquerystring
cashierIdquerystring
paymentMethodquerystring
Значения: cashcardsbpmixed
dateFromquerystringISO 8601
dateToquerystringISO 8601
kindquerystring
Значения: allsalerefund
customerIdquerystringФильтр по клиенту

Ответы

200
ПолеТипОписание
itemsобязательноSaleListItemResponse[]
массив из SaleListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
sales:write
Компонент
cashier

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID чека
companyIdобязательноstringID компании
shiftIdобязательноstringID кассовой смены
numberобязательноnumberНомер чека (сквозной по компании)
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь чек, %
totalобязательноnumberИтог к оплате, копейки
paymentMethodобязательноstring
Значения: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtобязательноstring | nullУточнение способа оплаты
receivedAmountобязательноnumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdобязательноstringID кассира
refundOfSaleIdобязательноstring | nullID исходного чека; заполнен только у возврата
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
channelобязательноstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtобязательноstring (date-time)Момент продажи (ISO 8601)
linesобязательноSaleLineResponse[]Позиции чека
массив из SaleLineResponse
paymentsобязательноSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
массив из SalePaymentResponse
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}

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

Scope
sales:read
Компонент
cashier

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID чека
companyIdобязательноstringID компании
shiftIdобязательноstringID кассовой смены
numberобязательноnumberНомер чека (сквозной по компании)
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь чек, %
totalобязательноnumberИтог к оплате, копейки
paymentMethodобязательноstring
Значения: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtобязательноstring | nullУточнение способа оплаты
receivedAmountобязательноnumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdобязательноstringID кассира
refundOfSaleIdобязательноstring | nullID исходного чека; заполнен только у возврата
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
channelобязательноstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtобязательноstring (date-time)Момент продажи (ISO 8601)
linesобязательноSaleLineResponse[]Позиции чека
массив из SaleLineResponse
paymentsобязательноSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
массив из SalePaymentResponse
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.

Scope
sales:write
Компонент
cashier

Параметры

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

Ответы

200
ПолеТипОписание
idобязательноstringID чека
companyIdобязательноstringID компании
shiftIdобязательноstringID кассовой смены
numberобязательноnumberНомер чека (сквозной по компании)
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь чек, %
totalобязательноnumberИтог к оплате, копейки
paymentMethodобязательноstring
Значения: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtобязательноstring | nullУточнение способа оплаты
receivedAmountобязательноnumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdобязательноstringID кассира
refundOfSaleIdобязательноstring | nullID исходного чека; заполнен только у возврата
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
channelобязательноstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtобязательноstring (date-time)Момент продажи (ISO 8601)
linesобязательноSaleLineResponse[]Позиции чека
массив из SaleLineResponse
paymentsобязательноSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
массив из SalePaymentResponse
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

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

Scope
sales:write
Компонент
cashier

Параметры

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

Тело запроса

ПолеТипОписание
openingCashобязательноnumberНачальная сумма наличных в копейках
Пример: 500000

Ответы

201
ПолеТипОписание
idобязательноstringID смены
companyIdобязательноstringID компании
numberобязательноnumberНомер смены (сквозной по компании)
openedAtобязательноstring (date-time)Открыта (ISO 8601)
closedAtобязательноstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashобязательноnumberНачальная сумма в копейках
statusобязательноstring
Значения: openclosed
Статус смены
openedByIdобязательноstringID сотрудника, открывшего смену
closedByIdобязательноstring | 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`.

Scope
sales:read
Компонент
cashier

Ответы

200
ПолеТипОписание
idобязательноstringID смены
companyIdобязательноstringID компании
numberобязательноnumberНомер смены (сквозной по компании)
openedAtобязательноstring (date-time)Открыта (ISO 8601)
closedAtобязательноstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashобязательноnumberНачальная сумма в копейках
statusобязательноstring
Значения: openclosed
Статус смены
openedByIdобязательноstringID сотрудника, открывшего смену
closedByIdобязательноstring | 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}

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

Scope
sales:read
Компонент
cashier

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID смены
companyIdобязательноstringID компании
numberобязательноnumberНомер смены (сквозной по компании)
openedAtобязательноstring (date-time)Открыта (ISO 8601)
closedAtобязательноstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashобязательноnumberНачальная сумма в копейках
statusобязательноstring
Значения: openclosed
Статус смены
openedByIdобязательноstringID сотрудника, открывшего смену
closedByIdобязательноstring | 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.

Scope
sales:write
Компонент
cashier

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID смены
companyIdобязательноstringID компании
numberобязательноnumberНомер смены (сквозной по компании)
openedAtобязательноstring (date-time)Открыта (ISO 8601)
closedAtобязательноstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashобязательноnumberНачальная сумма в копейках
statusобязательноstring
Значения: openclosed
Статус смены
openedByIdобязательноstringID сотрудника, открывшего смену
closedByIdобязательноstring | 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

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

Scope
warehouse:read
Компонент
warehouse

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Значения: namecreatedAt
orderquerystring
Значения: ascdesc

Ответы

200
ПолеТипОписание
itemsобязательноWarehouseListItemResponse[]
массив из WarehouseListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID склада
companyIdобязательноstringID компании
nameобязательноstringНазвание склада
addressобязательноstring | nullАдрес склада
isDefaultобязательноbooleanСклад по умолчанию для приёмок и списаний
managerUserIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:read
Компонент
warehouse

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID склада
companyIdобязательноstringID компании
nameобязательноstringНазвание склада
addressобязательноstring | nullАдрес склада
isDefaultобязательноbooleanСклад по умолчанию для приёмок и списаний
managerUserIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID склада
companyIdобязательноstringID компании
nameобязательноstringНазвание склада
addressобязательноstring | nullАдрес склада
isDefaultобязательноbooleanСклад по умолчанию для приёмок и списаний
managerUserIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Ответы

204

Без тела

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

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

Scope
warehouse:read
Компонент
warehouse

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Значения: namecreatedAt
orderquerystring
Значения: ascdesc

Ответы

200
ПолеТипОписание
itemsобязательноSupplierResponse[]
массив из SupplierResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID поставщика
companyIdобязательноstringID компании
nameобязательноstringНазвание поставщика
contactNameобязательноstring | nullКонтактное лицо
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
innобязательноstring | nullИНН
addressобязательноstring | nullАдрес
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:read
Компонент
warehouse

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID поставщика
companyIdобязательноstringID компании
nameобязательноstringНазвание поставщика
contactNameобязательноstring | nullКонтактное лицо
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
innобязательноstring | nullИНН
addressобязательноstring | nullАдрес
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID поставщика
companyIdобязательноstringID компании
nameобязательноstringНазвание поставщика
contactNameобязательноstring | nullКонтактное лицо
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
innобязательноstring | nullИНН
addressобязательноstring | nullАдрес
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Ответы

204

Без тела

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

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

Scope
warehouse:read
Компонент
warehouse

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноStockListItemResponse[]
массив из StockListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

ПолеТипОписание
productIdобязательноstring
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
warehouseIdобязательноstring
targetQtyобязательноnumberНовое значение остатка (целое число, может быть отрицательным).
reasonобязательноstringПричина корректировки (обязательно).

Ответы

201
ПолеТипОписание
idобязательноstringID записи остатка
productIdобязательноstringID товара
productNameобязательноstringНазвание товара
productSkuобязательноstringАртикул товара
variantIdобязательноstring | nullID варианта товара; null — товар без вариантов
variantSkuобязательноstring | nullАртикул варианта
variantAttributesобязательноobject | nullАтрибуты варианта: { "color": "red", "size": "M" }
словарь значений string
categoryIdобязательноstring | nullID категории товара
categoryNameобязательноstring | nullНазвание категории
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
qtyобязательноnumberФизический остаток
reservedобязательноnumberЗарезервировано под незавершённые заказы
availableобязательноnumberСвободно к продаже: qty − reserved
reorderPointобязательноnumberПорог дозаказа (0 — не задан)
isLowStockобязательноbooleanОстаток на пороге или ниже
updatedAtобязательноstring (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

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

Scope
warehouse:read
Компонент
warehouse

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноReceiptListItemResponse[]
массив из ReceiptListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Тело запроса

ПолеТипОписание
warehouseIdобязательноstring (uuid)ID склада
supplierIdstring (uuid) | nullID поставщика
purchaseOrderIdstring (uuid) | nullID заказа поставщику (W3)
datestringДата приёмки (ISO 8601)
notestring | nullКомментарий к приёмке
itemsобязательноReceiptLineInputDto[]Позиции приёмки
массив из ReceiptLineInputDto

Ответы

201
ПолеТипОписание
idобязательноstringID приёмки
companyIdобязательноstringID компании
numberобязательноnumberНомер приёмки (сквозной по компании)
statusобязательноstring
Значения: postedcancelled
Статус приёмки
dateобязательноstring (date-time)Дата приёмки (ISO 8601)
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
supplierIdобязательноstring | nullID поставщика
supplierNameобязательноstring | nullНазвание поставщика
purchaseOrderIdобязательноstring | nullID заказа поставщику, по которому пришёл товар
noteобязательноstring | nullКомментарий к приёмке
totalQtyобязательноnumberСумма qty по всем позициям
totalAmountобязательноnumberСумма приёмки в копейках
createdByIdобязательноstringID сотрудника-автора
createdByNameобязательноstringИмя сотрудника-автора
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)
linesобязательноReceiptLineResponse[]Позиции приёмки
массив из ReceiptLineResponse
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}

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

Scope
warehouse:read
Компонент
warehouse

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID приёмки
companyIdобязательноstringID компании
numberобязательноnumberНомер приёмки (сквозной по компании)
statusобязательноstring
Значения: postedcancelled
Статус приёмки
dateобязательноstring (date-time)Дата приёмки (ISO 8601)
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
supplierIdобязательноstring | nullID поставщика
supplierNameобязательноstring | nullНазвание поставщика
purchaseOrderIdобязательноstring | nullID заказа поставщику, по которому пришёл товар
noteобязательноstring | nullКомментарий к приёмке
totalQtyобязательноnumberСумма qty по всем позициям
totalAmountобязательноnumberСумма приёмки в копейках
createdByIdобязательноstringID сотрудника-автора
createdByNameобязательноstringИмя сотрудника-автора
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)
linesобязательноReceiptLineResponse[]Позиции приёмки
массив из ReceiptLineResponse
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.

Scope
warehouse:write
Компонент
warehouse

Параметры

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

Ответы

200
ПолеТипОписание
idобязательноstringID приёмки
companyIdобязательноstringID компании
numberобязательноnumberНомер приёмки (сквозной по компании)
statusобязательноstring
Значения: postedcancelled
Статус приёмки
dateобязательноstring (date-time)Дата приёмки (ISO 8601)
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
supplierIdобязательноstring | nullID поставщика
supplierNameобязательноstring | nullНазвание поставщика
purchaseOrderIdобязательноstring | nullID заказа поставщику, по которому пришёл товар
noteобязательноstring | nullКомментарий к приёмке
totalQtyобязательноnumberСумма qty по всем позициям
totalAmountобязательноnumberСумма приёмки в копейках
createdByIdобязательноstringID сотрудника-автора
createdByNameобязательноstringИмя сотрудника-автора
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)
linesобязательноReceiptLineResponse[]Позиции приёмки
массив из ReceiptLineResponse
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

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

Scope
scheduling:read
Компонент
scheduling

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringТекстовый поиск.
sortquerystring
Значения: nametypecreatedAt
orderquerystring
Значения: ascdesc
typequerystring
Значения: staffseatunitequipment
serviceIdquerystringS7: только ресурсы, оказывающие эту услугу (или агностики).
activeOnlyqueryboolean

Ответы

200
ПолеТипОписание
itemsобязательноResourceResponse[]
массив из ResourceResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
scheduling:write
Компонент
scheduling

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID ресурса
companyIdобязательноstringID компании
typeобязательноstring
Значения: staffseatunitequipment
Тип ресурса
nameобязательноstringНазвание ресурса
capacityобязательноnumberСколько броней ресурс держит одновременно
seatsобязательноnumber | nullСколько гостей вмещает площадка; null — неприменимо
colorобязательноstring | nullЦвет в календаре (HEX)
bufferMinutesобязательноnumberБуфер между бронями, минут
minDurationMinutesобязательноnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityобязательноobject[]Окна доступности по дням недели: [{ weekday, from, to }]
массив из object
isActiveобязательноbooleanРесурс активен и доступен для записи
housekeepingStateобязательноstring
Значения: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdобязательноstring | nullУчётка сотрудника за ресурсом (мастер)
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
scheduling:read
Компонент
scheduling

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID ресурса
companyIdобязательноstringID компании
typeобязательноstring
Значения: staffseatunitequipment
Тип ресурса
nameобязательноstringНазвание ресурса
capacityобязательноnumberСколько броней ресурс держит одновременно
seatsобязательноnumber | nullСколько гостей вмещает площадка; null — неприменимо
colorобязательноstring | nullЦвет в календаре (HEX)
bufferMinutesобязательноnumberБуфер между бронями, минут
minDurationMinutesобязательноnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityобязательноobject[]Окна доступности по дням недели: [{ weekday, from, to }]
массив из object
isActiveобязательноbooleanРесурс активен и доступен для записи
housekeepingStateобязательноstring
Значения: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdобязательноstring | nullУчётка сотрудника за ресурсом (мастер)
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
scheduling:write
Компонент
scheduling

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID ресурса
companyIdобязательноstringID компании
typeобязательноstring
Значения: staffseatunitequipment
Тип ресурса
nameобязательноstringНазвание ресурса
capacityобязательноnumberСколько броней ресурс держит одновременно
seatsобязательноnumber | nullСколько гостей вмещает площадка; null — неприменимо
colorобязательноstring | nullЦвет в календаре (HEX)
bufferMinutesобязательноnumberБуфер между бронями, минут
minDurationMinutesобязательноnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityобязательноobject[]Окна доступности по дням недели: [{ weekday, from, to }]
массив из object
isActiveобязательноbooleanРесурс активен и доступен для записи
housekeepingStateобязательноstring
Значения: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdобязательноstring | nullУчётка сотрудника за ресурсом (мастер)
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

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

Scope
scheduling:read
Компонент
scheduling

Параметры

ПараметрГдеТипОписание
resourceIdобязательноquerystring
serviceIdquerystring
dateобязательноquerystringДата YYYY-MM-DD

Ответы

200
массив из
ПолеТипОписание
startAtобязательноstring (date-time)
endAtобязательноstring (date-time)
freeобязательноboolean
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

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

Scope
scheduling:read
Компонент
scheduling

Параметры

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

Ответы

200
ПолеТипОписание
itemsобязательноBookingListItemResponse[]
массив из BookingListItemResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
scheduling:write
Компонент
scheduling

Параметры

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

Тело запроса

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

Ответы

201
ПолеТипОписание
idобязательноstringID брони
companyIdобязательноstringID компании
numberобязательноnumberНомер брони (сквозной по компании)
resourceIdобязательноstringID ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
customerNameобязательноstring | nullИмя клиента (если без карточки)
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги каталога
assignedToIdобязательноstring | nullID исполнителя
priceобязательноnumberЦена брони в копейках (P0.4)
saleIdобязательноstring | nullID чека, в который конвертирована бронь
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacityобязательноnumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassобязательноbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressобязательноstring | nullАдрес проведения (выездная смена)
noteобязательноstring | nullВнутренний комментарий
visitNoteобязательноstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdобязательноstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtобязательноstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdобязательноstring | nullID серии повторяющихся броней
rentalStateобязательноstring | null
Значения: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtобязательноstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtобязательноstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoteобязательноstring | nullЗаметка при возврате из проката
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtобязательноstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdобязательноstring | nullID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
scheduling:read
Компонент
scheduling

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID брони
companyIdобязательноstringID компании
numberобязательноnumberНомер брони (сквозной по компании)
resourceIdобязательноstringID ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
customerNameобязательноstring | nullИмя клиента (если без карточки)
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги каталога
assignedToIdобязательноstring | nullID исполнителя
priceобязательноnumberЦена брони в копейках (P0.4)
saleIdобязательноstring | nullID чека, в который конвертирована бронь
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacityобязательноnumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassобязательноbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressобязательноstring | nullАдрес проведения (выездная смена)
noteобязательноstring | nullВнутренний комментарий
visitNoteобязательноstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdобязательноstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtобязательноstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdобязательноstring | nullID серии повторяющихся броней
rentalStateобязательноstring | null
Значения: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtобязательноstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtобязательноstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoteобязательноstring | nullЗаметка при возврате из проката
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtобязательноstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdобязательноstring | nullID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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}

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

Scope
scheduling:write
Компонент
scheduling

Параметры

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

Тело запроса

ПолеТипОписание
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
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumber | nullВместимость группового занятия (null — снять групповой режим).
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Полная замена доп.ресурсов мультиресурсной брони (S8).
массив из string
addressstring | nullАдрес проведения (выезд); null — снять адрес.
notestring | nullВнутренний комментарий
visitNotestring | nullЗаметка мастера по визиту (формула, результат работы, пожелания). Разрешена и после завершения записи — её пишут по факту приёма.

Ответы

200
ПолеТипОписание
idобязательноstringID брони
companyIdобязательноstringID компании
numberобязательноnumberНомер брони (сквозной по компании)
resourceIdобязательноstringID ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
customerNameобязательноstring | nullИмя клиента (если без карточки)
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги каталога
assignedToIdобязательноstring | nullID исполнителя
priceобязательноnumberЦена брони в копейках (P0.4)
saleIdобязательноstring | nullID чека, в который конвертирована бронь
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacityобязательноnumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassобязательноbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressобязательноstring | nullАдрес проведения (выездная смена)
noteобязательноstring | nullВнутренний комментарий
visitNoteобязательноstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdобязательноstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtобязательноstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdобязательноstring | nullID серии повторяющихся броней
rentalStateобязательноstring | null
Значения: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtобязательноstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtобязательноstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoteобязательноstring | nullЗаметка при возврате из проката
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtобязательноstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdобязательноstring | nullID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

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

Scope
scheduling:write
Компонент
scheduling

Параметры

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

Тело запроса

ПолеТипОписание
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Целевой статус брони

Ответы

200
ПолеТипОписание
idобязательноstringID брони
companyIdобязательноstringID компании
numberобязательноnumberНомер брони (сквозной по компании)
resourceIdобязательноstringID ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
customerNameобязательноstring | nullИмя клиента (если без карточки)
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги каталога
assignedToIdобязательноstring | nullID исполнителя
priceобязательноnumberЦена брони в копейках (P0.4)
saleIdобязательноstring | nullID чека, в который конвертирована бронь
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacityобязательноnumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassобязательноbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressобязательноstring | nullАдрес проведения (выездная смена)
noteобязательноstring | nullВнутренний комментарий
visitNoteобязательноstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdобязательноstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtобязательноstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdобязательноstring | nullID серии повторяющихся броней
rentalStateобязательноstring | null
Значения: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtобязательноstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtобязательноstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoteобязательноstring | nullЗаметка при возврате из проката
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtобязательноstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdобязательноstring | nullID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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`.

Scope
calendar:read
Компонент
calendar

Параметры

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

Ответы

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/calendar/events

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

Scope
calendar:write
Компонент
calendar

Параметры

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

Тело запроса

ПолеТипОписание
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionstring | nullОписание события
startAtобязательноstringНачало события (ISO 8601)
endAtобязательноstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
По умолчанию: false
isCompanyWidebooleanВидно всем сотрудникам компании
По умолчанию: false
colorstring | nullЦвет события (HEX)
Пример: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
массив из string
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
По умолчанию: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

Ответы

201
ПолеТипОписание
idобязательноstringID события
companyIdобязательноstringID компании
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionобязательноstring | nullОписание
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
allDayобязательноbooleanСобытие на весь день
isCompanyWideобязательноbooleanВидно всем сотрудникам компании
colorобязательноstring | nullЦвет (HEX)
locationобязательноstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayобязательноnumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilобязательноstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforeобязательноnumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDoneобязательноbooleanСобытие отмечено выполненным
doneAtобязательноstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdобязательноstringID сотрудника-автора
attendeeIdsобязательноstring[]ID участников события
массив из string
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
calendar:read
Компонент
calendar

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID события
companyIdобязательноstringID компании
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionобязательноstring | nullОписание
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
allDayобязательноbooleanСобытие на весь день
isCompanyWideобязательноbooleanВидно всем сотрудникам компании
colorобязательноstring | nullЦвет (HEX)
locationобязательноstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayобязательноnumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilобязательноstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforeобязательноnumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDoneобязательноbooleanСобытие отмечено выполненным
doneAtобязательноstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdобязательноstringID сотрудника-автора
attendeeIdsобязательноstring[]ID участников события
массив из string
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
calendar:write
Компонент
calendar

Параметры

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

Тело запроса

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

Ответы

200
ПолеТипОписание
idобязательноstringID события
companyIdобязательноstringID компании
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionобязательноstring | nullОписание
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
allDayобязательноbooleanСобытие на весь день
isCompanyWideобязательноbooleanВидно всем сотрудникам компании
colorобязательноstring | nullЦвет (HEX)
locationобязательноstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayобязательноnumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilобязательноstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforeобязательноnumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDoneобязательноbooleanСобытие отмечено выполненным
doneAtобязательноstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdобязательноstringID сотрудника-автора
attendeeIdsобязательноstring[]ID участников события
массив из string
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (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}

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

Scope
calendar:write
Компонент
calendar

Параметры

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

Ответы

204

Без тела

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

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

Scope
audit:read
Компонент
core

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
entityquerystringФильтр по типу сущности
actionquerystring
Значения: 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
Значения: createdAt
orderquerystring
Значения: ascdesc

Ответы

200
ПолеТипОписание
itemsобязательноAuditLogResponse[]
массив из AuditLogResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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

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

Scope
users:read
Компонент
core

Параметры

ПараметрГдеТипОписание
pagequerynumber
pageSizequerynumber
searchquerystringПоиск по email/имени/фамилии
rolequerystring
Значения: adminmanageremployeedirector
statusquerynumber
Значения: 0123
sortquerystring
Значения: lastNameemailrolestatuscreatedAtupdatedAt
orderquerystring
Значения: ascdesc

Ответы

200
ПолеТипОписание
itemsобязательноUserResponse[]
массив из UserResponse
totalобязательноintegerВсего записей по фильтру
pageобязательноintegerНомер страницы, с 1
pageSizeобязательноintegerРазмер страницы
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}

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

Scope
users:read
Компонент
core

Параметры

ПараметрГдеТипОписание
idобязательноpathstring

Ответы

200
ПолеТипОписание
idобязательноstringID сотрудника
firstNameобязательноstringИмя
lastNameобязательноstringФамилия
emailобязательноstringE-mail (логин)
roleобязательноstring
Значения: adminmanageremployeedirector
Роль-персона (admin, manager, employee…)
roleIdобязательноstring | nullРоль компании
roleNameобязательноstring | nullНазвание роли
companyIdобязательноstringID компании
statusобязательноnumberСтатус: 0=Registered, 1=Active, 2=Blocked, 3=Deleted
aboutобязательноstring | nullО себе
phoneобязательноstring | nullТелефон
timezoneобязательноstring | nullЧасовой пояс (IANA, например Europe/Moscow)
avatarFileIdобязательноstring | nullID файла аватара
avatarUrlобязательноstring | nullURL аватара
twoFactorEnabledобязательноbooleanВключена двухфакторная аутентификация
ipRestrictionEnabledобязательноbooleanСотрудник ограничил себе вход списком IP-адресов.
emailVerifiedAtобязательноstring (date-time) | nullКогда подтверждён e-mail (ISO 8601)
createdAtобязательноstring (date-time)
updatedAtобязательноstring (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

Схемы данных

AdjustStockDto

ПолеТипОписание
productIdобязательноstring
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
warehouseIdобязательноstring
targetQtyобязательноnumberНовое значение остатка (целое число, может быть отрицательным).
reasonобязательноstringПричина корректировки (обязательно).

AssignLeadDto

ПолеТипОписание
assigneeIdобязательноstring (uuid) | nullID сотрудника или null для снятия ответственного.

AttributeDefinitionResponse

ПолеТипОписание
idобязательноstringID характеристики
companyIdобязательноstringID компании
nameобязательноstringНазвание характеристики
typeобязательноstring
Значения: colorstringnumberoption_setboolean
Тип значения: определяет, какое поле заполняется в значении
isPrimaryобязательноbooleanОсновная характеристика: показывается в карточке и списках
categoryIdобязательноstring | nullID категории, к которой привязана; null — общая
positionобязательноnumberПорядок в списке
optionsобязательноAttributeOptionResponse[]Варианты значений (для типа select)
массив из AttributeOptionResponse
createdAtобязательноstring (date-time)Создана (ISO 8601)
updatedAtобязательноstring (date-time)Обновлена (ISO 8601)

AttributeOptionResponse

ПолеТипОписание
idобязательноstringID опции
attributeIdобязательноstringID характеристики
valueобязательноstringЗначение опции
positionобязательноnumberПорядок в списке
createdAtобязательноstring (date-time)Создана (ISO 8601)

AuditActorResponse

ПолеТипОписание
idобязательноstringID сотрудника
firstNameобязательноstringИмя
lastNameобязательноstringФамилия
emailобязательноstringE-mail

AuditLogResponse

ПолеТипОписание
idобязательноstringID записи
companyIdобязательноstringID компании
actorIdобязательноstring (uuid) | nullID сотрудника-инициатора; null — системное действие
actorобязательноobjectСотрудник-инициатор; null — системное действие или сотрудник удалён
ПолеТипОписание
idобязательноstringID сотрудника
firstNameобязательноstringИмя
lastNameобязательноstringФамилия
emailобязательноstringE-mail
actionобязательноstring
Значения: 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
Действие
entityобязательноstringИмя сущности, к которой относится действие
entityIdобязательноstring | nullID затронутой сущности
payloadобязательноobject | nullДетали действия — произвольный JSON, состав зависит от действия
object
ipобязательноstring | nullIP-адрес инициатора
createdAtобязательноstring (date-time)Момент действия (ISO 8601)

BookingListItemResponse

ПолеТипОписание
idобязательноstringID брони
numberобязательноnumberНомер брони
resourceIdобязательноstringID ресурса
resourceNameобязательноstringНазвание ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя клиента
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги
serviceNameобязательноstring | nullНазвание услуги
assignedToIdобязательноstring | nullID исполнителя
assignedToNameобязательноstring | nullИмя исполнителя
capacityобязательноnumber | nullМест в занятии. null — обычная бронь без ростера.
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога

BookingResponse

ПолеТипОписание
idобязательноstringID брони
companyIdобязательноstringID компании
numberобязательноnumberНомер брони (сквозной по компании)
resourceIdобязательноstringID ресурса
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Статус брони
sourceобязательноstring
Значения: adminpublic_linkchannel
Откуда создана бронь
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
customerNameобязательноstring | nullИмя клиента (если без карточки)
customerPhoneобязательноstring | nullТелефон клиента
dealIdобязательноstring | nullID связанной сделки
serviceIdобязательноstring | nullID услуги каталога
assignedToIdобязательноstring | nullID исполнителя
priceобязательноnumberЦена брони в копейках (P0.4)
saleIdобязательноstring | nullID чека, в который конвертирована бронь
depositAmountобязательноnumberЗалог в копейках
depositStatusобязательноstring
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacityобязательноnumber | nullМест в групповом занятии; null — обычная бронь
isOpenClassобязательноbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
addressобязательноstring | nullАдрес проведения (выездная смена)
noteобязательноstring | nullВнутренний комментарий
visitNoteобязательноstring | nullЗаметка мастера по визиту (формула, результат работы, пожелания)
clientPackageIdобязательноstring | nullАбонемент, с которого списан визит за эту запись
packageConsumedAtобязательноstring (date-time) | nullКогда списан визит с абонемента (ISO 8601)
recurrenceIdобязательноstring | nullID серии повторяющихся броней
rentalStateобязательноstring | null
Значения: reservedissuedreturned
Состояние проката (выдано/возвращено); null — не прокат
issuedAtобязательноstring (date-time) | nullКогда выдано в прокат (ISO 8601)
returnedAtобязательноstring (date-time) | nullКогда возвращено из проката (ISO 8601)
returnNoteобязательноstring | nullЗаметка при возврате из проката
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
confirmedAtобязательноstring (date-time) | nullКогда клиент подтвердил визит (ISO 8601)
createdByIdобязательноstring | nullID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

CalendarEventInstanceResponse

ПолеТипОписание
originIdобязательноstringID master-события (одинаков для всех инстансов серии)
companyIdобязательноstringID компании
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionобязательноstring | nullОписание
startAtобязательноstring (date-time)Начало инстанса (ISO 8601)
endAtобязательноstring (date-time)Окончание инстанса (ISO 8601)
allDayобязательноbooleanСобытие на весь день
isCompanyWideобязательноbooleanВидно всем сотрудникам компании
colorобязательноstring | nullЦвет (HEX)
locationобязательноstring | nullМесто проведения
isRecurringInstanceобязательноbooleanИнстанс развёрнут из повторяющейся серии, а не разовое событие
isDoneобязательноbooleanСобытие отмечено выполненным
createdByIdобязательноstringID сотрудника-автора
attendeeIdsобязательноstring[]ID участников события
массив из string

CalendarEventResponse

ПолеТипОписание
idобязательноstringID события
companyIdобязательноstringID компании
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionобязательноstring | nullОписание
startAtобязательноstring (date-time)Начало (ISO 8601)
endAtобязательноstring (date-time)Окончание (ISO 8601)
allDayобязательноbooleanСобытие на весь день
isCompanyWideобязательноbooleanВидно всем сотрудникам компании
colorобязательноstring | nullЦвет (HEX)
locationобязательноstring | nullМесто проведения
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayобязательноnumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilобязательноstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforeобязательноnumber | nullЗа сколько минут до начала прислать напоминание
reminderSentAtобязательноstring (date-time) | nullКогда отправлено напоминание (ISO 8601)
isDoneобязательноbooleanСобытие отмечено выполненным
doneAtобязательноstring (date-time) | nullКогда отмечено выполненным (ISO 8601)
createdByIdобязательноstringID сотрудника-автора
attendeeIdsобязательноstring[]ID участников события
массив из string
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)

CalendarRecurrenceDto

ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
По умолчанию: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно

CalendarRecurrenceResponse

ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
byWeekdayобязательноnumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilобязательноstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно

CategoryResponse

ПолеТипОписание
idобязательноstringID категории
companyIdобязательноstringID компании
parentIdобязательноstring | nullID родительской категории; null — корень
nameобязательноstringНазвание категории
iconобязательноstringИмя иконки
colorобязательноstring | nullHEX цвета иконки
bgобязательноstring | nullHEX цвета фона иконки
sortOrderобязательноnumberПорядок сортировки
prefixобязательноstring | nullПрефикс артикулов: A-Z, 1-4 символа
Пример: CFE
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

ChangeBookingStatusDto

ПолеТипОписание
statusобязательноstring
Значения: pendingconfirmedcompletedno_showcancelled
Целевой статус брони

ChangeDealStageDto

ПолеТипОписание
stageIdобязательноstring (uuid)ID целевой стадии (в рамках того же типа сделки)
lostReasonIdstring (uuid) | nullID причины проигрыша — при переходе на терминальную стадию с исходом Lost.

ClientListItemResponse

ПолеТипОписание
idобязательноstringID клиента
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
tagsобязательноstring[]Теги
массив из string
statusобязательноstring
Значения: activearchived
Статус клиента
assignedToIdобязательноstring | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
lastInteractionAtобязательноstring (date-time) | nullПоследнее взаимодействие (ISO 8601)
ordersCountобязательноnumberЧисло заказов клиента
balanceобязательноnumberБаланс клиента, копейки (может быть < 0 = долг)
totalSpentобязательноnumberСовокупная выручка (LTV-прокси), копейки
lastOrderAtобязательноstring (date-time) | nullПоследний заказ (ISO 8601)
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

ClientResponse

ПолеТипОписание
idобязательноstringID клиента
companyIdобязательноstringID компании
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
firstNameобязательноstring | nullИмя
lastNameобязательноstring | nullФамилия
middleNameобязательноstring | nullОтчество
companyNameобязательноstring | nullНазвание компании (юрлицо)
positionобязательноstring | nullДолжность контактного лица
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
telegramChatIdобязательноstring | nullTelegram chat id для исходящих сообщений
whatsappPhoneобязательноstring | nullНомер WhatsApp; null — используется phone
innобязательноstring | nullИНН (B2B)
kppобязательноstring | nullКПП (B2B)
legalAddressобязательноstring | nullЮр. адрес (B2B)
bankDetailsобязательноstring | nullБанковские реквизиты строкой (B2B)
noteобязательноstring | nullВнутренняя заметка
tagsобязательноstring[]Теги
массив из string
birthdayобязательноstring (date) | nullДата рождения / основания (ISO 8601)
statusобязательноstring
Значения: activearchived
Статус клиента
balanceобязательноnumberБаланс/абонемент в копейках
pointsобязательноnumberБаллы лояльности (копейки-эквивалент)
contractNumberобязательноstring | nullНомер договора (B2B)
groupIdобязательноstring | nullID группы контрагентов (опт)
priceListIdобязательноstring | nullID персонального прайс-листа (опт)
paymentTermsDaysобязательноnumber | nullСрок оплаты по договору, дни
creditLimitобязательноnumberКредитный лимит B2B в копейках (0 — без лимита)
slaHoursобязательноnumber | nullSLA по договору, часы
marketingConsentобязательноbooleanСогласие на маркетинговые рассылки
marketingConsentAtобязательноstring (date-time) | nullКогда дано согласие на рассылки (ISO 8601)
marketingConsentSourceобязательноstring | nullОткуда получено согласие (форма, оператор…)
anonymizedAtобязательноstring (date-time) | nullДата анонимизации (право на забвение)
assignedToIdобязательноstring | nullID ответственного сотрудника
createdByIdобязательноstringID сотрудника-автора
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

CloseShiftDto

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

ConvertLeadToDealDto

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

CreateBookingDto

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

CreateCalendarEventDto

ПолеТипОписание
kindобязательноstring
Значения: eventwork_shiftday_offtaskreminder
Вид события
titleобязательноstringЗаголовок события
descriptionstring | nullОписание события
startAtобязательноstringНачало события (ISO 8601)
endAtобязательноstringОкончание события (ISO 8601)
allDaybooleanСобытие на весь день
По умолчанию: false
isCompanyWidebooleanВидно всем сотрудникам компании
По умолчанию: false
colorstring | nullЦвет события (HEX)
Пример: #7A5AF8
locationstring | nullМесто проведения
attendeeIdsstring[]ID участников события
массив из string
recurrenceobjectПравило повторения; null — разовое событие
ПолеТипОписание
freqобязательноstring
Значения: dailyweeklymonthly
Частота повторения
intervalобязательноnumberШаг повторения: каждые N дней/недель/месяцев
По умолчанию: 1
byWeekdaynumber[] | nullДни недели для weekly: 0=вс, 1=пн, ..., 6=сб
массив из number
untilstring (date-time) | nullДата окончания серии (ISO 8601); null — бессрочно
reminderMinutesBeforenumber | nullМинут до начала, чтобы прислать напоминание

CreateCategoryDto

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

CreateClientDto

ПолеТипОписание
kindобязательноstring
Значения: individuallegal
Физлицо или юрлицо
displayNameобязательноstringОтображаемое имя — ФИО для физлица, название для юрлица
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[]Теги
массив из 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

ПолеТипОписание
typeIdобязательноstringID типа сделки
itemsDealLineInputDto[]Позиции сметы (товары и услуги)
массив из DealLineInputDto
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Скидка на всю сделку, %
По умолчанию: 0
intakeobjectСнапшот приёмки (для типа intake)
ПолеТипОписание
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

ПолеТипОписание
itemsобязательноOrderLineInputDto[]
массив из OrderLineInputDto
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
По умолчанию: 0
prepaidAmountnumberПредоплата (копейки)
По умолчанию: 0
assignedToIdstringID ответственного сотрудника

CreateProductDto

ПолеТипОписание
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Пример: CFE-0012
barcodestring | nullШтрихкод
Пример: 4607034630621
nameобязательноstringНазвание товара
Пример: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
словарь значений string
descriptionI18nobjectПереводы описания по локали (C9).
словарь значений string
categoryIdstring (uuid) | nullID категории; null — без категории
priceобязательноnumberЦена в копейках
Пример: 240000
costnumberСебестоимость в копейках
По умолчанию: 0
unitstringЕдиница измерения (код)
По умолчанию: 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 }]
массив из object
isBundlebooleanКомплект/набор (BOM)
По умолчанию: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
массив из object
statusstring
Значения: activehidden
Статус карточки
По умолчанию: active
hasStockbooleanВести складской учёт остатков по товару
По умолчанию: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Пример:
brandstring | nullБренд
Пример: Lavazza
modelstring | nullМодель
Пример: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).
массив из ProductAttributeValueInput

CreateReceiptDto

ПолеТипОписание
warehouseIdобязательноstring (uuid)ID склада
supplierIdstring (uuid) | nullID поставщика
purchaseOrderIdstring (uuid) | nullID заказа поставщику (W3)
datestringДата приёмки (ISO 8601)
notestring | nullКомментарий к приёмке
itemsобязательноReceiptLineInputDto[]Позиции приёмки
массив из ReceiptLineInputDto

CreateResourceDto

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

CreateSaleDto

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

CreateServiceDto

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

CreateSupplierDto

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

CreateWarehouseDto

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

DealIntakeDto

ПолеТипОписание
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

ПолеТипОписание
kindобязательноstring
Значения: productservicepackage
refIdобязательноstringID товара или услуги
qtyобязательноnumber
Пример: 1
unitPriceобязательноnumberЦена за единицу в копейках
perGuestQtynumberНорма на одного гостя: 1 порция сет-меню — 1, две закуски на гостя — 2. Задана — количество пересчитывается от числа гостей мероприятия.
Пример: 2

DealLineResponse

ПолеТипОписание
idобязательноstringID позиции
dealIdобязательноstringID сделки
kindобязательноstring
Значения: productservicepackage
Товар или услуга
productIdобязательноstring | nullID товара
serviceIdобязательноstring | nullID услуги
nameобязательноstringНазвание (snapshot на момент добавления)
qtyобязательноnumberКоличество
unitPriceобязательноnumberЦена за единицу в копейках
costобязательноnumberСебестоимость за единицу в копейках
lineTotalобязательноnumberСтоимость позиции в копейках
perGuestQtyобязательноnumber | nullНорма на одного гостя; null — количество от числа гостей не зависит

DealListItemResponse

ПолеТипОписание
idобязательноstringID сделки
numberобязательноnumberНомер сделки
typeIdобязательноstringID типа сделки
typeNameобязательноstringНазвание типа сделки
stageIdобязательноstringID текущей стадии
stageNameобязательноstringНазвание стадии
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
createdAtобязательноstring (date-time)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
clientIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
addressобязательноstring | nullАдрес выполнения
itemsCountобязательноnumberСумма qty по всем позициям
totalобязательноnumberИтог в копейках
costобязательноnumberСебестоимость в копейках
budgetобязательноnumber | nullБюджет (копейки)
assignedToIdобязательноstring | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
sourceIdобязательноstring | nullID источника лида из справочника
stageEnteredAtобязательноstring (date-time) | nullКогда вошла в текущую стадию (для «дней в стадии» на доске).
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи; null — «без задачи».
boardOrderобязательноnumber | nullРучной порядок карточки в колонке доски; null — не сортировалась.
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null

DealLostReasonResponse

ПолеТипОписание
idобязательноstringID причины
nameобязательноstringНазвание причины
isActiveобязательноbooleanАктивна: доступна при закрытии сделки
positionобязательноnumberПорядок в списке
createdAtобязательноstring (date-time)Создана (ISO 8601)

DealResponse

ПолеТипОписание
idобязательноstringID сделки
companyIdобязательноstringID компании
numberобязательноnumberНомер сделки (сквозной по компании)
typeIdобязательноstringID типа сделки
stageIdобязательноstringID текущей стадии
checklistDoneобязательноstring[]Выполненные пункты чек-листа: ключи вида `<stageId>:<index>`
массив из string
outcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход: won/lost на терминальной стадии, иначе null
clientIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
venueResourceIdобязательноstring | nullID площадки мероприятия (ресурс расписания)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя заказчика
customerPhoneобязательноstring | nullТелефон заказчика
customerEmailобязательноstring | nullE-mail заказчика
customerNoteобязательноstring | nullПожелания заказчика
channelобязательноstring | nullКанал привлечения (manual|public_link|phone)
sourceобязательноstring | nullИсточник строкой (интеграция/форма)
sourceIdобязательноstring | nullID источника лида из справочника
addressобязательноstring | nullАдрес выполнения (для field_job)
scheduledAtобязательноstring (date-time) | nullЗапланированное время (ISO 8601)
dueAtобязательноstring (date-time) | nullСрок исполнения (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на всю сделку, %
totalобязательноnumberИтог со скидкой, копейки
costобязательноnumberСебестоимость по позициям, копейки
budgetобязательноnumber | nullБюджет (копейки)
budgetExceededAtобязательноstring (date-time) | nullКогда себестоимость превысила бюджет (ISO 8601)
headcountобязательноnumber | nullЧисло гостей мероприятия
lostReasonIdобязательноstring | nullID причины проигрыша (терминальный Lost), иначе null.
nextActionAtобязательноstring (date-time) | nullДедлайн ближайшей незакрытой задачи (next-action); null — «без задачи».
stageEnteredAtобязательноstring (date-time) | nullКогда сделка вошла в текущую стадию (D1).
createdByIdобязательноstringID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноDealLineResponse[]Позиции сметы
массив из DealLineResponse

DealStageResponse

ПолеТипОписание
idобязательноstringID стадии
sortOrderобязательноnumberПорядок в пайплайне
nameобязательноstringНазвание стадии
isInitialобязательноbooleanНачальная стадия для новых сделок
terminalOutcomeобязательноstring | null
Значения: wonlostdonecancelled
Исход терминальной стадии (won/lost); null — промежуточная
kindобязательноstring | null
Значения: in_transiton_site
Семантика стадии для автоматики; null — обычная
checklistобязательноobject[] | nullЧек-лист стадии: [{ label, done? }]
массив из object
wipLimitобязательноnumber | nullМягкий лимит карточек в колонке доски (WIP)

DealTypeResponse

ПолеТипОписание
idобязательноstringID типа сделки
aliasобязательноstring
Значения: sale_orderprojectproductionfield_jobleadintakemaintenanceevent
Системный алиас типа (sale_order, project, field_job, intake…)
nameобязательноstringНазвание типа
featuresобязательноstring[]Включённые возможности типа (lines, payments, schedule, address…)
массив из string
configобязательноobjectКонфигурация типа (правила доски, печати, автоматики)
object
isActiveобязательноbooleanТип активен и доступен для новых сделок
isSystemобязательноbooleanСистемный тип: нельзя удалить
availableобязательноbooleanКомпонент типа включён у компании
stagesобязательноDealStageResponse[]Стадии пайплайна по порядку
массив из DealStageResponse

ExternalErrorResponse

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

IntakeLeadDto

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

LeadResponse

ПолеТипОписание
idобязательноstringID лида
sourceобязательноstringИсточник: `api`, `public_form`, `telegram`…
channelобязательноstring | nullКанал внутри источника (например, имя формы или бота)
nameобязательноstring | nullИмя контакта
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
messageобязательноstring | nullТекст обращения
statusобязательноstring
Значения: newin_progressconvertedspam
Статус обработки
externalIdобязательноstring | nullВнешний id из источника (для дедупликации)
rawобязательноobject | nullСырой payload источника (для ручного разбора).
object
clientIdобязательноstring (uuid) | nullID клиента после конвертации
dealIdобязательноstring (uuid) | nullID сделки после конвертации
assignedToIdобязательноstring (uuid) | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника
utmобязательноobject | nullUTM-метки перехода.
словарь значений string
createdAtобязательноstring (date-time)Создан (ISO 8601)

LeadSourceResponse

ПолеТипОписание
idобязательноstringUUID источника
nameобязательноstringНазвание
isActiveобязательноbooleanАктивен ли источник
positionобязательноnumberПорядок сортировки
createdAtобязательноstring (date-time)

OpenShiftDto

ПолеТипОписание
openingCashобязательноnumberНачальная сумма наличных в копейках
Пример: 500000

OrderLineInputDto

ПолеТипОписание
kindобязательноstring
Значения: productservicepackage
refIdобязательноstringID товара или услуги
variantIdstringВариант товара (SKU-вариация)
qtyобязательноnumber
Пример: 1
unitPriceобязательноnumberЦена за единицу в копейках

OrderLineResponse

ПолеТипОписание
idобязательноstringID позиции
orderIdобязательноstringID заказа
kindобязательноstring
Значения: productservicepackage
Товар или услуга
productIdобязательноstring | nullID товара
variantIdобязательноstring | nullID варианта товара (SKU-вариация)
serviceIdобязательноstring | nullID услуги
nameобязательноstringНазвание (snapshot на момент добавления)
qtyобязательноnumberКоличество
unitPriceобязательноnumberЦена за единицу в копейках
fulfilledQtyобязательноnumberОтгружено/готово (O6)
lineTotalобязательноnumberСтоимость позиции в копейках

OrderListItemResponse

ПолеТипОписание
idобязательноstringID заказа
numberобязательноnumberНомер заказа
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
createdAtобязательноstring (date-time)
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
itemsCountобязательноnumberСумма qty по всем позициям
subtotalобязательноnumberПодытог в копейках
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог в копейках
prepaidAmountобязательноnumberВнесено (копейки)
balanceDueобязательноnumberОстаток к оплате (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
createdByNameобязательноstring | nullИмя сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
assignedToNameобязательноstring | nullИмя ответственного сотрудника

OrderResponse

ПолеТипОписание
idобязательноstringID заказа
companyIdобязательноstringID компании
numberобязательноnumberНомер заказа (сквозной по компании)
statusобязательноstring
Значения: newconfirmedin_progressreadycompletedcancelled
Статус заказа
paymentStatusобязательноstring
Значения: unpaidpartialpaidrefunded
Статус оплаты
customerIdобязательноstring | nullID клиента
assetIdобязательноstring | nullID объекта обслуживания (ClientAsset)
addressIdобязательноstring | nullID адреса клиента (ClientAddress)
addressLabelобязательноstring | nullНазвание адреса клиента (denorm по addressId)
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
customerEmailобязательноstring | nullE-mail покупателя
customerNoteобязательноstring | nullПожелания покупателя
channelобязательноstring | nullКанал привлечения
sourceобязательноstring | nullИсточник (интеграция/форма)
deliveryStatusобязательноstring | null
Значения: pendingpackingshippeddeliveredreturned
Статус доставки; null — без доставки
deliveryMethodобязательноstring | null
Значения: pickupcourierpost
Способ доставки; null — без доставки
deliveryCostобязательноnumberСтоимость доставки (копейки)
deliveryAddressTextобязательноstring | nullАдрес доставки строкой
dueAtобязательноstring (date-time) | nullСрок (legacy, ISO 8601)
readyByобязательноstring (date-time) | nullСрок готовности (ISO 8601)
payDueAtобязательноstring (date-time) | nullСрок оплаты B2B-отсрочки (ISO 8601)
noteобязательноstring | nullВнутренний комментарий
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь заказ, %
totalобязательноnumberИтог со скидкой, копейки
prepaidAmountобязательноnumberПредоплата (копейки)
createdByIdобязательноstring | nullID сотрудника-автора
assignedToIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)
linesобязательноOrderLineResponse[]Позиции заказа
массив из OrderLineResponse

OrderStatus

string
Значения: newconfirmedin_progressreadycompletedcancelled

ProductAttributeValueInput

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

ProductAttributeValueResponse

ПолеТипОписание
attributeIdобязательноstringID характеристики
valueStringобязательноstring | nullСтроковое значение (тип text)
valueNumberобязательноnumber | nullЧисловое значение (тип number)
valueColorобязательноstring | nullЦвет HEX (тип color)
colorNameобязательноstring | nullИмя цвета из палитры NamedColor; пара с valueColor
valueBooleanобязательноboolean | nullЛогическое значение (тип boolean)
optionIdобязательноstring | nullID выбранной опции (тип select)

ProductResponse

ПолеТипОписание
idобязательноstringID товара
companyIdобязательноstringID компании
skuобязательноstringАртикул
barcodeобязательноstring | nullШтрихкод
nameобязательноstringНазвание товара
descriptionобязательноstring | nullОписание
nameI18nобязательноobjectПереводы названия по локали: { "de": "..." }
словарь значений string
descriptionI18nобязательноobjectПереводы описания по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
brandобязательноstring | nullБренд
modelобязательноstring | nullМодель
priceобязательноnumberЦена в копейках
costобязательноnumberСебестоимость в копейках
unitобязательноstringЕдиница измерения (код, денорм)
unitIdобязательноstring | nullID единицы измерения из справочника
packQtyобязательноnumber | nullФасовка: кол-во packUnit в одной unit
minOrderQtyобязательноnumber | nullМинимальная партия к заказу (опт); null — без ограничения
orderStepQtyобязательноnumber | nullКратность отгрузки (опт); null — любая
packUnitIdобязательноstring | nullID единицы фасовки
costComponentsобязательноobject[]Разбивка себестоимости: [{ label, productId?, qty?, unitId?, unitCost?, amount }]
массив из object
isBundleобязательноbooleanКомплект/набор (BOM)
modifierGroupsобязательноobject[]Группы модификаторов позиции с надбавками
массив из object
statusобязательноstring
Значения: activehidden
Статус карточки
hasStockобязательноbooleanВедётся складской учёт остатков
defaultSupplierIdобязательноstring | nullID поставщика по умолчанию (авто-дозаказ)
emojiобязательноstring | nullЭмодзи-иконка
photoFileIdобязательноstring | nullID файла основного фото
thumbnailFileIdобязательноstring | nullID файла миниатюры
attributeValuesобязательноProductAttributeValueResponse[]Значения характеристик
stockQtynumberСуммарный остаток по складам компании (только при include=stock и hasStock).
stockAvailablenumberСвободный остаток (qty − резервы) — при include=stock.
isLowStockbooleanНизкий запас (Σqty ≤ Σпорог дозаказа) — при include=stock.
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

ProductVariantResponse

ПолеТипОписание
idобязательноstringID варианта
companyIdобязательноstringID компании
productIdобязательноstringID родительского товара
skuобязательноstringАртикул варианта
barcodeобязательноstring | nullШтрихкод
attributesобязательноobjectАтрибуты варианта: { "color": "red", "size": "M" }
словарь значений string
priceобязательноnumberЦена варианта в копейках
costобязательноnumberСебестоимость варианта в копейках
statusобязательноstring
Значения: activehidden
Статус варианта
stockQtynumberСуммарный остаток по складам (матрица).
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

ReceiptLineInputDto

ПолеТипОписание
productIdобязательноstring (uuid)ID товара
variantIdstringВариант товара (SKU-вариация); опускается для товара без вариантов.
qtyобязательноnumberКоличество
Пример: 1
unitCostобязательноnumberЗакупочная цена за единицу в копейках
batchNumberstringНомер партии (информационный учёт)
expiryDatestringСрок годности партии (ISO 8601)

ReceiptLineResponse

ПолеТипОписание
idобязательноstringID позиции
receiptIdобязательноstringID приёмки
productIdобязательноstringID товара
variantIdобязательноstring | nullID варианта товара (SKU-вариация)
productNameобязательноstringНазвание товара
productSkuобязательноstringАртикул товара
qtyобязательноnumberКоличество
unitCostобязательноnumberЗакупочная цена за единицу в копейках
lineTotalобязательноnumberСтоимость позиции в копейках

ReceiptListItemResponse

ПолеТипОписание
idобязательноstringID приёмки
numberобязательноnumberНомер приёмки
statusобязательноstring
Значения: postedcancelled
Статус приёмки
dateобязательноstring (date-time)Дата приёмки (ISO 8601)
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
supplierIdобязательноstring | nullID поставщика
supplierNameобязательноstring | nullНазвание поставщика
purchaseOrderIdобязательноstring | nullID заказа поставщику
purchaseOrderNumberобязательноnumber | nullНомер заказа поставщику
itemsCountобязательноnumberЧисло позиций
totalQtyобязательноnumberСумма qty по всем позициям
totalAmountобязательноnumberСумма приёмки в копейках
createdByIdобязательноstringID сотрудника-автора
createdByNameобязательноstringИмя сотрудника-автора
createdAtобязательноstring (date-time)Создано (ISO 8601)

ReceiptResponse

ПолеТипОписание
idобязательноstringID приёмки
companyIdобязательноstringID компании
numberобязательноnumberНомер приёмки (сквозной по компании)
statusобязательноstring
Значения: postedcancelled
Статус приёмки
dateобязательноstring (date-time)Дата приёмки (ISO 8601)
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
supplierIdобязательноstring | nullID поставщика
supplierNameобязательноstring | nullНазвание поставщика
purchaseOrderIdобязательноstring | nullID заказа поставщику, по которому пришёл товар
noteобязательноstring | nullКомментарий к приёмке
totalQtyобязательноnumberСумма qty по всем позициям
totalAmountобязательноnumberСумма приёмки в копейках
createdByIdобязательноstringID сотрудника-автора
createdByNameобязательноstringИмя сотрудника-автора
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)
linesобязательноReceiptLineResponse[]Позиции приёмки
массив из ReceiptLineResponse

ResourceAvailabilityWindowDto

ПолеТипОписание
weekdayобязательноnumberДень недели: 0=вс … 6=сб
fromобязательноstringНачало окна, HH:MM
Пример: 09:00
toобязательноstringКонец окна, HH:MM
Пример: 18:00

ResourceResponse

ПолеТипОписание
idобязательноstringID ресурса
companyIdобязательноstringID компании
typeобязательноstring
Значения: staffseatunitequipment
Тип ресурса
nameобязательноstringНазвание ресурса
capacityобязательноnumberСколько броней ресурс держит одновременно
seatsобязательноnumber | nullСколько гостей вмещает площадка; null — неприменимо
colorобязательноstring | nullЦвет в календаре (HEX)
bufferMinutesобязательноnumberБуфер между бронями, минут
minDurationMinutesобязательноnumber | nullМинимальная длительность брони, минут; null — без ограничения
availabilityобязательноobject[]Окна доступности по дням недели: [{ weekday, from, to }]
массив из object
isActiveобязательноbooleanРесурс активен и доступен для записи
housekeepingStateобязательноstring
Значения: readydirtycleaningout_of_service
Состояние уборки юнита (для размещения)
userIdобязательноstring | nullУчётка сотрудника за ресурсом (мастер)
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

SaleLineInputDto

ПолеТипОписание
kindобязательноstring
Значения: productservicepackage
refIdобязательноstringID товара или услуги
variantIdstringВариант товара (SKU-вариация), если продаётся конкретный вариант (kind=product).
packageHolderIdstringКому выдать абонемент (kind=package), если платит не он сам: родитель оплачивает занятия ребёнка. Пусто — владельцем становится клиент чека.
qtyобязательноnumber
Пример: 1
unitPriceобязательноnumberБазовая цена за единицу в копейках
modifiersobject[]Выбранные модификаторы (P1.3b): [{ groupId, optionId }]. Надбавки считает сервер.
массив из object
lineDiscountPercentnumberПострочная скидка в процентах (0..100) на позицию (K3)
lineDiscountAmountnumberПострочная скидка фиксированной суммой за единицу, копейки (K3)

SaleLineResponse

ПолеТипОписание
idобязательноstringID позиции
saleIdобязательноstringID чека
kindобязательноstring
Значения: productservicepackage
Товар или услуга
productIdобязательноstring | nullID товара
variantIdобязательноstring | nullID варианта товара (SKU-вариация)
serviceIdобязательноstring | nullID услуги
nameобязательноstringНазвание (snapshot на момент продажи)
qtyобязательноnumberКоличество
unitPriceобязательноnumberЦена за единицу в копейках
lineDiscountPercentобязательноnumberПострочная скидка в процентах (K3)
lineDiscountAmountобязательноnumberПострочная скидка суммой за единицу, копейки (K3)
lineTotalобязательноnumberСтоимость позиции в копейках
refundedQtyобязательноnumberСколько единиц уже возвращено предыдущими возвратами. Доступно к возврату — qty минус это число.
modifiersобязательноobject[] | nullВыбранные модификаторы (P1.3b); null — без них.
массив из object

SaleListItemResponse

ПолеТипОписание
idобязательноstringID чека
numberобязательноnumberНомер чека
createdAtобязательноstring (date-time)Момент продажи (ISO 8601)
shiftIdобязательноstringID кассовой смены
shiftNumberобязательноnumberНомер смены
cashierIdобязательноstringID кассира
cashierNameобязательноstringИмя кассира
itemsCountобязательноnumberСумма qty по всем позициям
subtotalобязательноnumberПодытог в копейках (со знаком)
discountPercentобязательноnumberСкидка на весь чек, %
totalобязательноnumberИтог в копейках (со знаком)
paymentMethodобязательноstring
Значения: cashcardsbpmixed
Способ оплаты
isRefundобязательноbooleanЧек возврата
refundOfSaleIdобязательноstring | nullID исходного чека (у возврата)
refundOfSaleNumberобязательноnumber | nullНомер исходного чека (у возврата)
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя

SalePaymentInputDto

ПолеТипОписание
methodобязательноstring
Значения: cashcardsbpmixed
amountобязательноnumberСумма платежа в копейках
extstringАлиас интеграционного способа оплаты

SalePaymentResponse

ПолеТипОписание
idобязательноstringID платежа
methodобязательноstring
Значения: cashcardsbpmixed
Способ оплаты
amountобязательноnumberСумма платежа в копейках
extобязательноstring | nullУточнение способа (эквайринг, СБП, сертификат…)

SaleResponse

ПолеТипОписание
idобязательноstringID чека
companyIdобязательноstringID компании
shiftIdобязательноstringID кассовой смены
numberобязательноnumberНомер чека (сквозной по компании)
subtotalобязательноnumberСумма позиций до скидки, копейки
discountPercentобязательноnumberСкидка на весь чек, %
totalобязательноnumberИтог к оплате, копейки
paymentMethodобязательноstring
Значения: cashcardsbpmixed
Основной способ оплаты (mixed — смешанная, см. payments)
paymentMethodExtобязательноstring | nullУточнение способа оплаты
receivedAmountобязательноnumber | nullПолучено наличными в копейках (для расчёта сдачи)
cashierIdобязательноstringID кассира
refundOfSaleIdобязательноstring | nullID исходного чека; заполнен только у возврата
customerIdобязательноstring | nullID клиента
customerNameобязательноstring | nullИмя покупателя
customerPhoneобязательноstring | nullТелефон покупателя
channelобязательноstring | nullКанал продажи (pos, qr_menu, storefront…)
createdAtобязательноstring (date-time)Момент продажи (ISO 8601)
linesобязательноSaleLineResponse[]Позиции чека
массив из SaleLineResponse
paymentsобязательноSalePaymentResponse[]Платежи чека (несколько при смешанной оплате)
массив из SalePaymentResponse

ServiceCostItemInputDto

ПолеТипОписание
kindобязательноstring
Значения: materiallabor
Тип позиции
productIdstring (uuid) | nullUUID товара из справочника. null/undefined — freeform.
nameобязательноstringНазвание (snapshot)
Пример: Цемент М500
quantityобязательноnumberКоличество (десятичное)
Пример: 2.5
unitCostобязательноnumberСебестоимость единицы, копейки
Пример: 50000

ServiceCostItemResponse

ПолеТипОписание
idобязательноstringID позиции
serviceIdобязательноstringID услуги
kindобязательноstring
Значения: materiallabor
Тип позиции
productIdобязательноstring | nullID товара из справочника; null — freeform-позиция
nameобязательноstringНазвание (snapshot)
quantityобязательноnumberКоличество (десятичное)
unitCostобязательноnumberСебестоимость единицы, копейки
lineTotalобязательноnumberИтог по строке, копейки
positionобязательноnumberПорядок в составе

ServiceResponse

ПолеТипОписание
idобязательноstringID услуги
companyIdобязательноstringID компании
skuобязательноstringАртикул
nameобязательноstringНазвание услуги
nameI18nобязательноobjectПереводы названия по локали
словарь значений string
categoryIdобязательноstring | nullID категории; null — без категории
priceModelобязательноstring
Значения: fixedper_hourper_minuteper_dayper_item
Способ формирования цены
priceобязательноnumberЦена в копейках
durationMinutesобязательноnumber | nullДлительность, мин
totalCostобязательноnumberСумма по составу затрат, копейки
statusобязательноstring
Значения: activehidden
Статус карточки
costItemsServiceCostItemResponse[]Состав затрат — присутствует в детальной выдаче
массив из ServiceCostItemResponse
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

ShiftResponse

ПолеТипОписание
idобязательноstringID смены
companyIdобязательноstringID компании
numberобязательноnumberНомер смены (сквозной по компании)
openedAtобязательноstring (date-time)Открыта (ISO 8601)
closedAtобязательноstring (date-time) | nullЗакрыта (ISO 8601); null — смена открыта
openingCashобязательноnumberНачальная сумма в копейках
statusобязательноstring
Значения: openclosed
Статус смены
openedByIdобязательноstringID сотрудника, открывшего смену
closedByIdобязательноstring | nullID сотрудника, закрывшего смену

StockListItemResponse

ПолеТипОписание
idобязательноstringID записи остатка
productIdобязательноstringID товара
productNameобязательноstringНазвание товара
productSkuобязательноstringАртикул товара
variantIdобязательноstring | nullID варианта товара; null — товар без вариантов
variantSkuобязательноstring | nullАртикул варианта
variantAttributesобязательноobject | nullАтрибуты варианта: { "color": "red", "size": "M" }
словарь значений string
categoryIdобязательноstring | nullID категории товара
categoryNameобязательноstring | nullНазвание категории
warehouseIdобязательноstringID склада
warehouseNameобязательноstringНазвание склада
qtyобязательноnumberФизический остаток
reservedобязательноnumberЗарезервировано под незавершённые заказы
availableобязательноnumberСвободно к продаже: qty − reserved
reorderPointобязательноnumberПорог дозаказа (0 — не задан)
isLowStockобязательноbooleanОстаток на пороге или ниже
updatedAtобязательноstring (date-time)Последнее движение по остатку (ISO 8601)

SupplierResponse

ПолеТипОписание
idобязательноstringID поставщика
companyIdобязательноstringID компании
nameобязательноstringНазвание поставщика
contactNameобязательноstring | nullКонтактное лицо
phoneобязательноstring | nullТелефон
emailобязательноstring | nullE-mail
innобязательноstring | nullИНН
addressобязательноstring | nullАдрес
noteобязательноstring | nullВнутренняя заметка
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)

UnitResponse

ПолеТипОписание
idобязательноstringID единицы
companyIdобязательноstringID компании
codeобязательноstringКод, уникален в компании
nameобязательноstringНазвание
kindобязательноstring
Значения: countweightvolumetimelength
Род единицы
baseRatioобязательноnumberКоэффициент к базовой единице рода.
isFractionalобязательноbooleanРазрешён дробный ввод количества
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

UpdateBookingDto

ПолеТипОписание
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
Значения: nonerequiredreceivedreturnedwithheld
Статус залога
capacitynumber | nullВместимость группового занятия (null — снять групповой режим).
isOpenClassbooleanОткрытое занятие: показывать на публичной странице записи и в кабинете клиента.
extraResourceIdsstring[]Полная замена доп.ресурсов мультиресурсной брони (S8).
массив из string
addressstring | nullАдрес проведения (выезд); null — снять адрес.
notestring | nullВнутренний комментарий
visitNotestring | nullЗаметка мастера по визиту (формула, результат работы, пожелания). Разрешена и после завершения записи — её пишут по факту приёма.

UpdateCalendarEventDto

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

UpdateCategoryDto

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

UpdateClientDto

ПолеТипОписание
kindstring
Значения: 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[]Теги
массив из 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
Значения: activearchived
Статус клиента

UpdateDealDto

ПолеТипОписание
itemsDealLineInputDto[]Полная замена позиций сметы
массив из DealLineInputDto
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

ПолеТипОписание
statusобязательноstring
Значения: newin_progressconvertedspam
Новый статус лида

UpdateOrderDto

ПолеТипОписание
itemsOrderLineInputDto[]Полная замена позиций заказа (только в статусах new/confirmed)
массив из OrderLineInputDto
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

ПолеТипОписание
skustringАртикул. Если опущен и у выбранной категории есть prefix — будет сгенерирован автоматически как PREFIX-NNNN
Пример: CFE-0012
barcodestring | nullШтрихкод
Пример: 4607034630621
namestringНазвание товара
Пример: Кофе зерновой «Эспрессо», 1 кг
descriptionstring | nullОписание товара
nameI18nobjectПереводы названия по локали (C9): { "de": "..." }
словарь значений string
descriptionI18nobjectПереводы описания по локали (C9).
словарь значений string
categoryIdstring (uuid) | nullID категории; null — без категории
pricenumberЦена в копейках
Пример: 240000
costnumberСебестоимость в копейках
По умолчанию: 0
unitstringЕдиница измерения (код)
По умолчанию: 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 }]
массив из object
isBundlebooleanКомплект/набор (BOM)
По умолчанию: false
modifierGroupsobject[]Модификаторы позиции (P1.3b): группы опций с надбавкой.
массив из object
statusstring
Значения: activehidden
Статус карточки
По умолчанию: active
hasStockbooleanВести складской учёт остатков по товару
По умолчанию: false
defaultSupplierIdstring (uuid) | nullПоставщик по умолчанию (W3, авто-дозаказ)
emojistring | nullЭмодзи-иконка для карточки и POS
Пример:
brandstring | nullБренд
Пример: Lavazza
modelstring | nullМодель
Пример: Crema e Aroma
attributesProductAttributeValueInput[]Значения характеристик. Если массив передан — он полностью заменяет предыдущий набор значений у товара (отсутствующие удаляются).
массив из ProductAttributeValueInput

UpdateResourceDto

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

UpdateServiceDto

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

UpdateSupplierDto

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

UpdateWarehouseDto

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

UserResponse

ПолеТипОписание
idобязательноstringID сотрудника
firstNameобязательноstringИмя
lastNameобязательноstringФамилия
emailобязательноstringE-mail (логин)
roleобязательноstring
Значения: adminmanageremployeedirector
Роль-персона (admin, manager, employee…)
roleIdобязательноstring | nullРоль компании
roleNameобязательноstring | nullНазвание роли
companyIdобязательноstringID компании
statusобязательноnumberСтатус: 0=Registered, 1=Active, 2=Blocked, 3=Deleted
aboutобязательноstring | nullО себе
phoneобязательноstring | nullТелефон
timezoneобязательноstring | nullЧасовой пояс (IANA, например Europe/Moscow)
avatarFileIdобязательноstring | nullID файла аватара
avatarUrlобязательноstring | nullURL аватара
twoFactorEnabledобязательноbooleanВключена двухфакторная аутентификация
ipRestrictionEnabledобязательноbooleanСотрудник ограничил себе вход списком IP-адресов.
emailVerifiedAtобязательноstring (date-time) | nullКогда подтверждён e-mail (ISO 8601)
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

WarehouseListItemResponse

ПолеТипОписание
idобязательноstringID склада
nameобязательноstringНазвание склада
addressобязательноstring | nullАдрес склада
isDefaultобязательноbooleanСклад по умолчанию
managerUserIdобязательноstring | nullID ответственного сотрудника
managerNameобязательноstring | nullИмя ответственного сотрудника
totalQtyобязательноnumberСумма qty по складу
productsCountобязательноnumberКол-во SKU с qty > 0 на складе
createdAtобязательноstring (date-time)
updatedAtобязательноstring (date-time)

WarehouseResponse

ПолеТипОписание
idобязательноstringID склада
companyIdобязательноstringID компании
nameобязательноstringНазвание склада
addressобязательноstring | nullАдрес склада
isDefaultобязательноbooleanСклад по умолчанию для приёмок и списаний
managerUserIdобязательноstring | nullID ответственного сотрудника
createdAtобязательноstring (date-time)Создано (ISO 8601)
updatedAtобязательноstring (date-time)Обновлено (ISO 8601)