NAV Navbar
PHP

Введение

На платформе Poster вы можете создавать любые приложения, например:

Возможности платформы

Начало работы

Если вы пишете приложение только для себя или знакомитесь с платформой, используйте токен “Личная интеграция” в вашем аккаунте в разделе Доступ → Интеграции.

Если вы пишете приложение для клиентов Poster вам нужно создать Приложение.
От его имени вы будете работать с системой и сможете опубликовать и продавать ваше приложение в каталоге Poster.

Как создать приложение

Чтобы создать приложение:

  1. Зарегистрируйте аккаунт разработчика или войдите в существующий.
  2. На странице Аккаунт → Создать приложение заполните название, категорию и описание приложения и нажмите Создать
  3. В разделе Пользователи и роли ваш аккаунт разработчика автоматически добавится в список тестирующих. Тестировщики видят приложение в каталоге до публикации.
  4. application_id и application_secret вы найдете в настройках приложения, они понадобятся для авторизации

Отправка запросов

Пример запроса:

<?php
function sendRequest($url, $type = 'get', $params = [], $json = false)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    if ($type == 'post' || $type == 'put') {
        curl_setopt($ch, CURLOPT_POST, true);

        if ($json) {
            $params = json_encode($params);

            curl_setopt($ch, CURLOPT_HTTPHEADER, [
                'Content-Type: application/json',
                'Content-Length: ' . strlen($params)
            ]);

            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        } else {
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        }
    }

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Poster (http://joinposter.com)');

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

$url = 'https://joinposter.com/api/clients.getGroup' 
    . '?format=json'
    . '&token=687409:4164553abf6a031302898da7800b59fb'
    . '&group_id=1';

$group = sendRequest($url);

Пример ответа:

{
   "response":{
      "client_groups_id":"1",
      "client_groups_name":"Постоянный посетитель",
      "loyalty_type":"1",
      "client_groups_discount":"10",
      "birthday_bonus":"5000",
      "count_groups_clients":"125"
   }
}

Пример ошибки:

{
   "error":{
      "code":11,
      "message":"Bad access token"
   }
}

Обмен данных с Poster происходит с помощью GET или POST https-запросов.

Общий формат адреса для всех https-запросов

https://joinposter.com/api/{method}?format={format}&token={token}&param1=val1&param2=val2

Параметры адреса для всех https-запросов

Параметр Описание
method Название метода API, например, clients.getGroups
token Авторизационный токен. Чтобы получить токен, пройдите один из способов авторизации.
format Формат запроса, доступные значения: json или xml
param1, val1 Дополнительные параметры которые зависят от запроса

Ответ приходит в указанном формате и содержит объект верхнего уровня error либо response. Объект error уточняется параметрами code и message. Со списком всех ошибок вы можете ознакомиться в таблице ошибок.

Авторизация в API

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

Шаг 1

Перейти из приложения на сайт Poster по адресу:

https://joinposter.com/api/auth?application_id={application_id}&redirect_uri={redirect_uri}&response_type=code

Если вы уже знаете логин аккаунта используйте:

https://{account}.joinposter.com/api/auth?application_id={application_id}&redirect_uri={redirect_uri}&response_type=code

Параметр Значение
application_id Id приложения в системе Poster, указан в настройках приложения на dev.joinposter.com
redirect_uri URL на который пользователь направляется после первого шага авторизации. Должен точно совпадать с тем, что указан в настройках приложения на dev.joinposter.com.
response_type Строка со значением code

Шаг 2

После перехода по одному из указанных выше адресов пользователь авторизуется. Затем подтверждает свое согласие на передачу приложению даных аккаунта. Доступы приложения указываются в настройках приложения на dev.joinposter.com.

После подтверждения о передачи данных пользователь будет перенаправлен обратно в приложение по адресу: redirect_uri?code=code&account=account

Параметр Значение
code 32 символьный код, использующийся для идентификации приложения на последнем шаге авторизации,
account логин заведения в системе Poster, который необходимо использовать для отправки всех последующих запросов к API Poster.

Шаг 3

Пример запроса на получение токена:

<?php
$url = 'https://api-demo.joinposter.com/api/v2/auth/access_token'; 

$auth = [
    'application_id'        => 76,
    'application_secret'    => '9642176a5cdfe3f65e6e00c27b668795',
    'grant_type'            => 'authorization_code',
    'redirect_uri'          => 'http://localhost:8080/',
    'code'                  => '3e4f2ac6df7fa92660fa251528460575'
];

$data = sendRequest($url, 'post', $auth);

Пример ответа при успешной авторизации:

{
   "access_token":"861052:02391570ff9af128e93c5a771055ba88",
   "account_number":"861052",
   "user":{
      "id":4,
      "name":"Poster",
      "email":"dev@joinposter.com",
      "role_id":3
   },
   "ownerInfo":{
      "email":"dev@joinposter.com",
      "phone":"+380684152664",
      "city":"",
      "country":"RU",
      "name":"Poster",
      "company_name":"dev-example"
   },
   "tariff":{
      "key":"pricing-plan-1",
      "next_pay_date":"2018-05-31 11:52:41",
      "price":2
   }
}

Последний этап авторизации — получение access_token. Для этого приложение должно отправить POST-запрос по адресу:https://{account}.joinposter.com/api/v2/auth/access_token.

Где account — это логин заведения в системе Poster, полученный от Poster во время обратного редиректа.

POST параметры запроса /api/v2/auth/access_token

Параметр Значение
code 32 символьный код который вы получили на 2м шаге авторизации
application_id Id приложения в системе Poster. Указан в настройках приложения на dev.joinposter.com.
application_secret Секретный код приложения выданные при регистрации. Указан в настройках приложения на dev.joinposter.com.
redirect_uri URL на который пользователь направляется после первого шага авторизации. Должен точно совпадать с тем, что указан в настройках приложения на dev.joinposter.com.
grant_type Строка со значенем — authorization_code

Параметры успешного ответа /api/v2/auth/access_token

Параметр Значение
access_token Заветный токен который открывает доступ к API
account_number Уникальный идентификатор аккаунта в Poster
user Объект с информацией о пользователе который установил приложение
ownerInfo Объект с информацией о владельце аккаунта Poster
tariff Объект с информацией о подключенном тарифе. Передается если приложение привязанно к биллингу Poster.

Объект user содержит следующие параметры:

Параметр Значение
id Id сотрудника в Poster который подключил приложение
name Имя сотрудника в Poster
email Почта сотрудника
role_id Должность сотрудника который подключил приложение. Если подключил владелец аккаунта role_id=3.

Объект ownerInfo содержит следующие параметры:

Параметр Значение
email Email владельца аккаунта
phone Телефон владельца
city Город владельца
country Двухбуквенный код страны, формат ISO 3166
name Имя владельца аккаунта
company_name Название заведения

Объект tariff содержит следующие параметры:

Параметр Описание
key Уникальный ключ тарифа
date_trial Количество тестовых дней в тарифе
tariff_id Уникальный идентификатор тарифного плана
next_pay_date Дата до которой приложение оплачено Y-m-d H:i:s
price Стоимость тарифа в USD
name Название тарифного плана

Параметры ошибки ответа /api/v2/auth/access_token

Параметр Значение
code Код ошибки, значения кодов ошибок смотрите в таблице
error_type Тип сообщения об ошибке
error_message Сообщение ошибки

Авторизация в админ. панели

Пример verify

<?php
$url = "https://joinposter.com/api/v2/auth/manage";

$auth = [
    'application_id'        => 41, 
    'application_secret'    => '123123', 
    'code'                  => '74367937cf906c097931a3888adf7a84',
];
$auth['verify'] = md5(implode(':', $auth));

$data = sendRequest($url, 'post', $auth);

Ответ при успешной обработке запроса:

{
   "access_token":"861052:02391570ff9af128e93c5a771055ba88",
   "account_number":"861052",
   "user":{
      "id":4,
      "name":"Poster",
      "email":"dev@joinposter.com",
      "role_id":3
   },
   "ownerInfo":{
      "email":"dev@joinposter.com",
      "phone":"+380684152664",
      "city":"",
      "country":"RU",
      "name":"Poster",
      "company_name":"dev-example"
   },
   "tariff":{
      "key":"pricing-plan-1",
      "next_pay_date":"2018-05-31 11:52:41",
      "price":2
   }
}

Примеры ошибок

{
  "error":34,
  "message":"Поле application_id обязательное для заполнения", 
  "field": "application_id"
}
{
  "error":143,
  "message":"Requested code's application doesn't exist", 
  "field":"application_id"
}
{
  "error":142,
  "message":"Verify code is not correct", 
  "field": "verify"
}

Для добавления приложения в админ. панель, оно должно быть зарегистрировано в системе Poster. Кроме обычных параметров которые есть у любого приложения, указывается адрес страницы веб-приложения, который будет открываться в окне iframe, например, http://example.com/

window.addEventListener('load', function () { top.postMessage({hideSpinner: true}, '*') }, false);

Просле загрузки iFrame, генерируется код авторизации и конкатенируется к адресу страницы, например:

http://example.com/?code={code}

Чтобы получить информации об аккаунте необходимо отправить HTTP POST запрос:

POST https://joinposter.com/api/v2/auth/manage

POST параметры запроса

Параметр Описание
application_id Id приложения в системе Poster. Указан в настройках приложения на dev.joinposter.com.
application_secret Секретный код приложения выданные при регистрации. Указан в настройках приложения на dev.joinposter.com.
code 32-символьный код который вы получили на предидущем этапе авторизации
verify md5 из конкатенированный application_id, application_secret и code, разделенных двоеточием

Параметры успешного ответа:

Параметр Значение
access_token Заветный токен который открывает доступ к API
account_number Уникальный идентификатор аккаунта в Poster
user Объект с информацией о пользователе который установил приложение
ownerInfo Объект с информацией о владельце аккаунта Poster
tariff Объект с информацией о подключенном тарифе. Передается если приложение привязанно к биллингу Poster.

Объект user содержит следующие параметры:

Параметр Значение
id Id сотрудника в Poster который подключил приложение
name Имя сотрудника в Poster
email Почта сотрудника
role_id Должность сотрудника который подключил приложение. Если подключил владелец аккаунта role_id=3.

Объект ownerInfo содержит следующие параметры:

Параметр Значение
email Email владельца аккаунта
phone Телефон владельца
city Город владельца
country Двухбуквенный код страны, формат ISO 3166
name Имя владельца аккаунта
company_name Название заведения

Объект tariff содержит следующие параметры:

Параметр Описание
key Уникальный ключ тарифа
date_trial Количество тестовых дней в тарифе
tariff_id Уникальный идентификатор тарифного плана
next_pay_date Дата до которой приложение оплачено Y-m-d H:i:s
price Стоимость тарифа в USD
name Название тарифного плана

Параметры ошибки ответа /api/v2/auth/access_token

Параметр Значение
code Код ошибки, значения кодов ошибок смотрите в таблице
error_type Тип сообщения об ошибке
error_message Сообщение ошибки

Каталог приложений

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

Как попасть в каталог

Пришлите:

  1. Название приложения
  2. Краткое описание до 6 слов
  3. Логотип размером 512 x 512 px, с непрозрачным фоном (iOS стиль)
  4. Описание приложения. Может содержать теги: h, p, div, b, ul, i.
  5. Скриншоты приложения, без теней. Если приложение находится внутри интерфейса Poster, то на скриншоте должна быть вся страница.
  6. Инструкция по работе с приложением
  7. Контакты разработчика, например, телефон и имейл

Как попасть в каталог на сайте

В отличии от страницы приложения в админ. панели, на сайте есть “шапка” со слоганом и описанием. Для публикации пришлите:

  1. Слоган вашего сервиса
  2. Короткое описание. Расскажите чем полезен ваш сервис для владельца ресторана или кафе.
  3. Градиент или картинку для фона шапки

Проверка

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

Гайдлайны интеграции

Система лояльности

Чаще всего приложения лояльности выполняют две функции в POS системе — накопление и списание бонусов. Чтобы решить эти задачи, можно встроить виджет в рабочее место кассира. Дальше будем называть рабочее место кассира — терминалом.

Терминал дополняют функциями при помощи POS платформы. Чтобы начать разработку посмотрите раздел Начало работы. На Github вы найдете пример готового приложения системы лояльности.

Давайте разберем следующий сценарий работы. Гость приходит в заведение, заказывает круассан и кофе в сумме на 30 грн. И хочет использовать систему лояльности чтобы сэкономить. Весь этот процесс можно разбить на следующие этапы:

Идентификация гостя

Кассир сканирует QR-код или гость диктует свой номер телефона и видит доступные бонусы и персональные данные. Для этого сделайте следующее:

  1. Добавьте кнопку приложения в меню «•••» на экране заказа. Метод showApplicationIconAt, вариант «order».
  2. Подпишитесь на событие applicationIconClicked и слушайте нажатия на свою кнопку.
  3. При срабатывании события, показывайте попап с вашим интерфейсом методом interface.popup.
  4. В интерфейсе дайте возможность ввести номер карты лояльности или просканировать QR методом interface.scanBarcode.
  5. Методом makeRequest сделайте запрос на ваш сервер и получаете информацию о клиенте и доступных для него скидок.

Пример идентификации гостя

Синхронизация базы гостей

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

  1. Чтобы не дублировать гостей провести поиск по номеру телефона или карте методом clients.find.
  2. Если не нашли гостя, создать нового методом clients.create. Чтобы создать гостя, вам нужно указать ему клиентскую группу в Poster. Поэтому создайте группу методом API clients.createGroup. Назовите её названием вашего сервиса и поставьте % скидки 0.
  3. Добавить гостя в заказ методом orders.setOrderClient

Использование бонусов

В зависимости от системы лояльности клиент может получать разные вознаграждения. Например, 10% скидки на чек или 6й кофе в подарок. Любой из сценариев можно привести к фиксированной скидке. Скидку можно применять перед закрытием заказа или на экране оплаты, для этого реализуйте следующий алгоритм:

  1. Подпишитесь на событие закрытия заказа — beforeOrderClose
  2. Получите текущий заказ методом order.getActiveOrder или из ивента beforeOrderClose.
  3. Проверьте, привязан ли к заказу гость из вашей клиентской группы. Если привязан, покажите ваш интерфейс списания бонусов методом interface.popup.
  4. Выставите фиксированную скидку методом orders.setOrderBonus.
  5. Подпишитесь на событие закрытия заказа — afterOrderClose. После закрытия заказа отправляйте запрос на ваш сервер методом makeRequest об успешной оплате и списании бонусов.

Обратите внимание, кассир может в любой момент изменить заказ, удалить товары или добавить новые. Отслеживать эти изменения можно событием orderProductChange.

Пример установки скидки на заказ

Это базовый сценарий работы для системы лояльности. Если вы планируете размещаться в каталоге приложений, то вам нужно реализовать все пункты выше. В зависимости от вашей бизнес логики они могут отличаться, и чтобы разместиться в каталоге нужно обсудить изменения с сотрудниками Poster до начала интеграции.

webhooks: Вебхуки

Вебхуки позволяют моментально получать информацию об изменении объекта в Poster. Например, когда добавили новый товар в меню или пробили чек.

Подключение

  1. Перейдите в свой аккаунт разработчика → Настройки приложения
  2. В блоке Вебхуки и выбирете сущности по которым хотите получать хуки и URL на который отсылать хуки
  3. Подключите ваше приложение в аккаунте по которому нужно получать хуки
  4. Отредактируйте, удалите или создайте сущность чтобы выполнить отправку хука

Например, для отправки хука по заказам нужно подписаться на сущность transaction и закрыть заказ на терминале.

Параметры вебхука

Пример входящего вебхука:

{
  "account":"api-demo",
  "account_number":"813932",
  "object":"transaction",
  "object_id":1,
  "action":"added",
  "time":"1518794257",
  "verify":"a23sk3d9123ka31sd3k5asd9123sad93"
}

Пример обработки вебхука:

<?php
// Секретный ключ вашего приложения
$client_secret = 'fe2bc8e865d8fc2236968ee53c3b2bd5';

// Приводим к нужному формату входящие данные
$postJSON = file_get_contents('php://input');
$postData = json_decode($postJSON, true);

$verify_original = $postData['verify'];
unset($postData['verify']);

$verify = [
    $postData['account'],
    $postData['object'],
    $postData['object_id'],
    $postData['action'],
];

// Если есть дополнительные параметры
if (isset($postData['data'])) {
    $verify[] = $postData['data'];
}
$verify[] = $postData['time'];
$verify[] = $client_secret;

// Создаём строку для верификации запроса клиентом
$verify = md5(implode(';', $verify));

// Проверяем валидность данных 
if ($verify != $verify_original) {
    exit;
}

// Если не ответить на запрос, Poster продолжит слать Webhook
echo json_encode(['status' => 'accept']);

Все уведомления приходят POST запросом и содержат следующие параметры:

Параметр Описание
account Аккаунт клиента, который создал событие
account_number Номер аккаунта, который создал событие
object Сущность по которой прове
object_id Первичный ключ объекта
action Действие выполненное над сущностью: added — добавлен, changed — измененен, removed — удален, transformed — трансформация (например, тех. карты в товар и наоборот)
time Время отправки вебхука в Unix timestamp
verify Подпись запроса, состоит из md5 от account, object, object_id, action, data (если передается) и secret соединенных через ;
data Дополнительный параметр у некоторых сущностей

Заказы

Сущность Описание
transaction Заказы
incoming_order Онлайн-заказы и бронирование

incoming_order: Состояние онлайн-заказа

Событие changed срабатывает при изменении статуса заказа с новый на применен или отклонен.

Меню

Сущность Описание
product Товары
dish Тех. карты
category Категории товаров и тех. карт
prepack Полуфабрикаты
ingredient Ингредиенты
workshop Цеха
ingredients_category Категории ингридиентов

Маркетинг

Сущность Описание
client Клиенты
client_payed_sum Закрытие заказа с привязаным клиентом
clients_group Группы клиентов
promotion Акции
promotion_prize Накоплени акции

Склад

Сущность Описание
storage Склады
stock Состояние товара или ингрединта на складе

stock

В теле хука приходит дополнительный параметр data который содержит следующие параметры:

Параметр Описание
type Тип, принимает значение: 1 — полноценный ингредиент, 2 — товар, 3 — модификатор, 4 — производимая тех. карта, 5 — производимый полуфабрикат
element_id Первичный ключ объекта
storage_id Первичный ключ объекта склада
value_relative Изменение количества позиции на складе
value_absolute Конечное значение количества позиции на складе

Финансы

Сущность Описание
book_transaction Финансовые транзакции
cash_shift_transaction Кассовые транзакции

Доступ

Сущность Описание
spot Заведения
register Касса
waiter Официант

Настройки и приложения

Сущность Описание
configs Настройки
application Установка или удаление приложения

application

В теле хука приходит дополнительный параметр data который содержит следующие параметры:

Параметр Описание
user_id Id сотрудника, который установил приложение
access_token Токен доступа для работы с API. Возврашается в случае, если actionadded.

dash: Статистика

Методы для работы с разделом статистики. Все методы данного раздела начинаются с «dash».

dash.getAnalytics: Статистика по продажам

Пример запроса:

<?php

$url = 'https://joinposter.com/api/dash.getAnalytics' 
    . '?format=json'
    . '&token=687409:4164553abf6a031302898da7800b59fb'
    . '&dateFrom=20171009'
    . '&dateTo=20171012'
    . '&interpolate=week'
    . '&type=waiters';

$data = sendRequest($url);

Пример ответа:

{
  "response":{
    "data":[
      "169255.7100",
      "160327.7300",
      "48259.0100",
      "1470.0000"
    ],
    "data_hourly":[
      "36520.2400",
      "17785.4500",
      "19163.5600",
      "12688.5200",
      0,
      0,
      0,
      0,
      "13747.4500",
      "19465.3900",
      "8701.5900",
      "12727.5300",
      "12029.0000",
      "18482.3600",
      "18391.7200",
      "25149.2900",
      "23136.1600",
      "15255.1100",
      "14300.2800",
      "17448.0000",
      "28419.3000",
      "23969.5500",
      "19392.5800",
      "22539.3700"
    ],
    "data_weekday":[
      0,
      "169255.7100",
      "160327.7300",
      "48259.0100",
      "1470.0000",
      0,
      0
    ],
    "counters":{
      "revenue":"379312.4500",
      "profit":"315131.6900",
      "transactions":"248",
      "visitors":"744",
      "average_receipt":1535.6779352227,
      "average_time":"125.76268347"
    }
  }
}
<?php

$url = 'https://joinposter.com/api/dash.getAnalytics'
    . '?format=json'
    . '&token=687409:4164553abf6a031302898da7800b59fb'
    . '&dateFrom=20171009'
    . '&dateTo=20171012'
    . '&interpolate=week'
    . '&type=waiters';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "user_id":"2",
      "name":"Максим",
      "sum":"5248550",
      "profit":"4505024",
      "revenue":"5522290",
      "clients":"42",
      "middle_time":"1871214.0370"
    },
    {
      "user_id":"6",
      "name":"Антон",
      "sum":"5873540",
      "profit":"5187174",
      "revenue":"6234086",
      "clients":"42",
      "middle_time":"3.2910"
    }
  ]
}

Метод возвращает статистику по продажам

HTTP запрос

GET https://joinposter.com/api/dash.getAnalytics

GET-параметры запроса dash.getAnalytics

Параметр Описание
dateFrom Опциональный параметр, дата начала периода в формате Ymd. Если не указана, будут выданы все продажи за последние 30 дней от dateTo.
dateTo Опциональный параметр, дата конца периода в формате Ymd. По умолчанию текущая дата.
interpolate Опциональный параметр, вывод по: дням — day, неделям — week, месяцам — month. По умолчанию day.
select Опциональный параметр, тип выборки: оборот — revenue, прибыть — profit, средний чек — average_receipt, кол-во чеков — transactions, кол-во клиентов — visitors, среднее время — average_time. По умолчанию revenue.
type Опциональный параметр, тип статистики: по официанту — waiters, цеху — workshop, категории — category, товару — products, заведению — spots, клиенту — clients. По умолчанию все.
id Опциональный параметр, Id сущности по которой вернется выборка, например: id официанта, цеха, категории, товара, заведения, клиенту. По умолчанию — все.
business_day Если true то статистика продаж будет возвращаться по тому бизнес дню, в который попадает dateFrom время. По умолчанию false.

В зависимости от значения параметра type предполагается разный формат ответа.

Параметры ответа dash.getAnalytics если type — waiters

Внутри параметра response лежит массив с объектами. Каждый объект содержит такие параметры:

Параметр Описание
user_id Id сотрудника
name Имя сотрудника
sum Сумма всех товаров по заказам для текущего официанта в гривнах
profit Суммарная выручка по счетам
revenue Сумма реальных оплат по счетам
clients Кол-во закрытых чеков
middle_time Среднее время обслуживания заказа

Параметры ответа dash.getAnalytics если type — clients

Внутри параметра response лежит массив с объектами. Каждый объект содержит такие параметры:

Параметр Описание
client_id Id клиента
firstname Имя клиента
lastname Фамилия клиента
sum Сумма всех товаров в каждом заказе в копейках
profit Суммарная выручка по счетам
revenue Сумма реальных оплат по счетам в копейках
payed_cash Сумма оплат наличными
payed_card Сумма оплат картой
payed_third_party Сумма оплат сторонними сервисами
clients Кол-во закрытых чеков
phone Телефон клиента
email Эл. почта

Параметры ответа dash.getAnalytics если type — workshop, category, products, spots

Внутри параметра response лежит объект с параметрами:

Параметр Описание
data Массив сумм продаж сгруппированных в зависимости от параметров interpolate и type
data_hourly Массив значений разбитых по по часам. Сумма в гривнах.
data_weekday Массив сумм продаж разбитых по дням недели. Сумма в гривнах.
counters Счетчики основных показателей за данный период. Сумма в гривнах.
transaction_id Номер транзакции.

Внутри параметра сounters лежит объект с параметрами:

Параметр Описание
revenue Выручка в гривнах
profit Прибыль в гривнах
transactions Кол-во чеков
visitors Кол-во гостей
average_receipt Средний чек в гривнах
average_time Среднее время закрытия чека в минутах

dash.getTransaction: Получение чеков

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=330660'
 . '&include_history=true'
 . '&include_products=true';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "transaction_id":"330660",
         "date_start":"1518873040083",
         "date_start_new":"1518873041556",
         "date_close":"1518873046314",
         "status":"2",
         "guests_count":"2",
         "discount":"0",
         "bonus":"0",
         "pay_type":"3",
         "payed_bonus":"0",
         "payed_card":"0",
         "payed_cash":"2750",
         "payed_sum":"2750",
         "payed_cert":"0",
         "payed_third_party":"0",
         "round_sum":"0",
         "tip_sum":"0",
         "sum":"2750",
         "spot_id":"1",
         "table_id":"94",
         "name":"Анна",
         "user_id":"1",
         "client_id":"0",
         "card_number":"0",
         "transaction_comment":null,
         "reason":"",
         "print_fiscal":"0",
         "total_profit":"-8786",
         "table_name":"5",
         "client_firstname":null,
         "client_lastname":null,
         "date_close_date":"2018-02-17 16:10:46",
         "products":[
            {
               "product_id":"162",
               "modification_id":"0",
               "num":"1",
               "product_price":"1050",
               "payed_sum":"1050",
               "product_cost":"4536",
               "product_profit":"-3486"
            },
            {
               "product_id":"161",
               "modification_id":"0",
               "num":"1",
               "product_price":"1700",
               "payed_sum":"1700",
               "product_cost":"7000",
               "product_profit":"-5300"
            }
         ],
         "history":[
            {
               "history_id":"2485357",
               "type_history":"open",
               "spot_tablet_id":"1",
               "time":"1518873040083",
               "user_id":"1",
               "value":"1",
               "value2":"94",
               "value3":"2",
               "value4":"0",
               "value5":"0",
               "value_text":null
            },
            {
               "history_id":"2485358",
               "type_history":"additem",
               "spot_tablet_id":"1",
               "time":"1518873041556",
               "user_id":"1",
               "value":"162",
               "value2":"0",
               "value3":"0",
               "value4":"0",
               "value5":"0",
               "value_text":{
                  "price":10.5
               }
            },
            {
               "history_id":"2485359",
               "type_history":"additem",
               "spot_tablet_id":"1",
               "time":"1518873042008",
               "user_id":"1",
               "value":"161",
               "value2":"0",
               "value3":"0",
               "value4":"0",
               "value5":"0",
               "value_text":{
                  "price":17
               }
            },
            {
               "history_id":"2485360",
               "type_history":"close",
               "spot_tablet_id":"1",
               "time":"1518873046314",
               "user_id":"1",
               "value":"3",
               "value2":"2750",
               "value3":"0",
               "value4":"0",
               "value5":"0",
               "value_text":{
                  "payments":{
                     "cash":27.5
                  }
               }
            }
         ]
      }
   ]
}

Метод возвращает список с одним чеком

HTTP запрос

GET https://joinposter.com/api/dash.getTransaction

GET-параметры запроса dash.getTransaction

Параметр Описание
transaction_id Обязательный параметр, номер чека по которому возвращать информацию
include_products Признак включать товары в транзакциях в ответ, true — включать, false — нет
include_history Признак включить историю транзакции в ответ, true — включать, false — нет
timezone Опциональный параметры, если равен client то дата возвращается в часовом поясе аккаунта.
type Тип статистики: waiters — по официанту, spots — заведению, clients — клиенту. При использовании обязательно указать id.
id Id сущности по которой получать статистику, если не указано будут выданы транзакции по всем типам статистики. При использовании обязательно указать type.
status Статус транзакции: 0 — все транзакции, 1 — только открытые, 2 — только закрытые, 3 — удаленные

Параметры ответа dash.getTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов, внутри каждого есть следующие параметры:

Параметр Описание
date_start Дата открытия заказа в миллисекундах
date_close Дата закрытия заказа в миллисекундах, 0 — если заказ еще открыт
status Статус заказа: 1 — открыт, 2 — закрыт, 3 — удален
guests_count Количество гостей
name Имя официанта
discount Скидка в процентах
bonus Начисленный бонус в процентах от payed_sum
pay_type Тип оплаты: 0 — закрыт без оплаты (причина в reason), 1 — оплата наличкой, 2 — оплата карточкой, 3 — смешанная оплата
payed_bonus Сумма уплаченная бонусами в копейках
payed_card Сумма уплаченная картой в копейках
payed_third_party Сумма уплаченная третьей стороной в копейках
payed_sum Сумма уплаченная “живыми деньгами”, равна сумме payed_cash плюс payed_card
round_sum Сумма округления по чеку в копейках
sum Общая сумма заказа, без скидок в копейках
spot_id Id заведения
table_id Id столика
user_id Id официанта
client_id Id клиента
transaction_comment Комментарий к чеку
reason Причина закрытия счета без оплаты: 1 — гость ушел, 2 — за счет заведения, 3 — ошибка официанта
print_fiscal Признак печати фискального чека: 0 — не печатали, 1 — печатали, 2 — фискальный возврат
total_profit Сумма прибыли
table_name Название столика
client_firstname Имя клиента
client_lastname Фамилия клиента
products Массив товаров в чеке
history История действий над чеком. Содержит массив из объектов, описание параметров объекта смотрите в методе dash.getTransactionHistory.

Внутри параметра products лежит массив объект, внутри каждого есть следующие параметры:

Параметр Описание
product_id id товара
modification_id id модификации
product_price Стоимость товара
num Количество товара в чеке
payed_sum Заплаченная сумма
product_cost Себестоимость товара в копейках
product_profit Прибыль по товару в копейках

dash.getTransactions: Список транзакций

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransactions'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&dateFrom=20170905'
 . '&dateTo=20170908';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "transaction_id":"384960",
      "date_start":"1504641602936",
      "date_start_new":"1504641602941",
      "date_close":"1504641603008",
      "status":"2",
      "guests_count":"4",
      "discount":"0",
      "bonus":"0",
      "pay_type":"3",
      "payed_bonus":"0",
      "payed_card":"0",
      "payed_cash":"199140",
      "payed_sum":"199140",
      "payed_cert":"0",
      "tip_sum":"0",
      "sum":"180600",
      "spot_id":"1",
      "table_id":"90",
      "name":"Demo",
      "user_id":"1",
      "client_id":"0",
      "card_number":"0",
      "transaction_comment":null,
      "reason":"",
      "print_fiscal":"0",
      "total_profit":"172828",
      "table_name":"1",
      "client_firstname":null,
      "client_lastname":null,
      "date_close_date":"2017-09-05 23:00:03"
    },
    {
      "transaction_id":"384956",
      "date_start":"1504641601797",
      "date_start_new":"1504641601809",
      "date_close":"1504641601850",
      "status":"2",
      "guests_count":"5",
      "discount":"0",
      "bonus":"0",
      "pay_type":"3",
      "payed_bonus":"0",
      "payed_card":"0",
      "payed_cash":"117000",
      "payed_sum":"117000",
      "payed_cert":"0",
      "tip_sum":"0",
      "sum":"117000",
      "spot_id":"1",
      "table_id":"91",
      "name":"Максим",
      "user_id":"2",
      "client_id":"0",
      "card_number":"0",
      "transaction_comment":null,
      "reason":"",
      "print_fiscal":"0",
      "total_profit":"113487",
      "table_name":"2",
      "client_firstname":null,
      "client_lastname":null,
      "date_close_date":"2017-09-05 23:00:02"
    }
  ]
}

Метод возвращает список транзакций

HTTP запрос

GET https://joinposter.com/api/dash.getTransactions

GET-параметры запроса dash.getTransactions

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
type Тип статистики: waiters — по официанту, spots — заведению, clients — клиенту. При использовании обязательно указать id.
id Id сущности по которой получать статистику, если не указано будут выданы транзакции по всем типам статистики. При использовании обязательно указать type.
status Статус транзакции: 0 — все транзакции, 1 — только открытые, 2 — только закрытые, 3 — удаленные
include_products Признак включать товары в транзакциях в ответ, true — включать, false — нет
include_history Признак включить историю транзакции в ответ, true — включать, false — нет
next_tr id транзакции после которой нужно получить список транзакций
after_date_close Транзакции после даты закрытия в формате unixtimestamp
before_date_close Транзакции до даты закрытия в формате unixtimestamp
timezone Опциональный параметры, если равен client то дата возвращается в часовом поясе аккаунта.

Параметры ответа dash.getTransactions

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов, внутри каждого есть следующие параметры:

