Данная документация содержит описание методов API Кабинета Дримкас.

Аттрибут Значение
Базовый адрес https://kabinet.dreamkas.ru/api
Формат JSON
Кодировка UTF-8

Все запросы к API, содержащие тело (POST, PUT, PATCH) должны выполняться с заголовком Content-Type: application/json. В противном случае, вы будете получать 400 ошибку, так как тело запроса не будет корректно обработано.


Авторизация

Для вызова большинства методов требуется авторизация.

По Cookies

Этот режим используется по умолчанию. Когда пользователь вводит логин/пароль в форме авторизации, в браузере выставляется Cookie, которая в дальнейшем используется для идентификации пользователя в API.

Все публичное API описанное в данной документации так или иначе используется самим Кабинетом Дримкас.

Поэтому если у Вас возникают вопросы по работе того или иного метода, то вы всегда можете подсмотреть реализацию через инструменты отладки браузера в соответствующем разделе Кабинета.

По токену

Это наиболее предпочтительный способ авторизации. Для запросов к API вам понадобится (внимание!) токен.

Получить его можно двумя способами: 1. Сгенерировать лично в настройках аккаунта. 2. Пройти OAuth авторизацию в одном из интеграционных решений. В этом случае созданный токен будет автоматически передан приложению, и оно сможет управлять вашим аккаунтом в ограниченном режиме. Например, приложение не сможет создавать/удалять устройства (кассы) в вашем аккаунте, изменять пароль, и т.д.

Для авторизации требуется передавать заголовок Authorization: Bearer {TOKEN} при каждом вызове API.

Пример: Authorization: Bearer f7bf8f74-c225-46be-9d92-a4e6380d25b4.

Удобство авторизации по токенам заключается в том, что вы не раскрываете логин/пароль вашего аккаунта, можете создать множество токенов и в любой момент запретить доступ приложения к вашему аккаунту, просто удалив нужный токен.

Фрагмент кода на PHP

$token = 'f7bf8f74-c225-46be-9d92-a4e6380d25b4';
$headers = array(
  'Authorization: Bearer '.$token,
);

curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

Базовая HTTP авторизация

Базовая авторизация подойдет для случаев, когда вы пишете приватную интеграцию, которую не планируется тиражировать, т.к. для ее работы вам потребуется логин и пароль аккаунта. Мало кто станет доверять интеграциям, которые просят логин/пароль аккаунта пользователя.

Для авторизации при каждом вызове API требуется передавать заголовок: Authorization: Basic {base64(логин:пароль)}

Пример: Для пары логин:пароль test@example.com:123456 заголовок будет выглядеть так Authorization: Basic dGVzdEBleGFtcGxlLmNvbToxMjM0NTY=

Фрагмент кода на PHP

$login = 'test@example.com';
$password = '123456';
$headers = array(
  'Authorization: Basic '.base64_encode($login.':'.$password),
);

curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

Авторизация приложений

Этот тип авторизации может быть использован интеграционными решениями для вызова сервисных методов, например, для создания пользователей.

Авторизация аналогична базовой. Для авторизации при каждом вызове API требуется передавать заголовок: Authorization: Basic {base64(client_id:client_secret)}


Подписка на обновления

Некоторые операции могут занимать достаточно продолжительное время.

Например, давайте рассмотрим фискализацияю чека по API. Когда вы отправляете чек, мы ставим его в очередь. Касса с определенной периодичностью стучится в наш шлюз и забирает на выполнение адресованные ей задачи. Иногда интернет-соединение на кассе теряется, она может перезагружаться или на ней в данный момент работает кассир. Как бы там ни было, моментально выполнить запрос нельзя. Для этого, при запросе

В Кабинете Дримкас реализованы два принципиально отличающихся способа получения информации об изменениях в аккаунте.

Поллинг

Наиболее подходит для решений, которые не имеют статичного IP-адреса в сети Интернет. Для реализации этого способа вам необходимо реализовать планировщик (cron), который будет с некоторой периодичностью опрашивать API на предмет изменений.

Такое решение наиболее востребовано при фискализации чеков по API. При отправке запроса, вы получаете ответ со статусом 202 Accepted и идентификатором операции. На этом этапе ваш запрос еще не выполнен, он только добавлен в очередь. Фактически, запрос будет считаться выполненым, только когда касса сама сообщит об этом. Таким образом, в ответе вы получаете своеобразный трек-номер, к которому мы все привыкли на почте.

Используя данный идентификатор, с определенной периодичностью (10-20-30 сек.) вам следует проверять (поллить) результат операции (см. API Операции).

Вебхуки

Вебхуки наиболее предпочтительный способ подписи на изменения. Старайтесь всегда использовать этот метод, если это возможно.

Для работы вам необходимо на вашей стороне реализовать метод (endpoint url), в который Кабинет будет присылать уведомления посредством HTTP-запросов. После чего в настройках Кабинета вы указываете этот URL, так же события, по которым Кабинет будет отправлять уведомления.

Подробнее о формате читайте в разделе “Вебхуки”.


Описание ошибок

Первое правило бойцовского клуба: если вы не получили в ответе статус 2ХХ, то что-то пошло не так.

Клиентские ошибки (4XX)

Возникают в случае обнаружения ошибок в запросе клиента. Типичные ситуации: - неверный запрос;

  • ошибки валидации;

  • доступ запрещен;

  • требуется авторизация;

Наиболее частые ошибки

Статус Описание Способы устранения
400 Ошибка валидации Проверьте правильность введенных данных.
401 Требуется авторизация Проверьте, правильно ли реализован блок авторизации.
403 Доступ запрещен Авторизованному объекту запрещен доступ к ресурсу. Например, пытаетесь отредактировать чужую кассу.
404 Ресурс не найден Проверить правильность написания ресурса, к которому обращаетесь.
410 Ресурс удален Попытка получить доступ к удаленным данным, например, операциям, которые были заверешены более месяца назад.
429 Достигнут лимит запросов Слишком много однотипных запросов, подождите немного и повторите попытку.

Клиентские ошибки, как правило, выдаются с пояснениями.

Пример ответа с ошибкой

{
  "status": 400,
  "code": "E_VALIDATION_FAILED",
  "message": "Ошибка валидации",
  "data": {
    "errors": [
      {
        "code": "E_PRODUCT_NAME_EMPTY",
        "message": "Наименование товара не должно быть пустым"
      }
    ]
  }
}

Серверные ошибки (5ХХ)

Серверная ошибка. Типичные ситуации: - ведутся технические работы;

  • произошел сбой на сервере;

В этом случае, как правило, просто следует повторить запрос немного позднее.

Если ошибка повторяется на проятяжении длительного времени, обратитесь в поддержку.


Фискализация чеков по API

Требования:

  1. ККТ привязана к Кабинету Дримкас

  2. Наличие боевого ФН в ККТ

Процесс фискализации

Процесс фискализации по API является асинхронным. ККТ выходит на связь и забирает задачи приблизительно раз в минуту.

При запросе в API Кабинета мы добавляем к чеку уникальный идентификатор операции (OperationID), чек ставим в очередь и ожидаем пока ККТ придет за ним, а в ответе на запрос отдаем присвоенный идентификатор, по которому вы в дальнейшем сможете отслеживать процесс фискализации (подробнее про статусы вы можете прочитать в описании метода).

Узнать о состоянии фискализации вы можете одним из двух способов:

  • периодически (но не чаще, чем раз в 30 секунд) опрашивать API операций с полученным OperationID

  • добавить вебхук с подпиской на операции и чеки в Кабинете и реализовать на своей стороны обработчик (см. API вебхуков)

Простейший сценарий

  • Выполните POST /api/v1/receipts с корректно сформированным телом. HTTP статус 202 означает, что ваш чек успешно помещен в очередь. Иной код означает ошибку, подробности которой будут указаны в теле ответа.

  • Сохраните в вашем хранилище идентификатор операции из тела ответа.

  • Выполняйте периодический опрос GET /api/v1/operations/{id} до тех пор, пока не получите статус успеха или ошибки.

  • В теле операции в атрибуте data будет содержаться информация, взависимости от статуса. При ошибке - пояснение об ошибке, при успехе - идентификатор чека в Кабинете по этой операции.

Новые теги ФФД и способы расчета

Частичная предоплата

Может быть выполнена только для позиций чека.

Теги:

  • 1214 = 2

  • 777 = 1200 (где 1200 - сумма предоплаты в копейках)

Полная предоплата

Может быть выполнена только для позиций чека.

Теги:

  • 1214 = 1

Авансовые платежи

Например, для продажи сертификатов и подарочных карт.

В позиции передать теги:

  • 1214 = 3

Проведение оплаты сертификатом, подарочной картой

В корне чека передать теги:

  • 1215 = 1500 (где 1500 - сумма оплаченная сертификатом или подарочной картой)

Другие примеры

Ознакомиться с ними можно по следующей ссылке

Набор всех возможных ошибок:

TAX_MODE_IS_EMPTY - не указана СНО UNKNOWN_DOCUMENT_TYPE - неверный тип документа (приход/расход, возврат прихода/расхода) UNKNOWN_POSITION_TYPE - неверный тип позиции WRONG_PAYMENT_TYPE - неверный тип оплаты (нал/безнал) UNSUPPORTED_PAYMENT_TYPE - одновременная оплата нал и безнал невозможна KKT_NOT_AUTHORIZED - ККТ не авторизована (нет пользователя) FS_CONNECTION_ERROR - отсутствие связи с ФН KKT_NOT_FISCAL - нефискальный режим SHIFT_IS_CLOSE - смена закрыта OFD_DISCONNECT_30_DAYS - отсутствует связь с ОФД 30 дней (фискализация чеков невозможна) FS_TIMEOUT - таймаут ФН FS_WRONG_DATE - неверная дата и время FS_SHIFT_MORE_THEN_24H - смена более 24 ч

Часто возникающие проблемы

  • Неверно сформирован запрос. В таком случае сервер не вернет идентификатор операции и чек не улетит на кассу

  • Разработчик не имеет понятия, что такое операции, как с ними работать. Читайте шаги сценария, пункт 2

  • Вы видите PENDING и не знаете, что с ним делать? Обновите статус операции, рано или поздно он изменится либо на SUCCESS, либо на ERROR

  • Вы видите ERROR и не понимаете, что с ним делать? В свойстве data указана подробная причина проблемы.

  • Смена на кассе закрывается в самый ненужный момент? Укажите в настройках ККТ включить опцию “автооткрытие смены”

  • Отправка чека два раза подряд. Для Кабинета каждое отправленное задание будет проходить обработку. Вам необходимо контролировать это на своей стороне.


