Публичное API ЕСП (CashDesk Service)
CashDesk Service — сервис ЕСП, который стоит за личным кабинетом, ЕСМ (Единым сервисом маркировки) и Локальным модулем Честного знака (LMCHZ / Regime). Большая часть его методов закрыта JWT-токеном личного кабинета — это лицензии, кассы, группы ЕСМ, тарифы и т.д. Но у сервиса есть небольшой набор публичных методов, которые можно вызывать без токена. Именно ими живут интеграции, автообновление ЕСМ и страница «Файлы для скачивания» этого сайта. Ниже — все четыре метода с примерами.
Как устроено API
Несколько практических вещей, которые стоит знать до первого запроса:
- Хост. В самой спецификации сервера указаны как относительный путь / — реальный адрес зависит от окружения, в котором вам открыли доступ (обычно его выдают вместе с партнёрским кодом при подключении к ЕСП). В примерах ниже он обозначен как <HOST>.
- Формат. Три метода из четырёх отвечают JSON. Метод версии сервиса — обычным text/plain, без кавычек и обёртки.
- Авторизация не нужна. Заголовок Authorization для этих четырёх методов передавать не нужно — сервис не проверяет его для публичных путей.
- Коды ошибок общие для всего сервиса. Даже у публичных методов в схеме формально описаны ответы 401/403/498 — это унаследовано от общего контракта API-гейтвея ЕСП (тот же самый шлюз обслуживает и закрытые методы). На практике для этих 4 путей вы их не получите, если не передаёте в запросе «сломанный» или чужой заголовок Authorization.
Обзор методов
| Метод | Путь | Что делает |
|---|---|---|
GET |
/api/v1/cashdesk/version |
Возвращает текущую версию сервиса CashDesk — удобно для healthcheck'а и мониторинга. |
POST |
/api/v1/cashdesk/vendors |
Возвращает справочник вендоров ККТ (АТОЛ, Эвотор, Штрих-М и т.д.) с кодами и иконками. |
GET |
/api/v1/cashdesk/software-updates/lmchz/{platform} |
Отдаёт актуальную версию и ссылку на дистрибутив Локального модуля Честного знака (Regime) для указанной платформы. |
GET |
/api/v1/cashdesk/software-updates/esm/get |
Проверяет, есть ли новая версия ЕСМ для конкретной установки — тот же вызов делает автообновление самого ЕСМ. |
Версия сервиса
Самый простой метод во всём API: без параметров, без тела запроса — просто отдаёт строку с версией развёрнутого сервиса CashDesk. Используется как «пинг» — если сервис жив и отвечает, вы получите 200 и версию; если нет — таймаут или 5xx на уровне инфраструктуры (это уже вне схемы API).
Пример запроса
Пример ответа 200 · text/plain
Как использовать: добавьте вызов в свой мониторинг (Zabbix/Prometheus/cron) с проверкой кода ответа 200 и непустого тела — этого достаточно, чтобы отслеживать доступность сервиса ЕСП со стороны вашей интеграции, отдельно от статуса самой кассы.
Список вендоров
Возвращает справочник производителей/моделей касс, с которыми умеет работать ЕСП — код (используется во всех остальных методах API как значение поля vendor), человекочитаемое название и ссылку на иконку. Тело запроса не требуется — метод сделан POST в спецификации, но фактически работает как обычный «получить справочник».
Пример запроса
Пример ответа 200 · application/json
Значения поля code (enum) — расшифровка
Схема отдаёт только технический код; ниже — что каждый код означает на практике.
| Код | Вендор / что это |
|---|---|
ATOL | АТОЛ — фискальные регистраторы и смарт-терминалы, самый распространённый драйвер на этом сайте (ДТО). |
EVOTOR | Эвотор — Android-смарт-терминалы со встроенной кассой. |
EVOTOR_ECOM | Эвотор для интернет-эквайринга / облачных продаж (отдельный код от «железных» терминалов). |
CSI | CSI — облачная/сервисная касса (провайдер фискализации без физического ФР у клиента). |
SHTRIHM | Штрих-М — фискальные регистраторы, драйвер POSCenter. |
PILOT | Пилот — фискальные регистраторы и POS-оборудование. |
POSCENTER | POSCenter — отдельный код для касс/драйвера POSCenter вне линейки Штрих-М. |
MSPOS | MSPOS — линейка касс MSPOS (в т.ч. «Касатка»). |
DREAMKAS | Дримкас — смарт-терминалы и ФР. |
COMPROXY | Comproxy — облачный ФР-прокси для интеграций без своей кассы. |
SERVICE_PLUS | Сервис Плюс — региональный производитель/интегратор ККТ. |
ISKRA | Искра — фискальные регистраторы. |
MITSU | Mitsu — фискальные регистраторы. |
UNKNOWN | Вендор не определён / не входит в основной список — служебное значение по умолчанию. |
Как использовать: если вы строите форму подключения кассы в своём кабинете — подтягивайте этот список динамически вместо того, чтобы хардкодить вендоров у себя: ЕСП добавляет новые коды по мере подключения новых производителей, а иконки сразу дают готовый UI без своей графики.
Обновление LMCHZ (Локальный модуль Честного знака / Regime)
LMCHZ — это тот же компонент, который на странице «Файлы для скачивания» называется Regime: локальный модуль Честного знака, обязательный для маркировки, ставится один раз на кассовый ПК рядом с ЕСМ. Метод отдаёт версию и прямую ссылку на установочный файл для конкретной платформы — это ровно то, что использует автообновление Regime.
Параметр пути
| Параметр | Где | Обязателен | Описание |
|---|---|---|---|
| platform | path | да | Платформа, для которой нужна версия. Одно из значений enum ниже. |
Допустимые значения platform
| Значение | Платформа |
|---|---|
WIN_7_10_11_64 | Windows 7 / 10 / 11, 64-bit |
WIN_10_11_32 | Windows 10 / 11, 32-bit |
UBUNTU_22_04_ARM64 | Ubuntu 22.04, ARM64 |
UBUNTU_22_04_AMD64 | Ubuntu 22.04, AMD64 (x86_64) |
DEBIAN_11_ARM64 | Debian 11, ARM64 |
DEBIAN_11_AMD64 | Debian 11, AMD64 (x86_64) |
DOCKER_UBUNTU_22_04_ARM64 | Docker-образ на базе Ubuntu 22.04, ARM64 |
DOCKER_UBUNTU_22_04_AMD64 | Docker-образ на базе Ubuntu 22.04, AMD64 |
Пример запроса
Пример ответа 200 · application/json
Это официальный пример из самой схемы API — версия там указана как 1.2.1, но на момент подготовки этой страницы на сайте актуальна Regime 2.5.1-2 (32/64-bit) — смотрите раздел «Regime» на странице файлов для скачивания. Это нормально: номер в примере из спецификации не обязан совпадать с версией на конкретном сервере — доверяйте ответу API, а не документации, если они расходятся.
Как использовать: если вы поставляете Regime в составе собственного дистрибутива — дёргайте этот метод перед установкой/обновлением клиента, чтобы не тащить с собой устаревший установщик и не хранить зеркало файлов у себя.
Проверка обновления ЕСМ
Это тот самый эндпоинт, который дёргает установленный на кассовом ПК ЕСМ, когда проверяет, не вышла ли новая версия. Вы можете вызывать его сами — например, чтобы заранее знать, что клиентам скоро потребуется обновление, или чтобы встроить проверку в собственный агент/скрипт установки.
Параметры запроса (query, объект req)
| Поле | Обязательно | Описание |
|---|---|---|
| esmId | нет | UID конкретной установки ЕСМ. Если не передан — сервис просто вернёт актуальную версию без привязки к конкретному клиенту. |
| version | нет | Версия ЕСМ, установленная сейчас у клиента (например, 1.6.3.0) — по ней сервис решает, нужно ли обновление. |
| os | да | Операционная система/платформа клиента. Единственное строго обязательное поле — без него запрос вернёт 400. |
Допустимые значения os
| Значение | Платформа |
|---|---|
WINDOWS | Windows, общий вариант |
WINDOWS_7 | Windows 7 (устаревшая, отдельный код из-за ограничений драйверов) |
LINUX32 | Linux, 32-bit, общий вариант |
LINUX64 | Linux, 64-bit, общий вариант |
UBUNTU | Ubuntu, общий (до разделения на конкретные .deb/.rpm сборки) |
LINUX_TINY | TinyCore Linux — облегчённые/встраиваемые кассовые ПК |
EVOTOR | ОС смарт-терминалов Эвотор (Android-based) |
MSPOS | ОС касс линейки MSPOS |
ANDROID | Android — мобильные ККТ и смарт-терминалы |
LINUX_RPM_X86_64 | Linux, RPM-пакет, x86_64 |
LINUX_RPM_I686 | Linux, RPM-пакет, i686 (32-bit) |
LINUX_DEB_AMD64 | Linux, DEB-пакет, amd64 |
LINUX_DEB_ARM64 | Linux, DEB-пакет, arm64 |
LINUX_DEB_ARMHF | Linux, DEB-пакет, armhf (ARM 32-bit, hard-float) |
LINUX_DEB_I386 | Linux, DEB-пакет, i386 |
LINUX_RUN_TINYCORE8 | Автономный .run-инсталлятор для TinyCore 8 |
LINUX_RUN_UBUNTU22 | Автономный .run-инсталлятор для Ubuntu 22 |
Пример запроса
Поля ответа ESMUpdateResponse
| Поле | Тип | Описание |
|---|---|---|
| status | enum | AVAILABLE — есть новее версия; ACTUAL — у клиента уже последняя. |
| version | string | Номер новой версии (заполнен, если status = AVAILABLE). |
| versionDate | date-time | Дата публикации новой версии. |
| url | string | Прямая ссылка на установочный файл. |
| forceUpdate | boolean | Если true — обновление принудительное (обычно из-за критической правки, ЕСМ не должен давать пользователю отложить установку). |
| hash | string | SHA-256 файла обновления в hex — для проверки целостности скачанного дистрибутива. |
| size | int64 | Размер файла в байтах. |
Пример ответа 200 · application/json
Имя файла в примере выше совпадает с актуальной версией ЕСМ 1.6.3.2 на странице «Файлы для скачивания» — то есть это именно та ссылка, которую отдаёт автообновление реальным пользователям ЕСМ прямо сейчас.
Как использовать: если вы разворачиваете ЕСМ через собственный агент или MDM — вызывайте этот метод по расписанию (например, раз в сутки), сверяйте version с установленной и обновляйте автоматически при forceUpdate: true, а в остальных случаях — уведомляйте пользователя и давайте выбор.
Коды ошибок
Единый формат ошибки для всех методов сервиса — объект RestErrorInfo:
| HTTP-код | Когда возникает |
|---|---|
| 400 | Ошибка валидации запроса (например, не передан обязательный os у метода обновления ЕСМ). Тело — RestErrorInfo. |
| 401 | Токен недействителен и не может быть обновлён. Формально описан в схеме для всех методов сервиса; для этих 4 публичных путей не встречается, если вы не передаёте свой Authorization-заголовок. |
| 403 | Недостаточно прав, либо ошибка при валидации токена — та же логика, что и для 401. |
| 498 | Токен просрочен, но подлежит REFRESH — актуально только для методов личного кабинета за jwtAuth, к публичным методам не относится. |
Нужен доступ к закрытой части API?
Лицензии, кассы, группы ЕСМ, тарифы и мониторинг доступны через тот же CashDesk Service, но требуют JWT-токена личного кабинета ЕСП. Получить доступ и партнёрский ключ можно в личном кабинете ЕСП или у нашей поддержки — контакты ниже.