Параметр Описание
date_start Дата открытия заказа в миллисекундах
date_close Дата закрытия заказа в миллисекундах, 0 — если заказ еще открыт
status Статус заказа: 1 — открыт, 2 — закрыт, 3 — удален
guests_count Количество гостей
name Имя официанта
discount Скидка в процентах
bonus Начисленный бонус в процентах от payed_sum
pay_type Тип оплаты: 0 — закрыт без оплаты (причина в reason), 1 — оплата наличкой, 2 — оплата карточкой, 3 — смешанная оплата
payed_bonus Сумма уплаченная бонусами в копейках
payed_card Сумма уплаченная картой в копейках
payed_cash Сумма уплаченная наличкой в копейках
payed_sum Сумма уплаченная “живыми деньгами”, равна сумме payed_cash плюс payed_card
sum Общая сумма заказа, без скидок в копейках
spot_id Id заведения
table_id Id столика
user_id Id официанта
client_id Id клиента
transaction_comment Комментарий к чеку
reason Причина закрытия счета без оплаты: 1 — гость ушел, 2 — за счет заведения, 3 — ошибка официанта
print_fiscal Признак печати фискального чека: 0 — не печатали, 1 — печатали, 2 — фискальный возврат
total_profit Сумма прибыли
table_name Название столика
client_firstname Имя клиента
client_lastname Фамилия клиента
products Массив товаров в чеке
history История действий над чеком. Содержит массив из объектов, описание параметров объекта смотрите в методе dash.getTransactionHistory.

Внутри параметра products лежит массив объект, внутри каждого есть следующие параметры:

Параметр Описание
product_id id товара
modification_id id модификации
product_price Стоимость товара
num Количество товара в чеке
payed_sum Заплаченная сумма
product_cost Себестоимость товара в копейках
product_profit Прибыль по товару в копейках

dash.getTransactionProducts: Список продуктов по транзакции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransactionProducts'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=388678';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "product_id":"908",
      "product_name":"Пицца сборная",
      "modification_id":"68",
      "modificator_name":"Сыр, Грибы, Ох. колбаски, Оливки, Средняя Ø35см",
      "modificator_barcode":"",
      "modificator_product_code":"",
      "weight_flag":"0",
      "num":"1",
      "time":"1507703516999",
      "workshop":"2",
      "barcode":"",
      "product_code":"",
      "tax_id":"4",
      "nodiscount":"1",
      "payed_sum":"45000",
      "product_sum":"45000",
      "discount":"0",
      "bonus_sum":"0",
      "round_sum":0,
      "client_id":"0",
      "promotion_id":"0",
      "cert_sum":"0",
      "product_cost":"43",
      "product_profit":"42707",
      "bonus_accrual":"0",
      "tax_value":"5",
      "tax_type":"2",
      "tax_fiscal":"1",
      "category_id":"33"
    },
    {
      "product_id":"169",
      "product_name":"Речная форель в фольге",
      "modification_id":"0",
      "modificator_name":null,
      "modificator_barcode":null,
      "modificator_product_code":null,
      "weight_flag":"0",
      "num":"1",
      "time":"1507703509384",
      "workshop":"2",
      "barcode":"",
      "product_code":"",
      "tax_id":"4",
      "nodiscount":"1",
      "payed_sum":"55000",
      "product_sum":"55000",
      "discount":"0",
      "bonus_sum":"0",
      "round_sum":0,
      "client_id":"0",
      "promotion_id":"0",
      "cert_sum":"0",
      "product_cost":"4340",
      "product_profit":"47910",
      "bonus_accrual":"0",
      "tax_value":"5",
      "tax_type":"2",
      "tax_fiscal":"1",
      "category_id":"33"
    },
    {
      "product_id":"168",
      "product_name":"Стейк из сёмги",
      "modification_id":"0",
      "modificator_name":null,
      "modificator_barcode":null,
      "modificator_product_code":null,
      "weight_flag":"0",
      "num":"1",
      "time":"1507703508927",
      "workshop":"2",
      "barcode":"",
      "product_code":"",
      "tax_id":"4",
      "nodiscount":"1",
      "payed_sum":"45000",
      "product_sum":"45000",
      "discount":"0",
      "bonus_sum":"0",
      "round_sum":0,
      "client_id":"0",
      "promotion_id":"0",
      "cert_sum":"0",
      "product_cost":"2213",
      "product_profit":"40537",
      "bonus_accrual":"0",
      "tax_value":"5",
      "tax_type":"2",
      "tax_fiscal":"1",
      "category_id":"33"
    }
  ]
}

Метод возврашает список продуктов по транзакции

HTTP запрос

GET https://joinposter.com/api/dash.getTransactionProducts

GET-параметры запроса dash.getTransactionProducts

Параметр Описание
transaction_id Обязательный параметр, id транзакции (номер чека)

Параметры ответа dash.getTransactionProducts

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
product_id id товара
product_name Название товара
modification_id id модификатора. Если без модификатора то 0.
modificator_name Название модификатора
modificator_barcode Штрих-код модификатора
modificator_product_code SKU модификатора
num Количество товара в чеке
time Время последнего обновления количества товара в чеке, измеряется в миллисекундах
workshop id цеха
barcode Штрих-код товара
product_code SKU товара
tax_id id налога
fiscal Признак фискального чека: 1 — фискальный, 0 — нефискальный
nodiscount Признак распространяются ли скидки и бонусы на товар: 0 — да, 1 — нет
payed_sum Заплаченная сумма в копейках
product_sum Стоимость товара в копейках
discount Процент скидки примененный к чеку
bonus_sum Сумма бонуса в рублях\гривнах
client_id id клиента
promotion_id id акции
cert_sum Сумма уплаченная сертификатом
product_cost Себестоимость товара
product_profit Прибыль
bonus_accrual Начислено бонусов
round_sum Сумма округления по товару
tax_value Процент налога от суммы чека
tax_type Тип налога: 1 — НДС, 2 — с оборота
tax_fiscal Налог по фискальному регистратору
category_id Id категории в которой содержится товар

dash.getTransactionsProducts: Список продуктов по всем транзакциям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransactionsProducts'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=1,1';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "transaction_id":1,
         "product_id":169,
         "product_name":"Речная форель ",
         "modification_id":0,
         "modificator_name":null,
         "modificator_barcode":null,
         "modificator_product_code":null,
         "weight_flag":0,
         "num":2,
         "time":1527148991899,
         "workshop":2,
         "barcode":"",
         "product_code":"",
         "tax_id":0,
         "nodiscount":0,
         "payed_sum":"252.00",
         "product_sum":"252.00",
         "discount":0,
         "bonus_sum":"0.00",
         "client_id":0,
         "promotion_id":"0",
         "cert_sum":"0.00",
         "product_cost":0,
         "product_profit":25200,
         "bonus_accrual":0,
         "tax_value":0,
         "tax_type":0,
         "tax_fiscal":0,
         "category_id":33
      },
      {
         "transaction_id":2,
         "product_id":168,
         "product_name":"Стейк из семги",
         "modification_id":0,
         "modificator_name":null,
         "modificator_barcode":null,
         "modificator_product_code":null,
         "weight_flag":0,
         "num":2,
         "time":1527149138470,
         "workshop":2,
         "barcode":"",
         "product_code":"",
         "tax_id":0,
         "nodiscount":1,
         "payed_sum":"0.00",
         "product_sum":"360.00",
         "discount":0,
         "bonus_sum":"0.00",
         "client_id":0,
         "promotion_id":"0",
         "cert_sum":"0.00",
         "product_cost":0,
         "product_profit":36000,
         "bonus_accrual":0,
         "tax_value":0,
         "tax_type":0,
         "tax_fiscal":0,
         "category_id":33
      }
   ]
}

Метод возврашает список продуктов по всем транзакциям

HTTP запрос

GET https://joinposter.com/api/dash.getTransactionProducts

GET-параметры запроса dash.getTransactionsProducts

Параметр Описание
transactions_id Обязательный параметр, список id транзакции (номеров чека) записанных через запятую

Параметры ответа dash.getTransactionsProducts

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов, внутри которого есть следующие параметры:

Параметр Описание
transaction_id id чека
product_id id товара
product_name Название товара
modification_id id модификатора. Если без модификатора то 0.
modificator_name Название модификатора
modificator_barcode Штрих-код модификатора
modificator_product_code SKU модификатора
num Количество товара в чеке
time Время последнего обновления количества товара в чеке, измеряется в миллисекундах
workshop id цеха
barcode Штрих-код товара
product_code SKU товара
tax_id id налога
fiscal Признак фискального чека: 1 — фискальный, 0 — нефискальный
nodiscount Признак распространяются ли скидки и бонусы на товар: 0 — да, 1 — нет
payed_sum Заплаченная сумма в копейках
product_sum Стоимость товара в копейках
discount Процент скидки примененный к чеку
bonus_sum Сумма бонуса в рублях\гривнах
client_id id клиента
promotion_id id акции
cert_sum Сумма уплаченная сертификатом
product_cost Себестоимость товара
product_profit Прибыль
bonus_accrual Начислено бонусов
tax_value Процент налога от суммы чека
tax_type Тип налога: 1 — НДС, 2 — с оборота
tax_fiscal Налог по фискальному регистратору
category_id Id категории в которой содержится товар

dash.getTransactionHistory: История транзакции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransactionHistory'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=388678';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "transaction_id":"388678",
      "type_history":"print",
      "time":"1507703522429",
      "value":"1",
      "value2":"2147483647",
      "value3":"0",
      "value_text":null,
      "spot_tablet_id":"1"
    },
    {
      "transaction_id":"388678",
      "type_history":"close",
      "time":"1507703520358",
      "value":"3",
      "value2":"145000",
      "value3":"0",
      "value_text":"{\"payments\":{\"cash\":1450}}",
      "spot_tablet_id":"1"
    },
    {
      "transaction_id":"388678",
      "type_history":"additem",
      "time":"1507703508927",
      "value":"168",
      "value2":"0",
      "value3":"0",
      "value_text":"{\"price\":450}",
      "spot_tablet_id":"1"
    },
    {
      "transaction_id":"388678",
      "type_history":"open",
      "time":"1507703507594",
      "value":"1",
      "value2":"95",
      "value3":"3",
      "value_text":null,
      "spot_tablet_id":"1"
    }
  ]
}

Метод возвращает историю действий по транзакции

HTTP запрос

GET https://joinposter.com/api/dash.getTransactionHistory

GET-параметры запроса dash.getTransactionHistory

Параметр Описание
transaction_id Обязательный параметр, id транзакции (номер чека)

Параметры ответа dash.getTransactionHistory

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов, внутри каждого есть следующие параметры:

Параметр Описание
transaction_id Номер чека
type_history Действие совершенное над чеком, возможные значения описаны ниже
time Время действия в миллисекундах
spot_tablet_id Id терминала
value_text Текстовое значение, соответствующее конкретному действию. Может содержать в том числе и json.
value, value2, value3 В зависимости от type_history означает следующее:

Значения параметров value, value2, value3 в зависимости type_history:

open — Открыт счет

comment — Добавлен комментарий

close — Напечатан чек и закрыт счет

delete — Чек удален

print — Напечатан чек

sendtokitchen — Отправлен бегунок на кухню

additem — Добавлен товар

settable — Перенос заказа на другой стол

changeitemcount — Изменено количество товара, если value2 — 0 то товар удален

deleteitem — Удален товар

setclient — Добавлен клиент

dash.getProductsSales: Продажи по товарам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getProductsSales'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "product_name":"Стейк из сёмги",
      "modificator_name":null,
      "product_id":"168",
      "modification_id":"0",
      "delete":"0",
      "left":"43",
      "right":"44",
      "category_id":"33",
      "count":"171.0000",
      "weight_flag":"0",
      "payed_sum":"7650000",
      "product_sum":"7695000",
      "bonus_sum":"0",
      "cert_sum":"45000",
      "product_profit":"7199716",
      "tax_sum":"72000",
      "vat_sum":"0",
      "unit":"p",
      "discount":45000
    },
    {
      "product_name":"Речная форель в фольге",
      "modificator_name":null,
      "product_id":"169",
      "modification_id":"0",
      "delete":"0",
      "left":"43",
      "right":"44",
      "category_id":"33",
      "count":"168.0000",
      "weight_flag":"0",
      "payed_sum":"9185000",
      "product_sum":"9240000",
      "bonus_sum":"0",
      "cert_sum":"55000",
      "product_profit":"8367880",
      "tax_sum":"88000",
      "vat_sum":"0",
      "unit":"p",
      "discount":55000
    }
  ]
}

Метод возвращает продажи по товарам

HTTP запрос

GET https://joinposter.com/api/dash.getProductsSales

GET-параметры запроса dash.getProductsSales

Параметр Описание
spot_id Опциональный параметр, Id заведения по которому возвращать статистику
date_from Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
date_to Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.

Параметры ответа dash.getProductsSales

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов. Внутри каждого объекта есть следующие параметры:

Параметр Описание
product_name Название товара
product_id id товара
modification_id id модификатора, 0 если товар без модификатора
modification_name Название модификатора, null если товар без модификатора
category_id Id категории товара
left Id категории слева
right Id категории справа
price Стоимость товара
count Количество проданого товара
weight_flag Признак весового товара, 0 — не весовой, 1 — если весовой
payed_sum Сумма уплаченная “живыми деньгами c учетом скидки”, равна payed_cash + payed_card
product_sum Цена в копейках
product_profit Прибыль в копейках
discount Сумма скидка в копейках
delete Признак удален ли товар: 0 — не удален, 1 — удален

dash.getCategoriesSales: Продажи по категориям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getCategoriesSales'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&dateFrom=20170920'
 . '&dateTo=20170922';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "revenue":"38568300",
      "profit":"36307114",
      "count":"1173",
      "category_name":"Вторые блюда",
      "category_id":"33"
    },
    {
      "revenue":"36970440",
      "profit":"21885184",
      "count":"863",
      "category_name":"Главный экран",
      "category_id":0
    },
    {
      "revenue":"34474000",
      "profit":"31377831",
      "count":"830",
      "category_name":"Салаты",
      "category_id":"31"
    },
    {
      "revenue":"33876200",
      "profit":"31379225",
      "count":"905",
      "category_name":"Торты",
      "category_id":"37"
    },
    {
      "revenue":"22781920",
      "profit":"18568329",
      "count":"1173",
      "category_name":"Кофе",
      "category_id":"10"
    }
  ]
}

Метод возвращает продажи по категориям

HTTP запрос

GET https://joinposter.com/api/dash.getCategoriesSales

GET-параметры запроса dash.getCategoriesSales

Параметр Описание
dateFrom Дата начала для выборки в формате Ymd. Если не указана, начальная дата считается на месяц позже.
dateTo Дата конца для выборки в формате Ymd. Если не указана, конечная дата считается текущей.
spot_id id заведения, если не указана, будут выданы по всем заведениям

Параметры ответа dash.getCategoriesSales

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов. Внутри каждого объекта есть следующие параметры:

Параметр Описание
revenue Сумма выручка в копейках
profit Сумма прибыль в копейках
count Количество продаж
category_name Название категории
category_id id категории

dash.getClientsSales: Продажи по клиентам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getClientsSales'
  . '?token=687409:4164553abf6a031302898da7800b59fb'
  . '&dateFrom=20170920'
  . '&dateTo=20170922';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "client_id":"4",
      "firstname":"",
      "lastname":"Владислав",
      "sum":"1030000",
      "profit":"825364",
      "revenue":"907000",
      "clients":"3",
      "middle_invoice":3433.3333333333
    }
  ]
}

Метод возвращает продажи по клиентам

HTTP запрос

GET https://joinposter.com/api/dash.getClientsSales

GET-параметры запроса dash.getClientsSales

Параметр Описание
dateFrom Дата начала для выборки в формате Ymd. Если не указана, начальная дата считается на месяц позже.
dateTo Дата конца для выборки в формате Ymd. Если не указана, конечная дата считается текущей.
interpolate Вывод по часам, дням, неделям, месяцам. Если не указана, по дням

Параметры ответа dash.getClientsSales

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив объектов. Внутри каждого объекта есть следующие параметры:

Параметр Описание
client_id id клиента
firstname Имя клиента
lastname Фамилия клиента
sum Общая сумма заказов в копейках
profit Прибыль в копейках
revenue Сумма выручки в копейках
clients Количество чеков
middle_invoice Сумма среднего чека в рублях\гривнах

dash.getWaitersSales: Продажи по официантам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getWaitersSales'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&dateFrom=20170901';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "user_id":"1",
      "name":"Demo",
      "profit":"153707331",
      "revenue":"186224294",
      "clients":"1414",
      "middle_time":49364.020916667,
      "middle_invoice":1317.0034936351
    },
    {
      "user_id":"2",
      "name":"Максим",
      "profit":"147406757",
      "revenue":"179108697",
      "clients":"1314",
      "middle_time":58078.986483333,
      "middle_invoice":1363.0798858447
    },
    {
      "user_id":"6",
      "name":"Антон",
      "profit":"155127873",
      "revenue":"188413623",
      "clients":"1424",
      "middle_time":1.8170166666667,
      "middle_invoice":1323.129375
    }
  ]
}

Метод возвращет продажи по официантам

HTTP запрос

GET https://joinposter.com/api/dash.getWaitersSales

GET-параметры запроса dash.getWaitersSales

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включает указанный день. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включает указанный день. По умолчанию дата текущего дня.

Параметры ответа dash.getWaitersSales

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
user_id Id официанта
name Имя официанта
revenue Сумма выручки в копейках
profit Прибыль в копейках
clients Количество закрытых чеков
middle_invoice Средний чек в гривнах\рублях
middle_time Общее время, потраченное на обслуживание в минутах

dash.getSpotsSales: Продажи по заведениям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getSpotsSales'
  . '?token=687409:4164553abf6a031302898da7800b59fb'
  . '&dateFrom=20170905'
  . '&dateTo=20170908';

$data = sendRequest($url);

Пример ответа:

{
  "response":{
    "revenue":536723.37,
    "profit":448025.64,
    "clients":423,
    "middle_invoice":1268.8495744681
  }
}

Метод возвращает продажи по заведениям

HTTP запрос

GET https://joinposter.com/api/dash.getSpotsSales

GET-параметры запроса dash.getSpotsSales

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
spot_id Опциональный параметр, id заведения по которому возвращать статистику. Если не указан, будут выданы по всем заведениям.

Параметры ответа dash.getSpotsSales

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
profit Прибыль в копейках
revenue Сумма выручки в копейках
clients Количество чеков
middle_invoice Сумма среднего чека в рублях\гривнах

dash.getTransactionWriteOffs: Списания по чеку

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getTransactionWriteoffs'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=388678';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "write_off_id":"1518199",
      "tr_product_id":"2125168",
      "storage_id":"1",
      "ingredient_id":"833",
      "product_id":"168",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":"1.00000",
      "unit":"p",
      "cost":22.13,
      "time":"1507703520358"
    },
    {
      "write_off_id":"1518200",
      "tr_product_id":"2125169",
      "storage_id":"1",
      "ingredient_id":"85",
      "product_id":"169",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":0.04,
      "unit":"l",
      "cost":1.24,
      "time":"1507703520358"
    },
    {
      "write_off_id":"1518201",
      "tr_product_id":"2125169",
      "storage_id":"1",
      "ingredient_id":"78",
      "product_id":"169",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":0.059,
      "unit":"kg",
      "cost":2.12,
      "time":"1507703520358"
    },
    {
      "write_off_id":"1518202",
      "tr_product_id":"2125169",
      "storage_id":"1",
      "ingredient_id":"84",
      "product_id":"169",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":0.128,
      "unit":"kg",
      "cost":2.68,
      "time":"1507703520358"
    },
    {
      "write_off_id":"1518203",
      "tr_product_id":"2125169",
      "storage_id":"1",
      "ingredient_id":"86",
      "product_id":"169",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":0.608,
      "unit":"kg",
      "cost":37.35,
      "time":"1507703520358"
    },
    {
      "write_off_id":"1518204",
      "tr_product_id":"2125170",
      "storage_id":"1",
      "ingredient_id":"97",
      "product_id":"908",
      "modificator_id":"68",
      "prepack_id":"918",
      "weight":0.15,
      "unit":"kg",
      "cost":0.43,
      "time":"1507703520358"
    }
  ]
}

Метод получает все списания по чеку

HTTP запрос

GET https://joinposter.com/api/dash.getTransactionWriteoffs

GET-параметры запроса dash.getTransactionWriteOffs

Параметр Описание
transaction_id Обязательный параметр, id транзакции (номер чека)

Параметры ответа dash.getTransactionWriteOffs

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
write_off_id id списания
transaction_id Номер транзакции (чека)
storage_id Id склада откуда произошло списание
to_storage Id склада куда переместили, передается если проводили перемещение
ingredient_id Id ингредиента
product_id Id товара
modificator_id Id модификатора, если без модификатора — 0
prepack_id id полуфабриката
weight Количество
unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
cost Стоимость ингредиента умноженная на кол-во в гривнах\рублях
user_id id официанта
type Тип действия: 4 — перемещение, 1 — списание, 2 — ручное списание
time Дата списания в формате unixtimestamp
reason Причина списания

dash.getPaymentsReport: Статистика оплат по дням/месяцам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/dash.getPaymentsReport'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&date_from=20170501'
 . '&date_to=20170531';

$data = sendRequest($url);

Пример ответа:

{
    "response": {
        "days": [
            {
                "date": "2017-05-23",
                "payed_cash_sum": "1607996",
                "payed_card_sum": "365552",
                "payed_cert_in_sum": "0",
                "payed_cert_out_sum": "0",
                "payed_bonus_sum": "0",
                "payed_incust_sum": "0",
                "payed_sum_sum": "1973548"
            },
            {
                "date": "2017-06-03",
                "payed_cash_sum": "1108969",
                "payed_card_sum": "1090915",
                "payed_cert_in_sum": "0",
                "payed_cert_out_sum": "0",
                "payed_bonus_sum": "0",
                "payed_incust_sum": "0",
                "payed_sum_sum": "2199884"
            }
        ],
        "total": {
            "payed_cash_sum": 2716965,
            "payed_card_sum": 1456467,
            "payed_third_party_sum": 0,
            "payed_cert_in_sum": 0,
            "payed_cert_out_sum": 0,
            "payed_bonus_sum": 0,
            "payed_incust_sum": 0,
            "payed_sum_sum": 4173432
        }
    }
}

Пример ответа по месяцам:

{
    "response": {
        "days": [
            {
                "date": "2017-06",
                "payed_cash_sum": "27286420",
                "payed_card_sum": "1951853",
                "payed_cert_in_sum": "0",
                "payed_cert_out_sum": "0",
                "payed_bonus_sum": "0",
                "payed_incust_sum": "0",
                "payed_sum_sum": "29234560"
            },
            {
                "date": "2017-05",
                "payed_cash_sum": "60273456",
                "payed_card_sum": "6290658",
                "payed_cert_in_sum": "0",
                "payed_cert_out_sum": "0",
                "payed_bonus_sum": "0",
                "payed_incust_sum": "0",
                "payed_sum_sum": "66564114"
            },
            {
                "date": "2017-04",
                "payed_cash_sum": "49090724",
                "payed_card_sum": "4782295",
                "payed_cert_in_sum": "0",
                "payed_cert_out_sum": "0",
                "payed_bonus_sum": "0",
                "payed_incust_sum": "0",
                "payed_sum_sum": "53873019"
            }
        ],
        "total": {
            "payed_cash_sum": 136650600,
            "payed_card_sum": 13024806,
            "payed_third_party_sum": 0,
            "payed_cert_in_sum": 0,
            "payed_cert_out_sum": 0,
            "payed_bonus_sum": 0,
            "payed_incust_sum": 0,
            "payed_sum_sum": 149671693
        }
    }
}

Метод возвращает статистику оплат по дням. При отрезке времени больше чем 65 дней — по месяцам

HTTP запрос

GET https://joinposter.com/api/dash.getPaymentsReport

GET-параметры запроса dash.getPaymentsReport

Параметр Описание
spot_id Опциональный параметр, Id заведения по которому возвращать статистику
date_from Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
date_to Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.

Параметры ответа dash.getPaymentsReport

Параметр Описание
days Список дней/месяцов в которых были оплаты
total Общие суммы по всем дням

Внутри элемента days лежит массив, в каждом элементе которого есть следующие свойства:

Параметр Описание
date Дата в формате Y-m-d или Y-m при выводе по месяцам
payed_cash_sum Оплата наличными в копейках
payed_card_sum Оплата карточкой в копейках
payed_cert_in_sum Оплата сертификатом в копейках. Приходит если в настройках администрирования включена опция “Учитывать оплату сертификатом”.
payed_cert_out_sum Оплата сертификатом в копейках. Приходит если в настройках администрирования выключена опция “Учитывать оплату сертификатом” и равноценна скидке.
payed_bonus_sum Оплата бонусами
payed_incust_sum Оплата incust
payed_sum_sum Общая сумма оплат за этот день в копейках

Внутри элемента total есть следующие свойства:

Параметр Описание
payed_cash_sum Общая сумма оплат наличными в копейках
payed_card_sum Общая сумма оплат карточкой в копейках
payed_third_party_sum Общая сумма оплат третьей стороной
payed_cert_in_sum Общая сумма оплат сертификатом в копейках. Приходит если в настройках администрирования включена опция “Учитывать оплату сертификатом”.
payed_cert_out_sum Общая сумма оплат сертификатом в копейках. Приходит если в настройках администрирования выключена опция “Учитывать оплату сертификатом” и равноценна скидке.
payed_bonus_sum Общая сумма оплат бонусами
payed_incust_sum Общая сумма оплат incust
payed_sum_sum Общая сумма всех оплат в копейках

menu: Меню

Методы для работы с разделом меню. Все методы данного раздела начинаются с «menu».

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getCategories'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&fiscal=0';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "category_id":"2",
      "category_name":"Роллы",
      "category_photo":"/upload/pos_cdb_888/menu/category_1420674791_2.jpg",
      "parent_category":"0",
      "category_color":"white",
      "category_hidden":"0",
      "sort_order":"999",
      "fiscal":"0",
      "nodiscount":"0",
      "tax_id":"0",
      "left":"3",
      "right":"4",
      "level":"1"
    }
  ]
}

Метод возвращает список категорий товаров

HTTP запрос

GET https://joinposter.com/api/menu.getCategories

GET-параметры запроса menu.getCategories

Параметр Описание
fiscal Фискальный признак категорий: 0 — не фискальные, 1 — фискальные. По умолчанию — все категории.
id_1c Позволяет вернуть в ответе id категории товаров в системе 1С. В качестве значения необходимо передать true. По умолчанию не передаётся.
Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
category_id Id категории
category_name Заголовок категории
category_photo Фотография категории
parent_category Id родительской категории
category_color Цвет категории
category_hidden Признак, что категория скрыта: 0 — не скрыта, 1 — скрыта
sort_order Порядок сортировки
fiscal Признак фискальности категории: 0 — не фискальная, 1 — фискальная
nodiscount Признак, что распространяются скидки: 0 — не распространяются, 1 — распространяются
tax_id Id налога
left Id категории слева (по Nested Set)
right Id катергории справа (по Nested Set)
level Уровень вложенности ветки дерева категорий (по Nested Set)
id_1c Id категории товаров в системе 1С

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getCategory'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&category_id=30'
 . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "category_id":30,
    "category_name":"Бар",
    "category_photo":null,
    "category_photo_origin":null,
    "parent_category":0,
    "category_color":"yellow",
    "category_hidden":0,
    "sort_order":3,
    "fiscal":0,
    "nodiscount":0,
    "tax_id":2,
    "left":7,
    "right":42,
    "level":1,
    "id_1c":"9c68dbc9-b255-11e6-9a8f-ace01035e460"
  }
}

Метод возвращает свойства категории товаров

HTTP запрос

GET https://joinposter.com/api/menu.getCategory

GET-параметры запроса menu.getCategory

Параметр Описание
category_id Id категории
1c Позволяет вернуть в ответе id категории товаров в системе 1С. В качестве значения необходимо передать true. По умолчанию не передаётся.
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
category_id Id категории
category_name Название категории
category_photo Фотография категории
category_photo_origin Оригинал загруженной фотографии
parent_category Id родительской категории
category_color Цвет категории
category_hidden Признак, что категория скрыта: 0 — не скрыта, 1 — скрыта
sort_order Порядок сортировки
fiscal Признак фискальности категории: 0 — не фискальная, 1 — фискальная
nodiscount Признак, что распространяются скидки: 0 — не распространяются, 1 — распространяются
tax_id Id налога
left Id категории слева (по Nested Set)
right Id категории справа (по Nested Set)
level Уровень вложенности ветки дерева категорий (по Nested Set)
id_1c Id категории товаров в системе 1С

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.createCategory'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category = [
    'category_name'   => 'Пицца',
    'parent_category' => 0,
    'category_color'  => 'yellow',
    'category_hidden' => 0,
    'tax_id'          => 0,
];

$data = sendRequest($url, 'post', $category);

Пример ответа:

{  
  "response":52
}

Метод создаёт категорию товаров

HTTP запрос

GET https://joinposter.com/api/menu.createCategory

POST-параметры запроса menu.createCategory

Параметр Описание
category_name Название категории товаров
parent_category Id родительской категории
category_color Цвет категории: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink. По умолчанию принимает white.
category_hidden Признак, что категория скрыта: 0 — не скрыта, 1 — скрыта. По умолчанию принимает 0.
tax_id Id налога. По умолчанию принимает 0.
Параметр Описание
response Id созданной категории товаров

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.updateCategory'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category = [
    'category_id'     => 34,
    'category_name'   => 'Пицца',
    'parent_category' => 0,
    'category_color'  => 'red',
];

$data = sendRequest($url, 'post', $category);

Пример ответа:

{  
  "response": 34
}

Метод изменяет свойства категории товаров

HTTP запрос

GET https://joinposter.com/api/menu.updateCategory

POST-параметры запроса menu.updateCategory

Параметр Описание
category_id Id категории товаров
category_name Название категории товаров
parent_category Id родительской категории
category_color Цвет категории: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink. По умолчанию не передаётся.
category_hidden Признак, что категория скрыта: 0 — не скрыта, 1 — скрыта. По умолчанию не передаётся.
tax_id Id налога. По умолчанию не передаётся.
Параметр Описание
response Id изменённой категории товаров

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeCategory'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category = [
    'category_id' => 52,
];

$data = sendRequest($url, 'post', $category);

Пример ответа:

{  
  "response":true
}

Метод удаляет категорию товаров

HTTP запрос

GET https://joinposter.com/api/menu.removeCategory

POST-параметры запроса menu.removeCategory

Параметр Описание
category_id Id категории товаров
Параметр Описание
response true, если категория товаров успешно удалена

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getProducts'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&category_id=15'
 . '&type=products';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "barcode":"4820098749621",
         "category_name":"Вода",
         "unit":"",
         "cost":"100",
         "fiscal":"0",
         "menu_category_id":"15",
         "workshop":"1",
         "nodiscount":"0",
         "photo":"/upload/4/menu/product_1403094564_139.jpg",
         "photo_origin":"/upload/4/menu/product_1403094564_139_original.jpg",
         "product_code":"",
         "product_id":"139",
         "product_name":"Borjomi",
         "sort_order":"999",
         "tax_id":"0",
         "product_tax_id":"2",
         "type":"3",
         "weight_flag":"0",
         "color":"white",
         "ingredient_id":"9",
         "cooking_time": "1201",
         "modifications":[
            {
               "modificator_id":"147",
               "modificator_name":"Сок яблочный для кальяна ",
               "modificator_selfprice":"0",
               "order":"0",
               "modificator_barcode":"",
               "modificator_product_code":"",
               "spots":[
                  {
                     "spot_id":"1",
                     "price":"68100",
                     "profit":"68100",
                     "visible":"1"
                  },
                  {
                     "spot_id":"2",
                     "price":"68100",
                     "profit":"68100",
                     "visible":"1"
                  },
                  {
                     "spot_id":"1",
                     "price":"68100",
                     "profit":"68100",
                     "visible":"1"
                  },
                  {
                     "spot_id":"2",
                     "price":"68100",
                     "profit":"68100",
                     "visible":"1"
                  }
               ],
               "ingredient_id":"0"
            }
         ],
         "out":0
      },
      {
         "barcode":"",
         "category_name":"Вода",
         "unit":"",
         "cost":"654",
         "fiscal":"0",
         "menu_category_id":"15",
         "workshop":"3",
         "nodiscount":"0",
         "photo":"/upload/4/menu/product_1403094497_138.jpg",
         "photo_origin":"/upload/4/menu/product_1403094497_138_original.jpg",
         "price":{
            "1":"19000",
            "2":"19000"
         },
         "product_code":"",
         "product_id":"138",
         "product_name":"Evian",
         "profit":{
            "1":"18346",
            "2":"18346"
         },
         "sort_order":"999",
         "tax_id":"0",
         "product_tax_id":"0",
         "type":"3",
         "weight_flag":"0",
         "color":"white",
         "spots":[
            {
               "spot_id":"1",
               "price":"19000",
               "profit":"18346",
               "visible":"1"
            },
            {
               "spot_id":"2",
               "price":"19000",
               "profit":"18346",
               "visible":"1"
            }
         ],
         "ingredient_id":"8",
         "cooking_time": "0",
         "out":0
      }
   ]
}