OAuth2

Для интеграции со сторонними сервисами Кабинет Дримкас поддерживает OAuth2 авторизацию. Простейший пример реализации на Node.js можно найти здесь.

Для начала работы вам потребуется client_id и client_secret. Их можно запросить через техподдержку Дримкас.

Разработчик приложения должен разместить на своем ресурсе ссылку на запрос авторизации.

Запрос на авторизацию

GEThttps://kabinet.dreamkas.ru/api/oauth2/authorize{?client_id,redirect_uri}

После перехода по этой ссылке, пользователю будет предложено подтвердить авторизацию. При согласии, он будет переадресован по адресу, указанному в redirect_uri.

В обработчике следует проверить наличие параметров code и error.

Если code пришел, а error пустой, то пользователь подтвердил авторизацию и нужно получить для него access_token с использованием которого ваше приложение сможет осуществлять действия в аккаунте пользователя Кабинета.

Параметры строки запроса
Параметр Тип Обяз. Описание
client_id number Да Идентификатор приложения.
redirect_uri string Да Обработчик результата авторизации
Пример ответа 302 Found
Location: http://localhost/?uid=123&code=1234567890

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

POSThttps://kabinet.dreamkas.ru/api/oauth2/access_token

При выполнении данного запроса, вы получите access_token для работы с аккаунтом авторизовавшегося пользователя. Этот токен следует сохранить в вашей системе и в дальнейшем использовать его для запросов, когда нужно произвести какие либо действия в аккаунте пользователя Кабинета Дримкас.

Токен не имеет ограничения по времени действия. Однако, пользователь в любой момент может отменить интеграцию, удалив выданный токен в настройках. В этом случае ваше приложение утратит возможность работать с аккаунтом данного пользователя. Обязательно учитывайте это, чтобы не спамить API бесполезными запросами, т.к. на них всегда будет отдаваться ошибка авторизации. Как только Вы получили статус 401 Unauthorized - можете считать, что пользователь отменил интеграцию. Удалите токен в своей системе и попросите его авторизоваться заново.

Пример запроса
Content-Type: application/json
{
    "code": "1234567890",
    "client_id": 1,
    "client_secret": "0aa9e134-b2ed-451e-bb98-c7d91ee843f2"
}
Пример запроса
Content-Type: application/json
{
    "code": "1234567890",
    "client_id": 1,
    "client_secret": "0aa9e134-b2ed-451e-bb98-c7d91ee843f2"
}
Пример ответа 200 OK
Content-Type: application/json
{
    "access_token": "a047fb5a-9464-4267-ac47-8c47ad100e27"
}
Пример ответа 403 Forbidden
Content-Type: application/json
{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Bad Code"
}

Товары

Предоставляет методы для управления товарами в аккаунте пользователя

Штрихкоды

У штрихкодов длиной 8, 12, 13, 18 символов проверяется контрольная сумма, на соответствие EAN8, UPC, EAN13, EAN13+5 форматам соответственно

Допускаются 5-значные цифровые строки для мерных товаров

Все остальные вариации можно хранить в vendorCodes - артикулы

Единица товара

Единица товара quantity измеряется в тысячных и значение этого поля следует воспринимать по-разному, в завимисости от типа товара type

Примеры
type quantity значение
SCALABLE 1 1 грамм
SCALABLE 200 200 грамм
SCALABLE 1000 1 кг
COUNTABLE 1000 1 шт
ALCOHOL 1000 1 бутылка/банка

Если алкоголь продается в розлив, то нужно установить параметр volume = 0, тогда значение quantity = 200, будет означать, что продукт продается в розлив по 200 мл

Работа с коллекцией

Получение списка товаров

GEThttps://kabinet.dreamkas.ru/api/products{?limit,offset}
Параметры строки запроса
Параметр Тип Обяз. Описание
limit number Нет Количество записей в ответе
offset number Нет Смещение
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "AB_1234",
      "00000001"
    ],
    "tax": 0,
    "createdAt": "2017-05-05T14:15:01.239Z",
    "updatedAt": "2017-05-05T14:15:01.239Z"
  }
]

Создание товаров

POSThttps://kabinet.dreamkas.ru/api/products

Данный метод поддерживает создание одного или нескольких товаров. Для создания одного товара тело запроса должно содержать объект с данными товара. Если тело запроса пустое, либо передан незаполненный данными товара объект или пустой массив, по умолчанию будет создан штучный товар с названием "Новый товар".

Для создания нескольких товаров нужно передать массив вида [{ Товар 1 }, { Товар 2 }, { Товар3 }]. Если массив содержит объекты с незаполненными данными о товарах, по умолчанию будут созданы штучные товары с названием "Новый товар" в количестве объектов, переданных внутри массива.

При массовом добавлении товаров тело ответа содержит результат для каждого переданного товара.

Параметры тела запроса
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Алкокод

Пример: 0000000000001
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Если длина 8, 12, 13, 18 то проверяется на контрольную сумму

Пример: ["AB_1234", "00000001"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

НДС 0%

5

НДС 5%

7

НДС 7%

10

НДС 10%

20

НДС 20%

105

НДС 5/105%

107

НДС 7/107%

110

НДС 10/110%

120

НДС 20/120%

null

Без НДС

Создание одного товара
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "AB_1234",
    "00000001"
  ],
  "tax": 0
}
Создание нескольких товаров
Content-Type: application/json
[
  {
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "AB_1234",
      "00000001"
    ],
    "tax": 0
  }
]
Пример ответа 201 Created
Content-Type: application/json
{
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626"
}
Пример ответа 400 Bad Request
Content-Type: application/json
{
    "result": {
        "0": {
            "id": 1
        }
    },
    "errors": {
        "1": {
            "status": 400,
            "code": "E_VALIDATION_FAILED",
            "message": "Ошибка валидации",
            "data": {
                "errors": [
                    {
                        "code": "E_PRODUCT_INVALID_TAX",
                        "message": "Указан некорректный НДС"
                    }
                ]
            }
        }
    }
}

Множественное редактирование

PATCHhttps://kabinet.dreamkas.ru/api/products
Пример запроса
Content-Type: application/json
[
  {
    "id": "",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "AB_1234",
      "00000001"
    ],
    "tax": 0
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Множественное удаление

DELETEhttps://kabinet.dreamkas.ru/api/products

Позволяет выполнить удаление нескольких товаров одним запросом

Пример запроса
Content-Type: application/json
[
  {
    "id": "cdaafe3d-a89a-4f66-afb6-ac8277d54110"
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Работа с экземпляром товара

Параметры строки запроса
Параметр Тип Обяз. Описание
id string Да Идентификатор товара

Информация о товаре

GEThttps://kabinet.dreamkas.ru/api/products/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Алкокод

Пример: 0000000000001
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Если длина 8, 12, 13, 18 то проверяется на контрольную сумму

Пример: ["AB_1234", "00000001"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

НДС 0%

5

НДС 5%

7

НДС 7%

10

НДС 10%

20

НДС 20%

105

НДС 5/105%

107

НДС 7/107%

110

НДС 10/110%

120

НДС 20/120%

null

Без НДС

createdAt string Нет

Дата создания

Пример: 2017-05-05T14:15:01.239Z
updatedAt string Нет

Дата последнего изменения

Пример: 2017-05-05T14:15:01.239Z
Пример ответа 200 OK
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "AB_1234",
    "00000001"
  ],
  "tax": 0,
  "createdAt": "2017-05-05T14:15:01.239Z",
  "updatedAt": "2017-05-05T14:15:01.239Z"
}

Редактирование товара

PATCHhttps://kabinet.dreamkas.ru/api/products/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Алкокод

Пример: 0000000000001
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Если длина 8, 12, 13, 18 то проверяется на контрольную сумму

Пример: ["AB_1234", "00000001"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

НДС 0%

5

НДС 5%

7

НДС 7%

10

НДС 10%

20

НДС 20%

105

НДС 5/105%

107

НДС 7/107%

110

НДС 10/110%

120

НДС 20/120%

null

Без НДС

Пример запроса
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "AB_1234",
    "00000001"
  ],
  "tax": 0
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление товара

DELETEhttps://kabinet.dreamkas.ru/api/products/{id}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Товары V2

/v2/products

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

GEThttps://kabinet.dreamkas.ru/api/V2/products{?limit,offset}
Параметры строки запроса
Параметр Тип Обяз. Описание
limit number Нет Количество записей в ответе, по умолчанию 100
offset number Нет Смещение
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "codes": [
        "0000000000001"
      ],
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "12341238"
    ],
    "vendorCodes": [
      "AB_1234"
    ],
    "tax": "NDS_NO_TAX",
    "createdAt": "2017-05-05T14:15:01.239Z",
    "updatedAt": "2017-05-05T14:15:01.239Z"
  }
]

Создание товаров

POSThttps://kabinet.dreamkas.ru/api/v2/products

Данный метод поддерживает создание одного или нескольких товаров. Для создания одного товара тело запроса должно содержать объект с данными товара. Если тело запроса пустое, либо передан незаполненный данными товара объект или пустой массив, по умолчанию будет создан штучный товар с названием "Новый товар".

Для создания нескольких товаров нужно передать массив вида [{ Товар 1 }, { Товар 2 }, { Товар 3 }]. Если массив содержит объекты с незаполненными данными о товарах, по умолчанию будут созданы штучные товары с названием "Новый товар" в количестве объектов, переданных внутри массива.

При массовом добавлении товаров тело ответа содержит результат для каждого переданного товара.

Параметры тела запроса
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Первый алкокод

Пример: 0000000000001
codes array Нет

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

Пример: ["0000000000001"]
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Только длины 8, 12, 13, 18. Проверяется на контрольную сумму

Пример: ["12341238"]
vendorCodes array Нет

Артикулы, никаких валидаций

Пример: ["AB_1234"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

Создание одного товара
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "codes": [
      "0000000000001"
    ],
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "12341238"
  ],
  "vendorCodes": [
    "AB_1234"
  ],
  "tax": "NDS_NO_TAX"
}
Создание нескольких товаров
Content-Type: application/json
[
  {
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "codes": [
        "0000000000001"
      ],
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "12341238"
    ],
    "vendorCodes": [
      "AB_1234"
    ],
    "tax": "NDS_NO_TAX"
  }
]
Пример ответа 201 Created
Content-Type: application/json
{
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626"
}
Пример ответа 201 Created
Content-Type: application/json
{
    "result": {
        "0": {
            "id": 1
        }
    },
    "errors": {
        "1": {
            "status": 400,
            "code": "E_VALIDATION_FAILED",
            "message": "Ошибка валидации",
            "data": {
                "errors": [
                    {
                        "code": "E_PRODUCT_INVALID_TAX",
                        "message": "Указан некорректный НДС"
                    }
                ]
            }
        }
    }
}

Множественное редактирование

PATCHhttps://kabinet.dreamkas.ru/api/v2/products
Пример запроса
Content-Type: application/json
[
  {
    "id": "",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "codes": [
        "0000000000001"
      ],
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "12341238"
    ],
    "vendorCodes": [
      "AB_1234"
    ],
    "tax": "NDS_NO_TAX"
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Множественное удаление

DELETEhttps://kabinet.dreamkas.ru/api/v2/products
Пример запроса
Content-Type: application/json
[
  {
    "id": "cdaafe3d-a89a-4f66-afb6-ac8277d54110"
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

/v2/products/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id string Да Идентификатор

Информация о товаре

GEThttps://kabinet.dreamkas.ru/api/v2/products/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Первый алкокод

Пример: 0000000000001
codes array Нет

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

Пример: ["0000000000001"]
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Только длины 8, 12, 13, 18. Проверяется на контрольную сумму

Пример: ["12341238"]
vendorCodes array Нет

Артикулы, никаких валидаций

Пример: ["AB_1234"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

createdAt string Нет

Дата создания

Пример: 2017-05-05T14:15:01.239Z
updatedAt string Нет

Дата последнего изменения

Пример: 2017-05-05T14:15:01.239Z
Пример ответа 200 OK
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "codes": [
      "0000000000001"
    ],
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "12341238"
  ],
  "vendorCodes": [
    "AB_1234"
  ],
  "tax": "NDS_NO_TAX",
  "createdAt": "2017-05-05T14:15:01.239Z",
  "updatedAt": "2017-05-05T14:15:01.239Z"
}

Редактирование товара

PATCHhttps://kabinet.dreamkas.ru/api/v2/products/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Первый алкокод

Пример: 0000000000001
codes array Нет

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

Пример: ["0000000000001"]
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Только длины 8, 12, 13, 18. Проверяется на контрольную сумму

Пример: ["12341238"]
vendorCodes array Нет

Артикулы, никаких валидаций

Пример: ["AB_1234"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

Пример запроса
Content-Type: application/json
{
  "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "name": "Новый товар",
  "type": "COUNTABLE",
  "departmentId": 0,
  "quantity": 1000,
  "prices": [
    {
      "deviceId": 1,
      "value": 1200
    }
  ],
  "isMarked": false,
  "isExcise": false,
  "meta": {
    "code": "0000000000001",
    "codes": [
      "0000000000001"
    ],
    "typeCode": "123",
    "volume": 0,
    "alc": 400,
    "originCountryCode": "056",
    "customEntryNum": "09283450/20190728/2345",
    "exciseDuty": 6200,
    "isKeg": false
  },
  "barcodes": [
    "12341238"
  ],
  "vendorCodes": [
    "AB_1234"
  ],
  "tax": "NDS_NO_TAX"
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление товара

DELETEhttps://kabinet.dreamkas.ru/api/v2/products/{id}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

/v2/products/save/additionalProduct

Сохранение дополнительной информации о товаре

POSThttps://kabinet.dreamkas.ru/api/v2/products/save/additionalProduct
Параметры тела запроса
Параметр Тип Обяз. Описание
min_age string Нет

Возрастное ограничение

Пример: 18
description string Нет

Описание

Пример: Суп типа уха с рыбными консервами, порцией водки и зеленью
calories number Нет

Калории

Пример: 30
proteins number Нет

Белки

Пример: 10
fat number Нет

Жиры

Пример: 10
carbohydrates number Нет

Углеводы

Пример: 10
measure string Нет

Объём порции (вес)

Пример: 100
measure_unit string Нет

Единица измерения порций (например, граммы, килограммы, миллилитры, литры)

Пример: 163
dish boolean Нет

Признак, что товар является блюдом

Пример: true
product_id string Нет

UUID товара

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
Сохранение дополнительной информации о товаре
Content-Type: application/json
{
  "min_age": "18",
  "description": "Суп типа уха с рыбными консервами, порцией водки и зеленью",
  "calories": 30,
  "proteins": 10,
  "fat": 10,
  "carbohydrates": 10,
  "measure": "100",
  "measure_unit": "163",
  "dish": true,
  "product_id": "b0381fe4-4428-4dcb-8169-c8bbcab59626"
}
Пример ответа 201 Created
Дополнительная информация по вашему продукту сохранена

/v2/products/get/additionalProduct?productId={id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id string Да UUID товара

Получение дополнительной информация о товаре

GEThttps://kabinet.dreamkas.ru/api/v2/products/get/additionalProduct?productId={id}
Параметры тела ответа
Параметр Тип Обяз. Описание
min_age string Нет

Возрастное ограничение

Пример: 18
description string Нет

Описание

Пример: Суп типа уха с рыбными консервами, порцией водки и зеленью
calories number Нет

Калории

Пример: 30
proteins number Нет

Белки

Пример: 10
fat number Нет

Жиры

Пример: 10
carbohydrates number Нет

Углеводы

Пример: 10
measure string Нет

Объём порции (вес)

Пример: 100
measure_unit string Нет

Единица измерения порций (например, граммы, килограммы, миллилитры, литры)

Пример: 163
dish boolean Нет

Признак, что товар является блюдом

Пример: true
product_id string Нет

UUID товара

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
id number Нет

ID дополнительной информации по товару

Пример: 1
createdAt string Нет

Дата создания

Пример: 2024-12-09T14:15:01.239Z
updatedAt string Нет

Дата последнего изменения

Пример: 2024-12-09T14:15:01.239Z
Пример ответа 200 OK
Content-Type: application/json
{
  "min_age": "18",
  "description": "Суп типа уха с рыбными консервами, порцией водки и зеленью",
  "calories": 30,
  "proteins": 10,
  "fat": 10,
  "carbohydrates": 10,
  "measure": "100",
  "measure_unit": "163",
  "dish": true,
  "product_id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
  "id": 1,
  "createdAt": "2024-12-09T14:15:01.239Z",
  "updatedAt": "2024-12-09T14:15:01.239Z"
}

/v2/products/update/additionalProduct

Редактирование дополнительной информации о товаре

PATCHhttps://kabinet.dreamkas.ru/api/v2/products/update/additionalProduct
Параметры тела запроса
Параметр Тип Обяз. Описание
min_age string Нет

Возрастное ограничение

Пример: 18
description string Нет

Описание

Пример: Суп типа уха с рыбными консервами, порцией водки и зеленью
calories number Нет

Калории

Пример: 30
proteins number Нет

Белки

Пример: 10
fat number Нет

Жиры

Пример: 10
carbohydrates number Нет

Углеводы

Пример: 10
measure string Нет

Объём порции (вес)

Пример: 100
measure_unit string Нет

Единица измерения порций (например, граммы, килограммы, миллилитры, литры)

Пример: 163
dish boolean Нет

Признак, что товар является блюдом

Пример: true
product_id string Нет

UUID товара

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
Редактирование дополнительной информации о товаре
Content-Type: application/json
{
  "min_age": "18",
  "description": "Суп типа уха с рыбными консервами, порцией водки и зеленью",
  "calories": 30,
  "proteins": 10,
  "fat": 10,
  "carbohydrates": 10,
  "measure": "100",
  "measure_unit": "163",
  "dish": true,
  "product_id": "b0381fe4-4428-4dcb-8169-c8bbcab59626"
}
Пример ответа 201 Created
Информация о продукте обновлена


Магазины

Предоставляет методы для управления магазинами пользователя.

Основное предназначение магазинов - логическая группировка устройств в Кабинете

/shops

Список магазинов

GEThttps://kabinet.dreamkas.ru/api/shops
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "name": "Магазин №1",
    "sort": 999,
    "id": 1
  }
]

Создание магазина

POSThttps://kabinet.dreamkas.ru/api/shops
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Да

Название магазина

Пример: Магазин №1
sort number Нет

Индекс сортировки (для отображения)

Пример: 999
Параметры тела ответа
Параметр Тип Обяз. Описание
name string Да

Название магазина

Пример: Магазин №1
sort number Нет

Индекс сортировки (для отображения)

Пример: 999
id number Нет

Идентификатор

Пример: 1
Пример запроса
Content-Type: application/json
{
  "name": "Магазин №1",
  "sort": 999
}
Пример ответа 201 Created
Content-Type: application/json
{
  "name": "Магазин №1",
  "sort": 999,
  "id": 1
}

Множественное редактирование

PATCHhttps://kabinet.dreamkas.ru/api/shops
Пример запроса
Content-Type: application/json
[
  {
    "name": "Магазин №1",
    "sort": 999,
    "id": 1
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

/shops/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор магазина

Информация о магазине

GEThttps://kabinet.dreamkas.ru/api/shops/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
name string Да

Название магазина

Пример: Магазин №1
sort number Нет

Индекс сортировки (для отображения)

Пример: 999
id number Нет

Идентификатор

Пример: 1
Пример ответа 200 OK
Content-Type: application/json
{
  "name": "Магазин №1",
  "sort": 999,
  "id": 1
}

Редактирование магазина

PATCHhttps://kabinet.dreamkas.ru/api/shops/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Да

Название магазина

Пример: Магазин №1
sort number Нет

Индекс сортировки (для отображения)

Пример: 999
Пример запроса
Content-Type: application/json
{
  "name": "Магазин №1",
  "sort": 999
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление магазина

DELETEhttps://kabinet.dreamkas.ru/api/shops/{id}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Устройства

Предоставляет методы для работы с подключенными устройствами

/devices

Список устройств

GEThttps://kabinet.dreamkas.ru/api/devices
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "name": "",
    "groupId": 0,
    "sort": 0,
    "id": 0,
    "timezoneOffset": 0
  }
]

Создание кассы (доступно только для приложений)

POSThttps://kabinet.dreamkas.ru/api/devices
Параметры тела запроса
Параметр Тип Обяз. Описание
uuid string Нет

UUID кассы

modelCode enum Да

На данный момент доступен только Дримкас-ф

Принимает одно из значений
Значение Описание
DREAMKAS_F

касса Дримкас-ф

modelName string Да

Наименование модели кассы

callback string Нет

URL, куда будет вызван вебхук после подключения кассы

Пример запроса
Content-Type: application/json
{
  "uuid": "",
  "modelCode": "DREAMKAS_F",
  "modelName": "",
  "callback": ""
}
Пример ответа 202 Accepted

/devices/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор устройства

Информация об устройстве

GEThttps://kabinet.dreamkas.ru/api/devices/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
name string Нет

Название

groupId number Нет

Идентификатор магазина

sort number Нет

Индекс сортировки (для отображения)

id number Нет

Идентификатор

timezoneOffset number Нет

Часовой пояс кассы , смещение в минутах от UTC

Пример ответа 200 OK
Content-Type: application/json
{
  "name": "",
  "groupId": 0,
  "sort": 0,
  "id": 0,
  "timezoneOffset": 0
}

Редактирование устройства

PATCHhttps://kabinet.dreamkas.ru/api/devices/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Нет

Название

groupId number Нет

Идентификатор магазина

sort number Нет

Индекс сортировки (для отображения)

Пример запроса
Content-Type: application/json
{
  "name": "",
  "groupId": 0,
  "sort": 0
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Отделы

Предоставляет методы для управления отделами пользователя.

Основное предназначение отделов - логическая группировка товаров в Кабинете

/departments

Список отделов

GEThttps://kabinet.dreamkas.ru/api/departments
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "name": "Хлебобулочные изделия",
    "tax": 0,
    "id": 0
  }
]

Создание отдела

POSThttps://kabinet.dreamkas.ru/api/departments
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Да

Название отдела

Пример: Хлебобулочные изделия
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

10

18

20

110

120

null

Без НДС

-1

Товары в отделе имеют смешанные НДС

Параметры тела ответа
Параметр Тип Обяз. Описание
name string Да

Название отдела

Пример: Хлебобулочные изделия
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

10

18

20

110

120

null

Без НДС

-1

Товары в отделе имеют смешанные НДС

id number Нет

Идентификатор отдела

Пример запроса
Content-Type: application/json
{
  "name": "Хлебобулочные изделия",
  "tax": 0
}
Пример ответа 201 Created
Content-Type: application/json
{
  "name": "Хлебобулочные изделия",
  "tax": 0,
  "id": 0
}

/departments/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор отдела

Информация об отделе

GEThttps://kabinet.dreamkas.ru/api/departments/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
name string Да

Название отдела

Пример: Хлебобулочные изделия
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

10

18

20

110

120

null

Без НДС

-1

Товары в отделе имеют смешанные НДС

id number Нет

Идентификатор отдела

Пример ответа 200 OK
Content-Type: application/json
{
  "name": "Хлебобулочные изделия",
  "tax": 0,
  "id": 0
}

Редактирование отдела

PATCHhttps://kabinet.dreamkas.ru/api/departments/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Да

Название отдела

Пример: Хлебобулочные изделия
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
0

10

18

20

110

120

null

Без НДС

-1

Товары в отделе имеют смешанные НДС

Пример запроса
Content-Type: application/json
{
  "name": "Хлебобулочные изделия",
  "tax": 0
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление отдела

DELETEhttps://kabinet.dreamkas.ru/api/departments/{id}

Удаление отдела не влечёт за собой удаление товаров внутри, они будут перенесены в отдел “Без отдела”

Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Отделы V2

Предоставляет методы для управления отделами пользователя.

Основное предназначение отделов - логическая группировка товаров в Кабинете

/v2/departments

Список отделов

GEThttps://kabinet.dreamkas.ru/api/v2/departments
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "name": "",
    "tax": "NDS_NO_TAX",
    "id": 0
  }
]
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Создание отдела

POSThttps://kabinet.dreamkas.ru/api/v2/departments
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Нет

Название отдела

tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

NDS_MIXED

Товары в отделе имеют смешанные НДС

Параметры тела ответа
Параметр Тип Обяз. Описание
name string Нет

Название отдела

tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

NDS_MIXED

Товары в отделе имеют смешанные НДС

id number Нет

Идентификатор отдела

Пример запроса
Content-Type: application/json
{
  "name": "",
  "tax": "NDS_NO_TAX"
}
Пример ответа 201 Created
Content-Type: application/json
{
  "name": "",
  "tax": "NDS_NO_TAX",
  "id": 0
}

/v2/departments/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор отдела

Информация об отделе

GEThttps://kabinet.dreamkas.ru/api/v2/departments/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
name string Нет

Название отдела

tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

NDS_MIXED

Товары в отделе имеют смешанные НДС

id number Нет

Идентификатор отдела

Пример ответа 200 OK
Content-Type: application/json
{
  "name": "",
  "tax": "NDS_NO_TAX",
  "id": 0
}

Редактирование отдела

PATCHhttps://kabinet.dreamkas.ru/api/v2/departments/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Нет

Название отдела

tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

NDS_MIXED

Товары в отделе имеют смешанные НДС

Пример запроса
Content-Type: application/json
{
  "name": "",
  "tax": "NDS_NO_TAX"
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление отдела

DELETEhttps://kabinet.dreamkas.ru/api/v2/departments/{id}

Удаление отдела не влечёт за собой удаление товаров внутри, они будут перенесены в отдел “Без отдела”

Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Чеки

Набор методов для работы с чеками.

/receipts

Чеки за период

GEThttps://kabinet.dreamkas.ru/api/receipts{?from,to,limit,offset,devices}
Параметры строки запроса
Параметр Тип Обяз. Описание
from string Нет Дата в ISO формате. По умолчанию 00:00:00 текущего дня
to string Нет Дата в ISO формате. По умолчанию 23:59:59 текущего дня
offset number Нет Смещение
limit number Нет Количество. Максимальное значение 1000
devices string Нет список идентификаторов устройств
Параметры тела ответа
Параметр Тип Обяз. Описание
query object Нет

Фактические значения, с которыми был выполнен запрос

Параметр Тип Обяз. Описание
from string Нет

Дата начала

Пример: 2017-10-13T14:15:01.239Z
to string Нет

Дата окончания

Пример: 2017-10-14T14:15:01.239Z
limit number Нет

Количество

offset number Нет

Смещение

data array Нет

Данные о продажах

Параметр Тип Обяз. Описание
id string Нет

Идентификатор чека

type enum Нет

Тип чека

Принимает одно из значений
Значение Описание
SALE

Приход

REFUND

Возврат прихода

OUTFLOW

Расход

OUTFLOW_REFUND

Возврат расхода

CORRECTION_INFLOW

Коррекция прихода

CORRECTION_OUTFLOW

Коррекция расхода

amount number Нет

Сумма чека в копейках

discount number Нет

Сумма скидок в копейках (уже учтена в amount, т.е. клиент заплатил столько, сколько указано amount)

deviceId number Нет

Идентификатор ККТ

shopId number Нет

Идентификатор магазина

operationId string Нет

Идентификатор операции, если чек был пробит через интернет-магазин. Может отсутствовать.

shiftId number Нет

Номер смены

number number Нет

Номер чека в смене

localDate string Нет

Локальное время кассы во время пробития чека

date string Нет

Время пробития чека

payments array Нет

Детальная информация об оплате

Параметр Тип Обяз. Описание
type enum Нет

Тип оплаты

Принимает одно из значений
Значение Описание
CASH

Наличные

CASHLESS

Безналичные

PREPAID

Аванс

CREDIT

Кредит

CONSIDERATION

Встречное предоставление

amount number Нет

Сумма, которая была оплачена этим типом

positions array Нет

Позиции в чеке

Параметр Тип Обяз. Описание
id string Нет

Идентификатор товара

name string Нет

Название товара в момент продажи

type enum Нет

Тип товара

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

SHOES

Обувь

CLOTHES

Одежда

SERVICE

Услуги

TOBACCO

Табак

MILK

Молочная продукция

ALCOHOL

Алкоголь

quantity number Нет

Количество проданного товара. Для мерного (SCALABLE) - граммы, для всех остальных типов это значение нужно делить на 1000, чтобы получить количество в штуках.

price number Нет

Стоимость единицы товара в копейках (стоимость позиции вычисляется по формуле price * quantity)

discount number Нет

Величина скидки в копейках (суммарная по позиции, а не по единице товара)

barcode string Нет

Штрихкод по которому был продан товар (исключает vendorCode)

exciseBarcode string Нет

Акцизный код (PDF417), отсканированный в момент продажи бутылки

vendorCode string Нет

Артикул, по которому был продан товар (исключает barcode)

tax enum Нет

Тип НДС на момент продажи

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

departmentId number Нет

Идентификатор отдела, в котором был товар в момент продажи (может отсутствовать)

cashier object Нет

Информация о кассире

Параметр Тип Обяз. Описание
tabNumber string Нет

Табельный номер, уникален в рамках кассы

Пример: 88990
name string Нет

Имя

Пример: Иванов Петр Олегович
inn string Нет

ИНН кассира

Пример: 1234567890
card string Нет

Номер карты кассира

Пример: 046563
password string Нет

Хэш пароля (ГОСТ 34.11.94)

Пример: 31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913
role string Нет

Должность кассира

Пример: Продавец-консультант
permissions array Нет

Полномочия

Принимает одно из значений
Значение Описание
SALE

Только VIKI-кассы

REFUND

Только VIKI-кассы

SHIFTS

Только VIKI-кассы

EGAIS_ACCEPTANCE

Только VIKI-кассы

SETTINGS

Только VIKI-кассы

PRICE_CHANGE

Только VIKI-кассы

QUANTITY_DECREASE

Только VIKI-кассы

CLEAR_PURCHASE

Только VIKI-кассы

TAX_SYSTEM_CHANGE

Только VIKI-кассы

DEFER_DELETE

Только VIKI-кассы

correctionData object Нет

Данные чека коррекции.

Параметр Тип Обяз. Описание
type string Да

Тип коррекции. Самостоятельная (SELF) или по предписанию (ORDER).

Пример: SELF
date string Да

Дата коррекции в формате ‘YYYY-MM-DD’.

Пример: 2020-03-17
number string Нет

Номер документа коррекции.

Пример: 2544/70
name string Нет

Наименование документа коррекции.

Пример: Объяснительная от 17.03.2020
checkURL string Нет

Сайт проверки чека

Пример: www.nalog.ru
fiscalDocumentNumber string Нет

Фискальный номер документа

Пример: 200
fiscalDocumentSign string Нет

Фискальный признак документа

Пример: 2147483647
fnNumber string Нет

Номер фискального накопителя

Пример: 9999078900001712
registryNumber string Нет

Регистрационный номер ККТ

Пример: 0000000001056589
Пример ответа 200 OK
Content-Type: application/json
{
  "query": {
    "from": "2017-10-13T14:15:01.239Z",
    "to": "2017-10-14T14:15:01.239Z",
    "limit": 0,
    "offset": 0
  },
  "data": [
    {
      "id": "",
      "type": "SALE",
      "amount": 382500,
      "discount": 0,
      "deviceId": 329,
      "shopId": 5328,
      "operationId": "5ce54a654adbce65466a3b5a",
      "shiftId": 44,
      "number": 1,
      "localDate": "2018-01-23 20:52:02",
      "date": "2017-01-23T17:52:02.000Z",
      "payments": [
        {
          "type": "CASH",
          "amount": 382500
        }
      ],
      "positions": [
        {
          "id": "2e21d75a-70d4-4a9f-b2e9-d69cf93b83cb",
          "name": "Булочка с маком",
          "type": "COUNTABLE",
          "quantity": 1000,
          "price": 6380,
          "discount": 0,
          "barcode": "58523523657",
          "exciseBarcode": "59520101001208381",
          "vendorCode": "АРТ-87499-847",
          "tax": "NDS_20",
          "departmentId": 553
        }
      ],
      "cashier": {
        "tabNumber": "88990",
        "name": "Иванов Петр Олегович",
        "inn": "1234567890",
        "card": "046563",
        "password": "31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913",
        "role": "Продавец-консультант",
        "permissions": [
          "SALE"
        ]
      },
      "correctionData": {
        "type": "SELF",
        "date": "2020-03-17",
        "number": "2544/70",
        "name": "Объяснительная от 17.03.2020"
      },
      "checkURL": "www.nalog.ru",
      "fiscalDocumentNumber": "200",
      "fiscalDocumentSign": "2147483647",
      "fnNumber": "9999078900001712",
      "registryNumber": "0000000001056589"
    }
  ]
}

Фискализация чека

POSThttps://kabinet.dreamkas.ru/api/receipts

Среднее время фискализации чека составляет 30 секунд.

Параметры тела запроса
Параметр Тип Обяз. Описание
externalId string Нет

Внешний идентификатор (UUIDv4) операции. Необязательный параметр. Позволяет избежать неопределенности в ситуациях, когда клиент теряет интернет-соединение в момент запроса на фискализацию. Внешний идентификатор можно использовать в качестве основного идентификатора в методе GET /api/operations/:id. Клиент должен гарантировать уникальность передаваемого идентификатора.

deviceId number Да

Идентификатор устройства, которое будет использовано для фискализации

Пример: 1385
shopId number Да

Идентификатор магазина

Пример: 385
type enum Нет

Тип операции

Принимает одно из значений
Значение Описание
SALE

Приход

REFUND

Возврат прихода

OUTFLOW

Расход

OUTFLOW_REFUND

Возврат расхода

CORRECTION_INFLOW

Коррекция прихода

CORRECTION_OUTFLOW

Коррекция расхода

timeout number Нет

Таймаут фискализации в минутах. Не менее 5 минут, по умолчанию - 240 минут (4 часа). Если в течение этого времени не удастся произвести фискализацию, то операция будет отменена с ошибкой.

Пример: 5
taxMode enum Да

Система налогообложения

Принимает одно из значений
Значение Описание
DEFAULT

Общая

SIMPLE

Упрощенная доход

SIMPLE_WO

Упрощенная доход минус расход

ENVD

Единый налог на вмененный доход

AGRICULT

Единый сельскохозяйственный на

PATENT

Патентная система налогообложения

positions array Да

Позиции, максимальное количество равно 100.

Параметр Тип Обяз. Описание
remId string Нет

Идентификатор товара

Пример: 2b964ebc-5f03-4a9b-86ff-7e9371611386
name string Да

Наименование

Пример: Шоколад Сникерс
type enum Нет

Тип товара

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

SHOES

Обувь

CLOTHES

Одежда

SERVICE

Услуги

TOBACCO

Табак

MILK

Молочная продукция

quantity number Да

Количество (для штучного - штуки, для мерного - граммы)

Пример: 2
price number Да

Цена в копейках за единицу расчета

Пример: 4500
priceSum number Нет

Цена позиции в копейках (если не передан, то касса посчитает автоматически)

Пример: 9000
tax enum Нет

Тип НДС (если не указан, то будет взят из настроек устройства)

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

NDS_20

taxSum number Нет

Сумма НДС (если не указан, то будет вычислен устройством)

Пример: 1620
tags array Нет

Теги ФФД

Параметр Тип Обяз. Описание
tag number Нет

Номер тега из формата ФФД.

Пример: 1212
value number Нет

Значение тега.

Пример: 12
payments array Да

Информация об оплате

Параметр Тип Обяз. Описание
sum number Да

Размер оплаты

type enum Да

Тип оплаты

Принимает одно из значений
Значение Описание
CASH

Наличные

CASHLESS

Безналичные

PREPAID

Аванс

CREDIT

Кредит

CONSIDERATION

Встречное предоставление

tags array Нет

Теги ФФД

Параметр Тип Обяз. Описание
tag number Нет

Номер тега из формата ФФД.

Пример: 1212
value number Нет

Значение тега.

Пример: 12
attributes object Да

Информация о покупателе. По этим параметрам ОФД отправит электронный чек покупателю. Требуется указать как минимум 1 параметр.

Параметр Тип Обяз. Описание
email string Нет

Адрес электронной почты. Имеет преимущество перед телефоном

Пример: john.smith@example.com
phone string Нет

Номер телефона (в формате +7XXXXXXXXXX). Если не указана почта, будет использован номер телефона

Пример: +71239994499
total object Да

Сумма чека

Параметр Тип Обяз. Описание
priceSum number Нет

Сумма в копейках по всем позициям

Пример: 9000
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор операции (см. API Операции)

Пример: 5956889136fdd7733f19cfe6
externalId string Нет

Внешний идентификатор (UUIDv4) (не обязательно)

Пример: 2b964ebc-5f03-4a9b-86ff-7e9371611386
createdAt string Нет

Дата формирования

Пример: 2017-06-20 12:01:47.990Z
status enum Нет

Статус операции

Принимает одно из значений
Значение Описание
PENDING

В очереди

IN_PROGRESS

Выполняется

SUCCESS

Завершено успешно

ERROR

Завершено с ошибкой

Пример запроса
Content-Type: application/json
{
  "externalId": "2b964ebc-5f03-4a9b-86ff-7e9371611386",
  "deviceId": 1385,
  "shopId": 385,
  "type": "SALE",
  "timeout": 5,
  "taxMode": "DEFAULT",
  "positions": [
    {
      "remId": "2b964ebc-5f03-4a9b-86ff-7e9371611386",
      "name": "Шоколад Сникерс",
      "type": "COUNTABLE",
      "quantity": 2,
      "price": 4500,
      "priceSum": 9000,
      "tax": "NDS_20",
      "taxSum": 1620,
      "tags": [
        {
          "tag": 1212,
          "value": 12
        }
      ]
    }
  ],
  "payments": [
    {
      "sum": 9000,
      "type": "CASHLESS"
    }
  ],
  "tags": [
    {
      "tag": 1212,
      "value": 12
    }
  ],
  "attributes": {
    "email": "john.smith@example.com",
    "phone": "+71239994499"
  },
  "total": {
    "priceSum": 9000
  }
}
Пример ответа 202 Accepted
Content-Type: application/json
{
  "id": "5956889136fdd7733f19cfe6",
  "externalId": "2b964ebc-5f03-4a9b-86ff-7e9371611386",
  "createdAt": "2017-06-20 12:01:47.990Z",
  "status": "PENDING"
}

/receipts/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id string Да Идентификатор чека

Информация о чеке

GEThttps://kabinet.dreamkas.ru/api/receipts/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор чека

type enum Нет

Тип чека

Принимает одно из значений
Значение Описание
SALE

Приход

REFUND

Возврат прихода

OUTFLOW

Расход

OUTFLOW_REFUND

Возврат расхода

CORRECTION_INFLOW

Коррекция прихода

CORRECTION_OUTFLOW

Коррекция расхода

amount number Нет

Сумма чека в копейках

discount number Нет

Сумма скидок в копейках (уже учтена в amount, т.е. клиент заплатил столько, сколько указано amount)

deviceId number Нет

Идентификатор ККТ

shopId number Нет

Идентификатор магазина

operationId string Нет

Идентификатор операции, если чек был пробит через интернет-магазин. Может отсутствовать.

shiftId number Нет

Номер смены

number number Нет

Номер чека в смене

localDate string Нет

Локальное время кассы во время пробития чека

date string Нет

Время пробития чека

payments array Нет

Детальная информация об оплате

Параметр Тип Обяз. Описание
type enum Нет

Тип оплаты

Принимает одно из значений
Значение Описание
CASH

Наличные

CASHLESS

Безналичные

PREPAID

Аванс

CREDIT

Кредит

CONSIDERATION

Встречное предоставление

amount number Нет

Сумма, которая была оплачена этим типом

positions array Нет

Позиции в чеке

Параметр Тип Обяз. Описание
id string Нет

Идентификатор товара

name string Нет

Название товара в момент продажи

type enum Нет

Тип товара

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

SHOES

Обувь

CLOTHES

Одежда

SERVICE

Услуги

TOBACCO

Табак

MILK

Молочная продукция

ALCOHOL

Алкоголь

quantity number Нет

Количество проданного товара. Для мерного (SCALABLE) - граммы, для всех остальных типов это значение нужно делить на 1000, чтобы получить количество в штуках.

price number Нет

Стоимость единицы товара в копейках (стоимость позиции вычисляется по формуле price * quantity)

discount number Нет

Величина скидки в копейках (суммарная по позиции, а не по единице товара)

barcode string Нет

Штрихкод по которому был продан товар (исключает vendorCode)

exciseBarcode string Нет

Акцизный код (PDF417), отсканированный в момент продажи бутылки

vendorCode string Нет

Артикул, по которому был продан товар (исключает barcode)

tax enum Нет

Тип НДС на момент продажи

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

departmentId number Нет

Идентификатор отдела, в котором был товар в момент продажи (может отсутствовать)

cashier object Нет

Информация о кассире

Параметр Тип Обяз. Описание
tabNumber string Нет

Табельный номер, уникален в рамках кассы

Пример: 88990
name string Нет

Имя

Пример: Иванов Петр Олегович
inn string Нет

ИНН кассира

Пример: 1234567890
card string Нет

Номер карты кассира

Пример: 046563
password string Нет

Хэш пароля (ГОСТ 34.11.94)

Пример: 31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913
role string Нет

Должность кассира

Пример: Продавец-консультант
permissions array Нет

Полномочия

Принимает одно из значений
Значение Описание
SALE

Только VIKI-кассы

REFUND

Только VIKI-кассы

SHIFTS

Только VIKI-кассы

EGAIS_ACCEPTANCE

Только VIKI-кассы

SETTINGS

Только VIKI-кассы

PRICE_CHANGE

Только VIKI-кассы

QUANTITY_DECREASE

Только VIKI-кассы

CLEAR_PURCHASE

Только VIKI-кассы

TAX_SYSTEM_CHANGE

Только VIKI-кассы

DEFER_DELETE

Только VIKI-кассы

correctionData object Нет

Данные чека коррекции.

Параметр Тип Обяз. Описание
type string Да

Тип коррекции. Самостоятельная (SELF) или по предписанию (ORDER).

Пример: SELF
date string Да

Дата коррекции в формате ‘YYYY-MM-DD’.

Пример: 2020-03-17
number string Нет

Номер документа коррекции.

Пример: 2544/70
name string Нет

Наименование документа коррекции.

Пример: Объяснительная от 17.03.2020
checkURL string Нет

Сайт проверки чека

Пример: www.nalog.ru
fiscalDocumentNumber string Нет

Фискальный номер документа

Пример: 200
fiscalDocumentSign string Нет

Фискальный признак документа

Пример: 2147483647
fnNumber string Нет

Номер фискального накопителя

Пример: 9999078900001712
registryNumber string Нет

Регистрационный номер ККТ

Пример: 0000000001056589
Пример ответа 200 OK
Content-Type: application/json
{
  "id": "",
  "type": "SALE",
  "amount": 382500,
  "discount": 0,
  "deviceId": 329,
  "shopId": 5328,
  "operationId": "5ce54a654adbce65466a3b5a",
  "shiftId": 44,
  "number": 1,
  "localDate": "2018-01-23 20:52:02",
  "date": "2017-01-23T17:52:02.000Z",
  "payments": [
    {
      "type": "CASH",
      "amount": 382500
    }
  ],
  "positions": [
    {
      "id": "2e21d75a-70d4-4a9f-b2e9-d69cf93b83cb",
      "name": "Булочка с маком",
      "type": "COUNTABLE",
      "quantity": 1000,
      "price": 6380,
      "discount": 0,
      "barcode": "58523523657",
      "exciseBarcode": "59520101001208381",
      "vendorCode": "АРТ-87499-847",
      "tax": "NDS_20",
      "departmentId": 553
    }
  ],
  "cashier": {
    "tabNumber": "88990",
    "name": "Иванов Петр Олегович",
    "inn": "1234567890",
    "card": "046563",
    "password": "31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913",
    "role": "Продавец-консультант",
    "permissions": [
      "SALE"
    ]
  },
  "correctionData": {
    "type": "SELF",
    "date": "2020-03-17",
    "number": "2544/70",
    "name": "Объяснительная от 17.03.2020"
  },
  "checkURL": "www.nalog.ru",
  "fiscalDocumentNumber": "200",
  "fiscalDocumentSign": "2147483647",
  "fnNumber": "9999078900001712",
  "registryNumber": "0000000001056589"
}
Пример ответа 404 Not Found
Content-Type: application/json
{
    "status": 404,
    "code": "E_NOT_FOUND",
    "message": "Не найдено",
    "data": {}
}
Пример ответа 400 Bad Request
Content-Type: application/json
{
    "status": 400,
    "code": "E_VALIDATION_FAILED",
    "message": "Ошибка валидации",
    "data": {
        "errors": [
            {
                "code": "E_INVALID_ID",
                "message": "Передан некорректный идентификатор объекта"
            }
        ]
    }
}

Внесения/Изъятия

Возвращает информацию о внесениях и изъятиях за определенный интервал времени

/encashments{?from,to,limit,offset,devices}

Данные о внесениях и изъятиях

GEThttps://kabinet.dreamkas.ru/api/encashments{?from,to,limit,offset,devices}
Параметры строки запроса
Параметр Тип Обяз. Описание
from string Нет Дата в ISO формате. По умолчанию 00:00:00 текущего дня
to string Нет Дата в ISO формате. По умолчанию 23:59:59 текущего дня
offset number Нет Смещение
limit number Нет Количество. Максимальное значение 1000
devices string Нет список идентификаторов устройств
Параметры тела ответа
Параметр Тип Обяз. Описание
query object Нет

Фактические значения, с которыми был выполнен запрос

Параметр Тип Обяз. Описание
from string Нет

Дата начала

Пример: 2017-10-13T14:15:01.239Z
to string Нет

Дата окончания

Пример: 2017-10-14T14:15:01.239Z
limit number Нет

Количество

offset number Нет

Смещение

data array Нет

Данные об изъятиях и внесениях

Параметр Тип Обяз. Описание
deviceId number Нет

Идентификатор устройства,

shopId number Нет

Идентификатор магазина,

type enum Нет

Тип операции,

Принимает одно из значений
Значение Описание
MONEY_IN

Операция внесения

MONEY_OUT

Операция изъятия

shiftId number Нет

Номер смены, уникален в рамках одной кассы,

cashier object Нет

Информация о кассире,

Параметр Тип Обяз. Описание
tabNumber string Нет

Табельный номер, уникален в рамках кассы

Пример: 88990
name string Нет

Имя

Пример: Иванов Петр Олегович
inn string Нет

ИНН кассира

Пример: 1234567890
card string Нет

Номер карты кассира

Пример: 046563
password string Нет

Хэш пароля (ГОСТ 34.11.94)

Пример: 31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913
role string Нет

Должность кассира

Пример: Продавец-консультант
permissions array Нет

Полномочия

Принимает одно из значений
Значение Описание
SALE

Только VIKI-кассы

REFUND

Только VIKI-кассы

SHIFTS

Только VIKI-кассы

EGAIS_ACCEPTANCE

Только VIKI-кассы

SETTINGS

Только VIKI-кассы

PRICE_CHANGE

Только VIKI-кассы

QUANTITY_DECREASE

Только VIKI-кассы

CLEAR_PURCHASE

Только VIKI-кассы

TAX_SYSTEM_CHANGE

Только VIKI-кассы

DEFER_DELETE

Только VIKI-кассы

sum number Нет

Сумма операции, в абсолютном значении,

localDate string Нет

Локальное время кассы во время операции внесения/изъятия

date string Нет

Время в формате ISO

Пример ответа 200 OK
Content-Type: application/json
{
  "query": {
    "from": "2017-10-13T14:15:01.239Z",
    "to": "2017-10-14T14:15:01.239Z",
    "limit": 0,
    "offset": 0
  },
  "data": [
    {
      "deviceId": 0,
      "shopId": 0,
      "type": "MONEY_IN",
      "shiftId": 0,
      "cashier": {
        "tabNumber": "88990",
        "name": "Иванов Петр Олегович",
        "inn": "1234567890",
        "card": "046563",
        "password": "31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913",
        "role": "Продавец-консультант",
        "permissions": [
          "SALE"
        ]
      },
      "sum": 0,
      "localDate": "",
      "date": ""
    }
  ]
}

Кассиры

Возвращает список кассиров

/cashiers{?limit,offset}

Данные о кассирах

GEThttps://kabinet.dreamkas.ru/api/cashiers{?limit,offset}
Параметры строки запроса
Параметр Тип Обяз. Описание
limit number Нет Количество записей для вывода
offset number Нет Смещение
Параметры тела ответа
Параметр Тип Обяз. Описание
tabNumber string Нет

Табельный номер, уникален в рамках кассы

Пример: 88990
name string Нет

Имя

Пример: Иванов Петр Олегович
inn string Нет

ИНН кассира

Пример: 1234567890
card string Нет

Номер карты кассира

Пример: 046563
password string Нет

Хэш пароля (ГОСТ 34.11.94)

Пример: 31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913
role string Нет

Должность кассира

Пример: Продавец-консультант
permissions array Нет

Полномочия

Принимает одно из значений
Значение Описание
SALE

Только VIKI-кассы

REFUND

Только VIKI-кассы

SHIFTS

Только VIKI-кассы

EGAIS_ACCEPTANCE

Только VIKI-кассы

SETTINGS

Только VIKI-кассы

PRICE_CHANGE

Только VIKI-кассы

QUANTITY_DECREASE

Только VIKI-кассы

CLEAR_PURCHASE

Только VIKI-кассы

TAX_SYSTEM_CHANGE

Только VIKI-кассы

DEFER_DELETE

Только VIKI-кассы

Пример ответа 200 OK
Content-Type: application/json
{
  "tabNumber": "88990",
  "name": "Иванов Петр Олегович",
  "inn": "1234567890",
  "card": "046563",
  "password": "31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913",
  "role": "Продавец-консультант",
  "permissions": [
    "SALE"
  ]
}

Смены

Возвращает список смен

/shifts{?from,to,devices,is_closed,limit,offset}

Список смен

GEThttps://kabinet.dreamkas.ru/api/shifts{?from,to,devices,is_closed,limit,offset}

Возвращает список смен.

Параметры строки запроса
Параметр Тип Обяз. Описание
from string Нет Дата "от" (в ISO формате), открытие смены, не localDate, а UTC
to string Нет Дата "до" (в ISO формате), открытие смены, не localDate, a UTC
offset number Нет Смещение.
limit number Нет Количество. (макс. - 1000, по умолчанию - 100).
devices string Нет Список идентификаторов устройств (если нужно выбрать смены для конкретных устройств).
is_closed boolean Нет Если передать истинное значение (например: yes, y, true, 1), то будут показаны только закрытые смены. Если требуется отобразить только открытые смены, то следует передать ложное значение (no, n, false, 0). Если параметр не передан, то будут возвращены все смены (закрытые и открытые)
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "id": "5949581a02c08a286420c6c7",
    "shiftId": 1,
    "deviceId": 1,
    "openedAt": "2017-06-20 12:01:47.990Z",
    "openedAtUTC": "2017-06-20 11:01:47.990Z",
    "closedAt": "2017-06-20 17:04:22.456Z",
    "closedAtUTC": "2017-06-20 16:04:22.456Z",
    "cashOnOpen": 24445,
    "cashOnClose": 44425,
    "isClosed": true,
    "cashier": {
      "tabNumber": "88990",
      "name": "Иванов Петр Олегович",
      "inn": "1234567890",
      "card": "046563",
      "password": "31544A084DBE2595147669E6088AF2413374A87D880432961CCDA1E729F6F913",
      "role": "Продавец-консультант",
      "permissions": [
        "SALE"
      ]
    }
  }
]

Операции

Набор методов для получения информации о статусе выполнения заданий.

Некоторые методы API (например, фискализация чека) возвращают HTTP-статус 202 Accepted, это означает, что запрос был принят в обработку, но его выполнение может занять некоторое время. В ответ на такие запросы в теле приходит идентификатор операции, по которому потом можно получить результат выполнения операции.

/operations

Список последних операций

GEThttps://kabinet.dreamkas.ru/api/operations
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "id": "5956889136fdd7733f19cfe6",
    "externalId": "2b964ebc-5f03-4a9b-86ff-7e9371611386",
    "createdAt": "2017-06-20 12:01:47.990Z",
    "status": "ERROR",
    "completedAt": "2017-06-20 12:03:12.440Z",
    "data": {
      "error": {
        "code": "NeedUpdateCash",
        "message": "Требуется обновление кассы"
      },
      "receiptId": "5ce6cf8008464343c54d1462"
    }
  }
]