Метод возвращает список товаров и тех. карт

HTTP запрос

GET https://joinposter.com/api/menu.getProducts

GET-параметры запроса menu.getProducts

Параметр Описание
category_id Id категории товаров. По умолчанию не передаётся.
type Тип: products — товары, batchtickets — тех. карты. По умолчанию не передаётся.
Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
barcode Штриховой код товара
category_name Название категории в которой содержится товар
hidden Признак что товар скрыт: 0 — виден, 1 — скрыт
unit Единица измерения товара
cost Себестоимость товара в копейках
fiscal Фискальный признак товара: 0 — не фискальный, 1 — фискальный
menu_category_id Id категории в которой содержится товар
workshop Id цеха товара
nodiscount Признак, могут ли применяться скидки к этому товару: 0 — не могут, 1 — могут
photo Фотография товара
photo_origin Оригинал фотографии товара
price Стоимость товара
product_code Складская учётная единица товара, например, SKU
product_id Id товара
product_name Название товара
profit Чистая прибыль за товар в копейках
sort_order Порядок сортировки товара
tax_id Id налога товара
product_tax_id Признак, что налог товара унаследован от налога категории: 0 — не унаследован, 1 — унаследован
type Тип товара: 1 — полуфабрикат, 2 — тех.карта, 3 — товар
weight_flag Признак, что товар весовой: 0 — не весовой, 1 — весовой
color Цвет карточки товара в терминале
spots Заведения в которых доступен товар
ingredient_id Id ингредиента (возвращается, если товар)
cooking_time Время приготовления блюда в секундах
product_production_description Описание процесса приготовления
out Сумма нетто всех ингредиентов тех. карты, для товара всегда 0
ingredients Список ингредиентов (возвращается, если тех. карта)

Внутри параметра price лежит массив, где ключом является id заведения:

Параметр Описание
Id заведения Цена на товар в этом заведении в копейках

Внутри параметра profit лежит массив, где ключом является id заведения:

Параметр Описание
Id заведения Чистая прибыль с товара в этом заведении

Внутри параметра spots лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
spot_id Id заведения
price Цена на товар в этом заведении в копейках
profit Чистая прибыль с товара в этом заведении в копейках
visible Признак, что товар скрыт в этом заведении: 0 — скрыт, 1 — виден

Внутри параметра ingredients лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
structure_id Id элемента тех. карты
ingredient_id Id ингредиента
pr_in_clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется
pr_in_cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется
pr_in_fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется
pr_in_stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется
pr_in_bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется
structure_unit Единица измерения элемента тех. карты
structure_type Тип элемента тех. карты: 1 — ингредиент, 2 — полуфабрикат
structure_brutto Брутто элемента тех. карты
structure_netto Нетто элемента тех. карты
structure_lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
structure_selfprice Цена элемента тех. карты
ingredient_name Название ингредиента
ingredient_unit Единица измерения ингредиента: l — литры, kg — килограммы, p — штуки
ingredient_weight Количество списания ингредиента
ingredients_losses_clear Коэффициент потерь при очистке ингредиента
ingredients_losses_cook Коэффициент потерь при запекании ингредиента
ingredients_losses_fry Коэффициент потерь при жарке ингредиента
ingredients_losses_stew Коэффициент потерь при тущении ингредиента
ingredients_losses_bake Коэффициент потерь при варке ингредиента

Пример запроса получения свойств товара:

<?php
$url = 'https://joinposter.com/api/menu.getProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&product_id=142';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "barcode":"",
    "category_name":"Свежевыжатые соки",
    "unit":"",
    "cost":"1880",
    "fiscal":"0",
    "hidden":"0",
    "menu_category_id":"16",
    "workshop":"4",
    "nodiscount":"0",
    "photo":"/upload/4/menu/product_1403094607_140.jpg",
    "price":{  
      "1":"40000",
      "2":"40000"
    },
    "product_code":"",
    "product_id":"140",
    "product_name":"Апельсиновый",
    "profit":{  
      "1":"38120",
      "2":"38120"
    },
    "sort_order":"1",
    "tax_id":"0",
    "product_tax_id":"0",
    "type":"3",
    "weight_flag":"0",
    "color":"white",
    "spots":[  
      {  
        "spot_id":"1",
        "price":"40000",
        "profit":"38120",
        "visible":"1"
      },
      {  
        "spot_id":"2",
        "price":"40000",
        "profit":"38120",
        "visible":"1"
      }
    ],
    "ingredient_id":"10",
    "cooking_time": "1201",
    "out":"0"
  }
}

Пример запроса получения свойств тех. карты:

<?php
$url = 'https://joinposter.com/api/menu.getProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&product_id=175';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "barcode":"123456",
    "category_name":"Коктейли",
    "unit":"kg",
    "cost":"444",
    "fiscal":"0",
    "menu_category_id":"39",
    "workshop":"1",
    "nodiscount":"0",
    "photo":"/upload/pos_cdb_4/menu/product_1439375876_175.jpg",
    "price":{  
      "1":"60000",
      "2":"60000"
    },
    "product_code":"",
    "product_id":"175",
    "product_name":"Manhattan Jack",
    "profit":{  
      "1":"59556",
      "2":"59556"
    },
    "sort_order":"999",
    "tax_id":"0",
    "product_tax_id":"0",
    "type":"2",
    "weight_flag":"0",
    "color":"white",
    "spots":[  
      {  
        "spot_id":"1",
        "price":"60000",
        "profit":"59556",
        "visible":"1"
      },
      {  
        "spot_id":"2",
        "price":"60000",
        "profit":"59556",
        "visible":"1"
      }
    ],
    "ingredient_id":"0",
    "out":97,
    "product_production_description":"",
    "ingredients":[  
      {  
        "structure_id":"52",
        "ingredient_id":"92",
        "pr_in_clear":"0",
        "pr_in_cook":"0",
        "pr_in_fry":"0",
        "pr_in_stew":"0",
        "pr_in_bake":"0",
        "structure_unit":"l",
        "structure_type":"1",
        "structure_brutto":30,
        "structure_netto":30,
        "structure_lock":"1",
        "structure_selfprice":"102",
        "ingredient_name":"Красный вермут",
        "ingredient_unit":"l",
        "ingredient_weight":"0",
        "ingredients_losses_clear":"0",
        "ingredients_losses_cook":"0",
        "ingredients_losses_fry":"0",
        "ingredients_losses_stew":"0",
        "ingredients_losses_bake":"0"
      },
      {  
        "structure_id":"53",
        "ingredient_id":"91",
        "pr_in_clear":"0",
        "pr_in_cook":"0",
        "pr_in_fry":"0",
        "pr_in_stew":"0",
        "pr_in_bake":"0",
        "structure_unit":"l",
        "structure_type":"1",
        "structure_brutto":60,
        "structure_netto":60,
        "structure_lock":"1",
        "structure_selfprice":"313",
        "ingredient_name":"Jack Daniels",
        "ingredient_unit":"l",
        "ingredient_weight":"0",
        "ingredients_losses_clear":"0",
        "ingredients_losses_cook":"0",
        "ingredients_losses_fry":"0",
        "ingredients_losses_stew":"0",
        "ingredients_losses_bake":"0"
      }
    ]
  }
}

Метод возвращает свойства товара или тех. карты

HTTP запрос

GET https://joinposter.com/api/menu.getProduct

GET-параметры запроса menu.getProduct

Параметр Описание
product_id Id товара или тех. карты
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
barcode Штриховой код товара
category_name Название категории в которой содержится товар
unit Единица измерения товара
cost Себестоимость товара в копейках
fiscal Фискальный признак товара: 0 — не фискальный, 1 — фискальный
menu_category_id Id категории в которой содержится товар
workshop Id цеха товара
nodiscount Признак, могут ли применяться скидки к этому товару: 0 — не могут, 1 — могут
photo Фотография товара
price Стоимость товара
product_code Складская учётная единица товара
product_id Id товара
product_name Название товара
profit Чистая прибыль за товар
sort_order Порядок сортировки товара
tax_id Id налога товара
product_tax_id Признак, что налог товара унаследован от налога категории: 0 — не унаследован, 1 — унаследован
type Тип товара: 1 — полуфабрикат, 2 — тех.карта, 3 — товар
weight_flag Признак, что товар весовой: 0 — не весовой, 1 — весовой
color Цвет карточки товара в терминале
spots Заведения в которых доступен товар
ingredient_id Id ингредиента (возвращается, если товар)
cooking_time Время приготовления блюда в секундах
product_production_description Описание процесса приготовления
out Сумма нетто всех ингредиентов тех. карты, для товара всегда 0
ingredients Список ингредиентов (возвращается, если тех. карта)

Внутри параметра price лежит массив, где ключом является id заведения:

Ключ Значение
Id заведения Цена на товар в этом заведении в копейках

Внутри параметра profit лежит массив, где ключом является id заведения:

Ключ Значение
Id заведения Чистая прибыль с товара в этом заведении в копейках

Внутри параметра spots лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
spot_id Id заведения
price Цена на товар в этом заведении в копейках
profit Чистая прибыль с товара в этом заведении в копейках
visible Признак, что товар скрыт в этом заведении: 0 — скрыт, 1 — виден

Внутри параметра ingredients лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
structure_id Id элемента тех. карты
ingredient_id Id ингредиента
pr_in_clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется
pr_in_cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется
pr_in_fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется
pr_in_stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется
pr_in_bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется
structure_unit Единица измерения элемента тех. карты
structure_type Тип элемента тех. карты: 1 — ингредиент, 2 — полуфабрикат
structure_brutto Брутто элемента тех. карты
structure_netto Нетто элемента тех. карты
structure_lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
structure_selfprice Цена элемента тех. карты
ingredient_name Название ингредиента
ingredient_unit Единица измерения ингредиента
ingredient_weight Количество списания ингредиента
ingredients_losses_clear Коэффициент потерь при очистке ингредиента
ingredients_losses_cook Коэффициент потерь при запекании ингредиента
ingredients_losses_fry Коэффициент потерь при жарке ингредиента
ingredients_losses_stew Коэффициент потерь при тущении ингредиента
ingredients_losses_bake Коэффициент потерь при варке ингредиента

Пример запроса на создание товара без модификаций:

<?php
$url = 'https://joinposter.com/api/menu.createProduct'
  . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'product_name'           => 'Пончик',
    'menu_category_id'       => 0,
    'workshop'               => 1,
    'weight_flag'            => 0,
    'color'                  => 'red',
    'different_spots_prices' => 0,
    'modifications'          => 0,
    'barcode'                => '4820098749621',
    'cost'                   => 2000,
    'price'                  => 3000,
    'visible'                => 1,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "response":60
}

Пример запроса на создание товара с модификациями:

<?php
$url = 'https://joinposter.com/api/menu.createProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'product_name'           => 'Sprite',
    'menu_category_id'       => 0,
    'workshop'               => 1,
    'weight_flag'            => 0,
    'color'                  => 'red',
    'different_spots_prices' => 0,
    'modifications'          => 1,
    'modificator_name[0]'    => '1 л.',
    'modificator_name[1]'    => '2 л.',
    'barcode[0]'             => '4820098749621',
    'barcode[1]'             => '4820098749622',
    'product_code[0]'        => '3412356',
    'product_code[1]'        => '3412357',
    'cost[0]'                => 700,
    'cost[1]'                => 1000,
    'price[0]'               => 1500,
    'price[1]'               => 2000,
    'visible[0]'             => 1,
    'visible[1]'             => 1,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "response":61,
  "modifications_id":[  
    1,
    2
  ]
}

Метод создаёт товар

HTTP запрос

POST https://joinposter.com/api/menu.createProduct

POST-параметры запроса menu.createProduct

Параметр Описание
product_name Название товара
menu_category_id Id категории меню. Если передать 0, то товар попадет на «Главный экран».
workshop Id цеха. Обязательное поле для аккаунтов типа «кафе».
weight_flag Признак, что товар штучный или весовой: 0 — штучный, 1 — весовой
color Цвет карточки товара: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink. По умолчанию принимает white.
different_spots_prices Признак, что у товара разные цены в разных заведениях: 0 — одинаковые цены, 1 — разные цены
modifications Признак, что товар с модификаторами: 0 — без модификаторов, 1 — с модификаторами
modificator_name Название модиикатора. Является обязательным, если в параметре modifications передана 1. Все имена передаются с указанием индекса модификатора в квадратных скобках: modificator_name[0], modificator_name[1] и так далее.
barcode Штрихововй код товара. Позволяет использовать сканер штрих-кодов во время продажи товаров. Для штучных товаров рекомендуется использовать 13-значный код, для весовых товаров рекомендуется использовать 7-значный код. Если товар без модификаторов, то параметр передается как barcode, если с модификаторами, то с указанием индекса модификатора в квадратных скобках: barcode[0], barcode[1] и так далее.
product_code Артикул товара. Указывается только для аккаунтов типа «магазин». Если товар без модификаторов, то параметр передается как product_code, если с модификаторами, то с указанием индекса модификатора в квадратных скобках: product_code[0], product_code[1] и так далее.
cost Первичная себестоимость товара в копейках, которая будет использоваться до первой поставки товара. Если товар без модификаторов, то параметр передается как cost, если с модификаторами, то с указанием индекса модификации в квадратных скобках: cost[0], cost[1] и так далее.
price Стоимость товара в копейках. Если товар без модификаторов, то параметр передаётся как price, если с модификаторами, то с указанием индекса модификаторов в квадратных скобках: price[0], price[1] и так далее. Кроме того, если включается свойство «разные цены в разных заведениях», то добавляется ещё один уровень массива, где будут указываться id заведений. То есть, price[1], price[2] и так далее — без модификаторов, и price[0][1], price[1][2] — с модификаторами (в качестве индекса сначала индекс модификации, а потом id заведения).
visible Признак, что товар виден на терминале в этом заведении: 0 — не виден, 1 — виден. Используется только при включенном свойстве «разные цены в разных заведениях». Структуру передачи данных идентична параметру price. То есть, visible[1], visible[2] и так далее — без модификаторов (id заведения в качестве индекса), и visible[0][1], visible[1][2] — с модификациями (в качестве индекса сначала индекс модификации, а потом id заведения).
Параметр Описание
response Id созданного товара
Параметр Описание
product_id Id созданного товара
modifications_id Массив из id модификаций созданного товара

Пример запроса на изменение данных товара без модификаций и с разными ценами в разных заведениях:

<?php
$url = 'https://joinposter.com/api/menu.updateProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'id'                     => 142,
    'product_name'           => 'Батон',
    'menu_category_id'       => 0,
    'workshop'               => 1,
    'weight_flag'            => 0,
    'color'                  => 'blue',
    'different_spots_prices' => 1,
    'modifications'          => 0,
    'barcode'                => '4820098749621',
    'price[1]'               => 3100,
    'price[2]'               => 3200,
    'visible'                => 1,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "response": 142
}

Пример запроса на изменение товара с модификациями:

<?php
$url = 'https://joinposter.com/api/menu.updateProduct'
    . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'id'                     => 57,
    'product_name'           => 'Имбирный чай',
    'menu_category_id'       => 0,
    'workshop'               => 1,
    'weight_flag'            => 0,
    'color'                  => 'green',
    'different_spots_prices' => 1,
    'modifications'          => 1,
    'modificator_id[0]'      => 1,
    'modificator_id[1]'      => 0,
    'modificator_id[2]'      => 2,
    'modificator_name[0]'    => '1л',
    'modificator_name[1]'    => '1.5л',
    'modificator_name[2]'    => '2л',
    'barcode[0]'             => '4820098749621',
    'barcode[1]'             => '4820098749623',
    'barcode[2]'             => '4820098749622',
    'price[0][1]'            => 1500,
    'price[0][2]'            => 1600,
    'price[1][1]'            => 1700,
    'price[1][2]'            => 1800,
    'price[2][1]'            => 2000,
    'price[2][2]'            => 2100,
    'visible[0][1]'          => 1,
    'visible[0][2]'          => 1,
    'visible[1][1]'          => 1,
    'visible[1][2]'          => 1,
    'visible[2][1]'          => 0,
    'visible[2][2]'          => 0,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "response":{  
    "product_id":61,
    "modifications_id":[  
      1,
      7,
      2
    ]
  }
}

Метод изменяет свойства товара

HTTP запрос

POST https://joinposter.com/api/menu.updateProduct

POST-параметры запроса menu.updateProduct

Параметр Описание
id Id товара
product_name Название товара
menu_category_id Id категории меню. Если передать 0, то товар попадет на «Главный экран».
workshop Id цеха. Обязательное поле для аккаунтов типа «кафе».
weight_flag Признак, что товар штучный или весовой: 0 — штучный, 1 — весовой
color Цвет карточки товара: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink. По умолчанию принимает white.
different_spots_prices Признак, что у товара разные цены в разных заведениях: 0 — одинаковые цены, 1 — разные цены
modifications Признак, что товар с модификаторами: 0 — без модификаторов, 1 — с модификаторами
modificator_id Id модиикатора. Является обязательным, если в параметре modifications передана 1. Для существующих модифиторов необходимо передать их существующий modificator_id. Для новых модификаторов необходимо передать 0.
modificator_name Название модиикатора. Является обязательным, если в параметре modifications передана 1. Все имена передаются с указанием индекса модификатора в квадратных скобках: modificator_name[0], modificator_name[1] и так далее.
barcode Штрихововй код товара. Позволяет использовать сканер штрих-кодов во время продажи товаров. Для штучных товаров рекомендуется использовать 13-значный код, для весовых товаров рекомендуется использовать 7-значный код. Если товар без модификаторов, то параметр передается как barcode, если с модификаторами, то с указанием индекса модификатора в квадратных скобках: barcode[0], barcode[1] и так далее.
product_code Артикул товара. Указывается только для аккаунтов типа «магазин». Если товар без модификаторов, то параметр передается как product_code, если с модификаторами, то с указанием индекса модификатора в квадратных скобках: product_code[0], product_code[1] и так далее.
price Стоимость товара в копейках. Если товар без модификаторов, то параметр передаётся как price, если с модификаторами, то с указанием индекса модификаторов в квадратных скобках: price[0], price[1] и так далее. Кроме того, если включается свойство «разные цены в разных заведениях», то добавляется ещё один уровень массива, где будут указываться id заведений. То есть, price[1], price[2] и так далее — без модификаторов, и price[0][1], price[1][2] — с модификаторами (в качестве индекса сначала индекс модификации, а потом id заведения).
visible Признак, что товар виден на терминале в этом заведении: 0 — не виден, 1 — виден. Используется только при включенном свойстве «разные цены в разных заведениях». Структуру передачи данных идентична параметру price. То есть, visible[1], visible[2] и так далее — без модификаторов (id заведения в качестве индекса), и visible[0][1], visible[1][2] — с модификациями (в качестве индекса сначала индекс модификации, а потом id заведения).
Параметр Описание
response Id изменённого товара
Параметр Описание
product_id Id изменённого товара
modifications_id Массив из id модификаций изменённого товара

Пример запроса на изменение цены товара:

<?php
$url = 'https://joinposter.com/api/menu.updateProductPrice'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'spot_id'          => 1,
    'price'            => '100',
    'product_id'       => 139,
    'modificator_id'   => 0,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "success": 1
}

Метод изменяет цену товара

HTTP POST запрос

POST https://joinposter.com/api/menu.updateProductPrice

POST-параметры запроса menu.updateProductPrice

Параметр Описание
spot_id Id заведения
price Стоимость товара в гривнах\рублях
product_id Id товара
modificator_id Id модификатора
Параметр Описание
success 1 — в случае успешной операции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$product = [
    'product_id' => 48,
];

$data = sendRequest($url, 'post', $product);

Пример ответа:

{  
  "response":true
}

Метод удаляет товар

HTTP запрос

GET https://joinposter.com/api/menu.removeProduct

POST-параметры запроса menu.removeProduct

Параметр Описание
product_id Id товара
Параметр Описание
response true, если товар успешно удалён

Пример запроса на создание техкартыы:

<?php
$url = 'https://joinposter.com/api/menu.createDish'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$dish = [
    'product_name' => 'Кальян с сюрпризом',
    'menu_category_id' => 151,
    'different_spots_prices' => 1,
    'workshop' => 4,
    'weight_flag' => 0,
    'product_color' => 'red',
    'nodiscount' => 1,
    'price' => [
        1 => 55,
        2 => 57,
    ],
    'visible' => [
        1 => 1,
        2 => 0,
    ],
    "ingredient" => [[
        "id" => 813,
        "type" => 1,
        "unit" => "kg",
        "weight" => 0,
        "stew" => 0,
        "bake" => 0,
        "brutto" => 10,
        "lock" => 1,
        "netto" => 10,
    ]],
    'modificationgroup' => [
        [
            'type'          => 1,
            'minNum'        => 1,
            'maxNum'        => 1,
            'name'          => 'Чаша',
            "modifications" => [
                [
                    "ingredientId" => 820,
                    "type" => 1,
                    "name" => "Классическая чаша",
                    "brutto" => 1,
                    "price" => 500,
                ],
                [
                    "ingredientId" => 816,
                    "name" => "Апельсиновая чаша",
                    "type" => 1,
                    "brutto" => 1,
                    "price" => 400,
                ],
            ]
        ]
    ]
];

$data = sendRequest($url, 'post', $dish);

Пример ответа:

{
  "response":61
}

Метод создаёт тех. карту

HTTP запрос

POST https://joinposter.com/api/menu.createDish

POST-параметры запроса menu.createDish

Параметр Описание
product_name Название тех. карты
barcode Штриховой код тех. карты. По умолчанию не передаётся.
menu_category_id Id категории тех. карты. По умолчанию принимает 0.
workshop_id Id цеха. По умолчанию принимает 1.
product_color Цвет карточки тех. карты: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink. По умолчанию принимает white.
weight_flag Признак, что тех. карта весовая: 0 — не весовая, 1 — весовая. По умолчанию принимает 0. Если в тех. карте присутсвует штучный ингредиент, то она не может быть весовой. Если тех. карта с модификациями не может быть весовой.
nodiscount Признак, что тех. карта принимает участие в скидках: 0 — не принимает участие, 1 — принимает участие. По умолчанию принимает 1.
price Массив цен по разным заведениям. Ключ массива — id заведения, значение — цена в копейках. Можно указать price не массивом, тогда цена раскидается на все заведения.
visible Массив видимости тех. карты по разным заведениям. Ключ массива — id заведения. Можно указать visible не массивом, тогда видимость раскидается на все заведения.
ingredient Массив ингредиентов и полуфабрикатов входящих в состав тех. карты
modificationgroup Массив групп модификаторов

Внутри параметра ingredient лежит объект, внутри которого есть следующие параметры:

Параметр Описание
id id полуфабриката или ингредиента
type Тип ингредиента: 1 — ингредиент, 2 — полуфабрикат
brutto Брутто
netto Нетто
bake Признак, используется ли метод приготоволения «варка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
cook Признак, используется ли метод приготоволения «запекание»: 0 — нет, 1 — да. По умолчанию передаётся 0.
clear Признак, используется ли метод приготоволения «очистка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
fry Признак, используется ли метод приготоволения «жарка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
stew Признак, используется ли метод приготоволения «тушение»: 0 — нет, 1 — да. По умолчанию передаётся 0.
lock Тип зависимости нетто от брутто: 0 — ручная, 1 — автоматическая

Внутри параметра modificationgroup лежит объект, внутри которого есть следующие параметры:

Параметр Описание
type Тип: 1 — из нескольких, 2 — несколько из нескольких
minNum Минимальное количество модификаторов, которые нужно выбрать
maxNum Максимальное количество модификаторов, которые нужно выбрать
name Имя группы модификаторов
modifications Массив модификаторов

Внутри параметра modifications лежит объект, внутри которого есть следующие параметры:

Параметр Описание
ingredientId Id ингредиента, тех. карты или полуфабриката
type Тип: 1 — ингредиент, 2 — тех. карта или полуфабрикат
name Название модификатора
brutto Вес, количество или литры модификатора
price Дельта добавляемой цены к продукту при добавлении модификации. Цена в копейках и может быть нулевой.
Параметр Описание
response Id созданной тех. карты

Пример запроса на редактирование техкарты:

<?php
$url = 'https://joinposter.com/api/menu.updateDish'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$dish = [
    'dish_id'                => 171,
    'product_name'           => 'Гамбургер с телятиной',
    'barcode'                => 159687,
    'menu_category_id'       => 10,
    'different_spots_prices' => 1,
    'workshop'               => 2,
    'weight_flag'            => 0,
    'product_color'          => 'red',
    'nodiscount'             => 0,
    'ingredient'             => [
        [
            'id'     => 815,
            'type'   => 1,
            'brutto' => 3,
            'netto'  => 6,
            'lock'   => 1,
            'clear'  => 1,
        ]
    ],
    'price' => [
        1 => 55,
        2 => 57,
    ],
    'visible' => [
        1 => 1,
        2 => 0,
    ],
    'modificationgroup'      => [
        [
            'type'          => 1,
            'minNum'        => 1,
            'maxNum'        => 1,
            'name'          => 'Картофель',
            'modifications' => [
                [
                    'ingredientId' => 814,
                    'type'         => 1,
                    'name'         => 'Вареный картофель',
                    'brutto'       => 200,
                    'price'        => 230,
                ],
                [
                    'ingredientId' => 816,
                    'type'         => 1,
                    'name'         => 'Фри',
                    'brutto'       => 150,
                    'price'        => 280,
                ],
            ],
        ]
    ],
];

$data = sendRequest($url, 'post', $dish);

Пример ответа:

{
  "response":61
}

Метод изменяет свойства тех. карты

HTTP запрос

POST https://joinposter.com/api/menu.updateDish

POST-параметры запроса menu.updateDish

Параметр Описание
dish_id Id тех. карты
product_name Название тех. карты
barcode Штриховой код тех. карты
menu_category_id Id категории тех. карты
workshop_id Id цеха
product_color Цвет карточки тех. карты: white, red, orange, yellow, green, blue, navy-blue, purple, black, mint-blue, lime-green, pink
weight_flag Признак, что тех. карта весовая: 0 — не весовая, 1 — весовая. Если в тех. карте присутсвует штучный ингредиент, то она не может быть весовой.
nodiscount Признак, что тех. карта принимает участие в скидках: 0 — не принимает участие, 1 — принимает участие
price Массив цен по разным заведениям. Ключ массива — id заведения. Можно указать price не массивом, тогда цена раскидается на все заведения.
visible Массив видимости тех. карты по разным заведениям. Ключ массива — id заведения. Можно указать visible не массивом, тогда видимость раскидается на все заведения.
ingredient Массив ингредиентов и полуфабрикатов входящих в состав тех. карты
modificationgroup Массив групп модификаторов

Внутри параметра ingredient лежит объект, внутри которого есть следующие параметры:

Параметр Описание
id id полуфабриката или ингредиента
type Тип ингредиента: 1 — ингредиент, 2 — полуфабрикат
brutto Брутто
netto Нетто
bake Признак, используется ли метод приготоволения «варка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
cook Признак, используется ли метод приготоволения «запекание»: 0 — нет, 1 — да. По умолчанию передаётся 0.
clear Признак, используется ли метод приготоволения «очистка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
fry Признак, используется ли метод приготоволения «жарка»: 0 — нет, 1 — да. По умолчанию передаётся 0.
stew Признак, используется ли метод приготоволения «тушение»: 0 — нет, 1 — да. По умолчанию передаётся 0.
lock Тип зависимости нетто от брутто: 0 — ручная, 1 — автоматическая

Внутри параметра modificationgroup лежит объект, внутри которого есть следующие параметры:

Параметр Описание
dish_modification_group_id Id группы которую редактируем. Все группы модификаций продукта, которые не прийдут в запросе, будут удалены.
type Тип: 1 — из нескольких, 2 — несколько из нескольких
minNum Минимальное количество модификаторов, которые нужно выбрать
maxNum Максимальное количество модификаторов, которые нужно выбрать
name Имя группы модификаторов
modifications Массив модификаторов

Внутри параметра modifications лежит объект, внутри которого есть следующие параметры:

Параметр Описание
dish_modification_id Id модификации которую редактируем. Все модификации продукта, которые не прийдут в запросе, будут удалены.
ingredientId Id ингредиента, тех. карты или полуфабриката
type Тип: 1 — ингредиент, 2 — тех. карта или полуфабрикат
name Название модификатора
brutto Вес, количество или литры модификатора
price Дельта добавляемой цены к продукту при добавлении модификации. Может быть нулевой.
Параметр Описание
response Id изменённой тех. карты

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeDish'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$dish = [
    'dish_id' => 925,
];

$data = sendRequest($url, 'post', $dish);

Пример ответа:

{  
  "response":true
}

Метод удаляет тех. карту

HTTP запрос

GET https://joinposter.com/api/menu.removeDish

POST-параметры запроса menu.removeDish

Параметр Описание
dish_id Id тех. карты
Параметр Описание
response true, если тех. карта успешно удалена

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getPrepacks'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "product_id":"167",
      "ingredient_id":"0",
      "product_name":"Куринный бульон",
      "cost":"1222",
      "out":171,
      "product_production_description":"",
      "ingredients":[  
        {  
          "structure_id":"45",
          "ingredient_id":"88",
          "pr_in_clear":"0",
          "pr_in_cook":"1",
          "pr_in_fry":"0",
          "pr_in_stew":"0",
          "pr_in_bake":"0",
          "structure_unit":"kg",
          "structure_type":"1",
          "structure_brutto":200,
          "structure_netto":170,
          "structure_lock":"1",
          "structure_selfprice":"1221",
          "ingredient_name":"Куриные крылья",
          "ingredient_unit":"kg",
          "ingredient_weight":"0",
          "ingredients_losses_clear":"0",
          "ingredients_losses_cook":"15",
          "ingredients_losses_fry":"16",
          "ingredients_losses_stew":"16",
          "ingredients_losses_bake":"16"
        },
        {  
          "structure_id":"46",
          "ingredient_id":"89",
          "pr_in_clear":"0",
          "pr_in_cook":"0",
          "pr_in_fry":"0",
          "pr_in_stew":"0",
          "pr_in_bake":"0",
          "structure_unit":"kg",
          "structure_type":"1",
          "structure_brutto":1,
          "structure_netto":1,
          "structure_lock":"1",
          "structure_selfprice":"1",
          "ingredient_name":"Соль",
          "ingredient_unit":"kg",
          "ingredient_weight":"0",
          "ingredients_losses_clear":"0",
          "ingredients_losses_cook":"0",
          "ingredients_losses_fry":"0",
          "ingredients_losses_stew":"0",
          "ingredients_losses_bake":"0"
        }
      ]
    }
  ]
}

Метод возвращает список полуфабрикатов

HTTP запрос

GET https://joinposter.com/api/menu.getPrepacks

GET-параметры запроса menu.getPrepacks

Параметр Описание
token Авторизационный токен
format Опциональный параметр, указывающий формат выдачи ответа. Может быть xml или json. По умолчанию json.
1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
product_id Id полуфабриката в таблице товаров
ingredient_id Id полуфабриката в таблице ингредиентов, если полуфабрикат производимый, иначе принимает 0
product_name Название полуфабриката
cost Себестоимость полуфабриката
out Вес полуфабриката
product_production_description Описание процесса приготовления
id_1c Id полуфабриката в системе 1С
ingredients Ингредиенты входящие в состав полуфабриката

Внутри параметра ingredients лежит объект, внутри которого есть следующие параметры:

Параметр Описание
structure_id Id элемента полуфабриката
ingredient_id Id ингредиента
pr_in_clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется
pr_in_cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется
pr_in_fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется
pr_in_stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется
pr_in_bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется
structure_unit Единица измерения элемента полуфабриката
structure_type Тип элемента полуфабриката: 1 — ингредиент, 2 — полуфабрикат
structure_brutto Брутто элемента полуфабриката
structure_netto Нетто элемента полуфабриката
structure_lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
structure_selfprice Цена элемента полуфабриката
ingredient_name Название ингредиента
ingredient_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
ingredient_weight Количество списания ингредиента
ingredients_losses_clear Коэффициент потерь при очистке ингредиента
ingredients_losses_cook Коэффициент потерь при запекании ингредиента
ingredients_losses_fry Коэффициент потерь при жарке ингредиента
ingredients_losses_stew Коэффициент потерь при тущении ингредиента
ingredients_losses_bake Коэффициент потерь при варке ингредиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getPrepack'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&product_id=167'
 . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "product_id":"167",
    "ingredient_id":"0",
    "product_name":"Куринный бульон",
    "cost":"1222",
    "out":171,
    "product_production_description":"",
    "id_1c":"0",
    "ingredients":[  
      {  
        "structure_id":"45",
        "ingredient_id":"88",
        "pr_in_clear":"0",
        "pr_in_cook":"1",
        "pr_in_fry":"0",
        "pr_in_stew":"0",
        "pr_in_bake":"0",
        "structure_unit":"kg",
        "structure_type":"1",
        "structure_brutto":200,
        "structure_netto":170,
        "structure_lock":"1",
        "structure_selfprice":"1221",
        "ingredient_name":"Куриные крылья",
        "ingredient_unit":"kg",
        "ingredient_weight":"0",
        "ingredients_losses_clear":"0",
        "ingredients_losses_cook":"15",
        "ingredients_losses_fry":"16",
        "ingredients_losses_stew":"16",
        "ingredients_losses_bake":"16"
      },
      {  
        "structure_id":"46",
        "ingredient_id":"89",
        "pr_in_clear":"0",
        "pr_in_cook":"0",
        "pr_in_fry":"0",
        "pr_in_stew":"0",
        "pr_in_bake":"0",
        "structure_unit":"kg",
        "structure_type":"1",
        "structure_brutto":1,
        "structure_netto":1,
        "structure_lock":"1",
        "structure_selfprice":"1",
        "ingredient_name":"Соль",
        "ingredient_unit":"kg",
        "ingredient_weight":"0",
        "ingredients_losses_clear":"0",
        "ingredients_losses_cook":"0",
        "ingredients_losses_fry":"0",
        "ingredients_losses_stew":"0",
        "ingredients_losses_bake":"0"
      }
    ]
  }
}

Метод возвращает свойства полуфабриката

HTTP запрос

GET https://joinposter.com/api/menu.getPrepack

Выполнить в браузере

GET-параметры запроса menu.getPrepack

Параметр Описание
product_id Id полуфабриката
1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
product_id Id полуфабриката в таблице товаров
ingredient_id Id полуфабриката в таблице ингредиентов, если полуфабрикат производимый, иначе принимает 0
product_name Название полуфабриката
cost Себестоимость полуфабриката
out Вес полуфабриката
product_production_description Описание процесса приготовления
id_1c Id полуфабриката в системе 1С
ingredients Ингредиенты входящие в состав полуфабриката

Внутри параметра ingredients лежит объект, внутри которого есть следующие параметры:

Параметр Описание
structure_id Id элемента полуфабриката
ingredient_id Id ингредиента
pr_in_clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется
pr_in_cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется
pr_in_fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется
pr_in_stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется
pr_in_bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется
structure_unit Единица измерения элемента полуфабриката
structure_type Тип элемента полуфабриката: 1 — ингредиент, 2 — полуфабрикат
structure_brutto Брутто элемента полуфабриката
structure_netto Нетто элемента полуфабриката
structure_lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
structure_selfprice Цена элемента полуфабриката в копейках
ingredient_name Название ингредиента
ingredient_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
ingredient_weight Количество списания ингредиента
ingredients_losses_clear Коэффициент потерь при очистке ингредиента
ingredients_losses_cook Коэффициент потерь при запекании ингредиента
ingredients_losses_fry Коэффициент потерь при жарке ингредиента
ingredients_losses_stew Коэффициент потерь при тущении ингредиента
ingredients_losses_bake Коэффициент потерь при варке ингредиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.createPrepack'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$prepack = [
    'product_name' => 'Маринованные грибы',
    'ingredient'   => [
        [
            'id'     => 88,
            'type'   => 1,
            'brutto' => 3,
            'netto'  => 6,
            'lock'   => 0,
            'clear'  => 0,
            'cook'   => 0,
            'fry'    => 0,
            'stew'   => 1,
            'bake'   => 0,
        ],
    ],
];

$data = sendRequest($url, 'post', $prepack);

Пример ответа:

{  
  "response":177
}

Метод создаёт полуфабрикат

HTTP запрос

GET https://joinposter.com/api/menu.createPrepack

POST-параметры запроса menu.createDish

Параметр Описание
product_name Название полуфабриката. Должно быть уникальным.
ingredient Ингредиенты входящие в состав полуфабриката
product_production_description Опциональный параметр, описание процесса приготовления.

Внутри параметра ingredients лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
id Id ингредиента или полуфабриката
type Тип элемента полуфабриката: 1 — ингредиент, 2 — полуфабрикат
brutto Брутто элемента полуфабриката
netto Нетто элемента полуфабриката
lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
Параметр Описание
response Id созданного полуфабриката в таблице товаров

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.updatePrepack'
    . '?token=687409:4164553abf6a031302898da7800b59fb';

$prepack = [
    'prepack_id' => 919,
    'product_name' => 'Блины',
    'ingredient'   => [
        [
            'id'     => 88,
            'type'   => 1,
            'brutto' => 3,
            'netto'  => 6,
            'lock'   => 0,
            'clear'  => 0,
            'cook'   => 0,
            'fry'    => 0,
            'stew'   => 1,
            'bake'   => 0,
        ],
    ],
];

$data = sendRequest($url, 'post', $prepack);

Пример ответа:

{  
  "response": 919
}

Метод изменяет свойства полуфабриката

HTTP запрос

GET https://joinposter.com/api/menu.updatePrepack

POST-параметры запроса menu.updatePrepack

Параметр Описание
prepack_id Id полуфабриката
product_name Название полуфабриката
product_production_description Описание процесса приготовления
ingredient Ингредиенты входящие в состав полуфабриката

Внутри параметра ingredients лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
id Id ингредиента или полуфабриката
type Тип элемента полуфабриката: 1 — ингредиент, 2 — полуфабрикат
brutto Брутто элемента полуфабриката
netto Нетто элемента полуфабриката
lock Зависимость нетто от брутто: 0 — ручная, 1 — автоматическая
clear Признак, что используется метод приготовления «очистка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
cook Признак, что используется метод приготовления «запекание»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
fry Признак, что используется метод приготовления «жарка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
stew Признак, что используется метод приготовления «тущение»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
bake Признак, что используется метод приготовления «варка»: 0 — не используется, 1 — используется. По умолчанию принимает 0.
Параметр Описание
response Id изменённого полуфабриката в таблице товаров

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removePrepack'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$prepack = [
    'prepack_id' => 177,
];

$data = sendRequest($url, 'post', $prepack);

Пример ответа:

{  
  "response":true
}

Метод удаляет полуфабрикат

HTTP запрос

GET https://joinposter.com/api/menu.removePrepack

POST-параметры запроса menu.removePrepack

Параметр Описание
prepack_id Id полуфабриката
Параметр Описание
response true, если полуфабрикат успешно удалён

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "ingredient_id":"91",
      "ingredient_name":"Jack Daniels",
      "category_id":"3",
      "ingredient_left":"443.45000",
      "limit_value":"0",
      "time_notif":"0",
      "ingredient_unit":"l",
      "ingredient_weight":0,
      "ingredients_losses_clear":"0",
      "ingredients_losses_cook":"0",
      "ingredients_losses_fry":"0",
      "ingredients_losses_stew":"0",
      "ingredients_losses_bake":"0",
      "ingredients_type":"1",
      "partial_write_off":"0"
    },
    {  
      "ingredient_id":"73",
      "ingredient_name":"Авокадо",
      "category_id":"0",
      "ingredient_left":"22.00000",
      "limit_value":"0",
      "time_notif":"0",
      "ingredient_unit":"kg",
      "ingredient_weight":0,
      "ingredients_losses_clear":"11",
      "ingredients_losses_cook":"0",
      "ingredients_losses_fry":"0",
      "ingredients_losses_stew":"0",
      "ingredients_losses_bake":"0",
      "ingredients_type":"1",
      "partial_write_off":"0"
    },
    {  
      "ingredient_id":"74",
      "ingredient_name":"Айсберг с-т",
      "category_id":"0",
      "ingredient_left":"379.09000",
      "limit_value":"0",
      "time_notif":"0",
      "ingredient_unit":"kg",
      "ingredient_weight":0,
      "ingredients_losses_clear":"10",
      "ingredients_losses_cook":"0",
      "ingredients_losses_fry":"0",
      "ingredients_losses_stew":"0",
      "ingredients_losses_bake":"0",
      "ingredients_type":"1",
      "partial_write_off":"0"
    }
  ]
}

Метод возвращает список ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.getIngredients

GET-параметры запроса menu.getIngredients

Параметр Описание
id_1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
ingredient_id Id ингредиента
ingredient_name Название ингредиента
category_id Id категории в которой находится ингредиент
ingredient_left Остаток по ингредиенту
limit_value Лимит по ингредиенту на складе
time_notif Время последнего уведомления о достижения лимита по ингредиенту на складе
ingredient_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
ingredient_weight Вес ингредиента, если ингредиент штучный
ingredients_losses_clear Коэффициент потерь при очистке ингредиента, если ингредиент не штучный
ingredients_losses_cook Коэффициент потерь при запекании ингредиента, если ингредиент не штучный
ingredients_losses_fry Коэффициент потерь при жарке ингредиента, если ингредиент не штучный
ingredients_losses_stew Коэффициент потерь при тущении ингредиента, если ингредиент не штучный
ingredients_losses_bake Коэффициент потерь при варке ингредиента, если ингредиент не штучный
ingredients_type Тип ингредиента: 1 — ингредиент, 2 - системный ингредиент
partial_write_off Признак, что можно списывать штучный ингредиент, как дробный: 0 — нельзя, 1 — можно
id_1c Id ингредиента в системе 1С
delete Признак, что ингредиент удалён: 0 — не удалён, 1 — удалён
hidden Признак, что ингредиент скрыт: 0 — не скрыт, 1 — скрыт

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getIngredient'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&ingredient_id=91'
 . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "ingredient_id":"91",
    "ingredient_name":"Jack Daniels",
    "category_id":"3",
    "ingredient_left":"442.85000",
    "limit_value":"0",
    "time_notif":"0",
    "ingredient_unit":"l",
    "ingredient_weight":0,
    "ingredients_losses_clear":"0",
    "ingredients_losses_cook":"0",
    "ingredients_losses_fry":"0",
    "ingredients_losses_stew":"0",
    "ingredients_losses_bake":"0",
    "ingredients_type":"1",
    "partial_write_off":"0",
    "id_1c":"d70b49a7-0097-11e6-9c83-028037ec0200",
    "delete":"0",
    "hidden":"0"
  }
}

Метод возвращает свойства ингредиента

HTTP запрос

GET https://joinposter.com/api/menu.getIngredient

GET-параметры запроса menu.getIngredient

Параметр Описание
ingredient_id Id ингредиента
1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
ingredient_id Id ингредиента
ingredient_name Название ингредиента
category_id Id категории в которой находится ингредиент
ingredient_left Остаток по ингредиенту
limit_value Лимит по ингредиенту на складе
time_notif Время последнего уведомления о достижения лимита по ингредиенту на складе
ingredient_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
ingredient_weight Вес ингредиента, если ингредиент штучный
ingredients_losses_clear Коэффициент потерь при очистке ингредиента, если ингредиент не штучный
ingredients_losses_cook Коэффициент потерь при запекании ингредиента, если ингредиент не штучный
ingredients_losses_fry Коэффициент потерь при жарке ингредиента, если ингредиент не штучный
ingredients_losses_stew Коэффициент потерь при тущении ингредиента, если ингредиент не штучный
ingredients_losses_bake Коэффициент потерь при варке ингредиента, если ингредиент не штучный
ingredients_type Тип ингредиента: 1 — ингредиент, 2 - системный ингредиент
partial_write_off Признак, что можно списывать штучный ингредиент, как дробный: 0 — нельзя, 1 — можно
id_1c Id ингредиента в системе 1С
delete Признак, что ингредиент удалён: 0 — не удалён, 1 — удалён
hidden Признак, что ингредиент скрыт: 0 — не скрыт, 1 — скрыт

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.createIngredient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$ingredient = [
    'ingredient_name'   => 'Клубника',
    'category_id'       => 4,
    'type'              => 'p',
    'weight_ingredient' => 200,
];

$data = sendRequest($url, 'post', $ingredient);

Пример ответа:

{  
  "response":811
}

Метод создаёт ингредиент

HTTP запрос

GET https://joinposter.com/api/menu.createIngredient

POST-параметры запроса menu.createIngredient

Параметр Описание
ingredient_name Название ингредиента
category_id Id категории ингредиента
type Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
weight_ingredient Вес ингредиента, если ингредиент штучный
loss_clear Коэффициент потерь при очистке ингредиента, если ингредиент не штучный
loss_cook Коэффициент потерь при запекании ингредиента, если ингредиент не штучный
loss_fry Коэффициент потерь при жарке ингредиента, если ингредиент не штучный
loss_stew Коэффициент потерь при тущении ингредиента, если ингредиент не штучный
loss_bake Коэффициент потерь при варке ингредиента, если ингредиент не штучный
partial_write_off Признак, что можно списывать штучный ингредиент, как дробный: 0 — нельзя, 1 — можно
Параметр Описание
response Id созданного ингредиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.updateIngredient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$ingredient = [
    'id'                => 811,
    'ingredient_name'   => 'Лимон',
    'category_id'       => 4,
    'type'              => 'p',
    'weight_ingredient' => 150,
];

$data = sendRequest($url, 'post', $ingredient);

Пример ответа:

{  
  "response": 811
}

Метод изменяет свойства ингредиента

HTTP запрос

GET https://joinposter.com/api/menu.updateIngredient

POST-параметры запроса menu.updateIngredient

Параметр Описание
id Id ингредиента
ingredient_name Название ингредиента
category_id Id категории ингредиента
type Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры. Нельзя менять единицу измерения ингредиента, если он уже поставлялся на склад.
weight_ingredient Вес ингредиента, если ингредиент штучный
loss_clear Коэффициент потерь при очистке ингредиента, если ингредиент не штучный
loss_cook Коэффициент потерь при запекании ингредиента, если ингредиент не штучный
loss_fry Коэффициент потерь при жарке ингредиента, если ингредиент не штучный
loss_stew Коэффициент потерь при тущении ингредиента, если ингредиент не штучный
loss_bake Коэффициент потерь при варке ингредиента, если ингредиент не штучный
partial_write_off Признак, что можно списывать штучный ингредиент, как дробный: 0 — нельзя, 1 — можно
Параметр Описание
response Id изменённого ингредиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeIngredient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$ingredient = [
    'ingredient_id' => 811,
];

$data = sendRequest($url, 'post', $ingredient);

Пример ответа:

{  
  "response":true
}

Метод удаляет ингредиет

HTTP запрос

GET https://joinposter.com/api/menu.removeIngredient

POST-параметры запроса menu.removeIngredient

Параметр Описание
ingredient_id Id ингредиета
Параметр Описание
response true, если ингредиет успешно удалён

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getCategoriesIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "category_id":"3",
      "name":"Алкоголь",
      "id_1c":"b80ffc81-0fc9-11e7-9ab4-ace01035e460"
    },
    {  
      "category_id":"2",
      "name":"Мясо",
      "id_1c":null
    },
    {  
      "category_id":"1",
      "name":"Овощи",
      "id_1c":null
    },
    {  
      "category_id":"4",
      "name":"Фрукты",
      "id_1c":null
    }
  ]
}

Метод возвращает список категорий ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.getCategoriesIngredients

GET-параметры запроса menu.getCategoriesIngredients

Параметр Описание
1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
category_id Id категории ингредиентов
category_name Название категории ингредиентов
id_1c Id категории ингредиентов в системе 1С

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getCategoryIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&category_id=3'
 . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "category_id":"3",
    "name":"Алкоголь",
    "id_1c":"b80ffc81-0fc9-11e7-9ab4-ace01035e460"
  }
}

Метод возвращает свойства категории ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.getCategoryIngredients

GET-параметры запроса menu.getCategoryIngredients

Параметр Описание
category_id Id категории ингредиентов
1c Опциональный параметр, если значение true — возвращает в ответе id категории товаров в системе 1С. По умолчанию не передаётся.
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
category_id Id категории ингредиентов
category_name Название категории ингредиентов
id_1c Id категории ингредиентов в системе 1С

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.createCategoryIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category_ingredients = [
    'category_name' => 'Овощи',
];

$data = sendRequest($url, 'post', $category_ingredients);

Пример ответа:

{  
  "response":27
}

Метод создаёт категорию ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.createCategoryIngredients

POST-параметры запроса menu.createCategoryIngredients

Параметр Описание
category_name Название категории ингредиентов
Параметр Описание
response Id созданной категории ингредиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.updateCategoryIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category_ingredients = [
    'category_id'   => 2,
    'category_name' => 'Фрукты',
];

$data = sendRequest($url, 'post', $category_ingredients);

Пример ответа:

{  
  "response": 2
}

Метод изменяет свойства категории ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.updateCategoryIngredients

POST-параметры запроса menu.updateCategoryIngredients

Параметр Описание
category_id Id категории ингредиентов
category_name Новое название категории ингредиентов
Параметр Описание
response Id изменённой категории ингредиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeCategoryIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$category_ingredients = [
    'category_id'      => 2,
    'with_ingredients' => 1,
];

$data = sendRequest($url, 'post', $category_ingredients);

Пример ответа:

{  
  "success":"successful delete category"
}

Метод удаляет категорию ингредиентов

HTTP запрос

GET https://joinposter.com/api/menu.removeCategoryIngredients

POST-параметры запроса menu.removeCategoryIngredients

Параметр Описание
category_id Id категории ингредиентов
with_ingredients Признак, удалять ли ингредиенты в категории: 0 — не удалять, 1 — удалять. По умолчанию принимает 0.
Параметр Описание
success Сообщение об успешном удалении

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getWorkshops'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "workshop_id":"1",
      "workshop_name":"Бар",
      "delete":"0"
    },
    {  
      "workshop_id":"2",
      "workshop_name":"Кухня",
      "delete":"0"
    },
    {  
      "workshop_id":"3",
      "workshop_name":"Кондитерская",
      "delete":"0"
    },
    {  
      "workshop_id":"4",
      "workshop_name":"Кальян",
      "delete":"0"
    }
  ]
}

Метод возвращает список цехов

HTTP запрос

GET https://joinposter.com/api/menu.getWorkshops

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
workshop_id Id цеха
workshop_name Название цеха
delete Признак, удалён ли цех: 0 — не удалён, 1 — удалён

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.getWorkshop'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&workshop_id=1';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "workshop_id":"1",
    "workshop_name":"Бар",
    "delete":"0"
  }
}

Метод возвращает свойства цеха

HTTP запрос

GET https://joinposter.com/api/menu.getWorkshop

GET-параметры запроса menu.getWorkshop

Параметр Описание
workshop_id Id цеха
Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
workshop_id Id цеха
workshop_name Название цеха
delete Признак, удалён ли цех: 0 — не удалён, 1 — удалён

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.createWorkshop'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$workshop = [
    'workshop_name' => 'Мангал',
];

$data = sendRequest($url, 'post', $workshop);

Пример ответа:

{  
  "response":5
}

Метод создаёт цех

HTTP запрос

GET https://joinposter.com/api/menu.createWorkshop

POST-параметры запроса menu.createWorkshop

Параметр Описание
workshop_name Обязательный параметр, название цеха
Параметр Описание
response Id созданного цеха

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.updateWorkshop'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$workshop = [
    'workshop_id'  => 5,
    'product_name' => 'Суши',
];

$data = sendRequest($url, 'post', $workshop);

Пример ответа:

{  
  "response":5
}

Метод изменяет свойства цеха

HTTP запрос

GET https://joinposter.com/api/menu.updateWorkshop

POST-параметры запроса menu.updateWorkshop

Параметр Описание
workshop_id Id цеха
workshop_name Название цеха
Параметр Описание
response Id изменённого цеха

Пример запроса:

<?php
$url = 'https://joinposter.com/api/menu.removeWorkshop'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$workshop = [
    'workshop_id' => 2,
];

$data = sendRequest($url, 'post', $workshop);

Пример ответа:

{  
  "response":true
}

Метод удаляет цех

HTTP запрос

GET https://joinposter.com/api/menu.removeWorkshop

POST-параметры запроса menu.removeWorkshop

Параметр Описание
workshop_id Id цеха
Параметр Описание
response true, если цех успешно удалён

storage: Склад

Все методы по работе с разделом склад начинаются со storage.

storage.getManufactures: Список производств

Пример запроса:

<?
$url = 'https://apidemo.joinposter.com/api/storage.getManufactures'
  . '?format=json'
  . '&token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "manufacture_id":"4",
      "storage_name":"Склад 1",
      "storage_id":"1",
      "user_id":"4",
      "date":"2016-12-26 14:45:00",
      "sum":70.35,
      "products":[
        {
          "ingredient_id":"205",
          "product_id":"134",
          "product_name":"Чай цветочный 360мл",
          "product_num":"3.0000",
          "type":"2"
        },
        {
          "ingredient_id":"204",
          "product_id":"137",
          "product_name":"Чай черный с чабрецом 360мл",
          "product_num":"2.0000",
          "type":"2"
        }
      ]
    },
    {
      "manufacture_id":"2",
      "storage_name":"Склад 1",
      "storage_id":"1",
      "user_id":"4",
      "date":"2016-12-26 14:44:00",
      "sum":"32.44",
      "products":[
        {
          "ingredient_id":"200",
          "product_id":"109",
          "product_name":"Американо 360мл",
          "product_num":"1.0000",
          "type":"2"
        }
      ]
    }
  ]
}

Запрос на получение списка всех производств.

HTTP запрос

GET https://joinposter.com/api/storage.getManufactures

GET-параметры запроса storage.getManufactures

Параметр Описание
num Количество производств, которое необходимо получить
offset Сколько записей необходимо пропустить от начала списка

Параметры ответа storage.getManufactures

Параметр Описание
manufacture_id id производства
storage_name Название склада
storage_id id склада
user_id id пользователя, который осуществил производство
date Дата производства
sum Общая сумма производства (в гривнах/рублях)
products Список тех.карт/полуфабрикатов, которые входят в производство

Содержимое параметра products

Под словом сущность подразумевается тех.карта или полуфабрикат. Когда сущность производится в первый раз, то она получает уникальный ingredient_id, по которому можно будет получить её остатки на складах.

Параметр Описание
ingredient_id уникальный ingredient_id сущности
product_id id сущности
product_name Название сущности
product_num Количество в шт, кг или литрах
type Тип сущности: 1 — полуфабрикат, 2 — тех.карта

storage.getManufacture: Данные производства

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.getManufacture' 
  . '?format=json'
  . '&token=687409:4164553abf6a031302898da7800b59fb'
  . '&manufacture_id=4';

$data = sendRequest($url);

Пример ответа:

{
  "response":{
    "manufacture_id":"4",
    "storage_name":"Склад 1",
    "storage_id":"1",
    "user_id":"4",
    "date":"2016-12-26 14:45:00",
    "sum":70.35,
    "products":[
      {
        "ingredient_id":"205",
        "product_id":"134",
        "product_name":"Чай цветочный 360мл",
        "product_num":"3.0000",
        "type":"2"
      },
      {
        "ingredient_id":"204",
        "product_id":"137",
        "product_name":"Чай черный с чабрецом 360мл",
        "product_num":"2.0000",
        "type":"2"
      }
    ]
  }
}

Запрос возвращает данные конкретного производства.

HTTP запрос

GET https://joinposter.com/api/storage.getManufacture

GET-параметры запроса storage.getManufacture

Параметр Описание
manufacture_id Id производства, для которого необходимо вернуть детальные данные

Параметры ответа storage.getManufacture

Параметр Описание
manufacture_id id производства
storage_name Название склада
storage_id id склада
user_id id пользователя, который осуществил производство
date Дата производства
sum Общая сумма производства в гривнах\рублях
products Список тех.карт/полуфабрикатов, которые входят в производство

Содержимое параметра products

Под словом сущность подразумевается тех. карта или полуфабрикат. Когда сущность производится в первый раз, то она получает уникальный ingredient_id, по которому можно будет получить её остатки на складах.

Параметр Описание
ingredient_id уникальный ingredient_id сущности
product_id id сущности
product_name Название сущности
product_num Количество в шт, кг или литрах
type Тип сущности: 1 — полуфабрикат, 2 — тех.карта

storage.getManufacturesWriteOffs: Списания по производствам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getManufacturesWriteOffs'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&date_from=2017-11-30'
 . '&date_to=2017-11-30'
 . '&per_page=10'
 . '&page=5';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "count":11,
    "page":{  
      "per_page":10,
      "page":2,
      "count":1
    },
    "data":[  
      {  
        "manufacture_id":15,
        "storage_id":2,
        "date":"2017-11-30 15:00:00",
        "products":[  
          {  
            "product_id":105,
            "type":2,
            "num":10,
            "sum":123.45,
            "is_fiscal":0,
            "write_offs":[  
              {  
                "ingredient_id":165,
                "type":1,
                "weight":123.45
              }
            ]
          }
        ]
      }
    ]
  }
}

Метод возвращает списания по производствам в диапазоне дат и с постраничной разбивкой

HTTP GET запрос

https://joinposter.com/api/storage.getManufacturesWriteOffs

GET-параметры запроса storage.getManufacturesWriteOffs

Параметр Описание
date_from Дата начала выборки, формат “Y-m-d”
date_to Дата конца выборки, формат “Y-m-d”
per_page Количество чеков на одной странице. По умолчанию принимает 100, максимальное значение — 1000.
page Номер страницы, по умолчанию принимает 1

Параметры ответа storage.getManufacturesWriteOffs

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
count Общее количество чеков в выбранном диапазоне дат
page Информация о странице
data Информация по чекам

Внутри параметра page лежит объект, внутри которого есть следующие параметры:

Параметр Описание
per_page Количество чеков на одной странице
page Номер текущей страницы
count Количество чеков на текущей странице

Внутри параметра data лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
manufacture_id Id производства
storage_id Id склада
date Дата производства
products Произведённые полуфабрикаты и тех. карты

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
product_id Id полуфабриката или тех. карты
type Тип: 1 — полуфабрикат, 2 — тех. карта
num Количество
sum Общая сумма за всё количество
is_fiscal Признак фискальности: 0 — не фискальный, 1 — фискальный
write_offs Список списаний

Внутри параметра write_offs лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
ingredient_id Id ингредиента
type Тип: 1 — ингредиент, 2 — полуфабрикат
weight Общее количество

storage.createManufacture: Создание производства

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.createManufacture' 
  . '?format=json'
  . '&token=687409:4164553abf6a031302898da7800b59fb';

$manufacture = [
    "date"          => "2016-12-21 11:12:54",
    "storage_id"    => 1,
    "products"      => [
        [
            "id"    => 64,
            "type"  => 1,
            "num"   => 3
        ],
        [
            "id"    => 65,
            "type"  => 1,
            "num"   => 25
        ],
    ]
];

$data = sendRequest($url, 'post', $manufacture, true);

Пример ответа:

{
  "response":6
}

Запрос создает производство тех.карт и полуфабрикатов

HTTP запрос

POST https://joinposter.com/api/storage.createManufacture

POST-параметры запроса storage.createManufacture

Параметр Описание
date Дата производства
storage_id id склада
products Список тех.карт или полуфабрикатов, которые входят в производство

Содержимое параметра products

Под словом сущность подразумевается тех.карта или полуфабрикат. Когда сущность производится в первый раз, то она получает уникальный ingredient_id, по которому можно будет получить её остатки на складах.

Параметр Описание
id id сущности
num Количество в шт или кг
type Тип сущности: 1 — полуфабрикат, 2 — тех.карта

Параметры ответа storage.createManufacture

Параметр Описание
response id созданного производства

storage.updateManufacture: Изменение данных производства

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.updateManufacture?' .
  'format=json&token=687409:4164553abf6a031302898da7800b59fb';

$manufacture = [
    "manufacture_id"  => 7,
    "date"            => "2016-12-21 12:12:54",
    "storage_id"      => 1,
    "products" => [
        [
            "id"    => 64,
            "type"  => 1,
            "num"   => 3
        ],
        [
            "id"    => 65,
            "type"  => 1,
            "num"   => 25
        ],
  ]
];

$manufacture_id = sendRequest($url, 'post', $manufacture, true);

Пример ответа:

{
  "response":6
}

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

HTTP запрос

POST https://joinposter.com/api/storage.updateManufacture

POST-параметры запроса storage.updateManufacture

Параметр Описание
manufacture_id id изменяемого производства
date Дата производства
storage_id id склада
products Список тех.карт/полуфабрикатов, которые входят в производство

Содержимое параметра products

Под словом сущность подразумевается тех.карта или полуфабрикат. Когда сущность производится в первый раз, то она получает уникальный ingredient_id, по которому можно будет получить её остатки на складах.

Параметр Описание
id id сущности
num Количество (в шт/кг)
type Тип сущности: 1 — полуфабрикат, 2 — тех.карта

Параметры ответа storage.updateManufacture

Параметр Описание
response id измененного производства

storage.getMoves: Получить все перемещения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getMoves'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "moving_id":4,
      "date":"2017-11-16 21:34:00",
      "from_storage":1,
      "from_storage_name":"Склад Кухня",
      "to_storage":2,
      "to_storage_name":"Склад Бар",
      "user_id":7,
      "user_name":"Vladimir",
      "sum":150.65
    }
  ]
}

Метод возвращает все перемещения

HTTP запрос

GET https://joinposter.com/api/storage.getMoves

GET-параметры запроса storage.getMoves

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.

Параметры ответа storage.getMoves

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
moving_id id перемещения
date Дата перемещения
from_stoarge id склада с которого делали перемещение
from_storage_name Название склада с которого делали перемещение
to_storge id склада на который делали перемещение
to_storage_name Название склада на который делали перемещение
user_id id пользователя который делал перемещение
user_name Имя пользователя который делал перемещение
sum Сумма перемещения в гривнах\рублях

storage.getMove: Получить содержимое перемещения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getMove'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&move_id=2';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "moving_id":2,
      "date":"2016-10-30 12:40:00",
      "from_storage":1,
      "from_storage_name":"Склад Кухня",
      "to_storage":2,
      "to_storage_name":"Склад Бар",
      "user_id":7,
      "user_name":"Poster Root",
      "sum":59.31,
      "ingredients":[
        {
          "link_id":2,
          "ingredient_id":12,
          "product_id":142,
          "ingredient_num":10,
          "ingredient_sum":7.08,
          "type":1,
          "write_off_id":1216696,
          "packing_id":1
        },
        {
          "link_id":3,
          "ingredient_id":91,
          "ingredient_num":1,
          "ingredient_sum":52.23,
          "type":10,
          "write_off_id":1216697,
          "packing_id":2
        }
      ]
    }
  ]
}

Метод возвращает содержимое перемещения, включая ингредиенты и товары

HTTP запрос

GET https://joinposter.com/api/storage.getMove

GET-параметры запроса storage.getMove

Параметр Описание
move_id Обязательный параметр, id перемещения
timezone Опциональный параметры, если равен client то дата возвращается в часовом поясе аккаунта.

Параметры ответа storage.getMove

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
moving_id id перемещения
date Дата перемещения
from_stoarge id склада с которого делали перемещение
from_storage_name Название склада с которого делали перемещение
to_storge id склада на который делали перемещение
to_storage_name Название склада на который делали перемещение
user_id id пользователя который делал перемещение
user_name Имя пользователя который делал перемещение
sum Сумма перемещения в гривнах\рублях
ingredients Список переносимых ингредиентов

Внутри параметра ingredients лежит массив объектов, внутри каждого объекта есть следующие параметры:

Параметр Описание
ingredient_id id ингредиента
product_id id товара, если это товар, модификатор, тех-карта или полуфабрикат
modificator_id id модификатора, если это модификатор
ingredient_num Количество ингредиента
ingredient_sum Стоимость перемещенного ингредиента в гривнах\рублях
type Тип ингредиента: 1 — товар, 10 — ингредиент, 8 — модификатор товара, 2 — производимая тех-карта, 3 — производимый полуфабрикат
packing_id id фасовки

storage.createMoving: Создание перемещения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.createMoving'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$moving = [
    "moving" => [
        "date"          => "2015-11-18 22:35:54",
        "from_storage"  => "1",
        "to_storage"    => "2"
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "num"       => "3",
        ]
    ]
];

$data = sendRequest($url, 'post', $moving);

Пример ответа:

{
  "success":1,
  "response":5
}

Метод создает перемещение

HTTP запрос

POST https://joinposter.com/api/storage.createMoving

POST-параметры запроса storage.createMoving

Параметр Описание
date Дата и время списания в формате Ymd
from_storage_id id склада c которого делаем перемещение
to_storage_id id склада на который делаем перемещение
ingredient Массив объектов для перемещения

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, ингредиент — 4, модификатор товара — 5
num Количество списываемого ингредиента
reason Опциональный параметр, причина списания
packing Опциональный параметр, id фасовки