/operations/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор операции

Информация о статусе операции

GEThttps://kabinet.dreamkas.ru/api/operations/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор операции (см. API Операции)

Пример: 5956889136fdd7733f19cfe6
externalId string Нет

Внешний идентификатор (UUIDv4) (не обязательно)

Пример: 2b964ebc-5f03-4a9b-86ff-7e9371611386
createdAt string Нет

Дата формирования

Пример: 2017-06-20 12:01:47.990Z
status enum Нет

Статус операции

Принимает одно из значений
Значение Описание
PENDING

В очереди

IN_PROGRESS

Выполняется

SUCCESS

Завершено успешно

ERROR

Завершено с ошибкой

ERROR

completedAt string Нет

Дата завершения

Пример: 2017-06-20 12:03:12.440Z
data object Нет

Дополнительные данные

Параметр Тип Обяз. Описание
error object Нет

Ошибка (при ошибке)

Параметр Тип Обяз. Описание
code string Нет

Код ошибки

Пример: NeedUpdateCash
message string Нет

Сообщение об ошибки

Пример: Требуется обновление кассы
receiptId string Нет

Идентификатор чека (при успехе).

Пример ответа 200 OK
Content-Type: application/json
{
  "id": "5956889136fdd7733f19cfe6",
  "externalId": "2b964ebc-5f03-4a9b-86ff-7e9371611386",
  "createdAt": "2017-06-20 12:01:47.990Z",
  "status": "ERROR",
  "completedAt": "2017-06-20 12:03:12.440Z",
  "data": {
    "error": {
      "code": "NeedUpdateCash",
      "message": "Требуется обновление кассы"
    },
    "receiptId": "5ce6cf8008464343c54d1462"
  }
}