Параметры ответа storage.createMoving

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id созданного перемещения

storage.updateMoving: Изменение перемещения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.updateMoving'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$moving = [
    "moving" => [
        "moving_id"     => "16",
        "date"          => "2015-11-18 22:35:54",
        "from_storage"  => "1",
        "to_storage"    => "2"
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "num"       => "3",
        ]
    ]
];

$data = sendRequest($url, 'post', $moving);

Пример ответа:

{
  "success":1,
  "response":16
}

Метод изменяет перемещение

HTTP запрос

POST https://joinposter.com/api/storage.updateMoving

POST-параметры запроса storage.updateMoving

Параметр Описание
moving_id id перемещения которое редактируем
date Дата и время списания в формате Ymd
from_storage_id id склада c которого делаем перемещение
to_storage_id id склада на который делаем перемещение
ingredient Массив объектов для перемещения

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, ингредиент — 4, модификатор товара — 5
num Количество списываемого ингредиента
reason Опциональный параметр, причина списания
packing Опциональный параметр, id фасовки

Параметры ответа storage.updateMoving

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id обновленного перемещения

storage.deleteMoving: Удаление перемещения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.deleteMoving'
    . '?token=687409:4164553abf6a031302898da7800b59fb';

$delete = [
    'moving_id' => 7
];

$data = sendRequest($url, 'post', $delete);

Пример ответа:

{
  "success":1
}

Метод удаляет перемещение

HTTP запрос

POST https://joinposter.com/api/storage.deleteMoving

POST-параметры запроса storage.deleteMoving

Параметр Описание
moving_id id перемещения для удаления

Параметры ответа storage.deleteMoving

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет

storage.getSupplies: Получить все поставки

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getSupplies'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "supply_id":"48",
      "storage_id":"1",
      "supplier_id":"1",
      "date":"2017-11-17 08:09:33",
      "supply_sum":"1800",
      "supply_comment":"",
      "storage_name":"Склад Кухня",
      "supplier_name":"Закупщик",
      "delete":"1",
      "account_id":null
    },
    {
      "supply_id":"47",
      "storage_id":"1",
      "supplier_id":"1",
      "date":"2017-05-18 09:11:00",
      "supply_sum":"300000",
      "supply_comment":"",
      "storage_name":"Склад Кухня",
      "supplier_name":"Закупщик",
      "delete":"0",
      "account_id":null
    },
    {
      "supply_id":"46",
      "storage_id":"1",
      "supplier_id":"1",
      "date":"2017-05-18 09:07:00",
      "supply_sum":"669882890",
      "supply_comment":"",
      "storage_name":"Склад Кухня",
      "supplier_name":"Закупщик",
      "delete":"0",
      "account_id":null
    }
  ]
}

Метод возвращает все поставки

HTTP запрос

GET https://joinposter.com/api/storage.getSupplies

GET-параметры запроса storage.getSupplies

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
limit Опциональный параметр, количество поставок, которое необходимо получить. Если используется dateFrom и dateTo то этот параметр игнорируется.
offset Опциональный параметр, сколько записей необходимо пропустить от начала списка. По умолчанию, будут выданы все поставки. Если используется dateFrom и dateTo то этот параметр игнорируется.

Параметры ответа storage.getSupplies

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
supply_id id поставки
storage_id id склада на который поставляли
supplier_id id поставщика
date Дата поставки
account_id id финансового счёта с которого списали поставку
supply_sum Сумма поставки в копейках
supply_comment Комментарий
storage_name Название склада
supplier_name Имя поставщика
delete Признак удалена ли поставка: 1 — удалена, 0 — нет

storage.getSupplyIngredients: Получить ингредиенты в поставке

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getSupplyIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&supply_id=46';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "ingredient_id":"66",
      "supply_ingredient_num":"3.00000",
      "supply_ingredient_sum":"15000",
      "ingredient_name":"Шен Да Бай Ча-Дзень Гу",
      "ingredient_unit":"kg",
      "tax_id": 0
    },
    {
      "ingredient_id":"68",
      "supply_ingredient_num":"2.50000",
      "supply_ingredient_sum":"17500",
      "ingredient_name":"Шен Мен Ку",
      "ingredient_unit":"kg",
      "tax_id": 0
    },
    {
      "ingredient_id":"67",
      "supply_ingredient_num":"130000.00000",
      "supply_ingredient_sum":"650000000",
      "ingredient_name":"Шен с горы У Лянь Шань-Дзень Гу",
      "ingredient_unit":"kg",
      "tax_id": 0
    },
    {
      "ingredient_id":"69",
      "supply_ingredient_num":"1400.00000",
      "supply_ingredient_sum":"16100000",
      "ingredient_name":"Шу Пуэр 20 лет",
      "ingredient_unit":"p",
      "tax_id": 0
    },
    {
      "ingredient_id":"76",
      "supply_ingredient_num":"30.00000",
      "supply_ingredient_sum":"390",
      "ingredient_name":"Яйца куринные",
      "ingredient_unit":"p",
      "tax_id": 0
    }
  ]
}

Метод возвращает ингредиенты в поставке

HTTP запрос

GET https://joinposter.com/api/storage.getSupplyIngredients

GET-параметры запроса storage.getSupplyIngredients

Параметр Описание
supply_id Обязательный параметр, id поставки

Параметры ответа storage.getSupplyIngredients

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
ingredient_id id ингредиента
supply_ingredient_num Количество ингредиента
supply_ingredient_sum Общая сумма поставки по ингредиенту в копейках
ingredient_name Название ингредиента
ingredient_unit Единица измерения: kg — кг, p — шт, l — л
tax_id Id налога

storage.createSupply: Создание поставки

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.createSupply'
    . '?token=687409:4164553abf6a031302898da7800b59fb';

$supply = [
    "supply" => [
        "date"          => date("Y-m-d H:i:s"),
        "supplier_id"   => "1",
        "storage_id"    => "1",
        "packing"       => "1"
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "num"       => "3",
            "sum"       => "6",
        ]
    ]
];

$data = sendRequest($url, 'post', $supply);

Пример ответа:

{
  "success":1,
  "response":7
}

Метод создает поставку

HTTP запрос

POST https://joinposter.com/api/storage.createSupply

POST-параметры запроса storage.createSupply

Объект supply содержит следующие параметры

Параметр Описание
date Дата поставки в формате Y-m-d H:i:s
supplier_id id поставщика
storage_id id склада на который делаем поставку
account_id Опциональный параметр, id счета в бухгалтерии к которому привязываем поставку
ingredient Массив объектов для поставки

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, ингредиент — 4, модификатор товара — 5
num Количество поставляемого ингредиента
sum Цена за единицу в гривнах\рублях
packing Опциональный параметр, id фасовки

Параметры ответа storage.createSupply

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id созданной поставки

storage.updateSupply: Изменение поставки

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.updateSupply'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$supply = [
    "supply" => [
        "supply_id"     => "51",
        "supplier_id"   => "1",
        "storage_id"    => "1",
        "date"          => date("Y-m-d H:i:s"),
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "num"       => "3",
            "sum"       => "6",
        ]
    ]
];

$data = sendRequest($url, 'post', $supply);

Пример ответа:

{
  "success":1,
  "response":"51"
}

Метод изменяет поставку

HTTP запрос

POST https://joinposter.com/api/storage.updateSupply

POST-параметры запроса storage.updateSupply

Параметр Описание
supply_id id поставки которую редактируем
date Дата поставки в формате Y-m-d H:i:s
supplier_id id поставщика
storage_id Обязательный параметр, id склада на который делаем поставку
account_id Опциональный параметр, id счета в бухгалтерии к которому привязываем поставку
ingredient Массив объектов для поставки

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, ингредиент — 4, модификатор товара — 5
num Количество списываемого ингредиента
sum Цена за единицу в гривнах\рублях
packing Опциональный параметр, id фасовки

Параметры ответа storage.updateSupply

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id обновленной поставки

storage.deleteSupply: Удаление поставки

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.deleteSupply'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$delete = [
    'supply_id' => 7
];

$data = sendRequest($url, 'post', $delete);

Пример ответа:

{
  "success":1
}

Метод удаляет поставку

HTTP запрос

POST https://joinposter.com/api/storage.deleteSupply

POST-параметры запроса storage.deleteSupply

Параметр Описание
supply_id id поставки для удаления

Параметры ответа storage.deleteSupply

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет

storage.getSuppliers: Получить всех поставщиков

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getSuppliers'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "supplier_id":"1",
      "supplier_name":"Закупщик",
      "supplier_phone":"+7 499 555 55 55",
      "supplier_adress":"",
      "supplier_comment":"",
      "supplier_code":"",
      "supplier_tin":"",
      "delete":"0"
    },
    {
      "supplier_id":"2",
      "supplier_name":"Напитков Иван",
      "supplier_phone":"0956734678",
      "supplier_adress":"ул. Лесная 3",
      "supplier_comment":"",
      "supplier_code":"",
      "supplier_tin":"",
      "delete":"0"
    },
    {
      "supplier_id":"3",
      "supplier_name":"Овощной Иван",
      "supplier_phone":"0987658943",
      "supplier_adress":"ул. Байкальская",
      "supplier_comment":"",
      "supplier_code":"",
      "supplier_tin":"",
      "delete":"0"
    }
  ]
}

Метод возвращает всех поставщиков

HTTP запрос

GET https://joinposter.com/api/storage.getSuppliers

GET-параметры запроса storage.getSuppliers

Параметр Описание
id_1c Опциональный параметр, true если возвращать id_1

Параметры ответа storage.getSuppliers

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
supplier_id id поставщика
supplier_name Имя поставщика
supplier_phone Номер поставщика
supplier_adress Адрес поставщика
supplier_comment Комментарий
supplier_code Уникальный идентификационный номер юридического лица
supplier_tin ИНН поставщика
delete Признак удален ли поставщик: 1 — удален, 0 — нет

storage.createSupplier: Создание поставщика

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.createSupplier'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$supplier = [
    'supplier_name'    => 'Валера',
    'supplier_adress'  => 'пр. Петровского',
    'supplier_phone'   => 380671234567,
    'supplier_code'    => 32855961,
    'supplier_tin'     => 6449013711,
    'supplier_comment' => 'Мясо',
];

$data = sendRequest($url, 'post', $supplier);

Пример ответа:

{  
  "response":6
}

Метод создаёт поставщика

HTTP POST запрос

https://joinposter.com/api/storage.createSupplier

POST-параметры запроса storage.createSupplier

Параметр Описание
supplier_name Имя поставщика
supplier_adress Адрес
supplier_phone Телефон
supplier_code ЕГРПОУ
supplier_tin ИНН
supplier_comment Комментарий

Параметры ответа storage.createSupplier

Параметр Описание
response Id созданного поставщика

storage.getIngredientWriteOff: Получить не ручные списания

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getIngredientWriteOff'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "write_off_id":"1518217",
      "transaction_id":"388684",
      "tr_product_id":"2125179",
      "storage_id":"1",
      "to_storage":"0",
      "ingredient_id":"936",
      "product_id":"934",
      "modificator_id":"0",
      "prepack_id":"0",
      "weight":"1.00000",
      "unit":"p",
      "cost":"0",
      "user_id":"1",
      "type":"1",
      "time":"1510668937861",
      "date":"2017-11-14 17:15:38",
      "reason":"",
      "product_name":"Fiscal Test",
      "name":"Demo"
    }
  ]
}

Метод возвращает не ручные списания

HTTP запрос

GET https://joinposter.com/api/storage.getIngredientWriteOff

GET-параметры запроса storage.getIngredientWriteOff

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
storage_id Опциональный параметр, id склада по которому возвращать списания. По умолчанию по всем складам.
ingredient_id Опциональный параметр, id ингредиента по которому возвращать списания. По умолчанию по всем ингредиентам.

Параметры ответа storage.getIngredientWriteOff

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
write_off_id id списания
transaction_id Номер транзакции
storage_id id склада откуда произошло списание
to_storage id склада для перемещения
ingredient_id id ингредиента
product_id id товара
modificator_id id модификатора, 0 если без модификатора
prepack_id id полуфабриката
weight Количество ингредиента
unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры
cost Общая сумма списания по этому инргедиенту в копейках. Если вам нужно узнать себестоимость, разделите cost на weight.
user_id id официанта
type Тип действия: 4 — перемещение, 1 — списание, 2 — ручное списание
time Дата списания в формате unixtimestamp
date Дата списания
product_name Название товара
name Имя официанта

storage.createWriteOff: Создание списания

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.createWriteOff'
    . '?token=687409:4164553abf6a031302898da7800b59fb';

$writeOff = [
    "write_off" => [
        "storage_id"    => "1",
        "date"          => date("Y-m-d H:i:s"),
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "weight"    => "3",
        ]
    ]
];

$data = sendRequest($url, 'post', $writeOff);

Пример ответа:

{
  "success":1,
  "response":6
}

Метод создает списание

HTTP запрос

POST https://joinposter.com/api/storage.createWriteOff

POST-параметры запроса storage.createWriteOff

Параметр Описание
date Дата поставки в формате Y-m-d H:i:s
storage_id id склада с которого делаем списание
ingredient Массив объектов для списания
reason_id Опциональный параметр, id причины списания

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, тех.карта — 2, полуфабрикат — 3, ингредиент — 4, модификатор товара — 5
weight Количество списываемого ингредиента
packing Опциональный параметр, id фасовки
reason Опциональный параметр, комментарий к списаному товару

Параметры ответа storage.createWriteOff

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id созданного списания

storage.updateWriteOff: Изменение списания

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.updateWriteOff'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$writeOff = [
    "write_off" => [
        "id"  => "56",
        "storage_id"    => "1",
        "date"          => date("Y-m-d H:i:s"),
    ],
    "ingredient" => [
        [
            "id"        => "138",
            "type"      => "1",
            "weight"    => "3",
        ]
    ]
];

$data = sendRequest($url, 'post', $writeOff);

Пример ответа:

{
  "success":1,
  "response":56
}

Метод измененяет списание

HTTP запрос

POST https://joinposter.com/api/storage.updateWriteOff

POST-параметры запроса storage.updateWriteOff

Параметр Описание
id id списания которое редактируем
date Дата поставки в формате Y-m-d H:i:s. Дата должна находиться в инвентаризационном периоде в котором произвели списание.
storage_id id склада с которого делаем списание
ingredient Массив объектов для списания
reason Опциональный параметр, комментарий к отдельному товару
reason_id Опциональный параметр, id причины списания

Каждый объект массива ingredient содержит следующие параметры

Параметр Описание
id id ингредиента, товара или модификатора товара
type Тип списываемого объекта: товар — 1, тех.карта — 2, полуфабрикат — 3, ингредиент — 4, модификатор товара — 5
weight Количество списываемого ингредиента
packing Опциональный параметр, id фасовки
reason Опциональный параметр, комментарий к списаному товару

Параметры ответа storage.updateWriteOff

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет
response id обновленного списания

storage.deleteWriteOff: Удаление списания

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.deleteWriteOff'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$delete = [
    'write_off_id' => 60
];

$data = sendRequest($url, 'post', $delete);

Пример ответа:

{
  "success":1
}

Метод удаляет списание

HTTP запрос

POST https://joinposter.com/api/storage.deleteWriteOff

POST-параметры запроса storage.deleteWriteOff

Параметр Описание
write_off_id id списания для удаления

Параметры ответа storage.deleteWriteOff

Параметр Описание
success Статус выполнения операции: 1 — успешно, 0 — нет

storage.getPacks: Список фасовок

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.getPacks' 
  . '?format=json'
  . '&token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "pack_id":"1",
      "name":"",
      "unit":"p",
      "count":"0.0000",
      "type":"0"
    },
    {
      "pack_id":"2",
      "name":"",
      "unit":"l",
      "count":"0.0000",
      "type":"0"
    },
    {
      "pack_id":"3",
      "name":"",
      "unit":"kg",
      "count":"0.0000",
      "type":"0"
    },
    {
      "pack_id":"5",
      "name":"Пак молока",
      "unit":"p",
      "count":"20.0000",
      "type":"1"
    },
    {
      "pack_id":"6",
      "name":"Вода очищенная",
      "unit":"l",
      "count":"20.0000",
      "type":"1"
    }
  ]
}

Запрос на получение списка всех фасовок.

HTTP запрос

GET https://joinposter.com/api/storage.getPacks

Параметры ответа storage.getPacks

Параметр Описание
pack_id id фасовки
name Название фасовки
unit Единица измерения: kg — кг, p — шт, l — л
count Количество в шт, кг или литрах
type Тип фасовки: 0 — базовый, 1 — пользовательский

storage.getPack: Получить фасовку

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getPack' 
  . '?format=json'
  . '&token=687409:4164553abf6a031302898da7800b59fb'
  . '&pack_id=4';

$data = sendRequest($url);

Пример ответа:

{
  "response":{
    "pack_id":"5",
    "name":"Пак молока",
    "unit":"p",
    "count":"20.0000",
    "type":"1"
  }
}

Метод возвращает данные конкретной фасовки.

HTTP запрос

GET https://joinposter.com/api/storage.getPack

GET-параметры запроса storage.getPack

Параметр Описание
pack_id Id фасовки, для которой необходимо вернуть детальные данные

Параметры ответа storage.getPack

Параметр Описание
pack_id id фасовки
name Название фасовки
unit Единица измерения: kg — кг, p — шт, l — л
count Количество в шт, кг или литрах
type Тип фасовки: 0 — базовый, 1 — пользовательский

storage.getWastes: Список ручных списаний

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.getWastes'
  . '?token=687409:4164553abf6a031302898da7800b59fb'
  . '&dateFrom=20170101'
  . '&dateTo=20180101'
  . '&1c=true';

$data = sendRequest($url);

Пример ответа:

{
  "response": [
    {
      "waste_id": 1,
      "total_sum": 2800,
      "user_id": 1,
      "storage_id": 1,
      "date": "2017-04-26 14:30:02",
      "reason_id": 0,
      "reason_name": null,
      "delete": 0
    },
    {
      "waste_id": 2,
      "total_sum": 791,
      "user_id": 1,
      "storage_id": 1,
      "date": "2017-04-26 15:21:12",
      "reason_id": 1,
      "reason_name": "Истек срок годности",
      "delete": 1
    }
  ]
}

Запрос на получение списка всех ручных списаний.

HTTP запрос

GET https://joinposter.com/api/storage.getWastes

GET-параметры запроса storage.getWastes

Параметр Описание
dateFrom Опциональный параметр. Дата начала выборки (Ymd). По умолчанию дата месяц назад.
dateTo Опциональный параметр. Дата конца выборки (Ymd). По умолчанию дата текущего дня.
1с_id Опциональный параметр. Позволяет возвращать ручные списания с учётом удалённых (вернёт флаг delete). В качестве значения необходимо указать true.

Параметры ответа storage.getWastes

Параметр Описание
waste_id id ручного списания
total_sum Общая сумма списания
user_id id пользователя, который произвёл списание
storage_id id склада с которого было произведено списание
date Дата списания
reason_id id причины списания
reason_name Причина списания
delete Признак что списание удалено: 1 — удалено, 0 — нет

storage.getWaste: Данные ручного списания

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getWaste'
  . '?token=687409:4164553abf6a031302898da7800b59fb'
  . '&waste_id=1';

$data = sendRequest($url);

Пример ответа:

{
  "response": {
    "waste_id": 1,
    "total_sum": 2800,
    "user_id": 1,
    "storage_id": 1,
    "date": "2017-04-26 14:30:02",
    "reason_id": 1,
    "reason_name": "Истек срок годности",
    "elements": [
      {
        "type": 8,
        "product_id": 8,
        "modificator_id": 2,
        "count": 1,
        "ingredients": [
          {
            "write_off_id": 118,
            "ingredient_id": 21,
            "product_id": 8,
            "modificator_id": 2,
            "prepack_id": 0,
            "weight": 1,
            "unit": "p",
            "cost": 800
          }
        ]
      },
      {
        "type": 3,
        "product_id": 4,
        "count": 1,
        "ingredients": [
          {
            "write_off_id": 121,
            "ingredient_id": 16,
            "product_id": 4,
            "modificator_id": 0,
            "prepack_id": 0,
            "weight": 1,
            "unit": "kg",
            "cost": 500
          },
          {
            "write_off_id": 122,
            "ingredient_id": 15,
            "product_id": 4,
            "modificator_id": 0,
            "prepack_id": 0,
            "weight": 1,
            "unit": "kg",
            "cost": 1500
          }
        ]
      }
    ]
  }
}

Метод возвращает детальные данные конкретного ручного списания

HTTP запрос

GET https://joinposter.com/api/storage.getWaste

GET-параметры запроса storage.getWaste

Параметр Описание
waste_id id ручного списания для которого необходимо вернуть детальные данные

Параметры ответа storage.getWaste

Параметр Описание
waste_id id ручного списания
total_sum Общая сумма списания
user_id id пользователя, который произвёл списание
storage_id id склада с которого было произведено списание
date Дата списания
reason_id id причины списания
reason_name Причина списания
elements Список списанных сущностей.

У каждого элемента внутри elements следующие параметры:

Параметр Описание
type Тип списанной сущности: 1 — товар, 2 — тех. карта, 3 — полуфабрикат, 8 — модификатор, 10 — ингредиент
product_id id товара
modificator_id id модификатора
count Количество списанных конкретных сущностей
ingredients Массив из ингредиентов списания

У каждого элемента внутри ingredients следующие параметры:

Параметр Описание
ingredient_id id ингредиента
write_off_id id конкретного списания
prepack_id id фасовки
product_id id товара
weight Количество списания в килограммах, литрах или единицах
unit unit
cost Общая сумма списания по этому инргедиенту в копейках. Если вам нужно узнать себестоимость, разделите cost на weight.

storage.getWasteReasons: Список причин списания

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.getWasteReasons'
  . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "reason_id":1,
         "name":"Истек срок годности"
      }
   ]
}

Метод возвращает список всех причин списания

HTTP GET запрос

GET https://joinposter.com/api/storage.getWasteReasons

Параметры ответа storage.getWasteReasons

Параметр Описание
reason_id id причины списания
name Причина списания

storage.getInventoryIngredients: Получить инвентаризацию по ингредиентам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getInventoryIngredients'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&storage_id=1';

$data = sendRequest($url);

Пример ответа:

{
  "response":{
    "ingredients":{
      "115":{
        "item_id":"11",
        "item":"Яблочный",
        "startrest":655,
        "startrestcurrency":8508.45,
        "income":0,
        "charges":1563,
        "writeoff":0,
        "writeoffcurrency":0,
        "estimatedrest":-908,
        "primecost":12.99,
        "factrest":"''",
        "fact_rest_in_prepack":"''",
        "fact_rest_sum":"''",
        "difference":"''",
        "diffcurrency":"''",
        "partial_write_off":"0",
        "unit":"pcs",
        "db_unit":"p"
      },
      "116":{
        "item_id":"76",
        "item":"Яйца куринные (ing)",
        "startrest":21,
        "startrestcurrency":36.54,
        "income":0,
        "charges":1699,
        "writeoff":0,
        "writeoffcurrency":0,
        "estimatedrest":-1678,
        "primecost":1.74,
        "factrest":"''",
        "fact_rest_in_prepack":"''",
        "fact_rest_sum":"''",
        "difference":"''",
        "diffcurrency":"''",
        "partial_write_off":"0",
        "unit":"pcs",
        "db_unit":"p"
      }
    },
    "manufactures":[

    ],
    "prepacks":{      
      "930":{
        "product_id":"930",
        "product_name":"Кальян с сюрпризом",
        "type":"2",
        "weight_flag":"0",
        "delete":"0",
        "factrest":0,
        "count":0,
        "cost":0,
        "saved":0
      },
      "931":{
        "product_id":"931",
        "product_name":"Маринованные грибы",
        "type":"1",
        "weight_flag":"0",
        "delete":"0",
        "factrest":0,
        "count":0,
        "cost":0,
        "saved":0
      }
    }
  }
}

Метод возвращает инвентаризацию по ингредиентам

HTTP запрос

GET https://joinposter.com/api/storage.getInventoryIngredients

GET-параметры запроса storage.getInventoryIngredients

Параметр Описание
storage_id id склада, если inventory_id не указан то обязательный параметр
inventory_id id инвентаризации, если storage_id не указан то обязательный параметр

Параметры ответа storage.getInventoryIngredients

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
ingredients Массив ингредиентов
manufactures Массив производств
prepacks Массив тех. карт, и полуфабрикатов

Массив ingredients содержит объекты со следующими параметрами:

Параметр Описание
item_id id ингредиента
item Название ингредиента
startrest Начальный остаток
startrestcurrency Начальный остаток в гривнах\рублях
income Количество приходов на склад по данному ингредиенту, учитывая поставки и перемещения
charset Количество расходов по данному ингредиенту, учитывая списания, производства, продажи и перемещения
writeoff Списанное количество
writeoffcurrency Списано в гривнах\рублях
estimatedrest Плановый остаток
primecost Себестоимость в гривнах\рублях
factrest Фактический остаток
fact_rest_in_prepack Фактический остаток в блюдах и полуфабрикатах
fact_rest_in_sum Сумма фактических остатков
difference Разница в кол-ве между плановым и фактическим остатком
diffcurrency Разница в гривнах\рублях. difference * primecost
partial_write_off Признак что штучный ингредиент можно списывать как дробный: 1 — можно списывать, 0 — нет
unit Единица измерения (шт/кг/л)
db_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры

Массив manufactures содержит объекты со следующими параметрами:

Параметр Описание
item_id id производства
item Название производства
startrest Начальный остаток в кол-ве
startrestcurrency Начальный остаток в гривнах\рублях
income Количество приходов на склад по данному ингредиенту, учитывая поставки и перемещения
charset Количество расходов по данному ингредиенту, учитывая списания, производства, продажи и перемещения
writeoff Списанное количество
writeoffcurrency Сумма списания в гривнах\рублях
estimatedrest Плановый остаток
primecost Себестоимость в гривнах\рублях
factrest Фактический остаток
fact_rest_in_prepack Фактический остаток в блюдах и полуфабрикатах
fact_rest_in_sum Сумма в гривнах\рублях фактических остатков. Разница между фактическим и плановым остатком умноженная на себестоимость.
difference Разница в кол-ве между плановым и фактическим остатком
diffcurrency Разница в гривнах\рублях. difference * primecost
unit Единица измерения (шт/кг/л)
db_unit Единица измерения ингредиента: kg — килограммы, p — штуки, l — литры

Массив prepacks содержит объекты со следующими параметрами:

Параметр Описание
product_id id тех. карты или полуфабриката
product_name Название тех. карты или полуфабриката
count Количество списанное в шт или кг
type Тип товара: 1 — полуфабрикат, 2 — тех. карта
cost Сумма списаний в гривнах\рублях
weight_flag Признак весовой тех. карты: 1 — весовая, 0 — нет
factrest Фактический остаток

storage.getStorageInventories: Получить архив инвентаризаций по складам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getStorageInventories'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&storage_id=1';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "inventory_id":"3",
      "storage_id":"1",
      "date_start":"2015-08-12 19:07:08",
      "date_end":"2017-05-18 09:10:31",
      "date_set":"0000-00-00 00:00:00",
      "date_inventory":"2017-05-18 09:10:31",
      "sum":"871875648398",
      "inventory_status":"1"
    },
    {
      "inventory_id":"2",
      "storage_id":"1",
      "date_start":"2015-02-05 13:10:26",
      "date_end":"2015-08-12 19:07:08",
      "date_set":"0000-00-00 00:00:00",
      "date_inventory":"0000-00-00 00:00:00",
      "sum":"104384",
      "inventory_status":"1"
    },
    {
      "inventory_id":"1",
      "storage_id":"1",
      "date_start":"2013-08-09 16:30:13",
      "date_end":"2015-02-05 13:10:26",
      "date_set":"0000-00-00 00:00:00",
      "date_inventory":"0000-00-00 00:00:00",
      "sum":"-21236",
      "inventory_status":"1"
    }
  ]
}

Метод возвращает архив инвентаризаций по складам

HTTP запрос

GET https://joinposter.com/api/storage.getStorageInventories

GET-параметры запроса storage.getStorageInventories

Параметр Описание
storage_id Обязательный параметр, id склада по которому возвращать инвентаризации

Параметры ответа storage.getStorageInventories

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
inventory_id id инвентаризации
storage_id id склада
data_start Дата начала инвентаризации
data_end Дата окончания инвентаризации
date_set Дата проведения задним числом. Если инвентаризацию проводили задним числом то соответсвует date_end.
data_inventory Реальная дата проведения инвентаризации
sum Общая сума себестоимостей товаров инвентаризации в копейках
inventory_status Статус инвентаризации: 1 — проведенная, 0 — не проведенная

storage.getStorageLeftovers: Получить все остатки на складах

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getStorageLeftovers'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "ingredient_id":"39",
      "ingredient_name":"Яблоки",
      "ingredient_left":"3143.00000",
      "limit_value":"0",
      "ingredient_unit":"p",
      "ingredients_type":"2",
      "storage_ingredient_sum":"4591923",
      "prime_cost":1461,
      "hidden":"0"
    },
    {
      "ingredient_id":"11",
      "ingredient_name":"Яблочный",
      "ingredient_left":"-908.00000",
      "limit_value":"0",
      "ingredient_unit":"p",
      "ingredients_type":"2",
      "storage_ingredient_sum":"0",
      "prime_cost":1299,
      "hidden":"0"
    },
    {
      "ingredient_id":"76",
      "ingredient_name":"Яйца куринные",
      "ingredient_left":"-1678.00000",
      "limit_value":"0",
      "ingredient_unit":"p",
      "ingredients_type":"1",
      "storage_ingredient_sum":"0",
      "prime_cost":174,
      "hidden":"0"
    }
  ]
}

Метод возвращает остатки по складам

HTTP запрос

GET https://joinposter.com/api/storage.getStorageLeftovers

GET-параметры запроса storage.getStorageLeftovers

Параметр Описание
storage_id Опциональный параметр, id склада по которому возвращать остатки. Если не указан, будут выданы по все складам.
type Опциональный параметр, тип сущности по которой возвращать остатки: 1 — товар, 2 — производимая тех-карта, 3 — производимый полуфабрикат, ингредиент — 4, модификатор товара — 5. Если не указан, будут выданы по все сущностям.
category_id Опциональный параметр, id категории по которой получать ингредиенты. По умолчанию по всем категориям.
zero_leftovers Опциональный параметр, если true, метод возвращает нулевые остатки. По умолчанию, не возвращаются.

Параметры ответа storage.getStorageLeftovers

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
ingredient_id id ингредиента
ingredient_name Название ингредиента
ingredient_left Общий остаток по всем складам
limit_value Лимит на складе после привышения которого присылается оповещение
ingredient_unit Единица измерения: kg — кг, p — шт, l — л
ingredients_type Тип объекта: ингредиент — 1, 2 — товар, модификатор товара
storage_ingredient_sum Общая сумма товара на складе в копейках
prime_cost Себестоимость ингредиента в копейках
hidden Признак скрыт ли ингредиент: 1 — скрыт, 0 — нет

storage.getStorages: Получить все склады

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getStorages'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "storage_id":"1",
      "storage_name":"Склад Кухня",
      "storage_adress":"",
      "delete":"0"
    },
    {
      "storage_id":"2",
      "storage_name":"Склад Бар",
      "storage_adress":"",
      "delete":"0"
    }
  ]
}

Метод возвращает все склады

HTTP запрос

GET https://joinposter.com/api/storage.getStorages

Параметры ответа storage.getStorages

Параметр Описание
response Объект ответа

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
storage_id id склада
storage_name Название склада
storage_adress Адрес склада
delete Признак удален ли склад: 1 — удален, 0 — нет

storage.getStorage: Свойства склада

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.getStorage'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&storage_id=1';

$data = sendRequest($url);

Пример ответа:

{  
   "response":{
      "storage_id":"1",
      "storage_name":"Склад Кухня",
      "storage_adress":"",
      "delete":"0"
   }
}

Метод возвращает свойства склада

HTTP GET запрос

GET https://joinposter.com/api/storage.getStorage

GET-параметры запроса storage.getStorage

Параметр Описание
storage_id Обязательный параметр, обозначает id склада

Параметры ответа storage.getStorage

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, в котором есть следующие параметры:

Параметр Описание
storage_id Id склада
storage_name Название склада
storage_adress Адрес склада
delete Признак удален ли склад: 1 — удален, 0 — нет

storage.getReportMovement: Отчет по движению

Пример запроса:

<?
$url = 'https://joinposter.com/api/storage.getReportMovement'
  . '?token=687409:4164553abf6a031302898da7800b59fb'
  . '&dateFrom=20170101'
  . '&dateTo=20180101'
  . '&storage_id=1'
  . '&type=2';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "ingredient_id":"332",
         "ingredient_name":"Borjome",
         "cost_start":13.63,
         "cost_end":13.63,
         "start":14,
         "income":0,
         "write_offs":0,
         "end":14
      },
      {
         "ingredient_id":"260",
         "ingredient_name":"Sprite",
         "cost_start":8.39,
         "cost_end":8.39,
         "start":2,
         "income":0,
         "write_offs":0,
         "end":2
      }
   ]
}

Запрос на получение отчета по движению ингредиентов

HTTP запрос

GET https://joinposter.com/api/storage.getReportMovement

GET-параметры запроса storage.getReportMovement

Параметр Описание
dateFrom Опциональный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
storage_id Опциональный параметр, обозначает id склада
type Опциональный параметр, тип ингредиентов, по которым нужно получить ответ: 1 — ингредиенты, 2 — товары, 3 — модификации товаров, 4 - тех. карты, 5 - полуфабрикаты.

Параметры ответа storage.getReportMovement

Параметр Описание
ingredient_id Id ингредиента
ingredient_name Название ингредиента
cost_start Средняя себестоимость ингредиента на дату начала выборки в рублях\гривнах
cost_end Средняя себестоимость ингредиета на дату окончания выборки в рублях\гривних
start Остаток ингредиента на дату начала выборки
income Поступления ингредиента
write_offs Расход ингредиента
end Остаток ингредиента на дату конца выборки

storage.createStorage: Создать склад

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.createStorage'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$storage = [
    "storage_name"    => "Склад3 Кухня",
    "storage_adress"  => "Klenova 3"
];

$data = sendRequest($url, 'post', $storage);

Пример ответа:

{  
   "response":6
}

Метод создает склад

HTTP POST запрос

GET https://joinposter.com/api/storage.createStorage

POST-параметры запроса storage.createStorage

Параметр Описание
storage_name Название склада
storage_adress Адрес склада

Параметры ответа storage.createStorage

Параметр Описание
response Id созданного склада

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

Пример запроса:

<?php
$url = 'https://joinposter.com/api/storage.updateStorage'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$storage = [
    "storage_id"      => 7,
    "storage_name"    => "Склад9 Кухня",
    "storage_adress"  => "Klenova 8"
];

$data = sendRequest($url, 'post', $storage);

Пример ответа:

{  
   "response":7
}

Метод изменяет склад

HTTP запрос

GET https://joinposter.com/api/storage.updateStorage

POST-параметры запроса storage.updateStorage

Параметр Описание
storage_id Id склада
storage_name Название склада
storage_adress Адрес склада

Параметры ответа storage.updateStorage

Параметр Описание
response Id обновленного склада

clients: Маркетинг

Методы для работы с разделом маркетинга. Все методы данного раздела начинаются с «clients».

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

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getClients'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&num=100'
 . '&offset=0';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "client_id":"55",
      "firstname":"",
      "lastname":"Антон",
      "patronymic":"",
      "discount_per":"0",
      "bonus":"10000",
      "total_payed_sum":"0",
      "date_activale":"2017-10-09 15:28:14",
      "phone":"+7 963 031-38-44",
      "phone_number":"79630313844",
      "email":"bezmuki@gmail.com",
      "birthday":"0000-00-00",
      "card_number":"0",
      "client_sex":"0",
      "country":"0",
      "city":"0",
      "comment":"0",
      "address":"0",
      "client_groups_id":"3",
      "client_groups_name":"Накопительная скидка",
      "client_groups_discount":"0",
      "loyalty_type":"1",
      "birthday_bonus":"0",
      "delete":"0"
    },
    {  
      "client_id":"54",
      "firstname":"",
      "lastname":"Вася",
      "patronymic":"",
      "discount_per":"0",
      "bonus":"10000",
      "total_payed_sum":"0",
      "date_activale":"2017-10-09 11:39:59",
      "phone":"+7 977 345-34-45",
      "phone_number":"79773453445",
      "email":"sdfs@ffy.hu",
      "birthday":"0000-00-00",
      "card_number":"0",
      "client_sex":"0",
      "country":"0",
      "city":"0",
      "comment":"0",
      "address":"0",
      "client_groups_id":"2",
      "client_groups_name":"Скидка Выходной",
      "client_groups_discount":"15",
      "loyalty_type":"1",
      "birthday_bonus":"0",
      "delete":"0"
    }
  ]
}

Метод возвращает список клиентов

HTTP запрос

GET https://joinposter.com/api/clients.getClients

GET-параметры запроса clients.getClients

Параметр Описание
num Количество клиентов, которое необходимо получить. По умолчанию не передаётся.
offset Количество клиентов, которое необходимо пропустить от начала. По умолчанию не передаётся.
group_id Id группы клиентов. По умолчанию не передаётся.
phone Номер телефона клиента в международном формате. По умолчанию не передаётся.
birthday Дата дня рождения клиентов, формат “md”. По умолчанию не передаётся.
client_id_only Опциональный параметр, позволяет возвращать только client_id клиентов. В качестве значения необходимо указать true.
1c Позволяет вернуть в ответе id клиента в системе 1С. В качестве значения необходимо передать true. По умолчанию не передаётся.
order_by Поле, по которому происходит сортировка. По умолчанию принимает client_id.
sort Порядок сортировки: asc — по возрастанию, desc — по убыванию. По умолчанию принимает desc.

Параметры ответа clients.getClients

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
client_id Id клиента
firstname Имя клиента
lastname Фамилия клиента
patronymic Отчество клиента
discount_per Персональный процент скидки или бонусов. Будет использоваться, если больше, чем процент группы клиента.
bonus Текущий размер накопленных бонусов клиента в копейках
total_payed_sum Общая сумма покупок в копейках
date_activale Дата создания клиента
phone Телефон клиента
phone_number Телефон клиента в формате цифр
email Адрес электронной почты клиента
birthday Дата рождения клиента
card_number Номер карты
client_sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
country Страна клиента
city Город клиента
address Адрес клиента
comment Комментарий к учетной записи клиента
id_1c Id клиента в системе 1С
client_groups_id Id группы клиента
client_groups_name Название группы клиента
loyalty_type Тип группы клиента: 1 — бонусная, 2 — скидочная
client_groups_discount Процент группы. Если группа бонусная — 1, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная — 1, то будет давать процент скидки на сумму заказа.
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.

clients.getClient: Свойства клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getClient'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&client_id=6';

$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "client_id":"38",
      "firstname":"Попова",
      "lastname":"000022",
      "patronymic":"Елена",
      "discount_per":"0",
      "bonus":"0",
      "total_payed_sum":"417000",
      "date_activale":"2016-04-23 05:14:26",
      "phone":"+380 50 11-11-111",
      "phone_number":"380501111111",
      "email":"contact@joinposter.com",
      "birthday":"1986-11-23",
      "card_number":"0000000000222",
      "client_sex":"0",
      "country":"",
      "city":"",
      "comment":"",
      "address":"",
      "client_groups_id":"7",
      "client_groups_name":"Постоянный клиент",
      "client_groups_discount":"0",
      "loyalty_type":"2",
      "birthday_bonus":"0",
      "accumulation_products":{
        "4":{
          "promotion_id":"4",
          "products":[
            {
              "count":"3",
              "sum":540,
              "product_id":"24",
              "modification_id":"0"
            }
          ]
        }
      },
      "prize_products":[
        {
          "prize_product_id":"301",
          "promotion_id":"4",
          "conditions":{
            "bonus_products":[
              {
                "type":"1",
                "id":"1"
              }
            ],
            "bonus_products_pcs":1,
            "bonus_products_g":0,
            "bonus_products_condition_type":"1",
            "bonus_products_condition_value":"100"
          },
          "date_accrual":"2016-05-11 11:40:10"
        }
      ]
    }
  ]
}

Метод возвращает свойства клиента

HTTP запрос

GET https://joinposter.com/api/clients.getClient

GET-параметры запроса clients.getClient

Параметр Описание
client_id Id клиента
1c Позволяет вернуть в ответе id клиента в системе 1С. В качестве значения необходимо передать true. По умолчанию не передаётся.

Параметры ответа clients.getClient

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив с одним объектом, в каждом элементе которого есть следующие параметры:

Параметр Описание
client_id Id клиента
firstname Имя клиента
lastname Фамилия клиента
patronymic Отчество клиента
discount_per Персональный процент скидки или бонусов. Будет использоваться, если будет больше, чем процент группы клиента.
bonus Текущий размер накопленных бонусов клиента в копейках
total_payed_sum Общая сумма покупок в копейках
date_activale Дата создания клиента
phone Телефон клиента
phone_number Телефон клиента в формате цифр
email Адрес электронной почты клиента
birthday Дата рождения клиента
card_number Номер карты
client_sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
country Страна клиента
city Город клиента
address Адрес клиента
comment Комментарий к учетной записи клиента
id_1c Id клиента в системе 1С
client_groups_id Id группы клиента
client_groups_name Название группы клиента
loyalty_type Тип группы клиента: 1 — бонусная, 2 — скидочная
client_groups_discount Процент группы. Если группа бонусная — 1, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная — 2, то будет давать процент скидки на сумму заказа.
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.
accumulation_products Список продаж, что относятся к акциям с накоплением. Например, акция «5+1», где учитываются покупки в разных чеках.
prize_products Список отложенных бонусов, что относятся к призовым акциям. Например, акция «Купи пиццу и получи завтра еще одну на 10% дешевле», то есть призы, которые выдаются не сразу, а откладываются на следующую покупку.

Параметр accumulation_products содержит объект:

Параметр Описание
promotion_id Id акции с накоплением, за которой закрепили данную продажу
products Список товаров осуществленной продажи, что относится к акции с накоплением. Ниже описано содержимое данного массива товаров.
product_id Id товара
modification_id Id модификации, если товар с модификациями
count Количество товара
sum Стоимость товара

Параметр prize_products сожержит объект:

Параметр Описание
prize_product_id Уникальный id отложенного приза
promotion_id id призовой акции
conditions Список условий, по которым определяется какой именно приз надо выдать. type обозначет: 0 — из всех товаров, 1 — из категории, что указана в id, 2 — конкретный товар с указанным id, 3 — модификация товара с указанным id (для удобства еще будет передан product_id товара, к которому относится модификация)
bonus_products_pcs Сколь штук бонусного товара выдавать, если он штучный
bonus_products_g Сколь грамм бонусного товара выдавать, если он весовой
bonus_products_condition_type На каких условиях выдавать бонус: 1 — процент скидки (например, с 50 или 100% скидкой), 2 — фиксированная сумма скидки (например, дать 5 гривен/рублей скидки на товар), 3 — фиксированная стоимость товара (например, продавать по 1 гривне/рублю)
bonus_products_condition_value Количество для параметра bonus_products_condition_type. Если денежное значение, то возвращается в гривнах/рублях.

clients.createClient: Создание клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.createClient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$client = [
    'client_name'             => 'Попова Елена Андреевна',
    'client_sex'              => 2,
    'client_groups_id_client' => 7,
    'card_number'             => '0000000000222',
    'discount_per'            => 0,
    'phone'                   => '+380519911122',
    'email'                   => 'contact@joinposter.com',
    'birthday'                => '1986-11-23',
    'bonus'                   => 10,
    'total_payed_sum'         => 417000,
];

$data = sendRequest($url, 'post', $client);

Пример ответа:

{
  "response":4082
}

Метод создаёт клиента

HTTP запрос

POST https://joinposter.com/api/clients.createClient

POST-параметры запроса clients.createClient

Параметр Описание
client_name ФИО клиента
client_sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
client_groups_id_client Id группы клиентов
card_number Номер карты клиента
discount_per Персональный процент скидки или бонсов. Будет использоваться, если больше, чем процент группы клиента.
phone Телефон клиента, уникальный, в системе не может быть два клиента с одинаковым номером
email Адрес электронной почты клиента
birthday Дата рождения клиента, формат “Y-m-d”
city Город клиента
country Страна клиента
address Адрес клиента
comment Комментарий к учетной записи клиента
bonus Текущий размер накопленных бонусов клиента
total_payed_sum Общая сумма покупок в копейках

Параметры ответа clients.createClient

Параметр Описание
response Id созданного клиента

clients.createClients: Групповое создание клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.createClients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$client = [
    [
        'client_name'             => 'Попова Елена Андреевна',
        'client_sex'              => 2,
        'client_groups_id_client' => 7,
        'card_number'             => '0000000000222',
        'discount_per'            => 0,
        'phone'                   => '+380519911122',
        'email'                   => 'contact@joinposter.com',
        'birthday'                => '1986-11-23',
        'bonus'                   => 10,
        'total_payed_sum'         => 417000,
    ],
    [
        'client_name'             => 'Егоров Денис Александрович',
        'client_sex'              => 1,
        'client_groups_id_client' => 7,
        'card_number'             => '0000000000223',
        'discount_per'            => 0,
        'phone'                   => '+380519998877',
        'email'                   => 'dev@joinposter.com',
        'birthday'                => '1990-06-15',
        'bonus'                   => 10,
        'total_payed_sum'         => 570000,
    ]
];

$data = sendRequest($url, 'post', $client);

Пример ответа:

{
  "response":[7, 8]
}

Метод создаёт клиента несколько клиентов за один запрос

HTTP запрос

POST https://joinposter.com/api/clients.createClients

POST-параметры запроса clients.createClients

Параметр Описание
client_name ФИО клиента
client_sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
client_groups_id_client Id группы клиентов
card_number Номер карты клиента
discount_per Персональный процент скидки или бонсов. Будет использоваться, если больше, чем процент группы клиента.
phone Телефон клиента, уникальный, в системе не может быть два клиента с одинаковым номером
email Адрес электронной почты клиента
birthday Дата рождения клиента, формат “Y-m-d”
city Город клиента
country Страна клиента
address Адрес клиента
comment Комментарий к учетной записи клиента
bonus Текущий размер накопленных бонусов клиента
total_payed_sum Общая сумма покупок в копейках

Параметры ответа clients.createClients

Параметр Описание
response Массив id добавленных клиентов

clients.updateClient: Изменение свойств клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.updateClient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$client = [
  'client_id'               => 50,
  'client_name'             => 'Попова Елена Андреевна',
  'client_sex'              => 2,
  'client_groups_id_client' => 7,
  'card_number'             => '0000000000222',
  'discount_per'            => 0,
  'phone'                   => '+380 50 22-11-111',
  'email'                   => 'contact@joinposter.com',
  'birthday'                => '1986-11-23',
  'bonus'                   => 10,
  'total_payed_sum'         => 417000,
];

$data = sendRequest($url, 'post', $client);

Пример ответа:

{
  "response":4082
}

Метод изменяет свойства клиента

HTTP запрос

POST https://joinposter.com/api/clients.updateClient

POST-параметры запроса clients.updateClient

Параметр Описание
client_id Id клиента
client_name ФИО клиента
client_sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
client_groups_id_client Id группы клиентов
card_number Номер карты клиента
discount_per Персональный процент скидки или бонсов. Будет использоваться, если будет больше, чем процент группы клиента.
phone Телефон клиента, уникальный, в системе не может быть два клиента с одинаковым номером
email Адрес электронной почты клиента
birthday Дата рождения клиента, формат “Y-m-d”
city Город клиента
country Страна клиента
address Адрес клиента
comment Комментарий к учетной записи клиента
bonus Текущий размер накопленных бонусов клиента
total_payed_sum Общая сумма покупок в копейках

Параметры ответа clients.updateClient

Параметр Описание
response Id измененного клиента

clients.removeClient: Удаление клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.removeClient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$client = [
    'client_id' => 2,
];

$data = sendRequest($url, 'post', $client);

Пример ответа:

{  
  "response":true
}

Метод удаляет клиента

HTTP запрос

GET https://joinposter.com/api/clients.removeClient

POST-параметры запроса clients.removeClient

Параметр Описание
client_id Id клиента

Параметры ответа clients.removeClient

Параметр Описание
response true, если клиент успешно удалён

clients.removeClients: Удаление пачки клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.removeClients'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$client = [
    'ids' => [1, 2],
];

$data = sendRequest($url, 'post', $client);

Пример ответа:

{  
  "response":[1,2]
}

Метод удаляет несколько клиентов

HTTP запрос

GET https://joinposter.com/api/clients.removeClients

POST-параметры запроса clients.removeClients

Параметр Описание
ids Массив Id клиентов

Параметры ответа clients.removeClients

Параметр Описание
response Массив id удаленных клиентов

clients.getClientsPrizes: Список товаров выданных по акциям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getClientsPrizes'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
   "prize_product_id":"38",
   "transaction_id":"388689",
   "promotion_id":"8",
   "client_id":"38",
   "status":"1",
   "tr_product_id":"2125190",
   "num":"1.0000000",
   "conditions":{  
      "bonus_products":[  
         {  
            "type":"2",
            "id":"934"
         }
      ],
      "bonus_products_condition_type":"3",
      "bonus_products_condition_value":100
   },
   "date_accrual":"2018-05-02 11:03:50",
   "date_issuance":"2018-05-02 11:03:50",
   "master_id":"0",
   "weight_flag":"0"
}

Метод возвращает товары выданные по акциям

HTTP GET запрос

GET https://joinposter.com/api/clients.getClientsPrizes

GET-параметры запроса clients.getClientsPrizes

Параметр Описание
prize_id TODO: Alert

Параметры ответа clients.getClientsPrizes

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
prize_product_id Уникальный id отложенного приза
transaction_id Id транзакции
promotion_id Id акции
client_id Id клиента
status 0 — не получен, 1 — получен, 2 — удален
tr_product_id Уникальный id товара в рамках всех транзакций
num Количество товара который выдан
date_accrual Дата начала начисления
date_issuance Дата выдачи подарка
master_id Id мастер аккаунта
weight_flag Признак весового товара, 0 — не весовой, 1 — если весовой
conditions Условия выдачи продукта

Внутри параметра conditions лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
bonus_products Товар который был выдан
bonus_products_condition_type Условие получения бонусного товара: 1 — процент скидки на бонусные товары (от 0 до 100), 2 — фиксированная сумма скидки на бонусные товары, 3 — фиксированная стоимость бонусного товара
bonus_products_condition_value Количество начисленных бонусов

Внутри параметра bonus_products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
type Тип товара: 1 — товар, 2 — тех. карта
id Id товара

clients.changeClientBonus: Изменение количества бонусов клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.changeClientBonus'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$bonus = [
  'client_id' => 7,
  'count'     => 10,
];

$data = sendRequest($url, 'post', $bonus);

Пример ответа:

{
  "response":30
}

Метод изменяет количество бонусов клиента. Используется только для клиентов с бонусной системой лояльности.

HTTP запрос

POST https://joinposter.com/api/clients.changeClientBonus

POST-параметры запроса clients.changeClientBonus

Параметр Описание
client_id Id клиента
count Количество бонусов, которые надо начислить клиенту. Если число положительное — начислить, если число отрицательное — списать.
block_webhook Опциональный параметр, если true — в ответ не прийдет вебхук об измении данных этого клиента

Параметры ответа clients.changeClientBonus

Параметр Описание
response Количество бонусов, которое стало у клиента после внесения изменений

clients.changeClientPayedSum: Изменение общей суммы покупок клиента

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.changeClientPayedSum'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$sum = [
  'client_id' => 50,
  'count'     => 20,
];

$data = sendRequest($url, 'post', $sum);

Пример ответа:

{
  "response":110
}

Метод изменяет общую сумму покупок клиента

HTTP запрос

POST https://joinposter.com/api/clients.changeClientPayedSum

POST-параметры запроса clients.changeClientPayedSum

Параметр Описание
client_id Id клиента
count Сумма покупок, которую надо начислить клиенту. Если число положительное — начислить, если число отрицательное — списать.
block_webhook Опциональный параметр, если true — в ответ не прийдет вебхук об измении данных этого клиента

Параметры ответа clients.changeClientPayedSum

Параметр Описание
response Общая сумма покупок, которая стала у клиента после внесения изменений

clients.getClientsAccumulations: Накопления клиента по акциям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getClientsAccumulations'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
   "response":[  
      {  
         "accumulation_product_id":"1",
         "tr_product_id":"2125193",
         "promotion_id":"14",
         "client_id":"61",
         "product_id":"934",
         "modification_id":"0",
         "status":"1",
         "num":"1.0000000",
         "product_sum":"1476",
         "prize_product_id":"",
         "date_add":"2018-05-02 13:25:16",
         "date_close":null,
         "weight_flag":"0"
      }
   ]
}

Метод возвращает накопления клиента по акциям

HTTP GET запрос

GET https://joinposter.com/api/clients.getClientsAccumulations

GET-параметры запроса clients.getClientsAccumulations

Параметр Описание
num Кол-во клиентов в ответе
offset Количество клиентов, которое необходимо пропустить от начала. По умолчанию — 0.

Параметры ответа clients.getClientsAccumulations

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
accumulation_product_id Id накопления
tr_product_id Уникальный id товара в рамках всех транзакций
promotion_id Id акции
client_id Id клиента
product_id Id товара
modification_id Id модификации, если товар с модификациями, 0 — если нет модификации
status Статус накопления: 1 — активное, 2 — закрыто, 3 — удалено
num Количество выданного товара
product_sum Стоимость одного купленного товара
prize_product_id Id бонусного товара
date_add Дата начала накопления в формате YYYY-MM-dd HH:mm:ss
date_close Дата окончания накопления в формате YYYY-MM-dd HH:mm:ss
weight_flag Обозначение весового товара: 0 — товар не весовой, 1 — товар весовой

clients.addClientsAccumulations: Редактирование накоплений клиента по акциям

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.addClientsAccumulations'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$accumulations = [
  'accumulation_product_id' => 1,
  'tr_product_id'           => 2125193,
  'promotion_id'            => 14,
  'client_id'               => 62,
  'product_id'              => 934,
  'modification_id'         => 0,
  'status'                  => 1,
  'num'                     => 1.0000000,
  'product_sum'             => 1476,
  'prize_product_id'        => "1",
  'date_add'                => "2018-05-03 13:25:16",
  'date_close'              => "2018-05-03 13:26:00",
];

$data = sendRequest($url, 'post', $accumulations);

Пример ответа:

{  
   "response":"1"
}

Метод изменяет накопления клиента по акциям

HTTP POST запрос

GET https://joinposter.com/api/clients.addClientsAccumulations

POST-параметры запроса clients.addClientsAccumulations

Параметр Описание
accumulation_product_id Id накопления
tr_product_id Уникальный id товара в рамках всех транзакций
promotion_id Id акции
client_id Id клиента
product_id Id товара
modification_id Id модификации, если товар с модификациями, 0 — если нет модификации
status Статус накопления: 1 — активное, 2 — закрыто, 3 — удалено
num Количество товара который выдан
product_sum Стоимость одного купленного товара
prize_product_id Id бонусного товара
date_add Дата начала накопления в формате YYYY-MM-dd HH:mm:ss
date_close Дата окончания накопления в формате YYYY-MM-dd HH:mm:ss

Параметры ответа clients.addClientsAccumulations

Параметр Описание
response 1, если накопления добавлены

clients.getPromotion: Свойства акции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getPromotion'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&promotion_id=13';

$data = sendRequest($url);

Пример ответа:

{
   "response":{  
      "promotion_id":"12",
      "name":"Скидка на кофе",
      "position":"3",
      "accrual_bonuses":"0",
      "params":{  
         "conditions":[
            {
               "type":"2",
               "id":"934",
               "pcs":225445,
               "g":0,
               "sum":0
            }
         ],
         "conditions_rule":"or",
         "conditions_exactly":0,
         "accumulation_type":"1",
         "accumulation_checks_count":0,
         "week_days":[  
            "1",
            "1",
            "1",
            "1",
            "1",
            "1",
            "1"
         ],
         "periods":[  
            {  
               "start":"00:00",
               "end":"23:59"
            }
         ],
         "clients_type":"4",
         "clients_groups":[  
            "18",
            "2"
         ],
         "result_type":"1",
         "bonus_products":[  
            {  
               "type":"2",
               "id":"934"
            }
         ],
         "bonus_products_pcs":"3",
         "bonus_products_g":0,
         "bonus_products_condition_type":"1",
         "bonus_products_condition_value":"80",
         "bonus_products_accumulation":"2",
         "discount_value":0,
         "discount_prices":[  

         ]
      },
      "date_start":"2018-05-01 00:00:00",
      "date_end":"0000-00-00 00:00:00",
      "auto_apply":"0"
   }
}

Метод возвращает свойства акции

HTTP GET запрос

GET https://joinposter.com/api/clients.getPromotion

GET-параметры запроса clients.getPromotion

Параметр Описание
promotion_id Id акции

Параметры ответа clients.getPromotion

Параметр Описание
response Массив объектов

Внутри параметра response лежит объект, который содержит следующие свойства

Параметр Описание
promotion_id Id акции
name Название акции
position Позиция в списке
accrual_bonuses Начисление бонусов на товары из условий акции: 0 — не начислять, 1 — начислять
date_start Дата начала акции в формате YYYY:MM:dd HH:mm:ss
date_end Дата оконцания акции в формате YYYY:MM:dd HH:mm:ss
auto_apply Автоприменение акции: 0 — выключено, 1 — включено
params Параметры акции

Внутри параметра params лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
conditions Условия заказа товаров
conditions_rule Условие заказа товаров: or — любой товар был приобретен, and — все товары из списка были приобретены
conditions_exactly Количество товара необходимое для покупки: 0 — не менее, 1 — ровно
accumulation_type Условия накопления: 1 — без накопления, один раз в рамках одного чека, 2 — без накопления, много раз в рамках одного чека, 3 — с накоплением количества или сумм в нескольких чеках
accumulation_checks_count Количество чеков в которых сработала акция
week_days Массив из дней недели в которые работает акция, 0 — акция не работает, 1 — акция работает. Позиция элемента в массиве соответсвует дню недели, например, понедельник — 1й элемент, пятница — 5й элемент.
periods Время работы акции в формате hh:mm
clients_type Участники акции: 1 — все посетители, 2 — только не зарегистрированные посетители, 3 — только зарегистрированные клиенты, 4 — клиенты отдельных групп
clients_groups Список из id групп клиентов на которых действует акция
result_type Результат акции: 1 — бонусные товары, 2 — фиксированная сумма скидки, 3 — процент скидки на товар, 4 — фиксированная скидка на товары из акции
bonus_products Бонусные товары которые будут выданы в результате акции
bonus_products_pcs Количество бонусных товаров
bonus_products_g Сколь грамм бонусного товара выдавать, если он весовой
bonus_products_condition_type Условие получения бонусного товара: 1 — процент скидки на бонусные товары (от 0 до 100), 2 — фиксированная сумма скидки на бонусные товары, 3 — фиксированная стоимость бонусного товара
bonus_products_condition_value Процент скидки если bonus_products_condition_type = 1, сумма скидки в гривнах\рублях если bonus_products_condition_type = 2
discount_value Фиксированная сумма скидки, передается только при bonus_products_condition_type = 2
discount_prices Массив из стоимостей товаров если result_type = 4

Внутри параметра conditions лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
type Что нужно заказать: 1 — товар, 2 — товар из категории
id Id товара или категории в зависимости от type при заказе которого сработает акция
pcs Количество товара, после покупки которого можно применить акцию
g Сколь грамм товара необходимо купить, если он весовой
sum Минимальная сумма в копейках на которую нужно заказать товар

Внутри параметра periods лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
start Время начала акции в формате YYYY:MM:dd HH:mm:ss
end Время окончания акции YYYY:MM:dd HH:mm:ss

Внутри параметра discount_prices лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
type Тип результирующего товара: 1 — товар, 2 — товар из категории
id Id результирующего товара или категории в зависимости от type
price Сумма в копейках с которой товар добавится в заказ

clients.getPromotions: Список акций

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getPromotions'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
   "response":[  
      {  
         "promotion_id":"8",
         "name":"1 + 1",
         "position":"1",
         "accrual_bonuses":"1",
         "params":{  
            "conditions":[  
               {  
                  "type":"2",
                  "id":"934",
                  "pcs":1,
                  "g":0,
                  "sum":0
               }
            ],
            "conditions_rule":"or",
            "conditions_exactly":1,
            "accumulation_type":"1",
            "accumulation_checks_count":0,
            "week_days":[  
               "1",
               "1",
               "1",
               "1",
               "1",
               "1",
               "1"
            ],
            "periods":[  
               {  
                  "start":"00:00",
                  "end":"23:59"
               }
            ],
            "clients_type":"1",
            "clients_groups":[  

            ],
            "result_type":"1",
            "bonus_products":[  
               {  
                  "type":"2",
                  "id":"934"
               }
            ],
            "bonus_products_pcs":"1",
            "bonus_products_g":0,
            "bonus_products_condition_type":"3",
            "bonus_products_condition_value":100,
            "bonus_products_accumulation":"0",
            "discount_value":0,
            "discount_prices":[  

            ]
         },
         "date_start":"2018-04-29 00:00:00",
         "date_end":"0000-00-00 00:00:00",
         "auto_apply":"0"
      },
      {  
         "promotion_id":"9",
         "name":"іав",
         "position":"0",
         "accrual_bonuses":"1",
         "params":{  
            "conditions":[  
               {  
                  "type":"2",
                  "id":"934",
                  "pcs":1,
                  "g":0,
                  "sum":0
               }
            ],
            "conditions_rule":"or",
            "conditions_exactly":1,
            "accumulation_type":"1",
            "accumulation_checks_count":0,
            "week_days":[  
               "1",
               "1",
               "1",
               "1",
               "1",
               "1",
               "1"
            ],
            "periods":[  
               {  
                  "start":"00:00",
                  "end":"23:59"
               }
            ],
            "clients_type":"1",
            "clients_groups":[  

            ],
            "result_type":"1",
            "bonus_products":[  
               {  
                  "type":"2",
                  "id":"934"
               }
            ],
            "bonus_products_pcs":"1",
            "bonus_products_g":0,
            "bonus_products_condition_type":"1",
            "bonus_products_condition_value":"1",
            "bonus_products_accumulation":"0",
            "discount_value":0,
            "discount_prices":[  

            ]
         },
         "date_start":"2018-04-30 00:00:00",
         "date_end":"0000-00-00 00:00:00",
         "auto_apply":"0"
      }
   ]
}

Метод возвращает список акций

HTTP запрос

GET https://joinposter.com/api/clients.getPromotions

GET-параметры запроса clients.getPromotions

Параметр Описание
promotion_id Id акции

Параметры ответа clients.getPromotions

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
promotion_id Id акции
name Название акции
position Позиция в списке
accrual_bonuses Начисление бонусов на товары из условий акции: 0 — не начислять, 1 — начислять
date_start Дата старта акции
date_end Дата оконцания акции
auto_apply Автоприминение акции: 0 — выключено, 1 — включено
params Параметры акции

Внутри параметра params лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
promotion_id Id акции
name Название акции
position Позиция в списке
accrual_bonuses Начисление бонусов на товары из условий акции: 0 — не начислять, 1 — начислять
date_start Дата начала акции в формате YYYY:MM:dd HH:mm:ss
date_end Дата оконцания акции в формате YYYY:MM:dd HH:mm:ss
auto_apply Автоприменение акции: 0 — выключено, 1 — включено
params Параметры акции

Внутри параметра params лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
conditions Условия заказа товаров
conditions_rule Условие заказа товаров: or — любой товар был приобретен, and — все товары из списка были приобретены
conditions_exactly Количество товара необходимое для покупки: 0 — не менее, 1 — ровно
accumulation_type Условия накопления: 1 — без накопления, один раз в рамках одного чека, 2 — без накопления, много раз в рамках одного чека, 3 — с накоплением количества или сумм в нескольких чеках
accumulation_checks_count Количество чеков в которых сработала акция
week_days Массив из дней недели в которые работает акция, 0 — акция не работает, 1 — акция работает. Позиция элемента в массиве соответсвует дню недели, например, понедельник — 1й элемент, пятница — 5й элемент.
periods Время работы акции в формате hh:mm
clients_type Участники акции: 1 — все посетители, 2 — только не зарегистрированные посетители, 3 — только зарегистрированные клиенты, 4 — клиенты отдельных групп
clients_groups Список из id групп клиентов на которых действует акция
result_type Результат акции: 1 — бонусные товары, 2 — фиксированная сумма скидки, 3 — процент скидки на товар, 4 — фиксированная скидка на товары из акции
bonus_products Бонусные товары которые будут выданы в результате акции
bonus_products_pcs Количество бонусных товаров
bonus_products_g Сколь грамм бонусного товара выдавать, если он весовой
bonus_products_condition_type Условие получения бонусного товара: 1 — процент скидки на бонусные товары (от 0 до 100), 2 — фиксированная сумма скидки на бонусные товары, 3 — фиксированная стоимость бонусного товара
bonus_products_condition_value Процент скидки если bonus_products_condition_type = 1, сумма скидки в гривнах\рублях если bonus_products_condition_type = 2
discount_value Фиксированная сумма скидки, передается только при bonus_products_condition_type = 2
discount_prices Массив из стоимостей товаров если result_type = 4