Вебхуки

Предоставляет методы для управления вебхуками.

HTTP-статус ответа на вебхук должен быть в диапазоне 200-299. Если ваш сервер ответит другим кодом, то вебхук не будет считаться успешно выполненным и спустя некоторое время будет произведена повторная попытка его выполнения.

При ошибке выполнения вебхука, спустя некоторое время будут предприниматься дополнительные попытки через разные интервалы времени. На текущий момент это: - сразу

  • через 5 сек

  • через 1 минуту

  • через 1 час

  • через 3 часа

  • через 24 часа

/webhooks

Список вебхуков

GEThttps://kabinet.dreamkas.ru/api/webhooks
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "url": "",
    "types": {
      "products": false,
      "devices": false,
      "encashments": false,
      "receipts": false,
      "shifts": false,
      "operations": false,
      "deviceRegistrations": false
    },
    "id": ""
  }
]

Создание вебхука

POSThttps://kabinet.dreamkas.ru/api/webhooks
Параметры тела запроса
Параметр Тип Обяз. Описание
url string Да

Ссылка, куда Кабинет отправит запрос

types object Да

Типы объектов, на которых можно подписаться

Параметр Тип Обяз. Описание
products boolean Нет

Товары. Создание, изменение и удаление

Пример: true
devices boolean Нет

Устройства, в частности кассы

Пример: true
encashments boolean Нет

Внесения и изъятия из кассы

Пример: true
receipts boolean Нет

Чеки, как пробитые из кассы кассиром, так и чеки из интернет-магазина

Пример: true
shifts boolean Нет

Новые смены, закрытие смены

Пример: true
operations boolean Нет

Операции, в частности чеки из интернет-магазинов

Пример: true
deviceRegistrations boolean Нет

Изменения регистрационных данных ККТ

Пример: true
isActive boolean Нет

Состояние вебхука. Если не активен - не будет вызываться

Пример: true
Пример запроса
Content-Type: application/json
{
  "url": "",
  "types": {
    "products": false,
    "devices": false,
    "encashments": false,
    "receipts": false,
    "shifts": false,
    "operations": false,
    "deviceRegistrations": false
  }
}
Пример ответа 201 Created
Content-Type: application/json
{
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626"
}

/webhooks/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id string Да Идентификатор вебхука, UUIDv4

Информация о вебхуке

GEThttps://kabinet.dreamkas.ru/api/webhooks/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
url string Да

Ссылка, куда Кабинет отправит запрос

types object Да

Типы объектов, на которых можно подписаться

Параметр Тип Обяз. Описание
products boolean Нет

Товары. Создание, изменение и удаление