Внутри параметра conditions лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
type Что нужно заказать: 1 — товар, 2 — товар из категории
id Id товара или категории в зависимости от type при заказе которого сработает акция
pcs Количество товара, после покупки которого можно применить акцию
g Сколь грамм товара необходимо купить, если он весовой
sum Минимальная сумма в копейках на которую нужно заказать товар

Внутри параметра periods лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
start Время начала акции в формате YYYY:MM:dd HH:mm:ss
end Время окончания акции YYYY:MM:dd HH:mm:ss

Внутри параметра discount_prices лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
type Тип результирующего товара: 1 — товар, 2 — товар из категории
id Id результирующего товара или категории в зависимости от type
price Сумма в копейках с которой товар добавится в заказ

clients.removePromotion: Удаление акции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.removePromotion?'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$promotion = [
  'promotion_id' => 6,
];

$data = sendRequest($url, 'post', $promotion);

Пример ответа:

{
  "response":true
}

Метод удаляет указанную акцию

HTTP POST запрос

POST https://joinposter.com/api/clients.removePromotion

POST-параметры запроса clients.removePromotion

Параметр Описание
promotion_id Id акции которую удаляем

Параметры ответа clients.removePromotion

Параметр Описание
response true, если акция успешно удалена

clients.getGroups: Список групп клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getGroups'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "client_groups_id":"2",
      "client_groups_name":"Скидка Выходной",
      "client_groups_discount":"15",
      "loyalty_type":"1",
      "birthday_bonus":"0",
      "count_groups_clients":"21",
      "delete":"0"
    },
    {  
      "client_groups_id":"3",
      "client_groups_name":"Накопительная скидка",
      "client_groups_discount":"0",
      "loyalty_type":"1",
      "birthday_bonus":"0",
      "count_groups_clients":"8",
      "delete":"0"
    }
  ]
}

Метод возвращает список групп клиентов

HTTP запрос

GET https://joinposter.com/api/clients.getGroups

Параметры ответа clients.getGroups

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
client_groups_id Id группы клиентов
client_groups_name Название группы клиентов
client_groups_discount Процент группы. Если группа бонусная, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная, то будет давать процент скидки на сумму заказа.
loyalty_type Тип группы клиентов: 1 — бонусная, 2 — скидочная
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.
count_groups_clients Количество клиентов, которые находятся в данной группе
delete Определяет удалена ли группа: 1 — удалена, 0 — нет

clients.getGroup: Свойства группы клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.getGroup'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&group_id=2';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "client_groups_id":"2",
    "client_groups_name":"Скидка Выходной",
    "client_groups_discount":"15",
    "loyalty_type":"1",
    "birthday_bonus":"0",
    "count_groups_clients":"21",
    "delete":"0"
  }
}

Метод возвращает свойства группы клиентов

HTTP запрос

GET https://joinposter.com/api/clients.getGroup

GET-параметры запроса clients.getGroup

Параметр Описание
group_id Id группы клиентов

Параметры ответа clients.getGroup

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
client_groups_id Id группы клиентов
client_groups_name Название группы клиентов
client_groups_discount Процент группы. Если группа бонусная — 1, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная — 2, то будет давать процент скидки на сумму заказа.
loyalty_type Тип группы клиентов: 1 — бонусная, 2 — скидочная
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.
count_groups_clients Количество клиентов, которые находятся в данной группе
delete Определяет удалена ли группа: 1 — удалена, 0 — нет

clients.createGroup: Создание группы клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.createGroup'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$group = [
    'client_groups_name'     => 'Постоянный посетитель',
    'loyalty_type'           => 1,
    'client_groups_discount' => 10,
    'birthday_bonus'         => 50.00,
];

$data = sendRequest($url, 'post', $group);

Пример ответа:

{
  "response":6
}

Метод создаёт группу клиентов

HTTP запрос

POST https://joinposter.com/api/clients.createGroup

POST-параметры запроса clients.createGroup

Параметр Описание
client_groups_name Название группы клиентов
loyalty_type Тип группы клиентов: 1 — бонусная, 2 — скидочная
client_groups_discount Процент группы. Если группа бонусная - 1, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная — 2, то будет давать процент скидки на сумму заказа.
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.

Параметры ответа clients.createGroup

Параметр Описание
response Id созданной группы клиентов

clients.updateGroup: Изменение свойств группы клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.updateGroup'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$group = [
  'client_groups_id'       => 5,
  'client_groups_name'     => 'Постоянный посетитель',
  'loyalty_type'           => 1,
  'client_groups_discount' => 10,
  'birthday_bonus'         => 50.00,
];

$data = sendRequest($url, 'post', $group);

Пример ответа:

{
  "response":6
}

Метод изменяет свойства группы клиентов

HTTP запрос

POST https://joinposter.com/api/clients.updateGroup

POST-параметры запроса clients.updateGroup

Параметр Описание
client_groups_id Id группы клиентов
client_groups_name Название группы клиентов
loyalty_type Тип группы клиентов: 1 — бонусная, 2 — скидочная
client_groups_discount Процент группы. Если группа бонусная — 1, то будет начислять бонусы на оплаченную сумму заказа. Если группа скидочная — 2, то будет давать процент скидки на сумму заказа.
birthday_bonus Количество бонусов в копейках начисляемые в день рождения клиента. Используется только бонусными группами.

Параметры ответа clients.updateGroup

Параметр Описание
response id измененной группы клиентов

clients.removeGroup: Удаление группы клиентов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.removeGroup?'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$group = [
  'group_id' => 6,
];

$data = sendRequest($url, 'post', $group);

Пример ответа:

{
  "response":true
}

Метод удаляет группу клиентов

HTTP запрос

POST https://joinposter.com/api/clients.removeGroup

POST-параметры запроса clients.removeGroup

Параметр Описание
group_id Id группы клиентов

Параметры ответа clients.removeGroup

Параметр Описание
response true, если группа клиентов успешно удалена

clients.sendSms: Отправка SMS от имени аккаунта

Пример запроса:

<?php
$url = 'https://joinposter.com/api/clients.sendSms'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$sms = [
    'phone' => 380684113524,
    'message' => 'У вас осталось 10 бонусов на счету'
];

$data = sendRequest($url, 'post', $sms);

Пример ответа:

{
  "response":true
}

Метод отправляет SMS от имени аккаунта Poster.

HTTP запрос

POST https://joinposter.com/api/clients.sendSms

POST-параметры запроса clients.sendSms

Параметр Описание
phone Номер телефона на которые отправляется SMS. Номер должен быть в международном формате, без лидирующего +.
message Текст SMS сообщения

Параметры ответа clients.sendSms

Параметр Описание
response Результат отправки SMS: true – если отправлена, иначе вернется объект ошибки

transactions: Чеки

Методы для работы с разделом чеков. Все методы данного раздела начинаются с «transactions».

transactions.getTransactions: Список чеков

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.getTransactions'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&date_from=2017-11-30'
 . '&date_to=2017-11-30'
 . '&per_page=10'
 . '&page=5';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "count":41,
    "page":{  
      "per_page":10,
      "page":5,
      "count":1
    },
    "data":[  
      {  
        "transaction_id":25221,
        "table_id":1,
        "spot_id":1,
        "client_id":68,
        "sum":360,
        "payed_sum":0,
        "payed_cash":0,
        "payed_card":0,
        "payed_cert":0,
        "payed_bonus":0,
        "payed_third_party":0,
        "round_sum":0,
        "pay_type":3,
        "reason":0,
        "tip_sum": 0,
        "bonus":0,
        "discount":100,
        "print_fiscal":0,
        "date_close":"2017-11-30 13:48:09",
        "products":[  
          {  
            "product_id":469,
            "modification_id":0,
            "type":2,
            "workshop_id":2,
            "num":2,
            "product_sum":360,
            "payed_sum":0,
            "cert_sum":0,
            "bonus_sum":0,
            "bonus_accrual":0,
            "round_sum":0,
            "discount":100,
            "tax_fiscal":1
          }
        ]
      }
    ]
  }
}

Метод возвращает список чеков с товарами в диапазоне дат и с постраничной разбивкой

HTTP GET запрос

https://joinposter.com/api/transactions.getTransactions

GET-параметры запроса transactions.getTransactions

Параметр Описание
date_from Дата начала выборки, формат “Y-m-d”
date_to Дата конца выборки, формат “Y-m-d”
per_page Количество чеков на одной странице. По умолчанию принимает 100, максимальное значение — 1000.
page Номер страницы, по умолчанию принимает 1

Параметры ответа transactions.getTransactions

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
count Общее количество чеков в выбранном диапазоне дат
page Информация о странице
data Информация по чекам

Внутри параметра page лежит объект, внутри которого есть следующие параметры:

Параметр Описание
per_page Количество чеков на одной странице
page Номер текущей страницы
count Количество чеков на текущей странице

Внутри параметра data лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
transaction_id Id чека
table_id Id стола
spot_id Id заведения
client_id Id клиента
sum Общая сумма чека
payed_sum Общая сумма оплаты, от payed_cash и payed_card
payed_cash Сумма оплаты наличным расчётом
payed_card Сумма оплаты безналичным расчётом
payed_cert Сумма оплаты сертификатом
payed_bonus Сумма оплаты бонусами
round_sum Сумма округления по чеку в гривнах или рублях
payed_third_party Сумма оплаты третьей стороной в копейках
pay_type Тип оплаты: 0 — закрыт без оплаты, 1 — оплата наличным расчётом, 2 — оплата безналичным расчётом, 3 — смешанная оплата
reason Причина закрытия чека без оплаты: 1 — гость ушел, 2 — за счёт заведения, 3 — ошибка официанта
tip_sum Сумма процента за обслуживание
bonus Начисленный бонус, в процентах от payed_sum
discount Скидка на чек в процентах
print_fiscal Признак печати фискального чека: 0 — не печатали, 1 — печатали, 2 — фискальный возврат
date_close Дата закрытия чека, формат “Y-m-d H:i:s”
products Товары в чеке

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
product_id Id товара
modification_id Id модификации
type Тип товара: 2 — тех. карта, 3 — товар
workshop_id Id цеха
num Количество товара в чеке
product_sum Стоимость товара
payed_sum Сумма оплаты
cert_sum Сумма оплаты сертификатом
bonus_sum Сумма оплаты бонусами
bonus_accrual Начислено бонусов
round_sum Сумма округления по товару
discount Скидка на товар в процентах
tax_fiscal Налог по фискальному регистратору

transactions.getTransactionsWriteOffs: Списания по чекам

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.getTransactionsWriteOffs'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&date_from=2017-11-30'
 . '&date_to=2017-11-30'
 . '&per_page=10'
 . '&page=5';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "count":41,
    "page":{  
      "per_page":10,
      "page":5,
      "count":1
    },
    "data":[  
      {  
        "transaction_id":25221,
        "write_offs":[  
          {  
            "write_off_id":143731,
            "storage_id":3,
            "product_id":469,
            "modificator_id":0,
            "ingredient_id":30,
            "prepack_id":0,
            "cost":26.68,
            "weight":0.16,
            "unit":"kg",
            "reason":""
          }
        ]
      }
    ]
  }
}

Метод возвращает списания по чекам в диапазоне дат и с постраничной разбивкой

HTTP GET запрос

https://joinposter.com/api/transactions.getTransactionsWriteOffs

GET-параметры запроса transactions.getTransactionsWriteOffs

Параметр Описание
date_from Дата начала выборки, формат “Y-m-d”
date_to Дата конца выборки, формат “Y-m-d”
per_page Количество чеков на одной странице. По умолчанию принимает 100, максимальное значение — 1000.
page Номер страницы, по умолчанию принимает 1

Параметры ответа transactions.getTransactionsWriteOffs

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
count Общее количество чеков в выбранном диапазоне дат
page Информация о странице
data Информация по чекам

Внутри параметра page лежит объект, внутри которого есть следующие параметры:

Параметр Описание
per_page Количество чеков на одной странице
page Номер текущей страницы
count Количество чеков на текущей странице

Внутри параметра data лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
transaction_id Id чека
write_offs Списания по чеку

Внутри параметра write_offs лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
write_off_id Id списания
storage_id Id склада с которого произошло списание
product_id Id товара
modificator_id Id модификатора
ingredient_id Id ингредиента. Для произведённых тех. карт и полуфабрикатов будет возвращён системный id ингредиента сущности
prepack_id Id полуфабриката
cost Стоимость
weight Количество
unit Единица измерения: kg — килограммы, p — штуки, l — литры
reason Причина списания

transactions.getTransactionDishComposition: Состав проданной тех. карты

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.getTransactionDishComposition'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&transaction_id=76'
 . '&product_id=82'
 . '&modificator_id=22';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "transaction_id":76,
    "product_id":82,
    "modificator_id":22,
    "num":1,
    "ingredients":[  
      {  
        "ingredient_id":135,
        "type":1,
        "weight":0.6
      },
      {  
        "ingredient_id":24,
        "type":2,
        "weight":0.05
      },
      {  
        "ingredient_id":136,
        "type":1,
        "weight":2
      }
    ]
  }
}

Метод возвращает состав проданной тех. карты

HTTP GET запрос

https://joinposter.com/api/transactions.getTransactionDishComposition

GET-параметры запроса transactions.getTransactionDishComposition

Параметр Описание
transaction_id Id чека
product_id Id тех. карты
modificator_id Id модификатора, по умолчанию принимает 0

Параметры ответа transactions.getTransactionDishComposition

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
transaction_id Id чека
product_id Id тех. карты
modificator_id Id модификатора
num Количество тех. карты в чеке
ingredients Состав тех. карты на момент продажи

Внутри параметра ingredients лежит объект, внутри которого есть следующие параметры:

Параметр Описание
ingredient_id Id ингредиента
product_id Id тех. карты или полуфабриката, передается если type = 2 или 3
type Тип: 1 — ингредиент, 2 — полуфабрикат, 3 — тех. карта
weight Количество

transactions.createTransaction: Создание чека

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.createTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'table_id'       => 1,
    'user_id'        => 3,
    'guests_count'   => 2,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "transaction_id":1950,
    "transaction_tablet_id":1508850241000
  }
}

Метод создаёт чек

HTTP запрос

GET https://joinposter.com/api/transactions.createTransaction

POST-параметры запроса transactions.createTransaction

Параметр Описание
spot_id Id заведения в котором нужно создать чек
spot_tablet_id Id терминала в котором нужно создать чек
table_id Id стола
user_id Id сотрудника
guests_count Количество гостей за столом
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.createTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
transaction_id Id созданного чека, соответсвует номеру чека
transaction_tablet_id Id созданного чека на терминале, соответствует времени открытия чека

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.addTransactionProduct: Добавление товара в чек

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.addTransactionProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'product_id'     => 112,
    'modification'   => '[{"m":19,"a":1}]',
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "transaction_product":10990
  }
}

Метод добавляет товар в чек

HTTP запрос

GET https://joinposter.com/api/transactions.addTransactionProduct

POST-параметры запроса transactions.addTransactionProduct

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
product_id Id товара или тех. карты
modificator_id Id модификатора товара, по умолчанию не передаётся
modification Модификации тех. карты, по умолчанию не передаётся
price Стоимость товара или тех. карты, если она должна отличаться от базовой, по умолчанию не передаётся
time Время операции в формате microtime, по умолчанию принимает текущее время

Внутри параметра modification должна быть JSON строка. JSON должен состоять из массива объектов, где в каждом объекте должны быть следующие параметры:

Параметр Описание
m Id модификации тех. карты
a Количество модификации тех. карты

Параметры ответа transactions.addTransactionProduct

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
transaction_product Id добавленного товара в текущем чеке

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.changeTransactionProductCount: Изменение количества товара в чеке

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.changeTransactionProductCount'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'product_id'     => 112,
    'modification'   => '[{"m":19,"a":1}]',
    'count'          => 2,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод изменяет количество товара в чеке

HTTP запрос

GET https://joinposter.com/api/transactions.changeTransactionProductCount

POST-параметры запроса transactions.changeTransactionProductCount

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
product_id Id товара или тех. карты
modificator_id Id модификатора товара, по умолчанию не передаётся
modification Модификации тех. карты, по умолчанию не передаётся
count Количество товара или тех. карты
time Время операции в формате microtime, по умолчанию принимает текущее время

Внутри параметра modification должна быть JSON строка. JSON должен состоять из массива объектов, где в каждом объекте должны быть следующие параметры:

Параметр Описание
m Id модификации тех. карты
a Количество модификации тех. карты

Параметры ответа transactions.changeTransactionProductCount

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если количество товара или тех. карты успешно изменено

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.removeTransactionProduct: Удалить товар из чека

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.removeTransactionProduct'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'product_id'     => 113,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод удаляет товар из чека

HTTP запрос

GET https://joinposter.com/api/transactions.removeTransactionProduct

POST-параметры запроса transactions.removeTransactionProduct

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
product_id Id товара или тех. карты
modificator_id Id модификатора товара, по умолчанию не передаётся
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.removeTransactionProduct

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если товар или тех. карта успешно удалена из чека

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.changeClient: Добавление клиента в чек

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.changeClient'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'client_id'      => 3,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод добавляет клиента в чек

HTTP запрос

GET https://joinposter.com/api/transactions.changeClient

POST-параметры запроса transactions.changeClient

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
client_id Id клиента
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.changeClient

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если клиент успешно добавлен в чек

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.changeComment: Добавление комментария в чек

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.changeComment'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'comment'        => 'День рождения',
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод добавляет комментарий в чек

HTTP запрос

GET https://joinposter.com/api/transactions.changeComment

POST-параметры запроса transactions.changeComment

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
comment Комментарий к чеку
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.changeComment

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если комментарий успешно добавлен

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.changeRecipientFor54FZ: Указание адресата

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.changeRecipientFor54FZ'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'type'           => 'email',
    'contact'        => 'admin@sample.com',
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод указывает адресат для получения копии фискального чека по 54-ФЗ

HTTP запрос

GET https://joinposter.com/api/transactions.changeRecipientFor54FZ

POST-параметры запроса transactions.changeRecipientFor54FZ

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
type Способ отправления копии фискального чека: email — через эл. почту, phone — через SMS (не передавать свойство, если нужно отвязать получателя)
contact Контакт получателя: эл. почта или номер телефона
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.changeRecipientFor54FZ

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если метод успешно отработал

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.closeTransaction: Закрытие чека

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.closeTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_id'        => 1,
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'payed_cash'     => 1000,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод закрывает чек

HTTP запрос

GET https://joinposter.com/api/transactions.closeTransaction

POST-параметры запроса transactions.closeTransaction

Параметр Описание
spot_id Id заведения
spot_tablet_id Id терминала
transaction_id Id чека
payed_cash Сумма оплаты наличным расчётом
payed_card Сумма оплаты безналичным расчётом
payed_cert Сумма оплаты сертификатом
reason Причина закрытия чека без оплаты: 1 — гость ушел, 2 — за счёт заведения, 3 — ошибка официанта. Обязательное поле для закрытия чека без оплаты, сумма всех оплат должна быть равна нулю. По умолчанию не передаётся.
print_fiscal Печатать фискального чека: 0 — не печатать, 1 — печатать. По умолчанию принимает 0.
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.closeTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если чек успешно закрыт

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

transactions.removeTransaction: Удаление чека

Пример запроса:

<?php
$url = 'https://joinposter.com/api/transactions.removeTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$transaction = [
    'spot_tablet_id' => 1,
    'transaction_id' => 1950,
    'user_id'        => 3,
];

$data = sendRequest($url, 'post', $transaction);

Пример ответа:

{  
  "response":{  
    "err_code":0
  }
}

Метод удаляет чек

HTTP запрос

GET https://joinposter.com/api/transactions.removeTransaction

POST-параметры запроса transactions.removeTransaction

Параметр Описание
spot_tablet_id Id терминала
transaction_id Id чека
user_id Id сотрудника
time Время операции в формате microtime, по умолчанию принимает текущее время

Параметры ответа transactions.removeTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
err_code 0, если чек успешно удалён

В ходе выполнения могут произойти общие ошибки, их описание находится в разделе Коды ошибок.

incomingOrders: Онлайн-заказы и бронирование

Методы для работы с онлайн-заказами и бронированием.

Онлайн-заказы — это заказы которые присылаются сторонними приложениями на терминал. Посмотрите видео о том как интернет-магазины интегрируются с Poster.

Бронирование позволяет резервировать столик для клиента на выбранное время и длительность. Посмотрите видео о том как работает бронирование в Poster.

incomingOrders.createIncomingOrder: Создание онлайн-заказа

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.createIncomingOrder'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$incoming_order = [
    'spot_id'   => 1,
    'phone'     => '+380680000000',
    'products'  => [
        [
            'product_id' => 169,
        ],
    ],
];

$data = sendRequest($url, 'post', $incoming_order);

Пример ответа:

{  
  "response":{  
    "incoming_order_id":2,
    "spot_id":1,
    "status":0,
    "client_id":0,
    "first_name":null,
    "last_name":null,
    "phone":null,
    "email":null,
    "sex":null,
    "birthday":null,
    "address":null,
    "comment":null,
    "created_at":"2017-10-27 11:47:19",
    "updated_at":"2017-10-27 11:47:19",
    "transaction_id":null,
    "fiscal_spreading":0,
    "fiscal_method":"",
    "products":[  
      {  
        "io_product_id":2,
        "product_id":169,
        "modificator_id":null,
        "incoming_order_id":2,
        "count":1,
        "created_at":"2017-10-27 11:47:19"
      }
    ]
  }
}

Пример запроса с автоприменением акций:

<?php
$url = 'https://joinposter.com/api/incomingOrders.createIncomingOrder'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$incoming_order = [
    "spot_id"   => 1,
    "products"  => [
        [
            "product_id"    => 139,
            "count"         => 1
        ]
    ],
    "promotion" => [
        [
            "id" => 1, 
            "involved_products" => [
                ["id" => 139, "count"  => 1]
            ],
            "result_products"   => [
                ["id" => 161]
            ]
        ]
    ]
];

$data = sendRequest($url, 'post', $incoming_order);

Пример ответа:

{
  "response":{
    "incoming_order_id":"106",
    "type":"1",
    "spot_id":"1",
    "status":0,
    "client_id":0,
    "first_name":null,
    "last_name":null,
    "phone":null,
    "email":null,
    "sex":null,
    "birthday":null,
    "address":null,
    "comment":null,
    "created_at":"2017-12-06 18:45:06",
    "updated_at":"2017-12-06 18:45:06",
    "transaction_id":null,
    "fiscal_spreading":"0",
    "fiscal_method":"",
    "promotion":"[{\"id\":1,\"involved_products\":[{\"id\":139,\"count\":1}],\"result_products\":[{\"id\":161}]}]",
    "products":[
      {
        "io_product_id":"194",
        "product_id":"139",
        "modificator_id":null,
        "incoming_order_id":"106",
        "count":"1.00000",
        "created_at":"2017-12-06 18:45:06"
      }
    ]
  }
}

Метод создаёт онлайн-заказ

HTTP POST запрос

POST https://joinposter.com/api/incomingOrders.createIncomingOrder

POST-параметры запроса incomingOrders.createIncomingOrder

Параметр Описание
spot_id Id заведения в которое придет онлайн заказ
client_id Id клиента в Poster, если id не указан, то нужно передать параметр phone. Poster попробует найти клиента с таким же номером телефона и привяжет его к заказу. Если это новый клиент, то официант выберет для него группу и Poster создаст нового клиента.
first_name Имя клиента, по умолчанию не передаётся
last_name Фамилия клиента, по умолчанию не передаётся
phone Телефон клиента, обязательный параметр если не указан client_id
email Эл. почта, по умолчанию не передаётся
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский. По умолчанию не передаётся.
birthday Дата рождения клиента, формат Y-m-d. По умолчанию не передаётся.
address Адрес клиента, по умолчанию не передаётся
comment Комментарий к онлайн-заказу, по умолчанию не передаётся
products Список товаров
payment Информация об оплате, по умолчанию не передаётся
promotion Список акций которые нужно применить к заказу

Внутри параметра products должен быть массив, в каждом элементе которого должны быть следующие параметры:

Параметр Описание
product_id Id товара
modificator_id Id модификатора товара
count Количество товара, по умолчанию принимает 1
price Цена товара в копейках, по умолчанию берется цена товара в указанном заведении

Внутри параметра payment должен быть объект, внутри которого должны быть следующие параметры:

Параметр Описание
type Признак, что была предварительная оплата: 0 — не была, 1 — была. По умолчанию принимает 0.
sum Сумма оплаты в копейках
currency ISO код валюты оплаты, должен совпадать с валютой аккаунта, например: UAH — гривна, RUB — рубль, USD — доллар

Внутри параметра promotion находится массив объектов, внутри каждого объекта есть следующие параметры:

Параметр Описание
id Id акции которую нужно применить
involved_products Массив товаров которые учавствую в акции.
result_products Массив товаров которые являются результатом акции. Нужно передавать только в бонусных акциях.

В массиве involved_products лежат объекты со следующими свойствами:

Параметр Описание
id Обязательный параметр, id товара который учавтсвует в акции
count Обязательный параметр, кол-во товара которое учавтвует в акции
modification Опциональный параметр, id модификации которая учавствует в акции

В массиве result_products лежат объекты со следующими свойствами:

Параметр Описание
id Обязательный параметр, id товара который нужно добавить в заказ как результат акции
count Обязательный параметр, кол-во товара которое нужно добавить а заказ
modification Опциональный параметр, id модификации которую нужно добавить как результат акции

Параметры ответа incomingOrders.createIncomingOrder

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id онлайн-заказа
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус заказа: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
transaction_id Id связанного чека
fiscal_spreading Опциональный параметр. Признак, как отправлять товары на фискальный регистратор: 1 — отправлять только фискальные товары, 2 - отправлять все товары, 3 - не отправлять товары.
fiscal_method Опциональный параметр, метод оплаты на фискальном регистраторе: cash – наличными, card — картой. По умолчанию cash.
products Список товаров

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
io_product_id Id товара в онлайн-заказе
product_id Id товара
modificator_id Id модификатора товара
incoming_order_id Id онлайн-заказа
count Количество товара в онлайн-заказе
created_at Дата добавления товара в онлайн-заказ

incomingOrders.getIncomingOrders: Список онлайн-заказов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getIncomingOrders'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&status=1'
 . '&date_from=2017-10-26+14:00:00'
 . '&date_to=2017-10-26+15:00:00';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "incoming_order_id":1,
      "spot_id":1,
      "status":1,
      "client_id":0,
      "first_name":"Антон",
      "last_name":"Талышкин",
      "phone":"79630313844",
      "email":"contact@joinposter.com",
      "sex":1,
      "birthday":"1986-11-23",
      "address":"ул. Малышева, 3",
      "comment":"",
      "created_at":"2017-10-26 14:58:02",
      "updated_at":"2017-10-26 15:25:17",
      "transaction_id":1949,
      "products":[  
        {  
          "io_product_id":1,
          "product_id":113,
          "modificator_id":null,
          "incoming_order_id":1,
          "count":1,
          "created_at":"2017-10-26 14:58:02"
        }
      ]
    }
  ]
}

Метод возвращает список онлайн-заказов

HTTP GET запрос

https://joinposter.com/api/incomingOrders.getIncomingOrders

GET-параметры запроса incomingOrders.getIncomingOrders

Параметр Описание
status Фильтр по статусу заказа: 0 — новый, 1 — принят, 7 — отменён. По умолчанию не передаётся.
date_from Дата и время начала выборки, формат “Y-m-d H:i:s”. По умолчанию не передаётся.
date_to Дата и время конца выборки, формат “Y-m-d H:i:s”. По умолчанию не передаётся.

Параметры ответа incomingOrders.getIncomingOrders

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
incoming_order_id Id онлайн-заказа
spot_id Id заведения
status Статус заказа: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
transaction_id Id связанного чека
products Список товаров

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
io_product_id Id товара в онлайн-заказе
product_id Id товара
modificator_id Id модификатора товара
incoming_order_id Id онлайн-заказа
count Количество товара в онлайн-заказе
created_at Дата добавления товара в онлайн-заказ

incomingOrders.getIncomingOrder: Свойства онлайн-заказа

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getIncomingOrder'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&incoming_order_id=1';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "incoming_order_id":1,
    "spot_id":1,
    "status":1,
    "client_id":0,
    "first_name":"Антон",
    "last_name":"Талышкин",
    "phone":"79630313844",
    "email":"contact@joinposter.com",
    "sex":1,
    "birthday":"1986-11-23",
    "address":"ул. Малышева, 3",
    "comment":"",
    "created_at":"2017-10-26 14:58:02",
    "updated_at":"2017-10-26 15:25:17",
    "transaction_id":1949,
    "products":[  
      {  
        "io_product_id":1,
        "product_id":113,
        "modificator_id":null,
        "incoming_order_id":1,
        "count":1,
        "created_at":"2017-10-26 14:58:02"
      }
    ]
  }
}

Метод возвращает свойства онлайн-заказа

HTTP GET запрос

https://joinposter.com/api/incomingOrders.getIncomingOrder

GET-параметры запроса incomingOrders.getIncomingOrder

Параметр Описание
incoming_order_id Id онлайн-заказа

Параметры ответа incomingOrders.getIncomingOrder

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id онлайн-заказа
spot_id Id заведения
status Статус заказа: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
transaction_id Id связанного чека
products Список товаров

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
io_product_id Id товара в онлайн-заказе
product_id Id товара
modificator_id Id модификатора товара
incoming_order_id Id онлайн-заказа
count Количество товара в онлайн-заказе
created_at Дата добавления товара в онлайн-заказ

incomingOrders.getOwnIncomingOrders: Список онлайн-заказов со своего приложения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getOwnIncomingOrders'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&status=1'
 . '&date_from=2017-10-26+14:00:00'
 . '&date_to=2017-10-26+15:00:00';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "incoming_order_id":1,
      "spot_id":1,
      "status":1,
      "client_id":0,
      "first_name":"Антон",
      "last_name":"Талышкин",
      "phone":"79630313844",
      "email":"contact@joinposter.com",
      "sex":1,
      "birthday":"1986-11-23",
      "address":"ул. Малышева, 3",
      "comment":"",
      "created_at":"2017-10-26 14:58:02",
      "updated_at":"2017-10-26 15:25:17",
      "transaction_id":1949,
      "products":[  
        {  
          "io_product_id":1,
          "product_id":113,
          "modificator_id":null,
          "incoming_order_id":1,
          "count":1,
          "created_at":"2017-10-26 14:58:02"
        }
      ]
    }
  ]
}

Метод возвращает список онлайн-заказов со своего приложения

HTTP GET запрос

https://joinposter.com/api/incomingOrders.getOwnIncomingOrders

GET-параметры запроса incomingOrders.getOwnIncomingOrders

Параметр Описание
status Фильтр по статусу заказа: 0 — новый, 1 — принят, 7 — отменён. По умолчанию не передаётся.
date_from Дата и время начала выборки, формат “Y-m-d H:i:s”. По умолчанию не передаётся.
date_to Дата и время конца выборки, формат “Y-m-d H:i:s”. По умолчанию не передаётся.

Параметры ответа incomingOrders.getOwnIncomingOrders

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
incoming_order_id Id онлайн-заказа
spot_id Id заведения
status Статус заказа: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
transaction_id Id связанного чека
products Список товаров

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
io_product_id Id товара в онлайн-заказе
product_id Id товара
modificator_id Id модификатора товара
incoming_order_id Id онлайн-заказа
count Количество товара в онлайн-заказе
created_at Дата добавления товара в онлайн-заказ

incomingOrders.getOwnIncomingOrder: Свойства онлайн-заказа со своего приложения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getOwnIncomingOrder'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&incoming_order_id=1';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "incoming_order_id":1,
    "spot_id":1,
    "status":1,
    "client_id":0,
    "first_name":"Антон",
    "last_name":"Талышкин",
    "phone":"79630313844",
    "email":"contact@joinposter.com",
    "sex":1,
    "birthday":"1986-11-23",
    "address":"ул. Малышева, 3",
    "comment":"",
    "created_at":"2017-10-26 14:58:02",
    "updated_at":"2017-10-26 15:25:17",
    "transaction_id":1949,
    "products":[  
      {  
        "io_product_id":1,
        "product_id":113,
        "modificator_id":null,
        "incoming_order_id":1,
        "count":1,
        "created_at":"2017-10-26 14:58:02"
      }
    ]
  }
}

Метод возвращает свойства онлайн-заказа со своего приложения

HTTP GET запрос

https://joinposter.com/api/incomingOrders.getOwnIncomingOrder

GET-параметры запроса incomingOrders.getOwnIncomingOrder

Параметр Описание
incoming_order_id Id онлайн-заказа

Параметры ответа incomingOrders.getOwnIncomingOrder

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id онлайн-заказа
spot_id Id заведения
status Статус заказа: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
transaction_id Id связанного чека
products Список товаров

Внутри параметра products лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
io_product_id Id товара в онлайн-заказе
product_id Id товара
modificator_id Id модификатора товара
incoming_order_id Id онлайн-заказа
count Количество товара в онлайн-заказе
created_at Дата добавления товара в онлайн-заказ

incomingOrders.createReservation: Создание брони

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.createReservation'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$reservation = [
    'spot_id'           => '1',
    'phone'             => '+380684112224',
    'table_id'          => '1',
    'guests_count'      => '1',
    'duration'          => '2000',
    'date_reservation'  => '2018-03-22 16:20:00'
];

$data = sendRequest($url, 'post', $reservation);

Пример ответа:

{
   "response":{
      "incoming_order_id":"4",
      "type":"2",
      "spot_id":"1",
      "status":0,
      "client_id":4985,
      "first_name":"Владимир",
      "last_name":"Иванов",
      "phone":"380684112224",
      "email":"example@gmail.com",
      "sex":"2",
      "birthday":"1996-08-26",
      "address":"",
      "guests_count":"1",
      "comment":"",
      "created_at":"2018-03-22 17:02:41",
      "updated_at":"2018-03-22 17:02:41",
      "transaction_id":null,
      "fiscal_spreading":"0",
      "fiscal_method":"",
      "promotion":null,
      "date_reservation":"2018-03-22 18:20:00",
      "duration":"2000"
   }
}

Метод создает бронь стола на указанное время и клиента

HTTP POST запрос

POST https://joinposter.com/api/incomingOrders.createReservation

POST-параметры запроса incomingOrders.createReservation

Параметр Описание
spot_id Обязательный параметр, id заведения в которое придет онлайн-заказ
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование
table_id Обязательный параметр, id столика который бронируют
guests_count Количество гостей на которых бронируем столик
date_reservation Обязательный параметр, дата начала брони в формате Y-m-d H:i:s
duration Обязательный параметр, длительность брони в секундах. Должен быть не меньше 1800 секунд (пол часа).
client_id Id клиента в Poster, по умолчанию не передаётся. Если id не указан, то Poster попробует найти клиента с таким же номером телефона и привяжет его к заказу. Если это новый клиент, то официант выберет для него группу и Poster создаст нового клиента.
phone Телефон клиента, по умолчанию не передаётся
first_name Имя клиента, по умолчанию не передаётся
last_name Фамилия клиента, по умолчанию не передаётся
email Эл. почта, по умолчанию не передаётся
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский. По умолчанию не передаётся.
birthday Дата рождения клиента, формат Y-m-d. По умолчанию не передаётся.
address Адрес клиента, по умолчанию не передаётся
comment Комментарий к брони, по умолчанию не передаётся

Параметры ответа incomingOrders.createReservation

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id брони
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус брони: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
guests_count Количество гостей на которых бронируем столик
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к онлайн-заказу
created_at Дата создания онлайн-заказа
updated_at Дата изменения статуса онлайн-заказа
date_reservation Дата начала брони в формате Y-m-d H:i:s
duration Длительность брони в секундах

incomingOrders.getTablesForReservation: Список столов для брони

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getTablesForReservation'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&date_reservation=15-07-2018 13:34'
 . '&duration=7200'
 . '&spot_id=1'
 . '&guests_count=3';

$data = sendRequest($url);

Пример ответа:

{
   "response":{
      "freeTables":[
         {
            "table_id":"85",
            "table_num":"2",
            "table_capacity":"3",
            "spot_id":"2",
            "hall_id":"5"
         },
         {
            "table_id":"98",
            "table_num":"9",
            "table_capacity":"3",
            "spot_id":"1",
            "hall_id":"3"
         },
         {
            "table_id":"91",
            "table_num":"2",
            "table_capacity":"4",
            "spot_id":"1",
            "hall_id":"3"
         },
         {
            "table_id":"94",
            "table_num":"5",
            "table_capacity":"5",
            "spot_id":"1",
            "hall_id":"3"
         }
      ]
   }
}

Метод возвращает доступные столы для бронирования

HTTP GET запрос

GET https://joinposter.com/api/incomingOrders.getTablesForReservation

GET-параметры запроса incomingOrders.getTablesForReservation

Параметр Описание
spot_id Обязательный параметр, id заведения в которое придет онлайн-заказ
date_reservation Обязательный параметр, дата начала брони в формате Y-m-d H:i:s
duration Обязательный параметр, длительность брони в секундах. Должен быть не меньше 1800 секунд (пол часа).
guests_count Количество гостей на которых бронируем столик

Параметры ответа incomingOrders.getTablesForReservation

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
freeTables Массив из объектов, содержит доступные столики для бронирования

Внутри параметра freeTables лежит объект, внутри которого есть следующие параметры:

Параметр Описание
table_id Id стола
table_num Номер стола
spot_id Id заведения
hall_id Id зала
table_capacity Максимальное количество гостей за столом

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

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getReservations'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "incoming_order_id":"3",
         "spot_id":"1",
         "status":0,
         "client_id":4985,
         "first_name":"Степан",
         "last_name":"Созонов",
         "phone":"380912152764",
         "email":null,
         "sex":"2",
         "birthday":"1996-08-26",
         "address":null,
         "comment":null,
         "created_at":"2018-03-22 16:50:18",
         "updated_at":"2018-03-22 16:50:18",
         "transaction_id":null,
         "guests_count":"1",
         "duration":"2000",
         "date_reservation":"2018-03-22 18:20:00"
      },
      {
         "incoming_order_id":"4",
         "spot_id":"1",
         "status":1,
         "client_id":4985,
         "first_name":"Владимир",
         "last_name":"Иванченко",
         "phone":"380684111264",
         "email":"vlm.iva@gmail.com",
         "sex":"2",
         "birthday":"1996-08-26",
         "address":"московская 9",
         "comment":"Подготовить вазу для цветов",
         "created_at":"2018-03-22 17:02:41",
         "updated_at":"2018-03-22 17:02:52",
         "transaction_id":"428929",
         "guests_count":"1",
         "duration":"2000",
         "date_reservation":"2018-03-22 18:20:00"
      }
   ]
}

Метод возвращает список броней

HTTP GET запрос

GET https://joinposter.com/api/incomingOrders.getReservations

GET-параметры запроса incomingOrders.getReservations

Параметр Описание
status Фильтр по статусу брони: 0 — новый, 1 — принят, 7 — отменён. По умолчанию не передаётся.
date_from Дата и время начала выборки, формат Y-m-d H:i:s. По умолчанию не передаётся.
date_to Дата и время конца выборки, формат Y-m-d H:i:s. По умолчанию не передаётся.

Параметры ответа incomingOrders.getReservations

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
incoming_order_id Id брони
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус брони: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к брони
created_at Дата создания брони
updated_at Дата изменения статуса брони
date_reservation Дата начала брони в формате Y-m-d H:i:s
duration Длительность брони в секундах

incomingOrders.getReservation: Свойства брони

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getReservation'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&incoming_order_id=3';

$data = sendRequest($url);

Пример ответа:

{
   "response":{
      "incoming_order_id":"3",
      "spot_id":"1",
      "status":0,
      "client_id":4985,
      "first_name":"Степан",
      "last_name":"Созонов",
      "phone":"380912152764",
      "email":null,
      "sex":"2",
      "birthday":"1996-08-26",
      "address":"московская 9",
      "comment":"Подготовить вазу для цветов",
      "created_at":"2018-03-22 16:50:18",
      "updated_at":"2018-03-22 16:50:18",
      "transaction_id":null,
      "guests_count":"1",
      "duration":"2000",
      "date_reservation":"2018-03-22 18:20:00"
   }
}

Метод возвращает свойства брони

HTTP GET запрос

GET https://joinposter.com/api/incomingOrders.getReservation

GET-параметры запроса incomingOrders.getReservation

Параметр Описание
incoming_order_id Id брони

Параметры ответа incomingOrders.getReservation

Параметр Описание
response Массив объектов

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id брони
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус брони: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к брони
created_at Дата создания брони
updated_at Дата изменения брони
date_reservation Дата начала брони в формате Y-m-d H:i:s
duration Длительность брони в секундах

incomingOrders.getOwnReservations: Список броней со своего приложения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getOwnReservations'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{
   "response":[
      {
         "incoming_order_id":"3",
         "spot_id":"1",
         "status":0,
         "client_id":4985,
         "first_name":"Степан",
         "last_name":"Созонов",
         "phone":"380912152764",
         "email":null,
         "sex":"2",
         "birthday":"1996-08-26",
         "address":null,
         "comment":null,
         "created_at":"2018-03-22 16:50:18",
         "updated_at":"2018-03-22 16:50:18",
         "transaction_id":null,
         "guests_count":"1",
         "duration":"2000",
         "date_reservation":"2018-03-22 18:20:00"
      },
      {
         "incoming_order_id":"4",
         "spot_id":"1",
         "status":1,
         "client_id":4985,
         "first_name":"Владимир",
         "last_name":"Иванченко",
         "phone":"380684111264",
         "email":"vlm.iva@gmail.com",
         "sex":"2",
         "birthday":"1996-08-26",
         "address":"московская 9",
         "comment":"Подготовить вазу для цветов",
         "created_at":"2018-03-22 17:02:41",
         "updated_at":"2018-03-22 17:02:52",
         "transaction_id":"428929",
         "guests_count":"1",
         "duration":"2000",
         "date_reservation":"2018-03-22 18:20:00"
      }
   ]
}

Метод возвращает список броней

HTTP GET запрос

GET https://joinposter.com/api/incomingOrders.getOwnReservations

GET-параметры запроса incomingOrders.getOwnReservations

Параметр Описание
status Фильтр по статусу брони: 0 — новый, 1 — принят, 7 — отменён. По умолчанию не передаётся.
date_from Дата и время начала выборки, формат Y-m-d H:i:s. По умолчанию не передаётся.
date_to Дата и время конца выборки, формат Y-m-d H:i:s. По умолчанию не передаётся.

Параметры ответа incomingOrders.getOwnReservations

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
incoming_order_id Id брони
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус брони: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к брони
created_at Дата создания брони
updated_at Дата изменения статуса брони
date_reservation Дата начала брони в формате Y-m-d H:i:s
duration Длительность брони в секундах

incomingOrders.getOwnReservation: Свойства брони со своего приложения

Пример запроса:

<?php
$url = 'https://joinposter.com/api/incomingOrders.getOwnReservation'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&incoming_order_id=3';

$data = sendRequest($url);

Пример ответа:

{
   "response":{
      "incoming_order_id":"3",
      "spot_id":"1",
      "status":0,
      "client_id":4985,
      "first_name":"Степан",
      "last_name":"Созонов",
      "phone":"380912152764",
      "email":null,
      "sex":"2",
      "birthday":"1996-08-26",
      "address":"московская 9",
      "comment":"Подготовить вазу для цветов",
      "created_at":"2018-03-22 16:50:18",
      "updated_at":"2018-03-22 16:50:18",
      "transaction_id":null,
      "guests_count":"1",
      "duration":"2000",
      "date_reservation":"2018-03-22 18:20:00"
   }
}

Метод возвращает свойства брони

HTTP GET запрос

GET https://joinposter.com/api/incomingOrders.getOwnReservation

GET-параметры запроса incomingOrders.getOwnReservation

Параметр Описание
incoming_order_id Id брони

Параметры ответа incomingOrders.getOwnReservation

Параметр Описание
response Массив объектов

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
incoming_order_id Id брони
type Тип заказа: 1 — онлайн-заказ, 2 — бронирование. Для этого метода всегда равен 2.
spot_id Id заведения
status Статус брони: 0 — новый, 1 — принят, 7 — отменён
client_id Id клиента
first_name Имя клиента
last_name Фамилия клиента
phone Телефон клиента
email Эл. почта клиента
sex Пол клиента: 0 — не указан, 1 — мужской, 2 — женский
birthday Дата рождения клиента, формат Y-m-d
address Адрес клиента
comment Комментарий к брони
created_at Дата создания брони
updated_at Дата изменения брони
date_reservation Дата начала брони в формате Y-m-d H:i:s
duration Длительность брони в секундах

spots: Заведения

Методы для работы с разделом заведений. Все методы данного раздела начинаются с «spots».

spots.getSpotTablesHalls: Список залов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/spots.getSpotTablesHalls'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "hall_id":"3",
      "hall_name":"Зал в кафе на Полянке",
      "hall_order":"1",
      "spot_id":"1",
      "delete":"0",
      "last_modified_time":"2017-06-22 13:54:58"
    },
    {  
      "hall_id":"5",
      "hall_name":"Зал у львівській кав&#39;ярні",
      "hall_order":"2",
      "spot_id":"2",
      "delete":"0",
      "last_modified_time":"2017-06-22 13:54:58"
    }
  ]
}

Метод возвращает список залов

HTTP запрос

GET https://joinposter.com/api/spots.getSpotTablesHalls

Параметры ответа spots.getSpotTablesHalls

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
hall_id Id зала
hall_name Название зала
hall_order Порядок залов
spot_id Id заведения
delete Признак, что зал удалён: 0 — не удалён, 1 — удалён
last_modified_time Время последнего изменения свойств зала

spots.getTableHallTables: Список столов

Пример запроса:

<?php
$url = 'https://joinposter.com/api/spots.getTableHallTables'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&spot_id=1'
 . '&hall_id=3'
 . '&without_deleted=1';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "table_id":"3",
      "table_num":"1",
      "table_title":"Возле барной стойки",
      "spot_id":"1",
      "table_shape":"square",
      "hall_id":"1",
      "table_x":"9",
      "table_y":"12",
      "table_height":"4",
      "table_width":"8",
      "is_deleted":"0",
      "status":"1"
    },
    {  
      "table_id":"4",
      "table_num":"2",
      "table_title":"Дальний",
      "spot_id":"1",
      "table_shape":"circle",
      "hall_id":"1",
      "table_x":"15",
      "table_y":"11",
      "table_height":"10",
      "table_width":"13",
      "is_deleted":"0",
      "status":"2"
    }
  ]
}

Метод возвращает список столов

HTTP запрос

GET https://joinposter.com/api/spots.getTableHallTables

GET-параметры запроса spots.getTableHallTables

Параметр Описание
spot_id Id заведения, по умолчанию не передаётся
hall_id Id зала, по умолчанию не передаётся
without_deleted Признак, возвращать ли без удалённых столов: 0 — с удалёнными столами, 1 — без удалённых столов. По умолчанию принимает 0.

Параметры ответа spots.getTableHallTables

Параметр Описание
response Массив объектов

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
table_id Id стола
table_num Номер стола
table_title Название стола
spot_id Id заведения
table_shape Форма стола: square — прямоугольная, circle — с закруглёнными краями
hall_id Id зала
table_x Координаты стола по оси X
table_y Координаты стола по оси Y
table_height Высота стола
table_width Ширина стола
is_deleted Признак, что стол удалён: 0 — не удалён, 1 — удалён
status Признак, есть ли на столе открытые заказы: 1 — нету открытых заказов, 2 — есть открытые заказы

finance: Финансы

Методы для работы с разделом финансов. Все методы данного раздела начинаются с «finance».

finance.getCashShifts: Список кассовых смен

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getCashShifts'
    . '?token=687409:4164553abf6a031302898da7800b59fb'
    . '&dateFrom=20170701'
    . '&dateTo=20170901';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "cash_shift_id":333,
      "spot_id":1,
      "timestart":1505977200000,
      "timeend":1505980800000,
      "amount_start":10000,
      "amount_end":10000,
      "amount_debit":0,
      "amount_sell_cash":0,
      "amount_sell_card":0,
      "amount_credit":0,
      "amount_collection":0,
      "user_id_start":3,
      "user_id_end":3,
      "comment":"бар",
      "spot_name":"Киоск",
      "spot_adress":"ул. Вокзальная, 12",
      "table_num":"0"
    }
  ]
}

Метод возвращает список кассовых смен

HTTP запрос

GET https://joinposter.com/api/finance.getCashShifts

GET-параметры запроса finance.getCashShifts

Параметр Описание
spot_id Опциональный параметр, Id заведения по которому возвращать статистику
dateFrom Обязательный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Обязательный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.

Параметры ответа finance.getCashShifts

Параметр Описание
response Массив кассовых смен

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
cash_shift_id Id кассовой смены
spot_id Id заведения
timestart Дата и время открытия кассовой смены, формат microtime
timeend Дата и время закрытия кассовой смены, формат microtime
amount_start Сумма в кассе при открытии кассовой смены в копейках
amount_end Сумма в кассе при закрытии кассовой смены в копейках
amount_debit Сумма приходов в копейках
amount_sell_cash Сумма выручки наличной оплаты в копейках
amount_sell_card Сумма выручки безналичной оплаты в копейках
amount_credit Сумма расходов в копейках
amount_collection Сумма инкассаций в копейках
user_id_start Id сотрудника открывшего кассовую смену
user_id_end Id сотрудника закрывшего кассовую смену
comment Комментарий
spot_name Название заведения
spot_adress Адрес заведения

finance.getCashShift: Свойства кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getCashShift'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&cash_shift_id=333';

$data = sendRequest($url);

Пример ответа:

{  
  "response":{  
    "cash_shift_id":333,
    "spot_id":1,
    "timestart":1505977200000,
    "timeend":1505980800000,
    "amount_start":10000,
    "amount_end":10000,
    "amount_debit":0,
    "amount_sell_cash":0,
    "amount_sell_card":0,
    "amount_credit":0,
    "amount_collection":0,
    "user_id_start":3,
    "user_id_end":3,
    "comment":"бар"
  }
}

Метод возвращает свойства кассовой смены

HTTP запрос

GET https://joinposter.com/api/finance.getCashShift

GET-параметры запроса finance.getCashShift

Параметр Описание
cash_shift_id Обязательный параметр, id кассовой смены

Параметры ответа finance.getCashShift

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
cash_shift_id Id кассовой смены
spot_id Id заведения
timestart Дата и время открытия кассовой смены, формат microtime
timeend Дата и время закрытия кассовой смены, формат microtime
amount_start Сумма в кассе при открытии кассовой смены в копейках
amount_end Сумма в кассе при закрытии кассовой смены в копейках
amount_debit Сумма приходов в копейках
amount_sell_cash Сумма выручки наличной оплаты в копейках
amount_sell_card Сумма выручки безналичной оплаты в копейках
amount_credit Сумма расходов в копейках
amount_collection Сумма инкассаций в копейках
user_id_start Id сотрудника открывшего кассовую смену
user_id_end Id сотрудника закрывшего кассовую смену
comment Комментарий

finance.openCashShift: Открытие кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.openCashShift'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$cash_shift = [
    'spot_id'   => 1,
    'user_id'   => 1,
    'amount'    => 123.45,
    'time'      => '2017-09-21 10:00',
    'is_fiscal' => 1,
];

$data = sendRequest($url, 'post', $cash_shift);

Пример ответа:

{  
  "response":{  
    "cash_shift_id":333
  }
}

Метод открывает кассовую смену

HTTP запрос

GET https://joinposter.com/api/finance.openCashShift

POST-параметры запроса finance.openCashShift

Параметр Описание
spot_id Id заведения
user_id Id сотрудника
amount Сумма в кассе при открытии кассовой смены в гривнах\рублях
time Дата и время открытия кассовой смены в минутах в формате Y-m-d H:i
is_fiscal Признак, что транзакция открытия кассовой смены фискальная: 0 — не фискальная, 1 — фискальная. По умолчанию принимает 0.

Параметры ответа finance.openCashShift

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
cash_shift_id Id открытой кассовой смены

finance.closeCashShift: Закрытие кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.closeCashShift'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$cash_shift = [
    'cash_shift_id' => 335,
    'user_id'       => 3,
    'amount'        => 234.56,
    'time'          => '2017-09-21 20:00',
    'is_fiscal'     => 1,
    'comment'       => 'бар',
];

$data = sendRequest($url, 'post', $cash_shift);

Пример ответа:

{  
  "response":true
}

Метод закрывает кассовую смену

HTTP запрос

POST https://joinposter.com/api/finance.closeCashShift

POST-параметры запроса finance.closeCashShift

Параметр Описание
cash_shift_id Id кассовой смены
user_id Id сотрудника
amount Сумма в кассе при закрытии кассовой смены в гривнах\рублях
time Дата и время закрытия кассовой смены с точностью до минут в формате Y-m-d H:i
is_fiscal Признак, что транзакция закрытия кассовой смены фискальная: 0 — не фискальная, 1 — фискальная. По умолчанию принимает 0.
comment Комментарий к кассовой смене. По умолчанию не передаётся.

Параметры ответа finance.closeCashShift

Параметр Описание
response true, если кассовая смена успешно закрыта

finance.getCashShiftTransactions: Список транзакций кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getCashShiftTransactions'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&shift_id=333';

$data = sendRequest($url);

Пример ответа:

{  
  "response":[  
    {  
      "shift_tr_id":1648,
      "shift_id":333,
      "time":1505980800000,
      "type":5,
      "tr_amount":10000,
      "user_id":3,
      "comment":"бар",
      "shift_tr_id_edit":0,
      "user_id_edit":0,
      "edit_time":0,
      "edit":0,
      "delete":0,
      "is_fiscal":0
    },
    {  
      "shift_tr_id":1647,
      "shift_id":333,
      "time":1505977200000,
      "type":1,
      "tr_amount":10000,
      "user_id":3,
      "comment":"",
      "shift_tr_id_edit":0,
      "user_id_edit":0,
      "edit_time":0,
      "edit":0,
      "delete":0,
      "is_fiscal":1
    }
  ]
}

Метод возвращает список транзакций кассовой смены

HTTP запрос

GET https://joinposter.com/api/finance.getCashShiftTransactions

GET-параметры запроса finance.getCashShiftTransactions

Параметр Описание
shift_id Обязательный параметр, id кассовой смены по которой возвращать транзкации

Параметры ответа finance.getCashShiftTransactions

Параметр Описание
response Массив транзакций кассовой смены

Внутри параметра response лежит массив, в каждом элементе которого есть следующие параметры:

Параметр Описание
shift_tr_id Id транзакции кассовой смены
shift_id Id кассовой смены
time Дата и время транзакции кассовой смены, формат microtime
type Тип транзакции кассовой смены: 1 — открытие, 2 — доход, 3 — расход, 4 — инкассация, 5 — закрытие.
tr_amount Сумма транзакции кассовой смены
user_id Id сотрудника
comment Комментарий
shift_tr_id_edit Id транзакции кассовой смены от которой было редактирование. Если редактирования не было, возвращает 0.
user_id_edit Id сотрудника который редактировал транзакцию кассовой смены. Если редактирования не было, возвращает 0.
edit_time Время редактирования транзакции кассовой смены. Если редактирования не было, возвращает 0.
edit Признак, что транзакция кассовой смены отредактирована: 0 — не редактировалась, 1 — редактировалась.
delete Признак, что транзакция кассовой смены удалена: 0 — не удалена, 1 — удалена.
is_fiscal Признак, что транзакция кассовой смены фискальная: 0 — не фискальная, 1 — фискальная.

finance.getCashShiftTransaction: Свойства транзакции кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getCashShiftTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&shift_id=333';

$data = sendRequest($url);

Пример ответа:

{  
   "response":{  
      "shift_tr_id":"840",
      "shift_id":"333",
      "time":"1496566557633",
      "type":"5",
      "tr_amount":"500000",
      "user_id":"1",
      "comment":"",
      "shift_tr_id_edit":"0",
      "user_id_edit":"0",
      "edit_time":"0",
      "edit":"0",
      "delete":"0",
      "is_fiscal":"0"
   }
}

Метод возвращает свойства транзакции кассовой смены

HTTP запрос

GET https://joinposter.com/api/finance.getCashShiftTransaction

GET-параметры запроса finance.getCashShiftTransactions

Параметр Описание
cash_shift_transaction_id Обязательный параметр, id кассовой смены по которой возвращать транзакации

Параметры ответа finance.getCashShiftTransactions

Параметр Описание
response Объкт транзакции кассовой смены

Внутри параметра response лежит объект, в котором есть следующие параметры:

Параметр Описание
shift_tr_id Id транзакции кассовой смены
shift_id Id кассовой смены
time Дата и время транзакции кассовой смены, формат microtime
type Тип транзакции кассовой смены: 1 — открытие, 2 — доход, 3 — расход, 4 — инкассация, 5 — закрытие.
tr_amount Сумма транзакции кассовой смены
user_id Id сотрудника
comment Комментарий
shift_tr_id_edit Id транзакции кассовой смены от которой было редактирование. Если редактирования не было, возвращает 0.
user_id_edit Id сотрудника который редактировал транзакцию кассовой смены. Если редактирования не было, возвращает 0.
edit_time Время редактирования транзакции кассовой смены. Если редактирования не было, возвращает 0.
edit Признак, что транзакция кассовой смены отредактирована: 0 — не редактировалась, 1 — редактировалась.
delete Признак, что транзакция кассовой смены удалена: 0 — не удалена, 1 — удалена.
is_fiscal Признак, что транзакция кассовой смены фискальная: 0 — не фискальная, 1 — фискальная.

finance.createCashShiftTransaction: Создание транзакции кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.createCashShiftTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$cash_shift_transaction = [
    'cash_shift_id' => 333,
    'type_id'       => 3,
    'category_id'   => 4,
    'user_id'       => 1,
    'amount'        => 499.99,
    'time'          => '2017-09-21 15:00',
    'is_fiscal'     => 1,
    'comment'       => 'Расход',
];

$data = sendRequest($url, 'post', $cash_shift_transaction);

Пример ответа:

{  
  "response":{  
    "cash_shift_transaction_id":1649
  }
}

Метод создаёт транзакцию кассовой смены

HTTP запрос

GET https://joinposter.com/api/finance.createCashShiftTransaction

POST-параметры запроса finance.createCashShiftTransaction

Параметр Описание
cash_shift_id Id кассовой смены
type_id Тип транзакции кассовой смены: 2 — доход, 3 — расход, 4 — инкассация.
category_id Id финансовой категории. Обязательное поле, если тип транзакции кассовой смены 2 или 3 и к заведению привязан счёт для наличных.
user_id Id сотрудника
amount Сумма транзакции кассовой смены
time Дата и время транзакции кассовой смены в формате Y-m-d H:i
is_fiscal Признак, что транзакция кассовой смены фискальная: 0 — не фискальная, 1 — фискальная. По умолчанию принимает 0.
comment Комментарий

Параметры ответа finance.createCashShiftTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
cash_shift_transaction_id Id транзакции кассовой смены

finance.updateCashShiftTransaction: Изменение свойств транзакции кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.updateCashShiftTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$cash_shift_transaction = [
    'cash_shift_transaction_id' => 611,
    'type_id'                   => 3,
    'category_id'               => 4,
    'user_id'                   => 3,
    'amount'                    => 499.99,
    'time'                      => '2017-09-21 15:00',
    'is_fiscal'                 => 1,
    'comment'                   => 'Расход',
];

$data = sendRequest($url, 'post', $cash_shift_transaction);

Пример ответа:

{  
  "response":{  
    "cash_shift_transaction_id":1650
  }
}

Метод изменяет свойства транзакции кассовой смены

HTTP запрос

GET https://joinposter.com/api/finance.updateCashShiftTransaction

POST-параметры запроса finance.updateCashShiftTransaction

Параметр Описание
cash_shift_transaction_id Id транзакции кассовой смены
type_id Тип транзакции кассовой смены: 1 — открытие, 2 — доход, 3 — расход, 4 — инкассация, 5 — закрытие. Типы 1 и 5 изменять нельзя. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
category_id Id финансовой категории. Обязательное поле, если тип транзакции кассовой смены 2 или 3 и к заведению привязан счёт для наличных. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
user_id Id сотрудника. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
amount Сумма транзакции кассовой смены. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
time Дата и время транзакции кассовой смены, формат “Y-m-d H:i”. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
is_fiscal Признак, что транзакция кассовой смены фискальная: 0 — не фискальная, 1 — фискальная. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.
comment Комментарий. По умолчанию принимает предыдущее значение редактируемой транзакции кассовой смены.

Параметры ответа finance.updateCashShiftTransaction

Параметр Описание
response Объект ответа

Внутри параметра response лежит объект, внутри которого есть следующие параметры:

Параметр Описание
cash_shift_transaction_id Новый id транзакции кассовой смены

finance.removeCashShiftTransaction: Удаление транзакции кассовой смены

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.removeCashShiftTransaction'
 . '?token=687409:4164553abf6a031302898da7800b59fb';

$cash_shift_transaction = [
    'cash_shift_transaction_id' => 611,
];

$data = sendRequest($url, 'post', $cash_shift_transaction);

Пример ответа:

{  
  "response":true
}

Метод удаляет транзакцию кассовой смены.

HTTP запрос

GET https://joinposter.com/api/finance.removeCashShiftTransaction

POST-параметры запроса finance.removeCashShiftTransaction

Параметр Описание
cash_shift_transaction_id Id транзакции кассовой смены

Параметры ответа finance.removeCashShiftTransaction

Параметр Описание
response true, если транзакция кассовой смены успешно удалена

finance.getTransactions: Получить все транзакции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getTransactions'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&dateFrom=20170701'
 . '&dateTo=20170901';


$data = sendRequest($url);

Пример ответа:

{
  "response":[
    {
      "transaction_id":"538",
      "account_id":"1",
      "user_id":"1",
      "category_id":"7",
      "type":"0",
      "amount":"-8137663",
      "balance":"545516997964",
      "date":"2017-08-31 09:20:22",
      "recipient_type":"0",
      "recipient_id":"0",
      "binding_type":"15",
      "binding_id":"400",
      "comment":"Корректирующая транзакция",
      "delete":"0",
      "account_name":"Наличные в заведении",
      "currency_symbol":"<i class=\"icon-rouble\"><\/i>",
      "category_name":"Actualization"
    },
    {
      "transaction_id":"536",
      "account_id":"1",
      "user_id":"1",
      "category_id":"2",
      "type":"1",
      "amount":"8148663",
      "balance":"545525135627",
      "date":"2017-08-31 09:20:21",
      "recipient_type":"0",
      "recipient_id":"0",
      "binding_type":"11",
      "binding_id":"400",
      "comment":"Закрытие наличной кассы",
      "delete":"0",
      "account_name":"Наличные в заведении",
      "currency_symbol":"<i class=\"icon-rouble\"><\/i>",
      "category_name":"Cash register shifts"
    }
  ]
}

Метод возвращает все транзакции

HTTP запрос

GET https://joinposter.com/api/finance.getTransactions

GET-параметры запроса finance.getTransactions

Параметр Описание
account_id Опциональный параметр, id счета, по умолчанию по всем счетам
category_id Опциональный параметр, id категории, по умолчанию по всем категориям
dateFrom Обязательный параметр, дата начала выборки в формате Ymd, включительно. По умолчанию дата месяц назад.
dateTo Опциональный параметр, дата конца выборки в формате Ymd, включительно. По умолчанию дата текущего дня.
pretty Опциональный параметр, возвращать данные в человекочитаемом формате. Все системные транзакии будут сведены к приходным или расходным транзакциям.

Параметры ответа finance.getTransactions

Параметр Описание
response Массив транзакций

Внутри параметра response лежит массив объектов, в каждом элементе которого есть следующие параметры:

Параметр Описание
transaction_id id транзакции
account_id id счета
user_id id официанта
category_id id категории, по умолчанию по всем категориям
type Тип транзакции: 0 — расход, 1 — доход
amount Сумма транзакции в копейках
balance Баланс на счете в копейках
date Дата проведения транзакции
recipient_type Тип принимающей сущности: 1 — перевод, 12 — поставщик
recipient_id id принимающей сущности
binding_type Тип соответствующей сущности: 1 — перевод, 12 — закрытие смены, 13 — поставка, 14 — транзакции кассовой смены
binding_id id соответствующей сущности
comment Комментарий
delete Удалена ли транзакция: 0 — транзакция не удалена, 1 — транзакция удалена
account_name Название счета
category_nam Название категории
currency_symbol Unicode символ валюты, для рубля, драма и маната приходит HTML который на терминале отобразиться как иконка валюты

finance.getTransaction: Свойства транзакции

Пример запроса:

<?php
$url = 'https://joinposter.com/api/finance.getTransactions'
 . '?token=687409:4164553abf6a031302898da7800b59fb'
 . '&dateFrom=20170701'
 . '&dateTo=20170901'
 . '&transaction_id=538';


$data = sendRequest($url);

Пример ответа:

{
    "response": {
        "transaction_id": "538",
        "account_id": "1",
        "user_id": "1",