Пример: true
devices boolean Нет

Устройства, в частности кассы

Пример: true
encashments boolean Нет

Внесения и изъятия из кассы

Пример: true
receipts boolean Нет

Чеки, как пробитые из кассы кассиром, так и чеки из интернет-магазина

Пример: true
shifts boolean Нет

Новые смены, закрытие смены

Пример: true
operations boolean Нет

Операции, в частности чеки из интернет-магазинов

Пример: true
deviceRegistrations boolean Нет

Изменения регистрационных данных ККТ

Пример: true
isActive boolean Нет

Состояние вебхука. Если не активен - не будет вызываться

Пример: true
id string Нет

Идентификатор вебхука, UUIDv4

Пример ответа 200 OK
Content-Type: application/json
{
  "url": "",
  "types": {
    "products": false,
    "devices": false,
    "encashments": false,
    "receipts": false,
    "shifts": false,
    "operations": false,
    "deviceRegistrations": false
  },
  "id": ""
}

Редактирование вебхука

PATCHhttps://kabinet.dreamkas.ru/api/webhooks/{id}
Параметры тела запроса
Параметр Тип Обяз. Описание
url string Да

Ссылка, куда Кабинет отправит запрос

types object Да

Типы объектов, на которых можно подписаться

Параметр Тип Обяз. Описание
products boolean Нет

Товары. Создание, изменение и удаление

Пример: true
devices boolean Нет

Устройства, в частности кассы

Пример: true
encashments boolean Нет

Внесения и изъятия из кассы

Пример: true
receipts boolean Нет

Чеки, как пробитые из кассы кассиром, так и чеки из интернет-магазина

Пример: true
shifts boolean Нет

Новые смены, закрытие смены

Пример: true
operations boolean Нет

Операции, в частности чеки из интернет-магазинов

Пример: true
deviceRegistrations boolean Нет

Изменения регистрационных данных ККТ

Пример: true
isActive boolean Нет

Состояние вебхука. Если не активен - не будет вызываться

Пример: true
Пример запроса
Content-Type: application/json
{
  "url": "",
  "types": {
    "products": false,
    "devices": false,
    "encashments": false,
    "receipts": false,
    "shifts": false,
    "operations": false,
    "deviceRegistrations": false
  }
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Удаление вебхука

DELETEhttps://kabinet.dreamkas.ru/api/webhooks/{id}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Пример выполнения вебхука

Пример тела вебхука

POSThttps://kabinet.dreamkas.ru/api/#
Параметры тела запроса
Параметр Тип Обяз. Описание
action enum Да

Тип действия

Принимает одно из значений
Значение Описание
CREATE

Создание сущности

UPDATE

Изменение сущности

DELETE

Удаление сущности

type enum Да

Тип сущности

Принимает одно из значений
Значение Описание
PRODUCT

Товар

DEVICE

Устройство, в частности касса. Может быть подключен, изменен или отключен

ENCASHMENT

Внесение/изъятие

SHIFT

Открытие, закрытие смены

RECEIPT

Чеки, пробитые кассой “оффлайн” и из внешних источников(интернет-магазины, …)(успешно зафискализированные)

OPERATION

Операции. В том числе созданные при фискализации. В отличие от чеков, операции несут полную информацию о фискализации, например об ошибках

data object Да

Объект измененной сущности. Содержит поля сущности, как описано это в документации выше. В случае удаления - приходит с ключом id

Параметр Тип Обяз. Описание
id string Нет

UUID товара (если не передан, UUID будет сгенерирован автоматически).

Указывать UUID можно только при создании товара. Изменить идентификатор товара после создания нельзя.

Пример: b0381fe4-4428-4dcb-8169-c8bbcab59626
name string Нет

Название

По умолчанию: Новый товар
type enum Нет

Тип продукта

Принимает одно из значений
Значение Описание
COUNTABLE

Штучный

SCALABLE

Мерный

ALCOHOL

Алкогольный

CLOTHES

Одежда

SHOES

Обувь

SERVICE

Услуга

TOBACCO

Табачная продукция

MILK

Молочная продукция

departmentId number Нет

ID отдела магазина

quantity number Нет

Единица товара

Пример: 1000
prices array Нет

Цена для каждого устройства

Параметр Тип Обяз. Описание
deviceId number Нет

ID устройства

Пример: 1
value number Нет

Цена в копейках

Пример: 1200
price number Нет

Цена товара для новых устройств (если не указать, будет взято максимальное значение из prices)

isMarked boolean Нет

Признак маркированного товара. Если true, касса при продаже попросит отсканировать код маркировки.

Пример: true
isExcise boolean Нет

Признак подакцизного товара.

Пример: true
meta object Нет

Дополнительные данные о товаре, в зависимости от типа

Параметр Тип Обяз. Описание
code string Нет

Первый алкокод

Пример: 0000000000001
codes array Нет

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

Пример: ["0000000000001"]
typeCode string Нет

Код вида алкогольной продукции. Укажите 3-5 значный цифровой код

Пример: 123
volume number Нет

Объем в миллилитрах

Если передан 0, то это означает, что алкоголь поставляется в кегах/тарах

По умолчанию: 0
alc number Нет

Содержание алкоголя в десятых процента (например, 98 = 9.8%), значение может быть от 1 до 1000.

Пример: 400
originCountryCode string Нет

Код страны происхождения товара, по “Общероссийскому классификатору стран мира”

Пример: 056
customEntryNum string Нет

Номер таможенной декларации

Пример: 09283450/20190728/2345
exciseDuty number Нет

Сумма акциза, в копейках

Пример: 6200
isKeg boolean Нет

Признак, что товара поставляется в кеге

Пример: true
barcodes array Нет

Штрихкоды. Только длины 8, 12, 13, 18. Проверяется на контрольную сумму

Пример: ["12341238"]
vendorCodes array Нет

Артикулы, никаких валидаций

Пример: ["AB_1234"]
tax enum Нет

Налог

Принимает одно из значений
Значение Описание
NDS_NO_TAX

Без НДС

NDS_0

НДС 0%

NDS_5

НДС 5%

NDS_7

НДС 7%

NDS_10

НДС 10%

NDS_20

НДС 20%

NDS_5_CALCULATED

НДС 5/105%

NDS_7_CALCULATED

НДС 7/107%

NDS_10_CALCULATED

НДС 10/110%

NDS_20_CALCULATED

НДС 20/120%

createdAt string Нет

Дата создания

Пример: 2017-05-05T14:15:01.239Z
updatedAt string Нет

Дата последнего изменения

Пример: 2017-05-05T14:15:01.239Z
Пример запроса
Content-Type: application/json
{
  "action": "CREATE",
  "type": "PRODUCT",
  "data": {
    "id": "b0381fe4-4428-4dcb-8169-c8bbcab59626",
    "name": "Новый товар",
    "type": "COUNTABLE",
    "departmentId": 0,
    "quantity": 1000,
    "prices": [
      {
        "deviceId": 1,
        "value": 1200
      }
    ],
    "isMarked": false,
    "isExcise": false,
    "meta": {
      "code": "0000000000001",
      "codes": [
        "0000000000001"
      ],
      "typeCode": "123",
      "volume": 0,
      "alc": 400,
      "originCountryCode": "056",
      "customEntryNum": "09283450/20190728/2345",
      "exciseDuty": 6200,
      "isKeg": false
    },
    "barcodes": [
      "12341238"
    ],
    "vendorCodes": [
      "AB_1234"
    ],
    "tax": "NDS_NO_TAX",
    "createdAt": "2017-05-05T14:15:01.239Z",
    "updatedAt": "2017-05-05T14:15:01.239Z"
  }
}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.

Пользователи

Для создания пользователей требуется Application авторизация. Пользователи, создаваемые приложениями - это полноценные аккаунты Кабинета, но с небольшими отличиями: - подтверждение аккаунта в Кабинете не требуется (аккаунт уже активирован)

  • при создании аккаунта, пользователь не получит приветственных писем о регистрации

  • для аккаунта пароль генерируется автоматически, приложение не может его указать/изменить

  • для пользователя автоматически генерируется Bearer токен, которым может пользоваться приложение, для выполнения запросов от имени этого аккаунта

Пользователь, при желании, может получить доступ к аккаунту через процедуру восстановления пароля.

При регистрации пользователей крайне рекомендуется использовать адрес, который использовался пользователем при регистрации в сервисе самого приложения. При регистрации аккаунтов на рандомные/временные адреса, вы поставите под угрозу безопасность пользователя.

/users

Создание пользователя

POSThttps://kabinet.dreamkas.ru/api/users
Параметры тела запроса
Параметр Тип Обяз. Описание
name string Да

Имя пользователя

Пример: Василий
email string Да

E-mail пользователя

Пример: mail@example.com
Параметры тела ответа
Параметр Тип Обяз. Описание
userId number Нет

Идентификатор пользователя

Пример: 58835
accessToken string Нет

Токен доступа (Bearer) пользователя, сгенерированный для приложения, которое выполнило запрос

Пример: 523cbe0f-99da-4f31-91b7-3f9754aeb04b
Пример запроса
Content-Type: application/json
{
  "name": "Василий",
  "email": "mail@example.com"
}
Пример ответа 201 Created
Content-Type: application/json
{
  "userId": 58835,
  "accessToken": "523cbe0f-99da-4f31-91b7-3f9754aeb04b"
}

Профиль

Набор методов для получения информации об аккаунте пользователя

/user/pin

Получение кода для привязки кассы

GEThttps://kabinet.dreamkas.ru/api/user/pin
Параметры тела ответа
Параметр Тип Обяз. Описание
code number Нет

Пятизначный код привязки, который нужно ввести на устройстве

Пример: 42638
ttl number Нет

Оставшееся время жизни кода в секундах

Пример: 1773
Пример ответа 200 OK
Content-Type: application/json
{
  "code": 42638,
  "ttl": 1773
}

Клиенты

Методы для управления клиентами

/clients

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

GEThttps://kabinet.dreamkas.ru/api/clients
Пример ответа 200 OK
Content-Type: application/json
[
  {
    "id": "276421f5-0a84-4c2c-a84d-96eb8b57dd55",
    "phone": "79441118833",
    "email": "user@example.com",
    "name": "Павел",
    "createdAt": "2017-11-14",
    "avatar": "https://kabinet-static.dreamkas.ru/assets/avatars/24.svg",
    "seed": 84736438
  }
]

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

POSThttps://kabinet.dreamkas.ru/api/clients

Для создания клиента необходимо заполнить хотя бы одно из полей id, email или phone

Параметры тела запроса
Параметр Тип Обяз. Описание
id string Нет

Идентификатор клиента в формате UUID (любой версии). Если не передан, будет сгенерирован автоматически.

Пример: 276421f5-0a84-4c2c-a84d-96eb8b57dd55
phone string Нет

Номер телефона

Пример: 79441118833
email string Нет

Адрес электронной почты

Пример: user@example.com
name string Нет

Имя

Пример: Павел
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор клиента в формате UUID (любой версии). Если не передан, будет сгенерирован автоматически.

Пример: 276421f5-0a84-4c2c-a84d-96eb8b57dd55
phone string Нет

Номер телефона

Пример: 79441118833
email string Нет

Адрес электронной почты

Пример: user@example.com
name string Нет

Имя

Пример: Павел
createdAt string Да

Дата создания клиента в формате ГГГГ-ММ-ДД

Пример: 2017-11-14
avatar string Да

Ссылка на аватар

Пример: https://kabinet-static.dreamkas.ru/assets/avatars/24.svg
seed number Да

Случайное число для выбора аватара (ID аватара = seed % 24). Можно явно выставить значение в диапазоне [0;23], чтобы явно выбрать аватар для клиента.

Пример: 84736438
Пример запроса
Content-Type: application/json
{
  "id": "276421f5-0a84-4c2c-a84d-96eb8b57dd55",
  "phone": "79441118833",
  "email": "user@example.com",
  "name": "Павел"
}
Пример ответа 200 OK
Content-Type: application/json
{
  "id": "276421f5-0a84-4c2c-a84d-96eb8b57dd55",
  "phone": "79441118833",
  "email": "user@example.com",
  "name": "Павел",
  "createdAt": "2017-11-14",
  "avatar": "https://kabinet-static.dreamkas.ru/assets/avatars/24.svg",
  "seed": 84736438
}

/clients/{id}

Параметры строки запроса
Параметр Тип Обяз. Описание
id number Да Идентификатор клиента

Информация о клиенте

GEThttps://kabinet.dreamkas.ru/api/clients/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор клиента в формате UUID (любой версии). Если не передан, будет сгенерирован автоматически.

Пример: 276421f5-0a84-4c2c-a84d-96eb8b57dd55
phone string Нет

Номер телефона

Пример: 79441118833
email string Нет

Адрес электронной почты

Пример: user@example.com
name string Нет

Имя

Пример: Павел
createdAt string Да

Дата создания клиента в формате ГГГГ-ММ-ДД

Пример: 2017-11-14
avatar string Да

Ссылка на аватар

Пример: https://kabinet-static.dreamkas.ru/assets/avatars/24.svg
seed number Да

Случайное число для выбора аватара (ID аватара = seed % 24). Можно явно выставить значение в диапазоне [0;23], чтобы явно выбрать аватар для клиента.

Пример: 84736438
Пример ответа 200 OK
Content-Type: application/json
{
  "id": "276421f5-0a84-4c2c-a84d-96eb8b57dd55",
  "phone": "79441118833",
  "email": "user@example.com",
  "name": "Павел",
  "createdAt": "2017-11-14",
  "avatar": "https://kabinet-static.dreamkas.ru/assets/avatars/24.svg",
  "seed": 84736438
}

Обновление клиента

PATCHhttps://kabinet.dreamkas.ru/api/clients/{id}
Параметры тела ответа
Параметр Тип Обяз. Описание
id string Нет

Идентификатор клиента в формате UUID (любой версии). Если не передан, будет сгенерирован автоматически.

Пример: 276421f5-0a84-4c2c-a84d-96eb8b57dd55
phone string Нет

Номер телефона

Пример: 79441118833
email string Нет

Адрес электронной почты

Пример: user@example.com
name string Нет

Имя

Пример: Павел
createdAt string Да

Дата создания клиента в формате ГГГГ-ММ-ДД

Пример: 2017-11-14
avatar string Да

Ссылка на аватар

Пример: https://kabinet-static.dreamkas.ru/assets/avatars/24.svg
seed number Да

Случайное число для выбора аватара (ID аватара = seed % 24). Можно явно выставить значение в диапазоне [0;23], чтобы явно выбрать аватар для клиента.

Пример: 84736438
Пример запроса
Content-Type: application/json
{
  "id": "276421f5-0a84-4c2c-a84d-96eb8b57dd55",
  "phone": "79441118833",
  "email": "user@example.com",
  "name": "Павел"
}
Пример ответа 200 OK

Удаление клиента

DELETEhttps://kabinet.dreamkas.ru/api/clients/{id}
Пример ответа 204 No Content
Ответ с таким статусом не содержит тела, но означает, что запрос выполнено успешно.