База знаний Restoplace ›

Restoplace Public API

API Restoplace позволяет интегрировать бронирования, столы и залы, события и билеты, купленные сертификаты, а также расчёт депозита. Через API можно проверять свободное время, создавать и изменять брони, получать справочники, управлять билетами и сертификатами. Все запросы отправляйте на https://api.restoplace.cc.

Публичный APIhttps://api.restoplace.cc

Версия документации: 1.0.0

Первый запрос

  1. Получите ключ заведения

    Откройте настройки нужного адреса, затем «Интеграции» → «API / Webhook». Как получить ключ

  2. Запросите информацию

    Подставьте ключ в пример и выполните запрос с вашего сервера. Для /info нужно право «Информация о заведении».

  3. Перейдите к своей задаче

    Получить бронирования, проверить доступность или найти билеты.

GET /info · cURL
curl --request GET \
  'https://api.restoplace.cc/info' \
  --header 'X-API-Key: YOUR_API_KEY'

Замените YOUR_API_KEY своим ключом. Храните его на сервере: ключ не должен попадать в код публичной страницы.

Данные ответа находятся в responseData. Как читать ответ и обрабатывать ошибки

Ключ и авторизация

Где взять ключ

  1. В личном кабинете Restoplace откройте нужный адрес.
  2. В правом верхнем углу нажмите «Настройки адреса».
  3. В левом меню раскройте «Интеграции» и выберите «API / Webhook».
  4. Включите переключатель «Включить API».
  5. Если ключ уже есть, выделите и скопируйте его. Если ключ ещё не создан, нажмите «Обновить ключ api», затем скопируйте появившийся ключ.

Доступ зависит от лицензии заведения и прав ключа.

Как открыть настройки адреса, перейти в Интеграции → API / Webhook и скопировать API-ключ

Способ авторизации: ApiKeyHeader или ApiKeyQuery.

ApiKeyHeader

Заголовок: X-API-Key

ApiKeyQuery

Параметр URL: api_key

Альтернатива заголовку. Также принимается в JSON/form; предпочтителен X-API-Key.

Для авторизации передавайте ключ заведения в заголовке X-API-Key. Альтернатива — параметр api_key в URL, JSON или форме; заголовок имеет приоритет. Ключ предоставляет доступ к одному заведению: параметр addressid не позволяет выбрать другое. Если параметр одновременно указан в JSON и в URL или форме, используется значение из URL или формы.

Права доступа

Необходимое право ключа указано у каждой операции; включите его в настройках API-ключа. Ключи без ограничений прав предоставляют полный доступ; при заданном списке прав разрешены только перечисленные операции. Пустой или некорректный список запрещает доступ. Ключам Яндекс Еды доступны работа с бронями, свободное время, расчёт депозита и чтение объектов, меток и информации о заведении; если передан source, его значением должно быть yandex_eda. Недостаток прав или неподходящая лицензия возвращают HTTP 403.

Формат запросов, даты и ограничения

Списки и типы данных

Списки с параметром page возвращают до 400 записей за запрос. Время без смещения относится к часовому поясу заведения, кроме отдельно описанных фильтров. requestDate и updatedAfterTime — Unix timestamps в секундах. Идентификаторы, флаги и суммы в ответах могут быть числами или числовыми строками. Денежные суммы указаны в валюте заведения.

Изменение данных

Для PUT передавайте тело в формате application/json. Форму application/x-www-form-urlencoded отправляйте через POST с заголовком X-HTTP-Method: PUT; этот способ также поддерживает JSON. Массивы в формах передавайте с квадратными скобками, например item_ids[]=42&item_ids[]=43. Удаление через DELETE не поддерживается; для отмены брони или билета используйте изменение статуса, для сертификата — /issuedCertificates/{id}/cancel.

Версия документации

Версия info.version обозначает версию документации. Адреса операций не содержат номера версии API.

Текущая версия документации: 1.0.0.

Ответы и ошибки

Успешный ответ содержит method, requestDate, responseData, page и totalPages. Примеры показывают структуру ответов на демонстрационных данных; списки и необязательные поля сокращены. Ошибка может находиться в поле error верхнего уровня либо в responseData.error; формат указан у операции. HTTP 405 может означать ошибку параметров или недопустимое действие. При запросе отсутствующей записи некоторые операции возвращают HTTP 200 с responseData: []; проверяйте описание операции и содержимое ответа.

ПолеЧто содержит
methodИмя ресурса, например reserves, tickets или issuedCertificates.
requestDateUnix timestamp запроса в секундах.
responseDataРезультат запроса. Структура зависит от метода.
page, totalPagesТекущая страница и число страниц результата.

Если запрос не прошёл

401 — проверьте ключ. 403 — права ключа и лицензию. Остальные ответы перечислены у каждого метода.

Проверяйте error и responseData.error. Один только ответ HTTP 200 не подтверждает, что нужная запись найдена.

Методы API

Бронирования6 методов

GET/reservesСписок бронирований

До 400 записей на страницу, по возрастанию ID. Некорректный фильтр или нерабочий день дают пустой список с HTTP 200.

Необходимое право ключа: Список броней

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
updatedAfterTimeURL

Изменены после Unix timestamp (строго позже).

Тип: integer Формат: int64
query[reserve_id]URL

Номер бронирования, положительное число.

Тип: integer
query[phone]URL

Телефон в числовом формате.

Тип: string
query[email]URL

Email гостя.

Тип: string Формат: email
query[status]URL

Положительный код статуса.

Тип: integer
query[depositPaid]URL

Оплата депозита; выбираются только брони с depositPrice > 0.

Тип: integer Допустимые значения: [0,1]
query[createdDate]URL

Дата создания с 00:00:00 до 23:59:59 в часовом поясе сервера, без пересчёта в часовой пояс заведения.

Тип: string Формат: date
query[date]URL

Рабочий день заведения, включая работу через полночь.

Тип: string Формат: date
query[item_id]URL

ID объекта; также учитывается участие в группе объектов.

Тип: integer
query[floor_id]URL

ID зала.

Тип: integer
query[is_banquet]URL

Оба значения 0 и 1 возвращают только банкеты; для списка без этого ограничения не передавайте параметр.

Тип: integer Допустимые значения: [0,1]
query[is_fast]URL

Быстрое бронирование.

Тип: integer Допустимые значения: [0,1]

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 501,
            "reserve_id": 123,
            "status": 2,
            "name": "Иван",
            "phone": "79990000000",
            "email": "guest@example.com",
            "count": 2,
            "time_from": "2026-11-02 18:00:00",
            "time_to": "2026-11-02 20:00:00",
            "item_id": 42,
            "item_ids": [
                42
            ],
            "floor_id": 7,
            "floor_name": "Основной зал",
            "depositPrice": 0,
            "depositPaid": 0,
            "tags": [
                "vip"
            ],
            "cancel_reason": null
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}
POST/reservesСоздать бронирование

Создание возвращает HTTP 200, в том числе при ожидании оплаты. Подбор объектов и режим листа ожидания зависят от параметров и настроек ключа.

Необходимое право ключа: Создавать и изменять брони

Тело запроса обязательное

JSON или form-urlencoded. Параметры query/form имеют приоритет над JSON при совпадении имён.

application/json / application/x-www-form-urlencoded

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

Тип: object
from обязательное

YYYY-MM-DD HH:mm:ss в часовом поясе заведения либо RFC3339 с явным смещением ±HH:mm. Время со смещением преобразуется в часовой пояс заведения. Обозначение Z и дробные секунды не поддерживаются.

Тип: string Шаблон: ^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2}|T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})$

Примеры: "2026-11-02 18:00:00", "2026-11-02T18:00:00+03:00"

to обязательное

YYYY-MM-DD HH:mm:ss в часовом поясе заведения либо RFC3339 с явным смещением ±HH:mm. Время со смещением преобразуется в часовой пояс заведения. Обозначение Z и дробные секунды не поддерживаются.

Тип: string Шаблон: ^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2}|T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})$

Примеры: "2026-11-02 18:00:00", "2026-11-02T18:00:00+03:00"

count

Количество гостей; при создании проверяется доступность на указанное число гостей.

Тип: integer По умолчанию: 1
floorid

Зал для автоматического подбора объекта при пустом item_ids.

Тип: integer По умолчанию: 0
item_ids

Явно выбранные объекты: один объект или группа.

Тип: array По умолчанию: []
Каждый элемент массива
Тип: integer
name

Имя гостя; отсутствие допускает безымянную бронь.

Тип: string По умолчанию: ""
phone

Телефон гостя; отсутствие допускает бронь без телефона.

Тип: string По умолчанию: ""
email

Email гостя.

Тип: string По умолчанию: ""
tg_username

Telegram username; начальный @ удаляется.

Тип: string По умолчанию: ""
text

Комментарий.

Тип: string По умолчанию: ""
source

Источник. Если строка не содержит точку и не равна yandex_eda, используется api.restoplace.cc.

Тип: string
waitlist

Создать заявку листа ожидания. Имеет приоритет при формировании заявки; не сочетайте с item_ids.

Тип: boolean По умолчанию: false
deposit

Учитывать депозит по настройкам заведения.

Тип: boolean По умолчанию: true
deposit_total

Положительная сумма заменяет рассчитанный депозит; ноль оставляет расчёт по настройкам.

Тип: number По умолчанию: 0
deposit_paid

1 фиксирует внешнюю оплату положительного депозита.

Тип: integer Допустимые значения: [0,1] По умолчанию: 0
notifications

Дополнительные параметры уведомлений. Поддерживаемые поля и их влияние на отправку уведомлений этим API не гарантируются.

Тип: array | object
Каждый элемент массива

Без дополнительных ограничений.

Дополнительные поля разрешены этой схемой.

tags

Ключи меток массивом или CSV. В PUT отсутствие поля сохраняет метки; [] или пустая строка очищают их. Неизвестные ключи в PUT резервов отбрасываются.

Хотя бы один вариант (anyOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]

Примеры для application/json:

Пример
{
    "from": "2026-11-02 18:00:00",
    "to": "2026-11-02 20:00:00",
    "count": 2,
    "item_ids": [
        42
    ],
    "name": "Гость",
    "phone": "79990000000",
    "deposit_paid": 0
}

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": {
        "id": 501,
        "number": 123,
        "message": "Резерв создан"
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

GET/reserves/{id}Получить бронирование

Неизвестный ID возвращает HTTP 200 и responseData: [].

Необходимое право ключа: Список броней

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": {
        "id": 501,
        "reserve_id": 123,
        "status": 2,
        "name": "Иван",
        "phone": "79990000000",
        "email": "guest@example.com",
        "count": 2,
        "time_from": "2026-11-02 18:00:00",
        "time_to": "2026-11-02 20:00:00",
        "item_id": 42,
        "item_ids": [
            42
        ],
        "floor_id": 7,
        "floor_name": "Основной зал",
        "depositPrice": 0,
        "depositPaid": 0,
        "tags": [
            "vip"
        ],
        "cancel_reason": null
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}
PUT/reserves/{id}Изменить бронирование

Неизвестный ID, отсутствие изменений и ошибки валидации возвращают HTTP 405.

Необходимое право ключа: Создавать и изменять брони

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json

Частичное обновление. Нужна хотя бы одна фактическая правка, иначе HTTP 405. from и to передаются вместе. Депозит сохраняется; deposit_total здесь не обновляется.

Тип: object
name

Имя гостя; отсутствие допускает безымянную бронь.

Тип: string По умолчанию: ""
phone

Телефон очищается до цифр; пустое значение не очищает существующий телефон.

Тип: string
email

Email гостя.

Тип: string По умолчанию: ""
tg_username

Telegram username; начальный @ удаляется.

Тип: string По умолчанию: ""
text

Переводы строк заменяются пробелами; длинный текст обрезается до 1000 символов.

Тип: string
count

Количество гостей.

Тип: integer Минимум: 0
from

YYYY-MM-DD HH:mm:ss в часовом поясе заведения либо RFC3339 с явным смещением ±HH:mm. Время со смещением преобразуется в часовой пояс заведения. Обозначение Z и дробные секунды не поддерживаются.

Тип: string Шаблон: ^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2}|T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})$

Примеры: "2026-11-02 18:00:00", "2026-11-02T18:00:00+03:00"

to

YYYY-MM-DD HH:mm:ss в часовом поясе заведения либо RFC3339 с явным смещением ±HH:mm. Время со смещением преобразуется в часовой пояс заведения. Обозначение Z и дробные секунды не поддерживаются.

Тип: string Шаблон: ^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2}|T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2})$

Примеры: "2026-11-02 18:00:00", "2026-11-02T18:00:00+03:00"

tags

Ключи меток массивом или CSV. В PUT отсутствие поля сохраняет метки; [] или пустая строка очищают их. Неизвестные ключи в PUT резервов отбрасываются.

Хотя бы один вариант (anyOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]
item_ids

Новые объекты: массив ID или CSV. Пустое значение сохраняет прежние объекты.

Хотя бы один вариант (anyOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: integer
Вариант 2
Тип: string
Пример
{
    "count": 3,
    "text": "Стол у окна",
    "tags": []
}

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": {
        "id": 501,
        "number": 123,
        "message": "Резерв обновлен"
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

PUT/reserves/{id}/statusИзменить статус бронирования

Отменяет или закрывает бронирование при допустимом переходе из текущего статуса. Удаление бронирования через DELETE недоступно.

Необходимое право ключа: Создавать и изменять брони

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json
Тип: object
status обязательное

Запрошенный статус 1–6. При текущем статусе 4 запрос 6 преобразуется в 5; при текущем статусе не 4 запрос 5 преобразуется в 6.

Тип: integer Минимум: 1 Максимум: 6
cancel_reason

ID из GET /reserves/cancel-reasons.

Тип: integer
cancel_reason_text

Свободный текст причины отмены.

Тип: string
Пример
{
    "status": 6,
    "cancel_reason": 1,
    "cancel_reason_text": "Изменились планы гостя"
}

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": {
        "id": 501,
        "message": "Резерв обновлен"
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

GET/reserves/cancel-reasonsПричины отмены бронирования

requires_text=true означает, что для этой причины нужен свободный текст.

Необходимое право ключа: Список броней

HTTP 200

application/json
Пример успешного ответа
{
    "method": "reserves",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 1,
            "text": "Другая причина",
            "requires_text": true
        },
        {
            "id": 3,
            "text": "Гость отменил бронь",
            "requires_text": false
        },
        {
            "id": 2,
            "text": "Гость не пришёл (No-show)",
            "requires_text": false
        },
        {
            "id": 7,
            "text": "Дублирующая бронь",
            "requires_text": false
        },
        {
            "id": 4,
            "text": "Не удалось связаться",
            "requires_text": false
        },
        {
            "id": 6,
            "text": "Перенос на другую дату/время",
            "requires_text": false
        },
        {
            "id": 5,
            "text": "Гость опоздал",
            "requires_text": false
        },
        {
            "id": 10,
            "text": "Ошибка при создании брони",
            "requires_text": false
        },
        {
            "id": 8,
            "text": "Отказ от условий/депозита",
            "requires_text": false
        },
        {
            "id": 11,
            "text": "Некорректные данные",
            "requires_text": false
        },
        {
            "id": 12,
            "text": "Гость уже размещён: другая зона/стол",
            "requires_text": false
        },
        {
            "id": 13,
            "text": "Нет свободных столов",
            "requires_text": false
        },
        {
            "id": 9,
            "text": "Заведение не работает",
            "requires_text": false
        },
        {
            "id": 14,
            "text": "Отказ во входе (фейс/дресс-контроль)",
            "requires_text": false
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

Объекты и залы5 методов

GET/itemsПолучить объекты бронирования

Объекты текущего заведения, по возрастанию ID, до 400 на странице. Все фильтры передаются только как query[...]; плоские одноимённые параметры не применяются. Неверные числовые фильтры дают [] с HTTP 200. totalPages всегда 1, даже при наличии следующих страниц.

Необходимое право ключа: Список объектов и залов

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
query[floorid]URL

Зал. Положительное значение фильтрует по ID, 0 не включает фильтр; отрицательное значение даёт пустой список с HTTP 200.

Тип: integer
query[checked]URL

При 1 вернуть только включённые объекты; 0/отсутствие не фильтрует.

Тип: integer Допустимые значения: [0,1]
query[type]URL

Ключ типа объекта, включая пользовательский.

Тип: string

Примеры: "table"

query[reserve]URL

Фильтр по возможности бронирования. Числовое значение вне 0/1 даёт пустой список с HTTP 200; нечисловое игнорируется.

Тип: integer Допустимые значения: [0,1]
query[view_only_hostess]URL

Фильтр видимости объекта. Числовое значение вне 0/1 даёт пустой список с HTTP 200; нечисловое игнорируется.

Тип: integer Допустимые значения: [0,1]
query[floor_enable]URL

При 1 оставить объекты включённых залов. Проверяется только при отсутствии непустого query[floorid].

Тип: integer Допустимые значения: [0,1]
query[floor_only_hostes]URL

Фильтр видимости зала. Имя содержит hostes с одной s. Числовое значение вне 0/1 даёт пустой список с HTTP 200; нечисловое игнорируется.

Тип: integer Допустимые значения: [0,1]

HTTP 200

application/json
Пример
{
    "method": "items",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 101,
            "checked": 1,
            "userid": 15,
            "priority": 1,
            "created": "2026-10-01 12:00:00",
            "last_updated": "2026-10-13 09:00:00",
            "floorid": 10,
            "number": "12",
            "count_min": 1,
            "count_max": 4,
            "text": "У окна",
            "type": "table",
            "reserve": 1,
            "view_only_hostess": 0,
            "group_reserve": 1,
            "images": []
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}
GET/items/{id}Получить объект бронирования

При отсутствии объекта или неположительном ID возвращается HTTP 200 с responseData: [], а не 404.

Необходимое право ключа: Список объектов и залов

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json
Пример
{
    "method": "items",
    "requestDate": 1791882000,
    "responseData": {
        "id": 101,
        "checked": 1,
        "userid": 15,
        "priority": 1,
        "created": "2026-10-01 12:00:00",
        "last_updated": "2026-10-13 09:00:00",
        "floorid": 10,
        "number": "12",
        "count_min": 1,
        "count_max": 4,
        "text": "У окна",
        "type": "table",
        "reserve": 1,
        "view_only_hostess": 0,
        "group_reserve": 1,
        "images": []
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}
PUT/items/{id}Изменить объект бронирования

Обновляет переданные поля объекта. Для chair вместимость приводится к 1/1. При совпадении номера с другим объектом того же типа в том же зале другому объекту присваивается прежний номер изменяемого объекта. Связанные брони синхронизируются. Отсутствующий объект или зал — 404; неверные значения и отсутствие изменений — 405.

Необходимое право ключа: Изменить объект

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json

Частичное обновление. Все поля необязательны, но хотя бы одно значение должно отличаться от сохранённого; иначе 405. Неизвестные поля игнорируются.

Тип: object
type

Только встроенный тип. Пользовательские ключи custom… из /itemTypes здесь не принимаются; отсутствие поля сохраняет текущий тип.

Тип: string Допустимые значения: ["table","chair","billiard","bouling","track","console","computer","room","vip","viproom","bar","home","alcove","alcovesession","bath","sauna","number","igloo","loft","vr","sofa","man","sunbed","bungalow","tent","jacuzzi","place","work","bedvip","hookahzone","tapchan","brazier","field","boat","boatWithOars","boatWithMotor","boatWithElectricMotor","transparentCanoe","sapboard","cheesecake","banana","aquapark","yurt","ps","ps5","xbox","mainroom","locker","cabin","swing","lounge","viplounge","program","glade","pergola","order","grill","grillhome","wideWindowSill","view","whiteTerrace","barZone","barn"]

Примеры: "table"

floorid

Идентификатор существующего зала текущего заведения.

Тип: integer Минимум: 1

Примеры: 10

number

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

Тип: string Минимальная длина: 1

Примеры: "12"

count_min

Минимальное число гостей; не больше count_max. Для chair устанавливается 1.

Тип: integer Минимум: 1
count_max

Максимальное число гостей; не меньше count_min. Для chair устанавливается 1.

Тип: integer Минимум: 1
text

Описание; пробелы по краям удаляются, текст обрезается до 1000 символов. Превышение длины не вызывает ошибку.

Тип: string
checked

Включить/выключить объект.

Тип: integer Допустимые значения: [0,1]
reserve

Разрешить/запретить бронирование.

Тип: integer Допустимые значения: [0,1]
group_reserve

Разрешить/запретить групповое бронирование.

Тип: integer Допустимые значения: [0,1]
view_only_hostess

Показывать только сотруднику.

Тип: integer Допустимые значения: [0,1]
Пример
{
    "number": "12",
    "count_min": 1,
    "count_max": 4,
    "text": "У окна",
    "checked": 1
}

HTTP 200

application/json
Пример
{
    "method": "items",
    "requestDate": 1791882000,
    "responseData": {
        "id": 101,
        "checked": 1,
        "userid": 15,
        "priority": 1,
        "created": "2026-10-01 12:00:00",
        "last_updated": "2026-10-13 09:00:00",
        "floorid": 10,
        "number": "12",
        "count_min": 1,
        "count_max": 4,
        "text": "У окна",
        "type": "table",
        "reserve": 1,
        "view_only_hostess": 0,
        "group_reserve": 1,
        "images": []
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

GET/hallsПолучить залы

Залы текущего заведения, по возрастанию ID, до 400 на странице. Фильтры принимаются только внутри query. Неверные числовые фильтры дают [] с HTTP 200. totalPages всегда 1.

Необходимое право ключа: Список объектов и залов

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
query[checked]URL

При 1 вернуть только включённые залы; 0/отсутствие не фильтрует.

Тип: integer Допустимые значения: [0,1]
query[banquet]URL

Фильтр банкетных залов. Число вне 0/1 даёт [], нечисловое значение игнорируется.

Тип: integer Допустимые значения: [0,1]
query[query_view_only_hostess]URL

Фильтр видимости зала; повтор query в имени обязателен. Число вне 0/1 даёт [], нечисловое значение игнорируется.

Тип: integer Допустимые значения: [0,1]

HTTP 200

application/json
Пример
{
    "method": "halls",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 10,
            "checked": 1,
            "userid": 15,
            "priority": 1,
            "created": "2026-10-01 12:00:00",
            "last_updated": "2026-10-13 09:00:00",
            "name": "Основной зал",
            "banquet": 0,
            "count_min": 1,
            "count_max": 50,
            "text": "",
            "view_only_hostess": 0
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}
GET/halls/{id}Получить зал

При отсутствии зала или неположительном ID возвращается HTTP 200 с responseData: [], а не 404.

Необходимое право ключа: Список объектов и залов

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json
Пример
{
    "method": "halls",
    "requestDate": 1791882000,
    "responseData": {
        "id": 10,
        "checked": 1,
        "userid": 15,
        "priority": 1,
        "created": "2026-10-01 12:00:00",
        "last_updated": "2026-10-13 09:00:00",
        "name": "Основной зал",
        "banquet": 0,
        "count_min": 1,
        "count_max": 50,
        "text": "",
        "view_only_hostess": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

Справочники3 метода

GET/itemTypesПолучить типы объектов

Возвращает словарь стандартных и пользовательских типов объектов заведения. Названия передаются обычным текстом; если для пользовательского типа нет перевода на выбранный язык, используется первый доступный перевод. Язык передавайте как query[lang]; параметр lang без query не применяется. Недоступный язык возвращает HTTP 500 с error: Language not found.

Необходимое право ключа: Список объектов и залов

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

ПараметрГде передатьОписание и формат
query[lang]URL

Язык справочника. Допустимые значения: arTranslate, azTranslate, chTranslate, deTranslate, en, enTranslate, esTranslate, frTranslate, jaTranslate, kaTranslate, koTranslate, lvTranslate, ru, zhTranslate.

Тип: string По умолчанию: "ru"

Примеры: "ru", "en"

HTTP 200

application/json
Пример
{
    "method": "itemTypes",
    "requestDate": 1791882000,
    "responseData": {
        "table": "Стол",
        "chair": "Стул",
        "customTerrace": "Терраса"
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

GET/tagsПолучить метки бронирования

Возвращает сохранённые метки организации; если список не настроен или пуст, используется стандартный набор. Язык применяется к стандартному набору; неизвестный язык использует ru. Плоские checked и lang имеют приоритет над query[checked] и query[lang]. Отсутствующая организация — 404 с ошибкой внутри responseData.

Необходимое право ключа: Список доступных меток

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

ПараметрГде передатьОписание и формат
checkedURL

При 1 оставить включённые метки; 0/отсутствие не фильтрует.

Тип: integer Допустимые значения: [0,1]
query[checked]URL

Альтернатива checked с меньшим приоритетом.

Тип: integer Допустимые значения: [0,1]
langURL

Язык стандартных меток.

Тип: string По умолчанию: "ru"
query[lang]URL

Альтернатива lang с меньшим приоритетом.

Тип: string

HTTP 200

application/json
Пример
{
    "method": "tags",
    "requestDate": 1791882000,
    "responseData": {
        "vip": {
            "key": "vip",
            "text": "VIP",
            "checked": 1
        }
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 404

application/json

Организация не найдена; сообщение об ошибке находится в responseData.error.

Пример
{
    "method": "tags",
    "requestDate": 1791882000,
    "responseData": {
        "error": "Organization not found"
    },
    "page": 1,
    "totalPages": 1
}
GET/infoПолучить настройки заведения и ключа

Информация о заведении, организации, параметрах текущего API-ключа и активной лицензии. Отсутствующее заведение или организация — HTTP 405.

Необходимое право ключа: Информация о заведении

HTTP 200

application/json
Пример
{
    "method": "info",
    "requestDate": 1791882000,
    "responseData": {
        "address": {
            "id": 20,
            "orgid": 1,
            "city": "Москва",
            "address": "Примерная улица, 1",
            "time_zone": "Europe/Moscow",
            "cancel_reason_required": 0,
            "time_now": "2026-10-13 12:00:00",
            "UTC": "+03:00"
        },
        "organization": {
            "id": 1,
            "name": "Демо",
            "subdomain": "demo",
            "widget": "demo.restoplace.ws"
        },
        "apikey": {
            "type": "api",
            "type_reserve": "autotable",
            "length": 120,
            "shift": 30
        },
        "license": {
            "name": "PRO+",
            "test": 0,
            "paid": 1,
            "date_end": "2026-12-31 23:59:59"
        }
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

Депозиты1 метод

POST/depositРассчитать депозит

Рассчитывает депозит для одного/нескольких объектов либо листа ожидания. При waitlist=false все item_ids должны существовать в текущем заведении; повторяющиеся ID также приводят к 404. Начало/конец обязательны, ошибки формата возвращают 405. Передавайте to позже from: отдельная ошибка для обратного порядка дат не возвращается. Бронь и платёж не создаются.

Необходимое право ключа: Расчёт депозита

Тело запроса обязательное

application/json

Необходимы начало и конец интервала (основные имена или альтернативные). Для расчёта по объектам необходим item_ids; для waitlist=true он необязателен.

Тип: object
item_ids

ID объектов текущего заведения. Обязателен непустой массив, если waitlist=false; ID должны существовать и не повторяться.

Тип: array
Каждый элемент массива

Числовой идентификатор. В GET-ответах значение может быть числом или числовой строкой.

Тип: integer | string

Примеры: 42, "42"

from

Начало интервала. Имеет приоритет над time_from, если непустое. Локальное время YYYY-MM-DD HH:mm:ss либо YYYY-MM-DDTHH:mm:ss±HH:mm. Обе даты должны использовать один формат. RFC3339 принимается без долей секунды и с явным смещением; Z не поддерживается. Время с явным смещением переводится в часовой пояс заведения.

Тип: string

Примеры: "2026-10-20 18:00:00", "2026-10-20T18:00:00+03:00"

to

Конец интервала. Имеет приоритет над time_to, если непустое. Локальное время YYYY-MM-DD HH:mm:ss либо YYYY-MM-DDTHH:mm:ss±HH:mm. Обе даты должны использовать один формат. RFC3339 принимается без долей секунды и с явным смещением; Z не поддерживается. Время с явным смещением переводится в часовой пояс заведения.

Тип: string

Примеры: "2026-10-20 18:00:00", "2026-10-20T18:00:00+03:00"

time_from

Альтернативное имя from, используется при отсутствии/пустом from.

Тип: string

Примеры: "2026-10-20 18:00:00", "2026-10-20T18:00:00+03:00"

time_to

Альтернативное имя to, используется при отсутствии/пустом to.

Тип: string

Примеры: "2026-10-20 18:00:00", "2026-10-20T18:00:00+03:00"

count

Число гостей. Если значение не числовое или меньше 1, используется 1.

Тип: number | string По умолчанию: 1

Примеры: 2

waitlist

Расчёт для листа ожидания; item_ids не проверяется.

Тип: boolean По умолчанию: false
important

Флаг important, передаваемый в расчёт депозита.

Тип: boolean По умолчанию: false

Все условия одновременно (allOf)

Условие 1

Хотя бы один вариант (anyOf)

Вариант 1

Обязательные поля: from.

Вариант 2

Обязательные поля: time_from.

Условие 2

Хотя бы один вариант (anyOf)

Вариант 1

Обязательные поля: to.

Вариант 2

Обязательные поля: time_to.

Условие 3

Условное правило

Если выполнено (if)
waitlist обязательное
Точное значение: true
То дополнительно требуется (then)

Без дополнительных ограничений.

Иначе требуется (else)
item_ids обязательное
Тип: array Минимум элементов: 1 Уникальные элементы: true
Расчёт для объекта
{
    "item_ids": [
        101
    ],
    "from": "2026-10-20 18:00:00",
    "to": "2026-10-20 20:00:00",
    "count": 2
}
Расчёт для листа ожидания
{
    "waitlist": true,
    "time_from": "2026-10-20T18:00:00+03:00",
    "time_to": "2026-10-20T20:00:00+03:00",
    "count": 2
}

HTTP 200

application/json
Пример
{
    "method": "deposit",
    "requestDate": 1791882000,
    "responseData": {
        "deposit": 2000,
        "depositTotal": 2000,
        "depositTip": 0,
        "depositTax": 0,
        "depositText": "Депозит 2000 ₽"
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

Доступность2 метода

GET/timesПолучить временные слоты на дату

Учитывает расписание, ограничения бронирования, занятость объектов и вместимость. Для ключа с ограниченными правами требуется times_read. Неверная или отсутствующая date возвращает HTTP 405.

Необходимое право ключа: Свободное время

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

ПараметрГде передатьОписание и формат
dateобязательныйURL

Дата рабочего дня заведения в формате YYYY-MM-DD.

Тип: string Формат: date

Примеры: "2026-10-20"

flooridURL

ID зала; 0 означает все доступные залы.

Тип: integer По умолчанию: 0
lengthURL

Длительность слота в минутах. Значения 10–1440 применяются; остальные заменяются настройкой API заведения, затем 120. В режиме фиксированных интервалов используются интервалы расписания.

Тип: integer

Примеры: 120

shiftURL

Шаг начала слотов в минутах. Значения 10–1440 применяются; остальные заменяются настройкой API заведения, затем выбранной длительностью length. В режиме фиксированных интервалов используются интервалы расписания.

Тип: integer

Примеры: 30

dateFormatURL

RFC3339 меняет только from/to слотов на RFC3339; другие значения оставляют YYYY-MM-DD HH:mm:ss.

Тип: string По умолчанию: ""

Примеры: "RFC3339"

countURL

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

Тип: integer По умолчанию: 0
extendedURL

1 или другое ненулевое целое включает расширенный ответ с расписанием, слотами и статистикой.

Тип: integer По умолчанию: 0

Примеры: 1

include_tables_infoURL

1 (или иное ненулевое целое) добавляет информацию о свободных объектах в tables_info при наличии данных.

Тип: integer По умолчанию: 0

Примеры: 1

HTTP 200

application/json

Слоты рабочего дня. Без extended возвращается массив; при extended=1 — расширенный объект. Без count присутствуют как свободные, так и занятые слоты.

Один свободный слот
{
    "method": "times",
    "requestDate": 1791880200,
    "responseData": [
        {
            "from": "2026-10-20 18:00:00",
            "to": "2026-10-20 20:00:00",
            "free": true,
            "counts": {
                "2": "free",
                "3": "free",
                "4": "free"
            },
            "free_tables": {
                "2": [
                    "123"
                ],
                "3": [
                    "123"
                ],
                "4": [
                    "123"
                ]
            }
        }
    ],
    "page": 1,
    "totalPages": 1
}
Расширенный ответ после фильтра count=4
{
    "method": "times",
    "requestDate": 1791880200,
    "responseData": {
        "date_info": {
            "date": "2026-10-20",
            "day_of_week": "вторник",
            "day_of_week_num": 2,
            "is_working": true
        },
        "work_hours": {
            "open": "18:00",
            "close": "20:00",
            "open_datetime": "2026-10-20 18:00:00",
            "close_datetime": "2026-10-20 20:00:00"
        },
        "summary": {
            "total_slots": 1,
            "free_slots": 1,
            "busy_slots": 0,
            "has_availability": true,
            "filter_count": 4
        },
        "times": [
            {
                "from": "2026-10-20 18:00:00",
                "to": "2026-10-20 20:00:00",
                "free": true,
                "counts": {
                    "2": "free",
                    "3": "free",
                    "4": "free"
                },
                "free_tables": {
                    "2": [
                        "123"
                    ],
                    "3": [
                        "123"
                    ],
                    "4": [
                        "123"
                    ]
                }
            }
        ],
        "meta": {
            "timezone": "Europe/Moscow",
            "current_time": "2026-10-13 12:30:00"
        }
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Некорректная или отсутствующая date: Invalid date.

HTTP 500

application/json

Ошибка обработки запроса.

GET/availabilityПроверить доступность интервала

Проверяет указанный интервал и ищет альтернативы. from/to обязательны и должны использовать одинаковый формат; время без смещения трактуется в часовом поясе заведения. Неправильный формат или отсутствие границ — HTTP 405; недоступность выбранного интервала — HTTP 200. Альтернативы не резервируют объекты. При item_ids проверяется свобода всех выбранных объектов; count не проверяет вместимость конкретно выбранных объектов.

Необходимое право ключа: Свободное время

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

ПараметрГде передатьОписание и формат
fromобязательныйURL

Обязательное начало интервала; без часового пояса используется часовой пояс заведения.

Дата и время: локальный формат YYYY-MM-DD HH:mm:ss либо RFC3339 при dateFormat=RFC3339.

Хотя бы один вариант (anyOf)

Вариант 1
Тип: string Шаблон: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$

Примеры: "2026-10-20 18:00:00"

Вариант 2
Тип: string Формат: date-time

Примеры: "2026-10-20T18:00:00+03:00"

toобязательныйURL

Обязательное окончание интервала. from и to должны быть в одинаковом формате.

Дата и время: локальный формат YYYY-MM-DD HH:mm:ss либо RFC3339 при dateFormat=RFC3339.

Хотя бы один вариант (anyOf)

Вариант 1
Тип: string Шаблон: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$

Примеры: "2026-10-20 18:00:00"

Вариант 2
Тип: string Формат: date-time

Примеры: "2026-10-20T18:00:00+03:00"

countURL

Количество гостей; положительное значение включает проверку вместимости. При item_ids проверяется доступность выбранных объектов без проверки их вместимости для count.

Тип: integer По умолчанию: 0
item_idsURL

ID конкретных объектов через запятую. Для передачи массива используйте item_ids[]=123&item_ids[]=456.

Тип: string

Примеры: "123,456"

flooridURL

ID зала; 0 означает все залы.

Тип: integer По умолчанию: 0
alternatives_countURL

Ориентир для числа альтернатив, а не жёсткий общий лимит. В рабочий день возвращается до 3 вариантов раньше, до 3 позже и минимум 1 вариант в другие дни при наличии; поиск до 14 дней вперёд. Для альтернатив в рабочий день длительность ограничивается 480 минутами.

Тип: integer По умолчанию: 5
dateFormatURL

RFC3339 включает RFC3339 в ответе; любое другое значение оставляет YYYY-MM-DD HH:mm:ss.

Тип: string По умолчанию: ""

Примеры: "RFC3339"

HTTP 200

application/json

Результат проверки доступности. Статусы past_time, invalid_time, closed и unavailable также возвращаются с HTTP 200; проверяйте поля available и status.

Окончание раньше начала
{
    "method": "availability",
    "requestDate": 1791880200,
    "responseData": {
        "available": false,
        "status": "invalid_time",
        "message": "Время окончания должно быть позже времени начала",
        "suggestion": "Уточните корректный временной интервал",
        "requested": {
            "from": "2026-10-20 18:00:00",
            "to": "2026-10-20 17:00:00",
            "date": "2026-10-20",
            "time_from": "18:00",
            "time_to": "17:00",
            "day_of_week": "вторник",
            "duration_minutes": 60,
            "count": 4,
            "item_ids": null
        },
        "work_hours": null,
        "free_tables": [],
        "alternatives": [],
        "meta": {
            "timezone": "Europe/Moscow",
            "current_time": "2026-10-13 12:30:00"
        }
    },
    "page": 1,
    "totalPages": 1
}
Пример успешного ответа
{
    "method": "availability",
    "requestDate": 1791882000,
    "responseData": {
        "available": true,
        "status": "available",
        "message": "Время свободно для бронирования",
        "suggestion": "Можно переходить к оформлению брони",
        "requested": {
            "from": "2026-11-02 18:00:00",
            "to": "2026-11-02 20:00:00",
            "date": "2026-11-02",
            "time_from": "18:00",
            "time_to": "20:00",
            "day_of_week": "понедельник",
            "duration_minutes": 120,
            "count": 2,
            "item_ids": null
        },
        "work_hours": {
            "is_working": true,
            "date": "2026-11-02",
            "open": "10:00",
            "close": "23:00",
            "open_datetime": "2026-11-02 10:00:00",
            "close_datetime": "2026-11-02 23:00:00"
        },
        "free_tables": [
            {
                "id": 42,
                "name": "Стол №12",
                "number": "12",
                "capacity": {
                    "min": 1,
                    "max": 4
                },
                "floor": {
                    "id": 3,
                    "name": "Основной зал"
                },
                "type": "table",
                "type_name": "Стол",
                "text": "Стол у окна"
            }
        ],
        "alternatives": {
            "earlier": [],
            "later": [],
            "same_time_other_days": [],
            "summary": {
                "has_earlier": false,
                "has_later": false,
                "has_other_days": false,
                "total_options": 0,
                "best_option": null
            }
        },
        "meta": {
            "timezone": "Europe/Moscow",
            "current_time": "2026-10-13 12:00:00"
        }
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 405

application/json

Отсутствуют from/to либо неверен формат даты: Не указан параметр from; Не указан параметр to; Ошибка в поле from; Ошибка в поле to.

HTTP 500

application/json

Ошибка обработки запроса.

События2 метода

GET/eventsСписок событий

События заведения по возрастанию id. Фильтр query[active] сравнивает окончание события с текущим временем заведения. Поле totalPages не отражает фактическое число страниц справочника.

Необходимое право ключа: События

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
query[checked]URL

Включено ли событие: 1 — включено, 0 — выключено.

Тип: integer Допустимые значения: [0,1]
query[active]URL

1 — time_to позже сейчас; 0 — time_to не позже сейчас.

Тип: integer Допустимые значения: [0,1]

HTTP 200

application/json

Список записей.

Пример успешного ответа
{
    "method": "events",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 42,
            "checked": 1,
            "number": 8,
            "name": "Музыкальный вечер",
            "text": "Живая музыка в основном зале",
            "time_from": "2026-11-02 19:00:00",
            "time_to": "2026-11-02 22:00:00",
            "price": 1500,
            "count": 40,
            "images": []
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

GET/events/{id}Получить событие

Возвращает событие заведения по id. Если событие не найдено, ответ содержит HTTP 200 и responseData: [].

Необходимое право ключа: События

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json

Запись либо [] при отсутствии.

Пример успешного ответа
{
    "method": "events",
    "requestDate": 1791882000,
    "responseData": {
        "id": 42,
        "checked": 1,
        "number": 8,
        "name": "Музыкальный вечер",
        "text": "Живая музыка в основном зале",
        "time_from": "2026-11-02 19:00:00",
        "time_to": "2026-11-02 22:00:00",
        "price": 1500,
        "count": 40,
        "images": []
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

Билеты6 методов

GET/ticketsСписок билетов

Билеты заведения по возрастанию id. Некорректные значения поддерживаемых фильтров могут возвращать HTTP 200 и responseData: [].

Необходимое право ключа: Список билетов

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
updatedAfterTimeURL

Возвращает билеты, изменённые строго после указанного момента. Передайте Unix timestamp в секундах; 0 или отсутствие параметра отключают фильтр.

Тип: integer Минимум: 0
query[ticket_id]URL

Номер билета в заведении (не id записи).

Тип: integer Минимум: 1
query[phone]URL

Телефон; приводится к целому.

Тип: string

Примеры: "79990000000"

query[email]URL

Точное совпадение email.

Тип: string Формат: email
query[status]URL

Код статуса.

Тип: integer Минимум: 1
query[event_id]URL

ID события.

Тип: integer Минимум: 1
query[paymentPaid]URL

Платные билеты (paymentPrice>0) с указанным paymentPaid.

Тип: integer Допустимые значения: [0,1]
query[date]URL

Пересечение с рабочим днём заведения. В нерабочую/невалидную дату список пуст.

Тип: string Формат: date
query[createdDate]URL

Дата создания с 00:00:00 до 23:59:59 в часовом поясе сервера, без пересчёта в часовой пояс заведения.

Тип: string Формат: date

HTTP 200

application/json

Список записей.

Пример успешного ответа
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 901,
            "ticket_id": 17,
            "event_id": 42,
            "event_name": "Музыкальный вечер",
            "status": 2,
            "name": "Иван",
            "phone": "79990000000",
            "email": "guest@example.com",
            "time_from": "2026-11-02 19:00:00",
            "time_to": "2026-11-02 22:00:00",
            "paymentPrice": 1500,
            "paymentTotal": 1500,
            "paymentPaid": 1,
            "paymentRefund": 0,
            "tags": [
                "vip"
            ]
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

POST/ticketsСоздать билеты

Создаёт один или несколько билетов на одно событие. Цена и условия оплаты рассчитываются по настройкам события и заведения. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос может создать новые билеты. Если ответ не получен, проверьте список билетов перед повторной отправкой.

Необходимое право ключа: Создавать и изменять билеты

Тело запроса обязательное

application/json / application/x-www-form-urlencoded

Email обязателен, если это требуется настройками продажи билетов заведения. При покупке проверяются доступность события, мест и зон, а также применимость скидок и меток. Неизвестные поля и массивы или объекты в обычных полях отклоняются; форматы tags и persones описаны отдельно.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
name обязательное

Имя гостя.

Тип: string

Примеры: "Иван"

phone обязательное

Телефон гостя.

Тип: string

Примеры: "79990000000"

email

Email гостя.

Тип: string

Примеры: "guest@example.com"

text

Комментарий.

Тип: string
tags

Ключи меток массивом или CSV. Пробелы по краям удаляются, повторы и пустые ключи исключаются. Итоговый CSV не длиннее 255 байт. В PUT отсутствие поля сохраняет метки, [] или пустая строка очищают. Новые назначения проверяются по активным меткам организации; существующие отключённые можно сохранить, удалённые исключаются при явном новом наборе.

Ровно один вариант (oneOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string Шаблон: ^[^,]*$
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]
Пример 3
[]
source

Источник покупки.

Тип: string По умолчанию: "api.restoplace.cc"
deposit_paid

Флаг 0/1; принимаются строки «0»/«1» и boolean.

Допустимые значения: [0,1,"0","1",false,true]

0 — ссылка на оплату платной покупки; 1 — зафиксировать внешнюю оплату. Цена рассчитывается по настройкам события и заведения.

По умолчанию: 0
promocode

Промокод.

Тип: string
allergy_text

Сведения об аллергии; добавляются к комментарию.

Тип: string
event_id обязательное

Положительное целое в диапазоне, поддерживаемом API. Можно передать числовую строку без ведущих нулей; значение за пределами диапазона отклоняется с HTTP 400.

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1
Вариант 2
Тип: string Шаблон: ^[1-9][0-9]*$

ID события заведения.

count

Максимум 20 билетов; настройки заведения могут ограничивать число билетов в одной покупке сильнее.

По умолчанию: 1

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1 Максимум: 20
Вариант 2
Тип: string Шаблон: ^(?:[1-9]|1[0-9]|20)$
persones

Гости по индексам билетов. Для зонального события нужны zone_id в элементах.

Тип: array
Каждый элемент массива

Индекс 0 — первый билет (покупатель), остальные — дополнительные билеты.

Тип: object
zone_id

Положительное целое в диапазоне, поддерживаемом API. Можно передать числовую строку без ведущих нулей; значение за пределами диапазона отклоняется с HTTP 400.

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1
Вариант 2
Тип: string Шаблон: ^[1-9][0-9]*$

Зона билета. Для зонального события передаётся каждому гостю, включая индекс 0.

name

Имя владельца этого билета; иначе используется общее name.

Тип: string
allergy_text

Аллергии этого гостя.

Тип: string
certificate

Код сертификата для скидки или оплаты.

Тип: string
allergy

Устаревшее поле сведений об аллергии. Для подробного описания используйте allergy_text.

Тип: string | integer | boolean

Поля, не перечисленные в этой схеме, запрещены.

Примеры для application/json:

Пример
{
    "event_id": 42,
    "count": 1,
    "name": "Иван",
    "phone": "79990000000",
    "email": "guest@example.com",
    "tags": [
        "vip"
    ],
    "deposit_paid": 0
}

Примеры для application/x-www-form-urlencoded:

Пример
{
    "event_id": 42,
    "count": 1,
    "name": "Иван",
    "phone": "79990000000",
    "email": "guest@example.com",
    "tags": [
        "vip"
    ],
    "deposit_paid": 0
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа при внешней оплате
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": {
        "id": 901,
        "number": 17,
        "guid": "00000000-0000-4000-8000-000000000901",
        "tags": [
            "vip"
        ],
        "paymentPrice": 1500,
        "paymentPaid": 1,
        "payment_wait_to": "",
        "payment_link": "",
        "tickets": [
            {
                "id": 901,
                "ticket_id": 17,
                "number": 17,
                "tags": [
                    "vip"
                ],
                "paymentPrice": 1500,
                "paymentPaid": 1
            }
        ]
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

GET/tickets/{id}Получить билет

Используйте идентификатор id из ответа API, а не номер ticket_id. Если билет не найден в заведении, ответ содержит HTTP 200 и responseData: [].

Необходимое право ключа: Список билетов

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json

Запись либо [] при отсутствии.

Пример успешного ответа
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": {
        "id": 901,
        "ticket_id": 17,
        "event_id": 42,
        "event_name": "Музыкальный вечер",
        "status": 2,
        "name": "Иван",
        "phone": "79990000000",
        "email": "guest@example.com",
        "time_from": "2026-11-02 19:00:00",
        "time_to": "2026-11-02 22:00:00",
        "paymentPrice": 1500,
        "paymentTotal": 1500,
        "paymentPaid": 1,
        "paymentRefund": 0,
        "tags": [
            "vip"
        ]
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

PUT/tickets/{id}Изменить данные билета

Изменяет переданные контактные данные, комментарий и метки; необходимо минимум одно поле. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: каждый запрос выполняется отдельно. Если ответ не получен, проверьте билет перед повторной отправкой.

Необходимое право ключа: Создавать и изменять билеты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json

Хотя бы одно изменяемое поле. Неотправленные поля сохраняются; финансовые и неизвестные поля отклоняются.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
name

Имя гостя.

Тип: string

Примеры: "Иван"

phone

Телефон гостя; после удаления разделителей номер не должен быть пустым.

Тип: string

Примеры: "79990000000"

email

Email гостя; для непустого значения проверяется корректность адреса.

Тип: string

Примеры: "guest@example.com"

text

Комментарий.

Тип: string
tags

Ключи меток массивом или CSV. Пробелы по краям удаляются, повторы и пустые ключи исключаются. Итоговый CSV не длиннее 255 байт. В PUT отсутствие поля сохраняет метки, [] или пустая строка очищают. Новые назначения проверяются по активным меткам организации; существующие отключённые можно сохранить, удалённые исключаются при явном новом наборе.

Ровно один вариант (oneOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string Шаблон: ^[^,]*$
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]
Пример 3
[]

Поля, не перечисленные в этой схеме, запрещены.

Хотя бы один вариант (anyOf)

Вариант 1

Обязательные поля: name.

Вариант 2

Обязательные поля: phone.

Вариант 3

Обязательные поля: email.

Вариант 4

Обязательные поля: text.

Вариант 5

Обязательные поля: tags.

Пример
{
    "tags": []
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": {
        "tags": "vip",
        "id": 901
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

PUT/tickets/{id}/statusИзменить статус билета

Изменяет статус билета; доступные переходы зависят от текущего статуса. Для возврата оплаты нужны status=6, refund_payment=1 и refund_amount>0. Проверяйте refund.success: отмена билета не гарантирует успешный возврат. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: каждый запрос выполняется отдельно. Если ответ не получен, проверьте билет перед повторной отправкой.

Необходимое право ключа: Создавать и изменять билеты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json

Возврат только при status=6, refund_payment=1 и refund_amount>0. При refund_payment=0 сумма игнорируется.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
status обязательное

Целевой статус; переход должен быть допустимым для текущего состояния билета.

Допустимые значения: [1,2,3,4,5,6,"1","2","3","4","5","6"]
refund_payment

Флаг 0/1; принимаются строки «0»/«1» и boolean.

Допустимые значения: [0,1,"0","1",false,true]

1 — запросить возврат при status=6; иначе возврата нет.

По умолчанию: 0
refund_amount

При refund_payment=1 обязательна конечная сумма больше 0. Без флага сумма игнорируется. Размер возврата может быть ограничен суммой платежа и правилами платёжного провайдера.

Тип: number | string | boolean
cancel_reason

Код причины отмены; 1 — произвольный текст.

Тип: integer | string
cancel_reason_text

Текст причины отмены.

Тип: string

Поля, не перечисленные в этой схеме, запрещены.

Все условия одновременно (allOf)

Условие 1

Условное правило

Если выполнено (if)
refund_payment обязательное
Допустимые значения: [1,"1",true]
То дополнительно требуется (then)
status
Допустимые значения: [6,"6"]
refund_amount обязательное

Конечное числовое значение строго больше нуля. Числовые строки принимаются; ноль, отрицательные значения и бесконечность запрещены.

Ровно один вариант (oneOf)

Вариант 1
Тип: number Строго больше: 0
Вариант 2
Тип: string Шаблон: ^\+?(?:[0-9]*[1-9][0-9]*(?:\.[0-9]*)?|[0-9]*\.[0-9]*[1-9][0-9]*)(?:[eE][+-]?[0-9]+)?$
Пример
{
    "status": 6,
    "refund_payment": 0,
    "cancel_reason": 1,
    "cancel_reason_text": "По просьбе гостя"
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": {
        "id": 901,
        "status": 6
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

PUT/tickets/{id}/changeПеренести билет на другое событие

Создаёт билет на другое событие или в другой зоне с метками исходного билета. Поле id в ответе относится к новому билету; deposit_paid определяет способ доплаты. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: каждый запрос выполняется отдельно. Если ответ не получен, проверьте билеты перед повторной отправкой.

Необходимое право ключа: Создавать и изменять билеты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

Для прямого PUT тело передаётся в application/json. Для формы используйте POST с X-HTTP-Method: PUT.

application/json

Создаёт новый билет и наследует метки исходного. Перенос допустим для активного билета со статусом 1–4, который ещё не переносился. То же событие допустимо при смене зоны. В ответе id нового билета.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
event_id обязательное

Положительное целое в диапазоне, поддерживаемом API. Можно передать числовую строку без ведущих нулей; значение за пределами диапазона отклоняется с HTTP 400.

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1
Вариант 2
Тип: string Шаблон: ^[1-9][0-9]*$

ID целевого события заведения.

zone_id

Положительное целое в диапазоне, поддерживаемом API. Можно передать числовую строку без ведущих нулей; значение за пределами диапазона отклоняется с HTTP 400.

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1
Вариант 2
Тип: string Шаблон: ^[1-9][0-9]*$

Зона для события с разделением мест по зонам. Если поле не передано, используется 0.

reason

Код причины переноса.

Тип: integer | string По умолчанию: 1
reason_text

Текст причины.

Тип: string По умолчанию: ""
deposit_paid

Флаг 0/1; принимаются строки «0»/«1» и boolean.

Допустимые значения: [0,1,"0","1",false,true]

Доплата: 1 — внешняя оплата; 0 — сформировать оплату.

По умолчанию: 0

Поля, не перечисленные в этой схеме, запрещены.

Пример
{
    "event_id": 43,
    "reason": 1,
    "reason_text": "Другая дата",
    "deposit_paid": 0
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "tickets",
    "requestDate": 1791882000,
    "responseData": {
        "id": 902,
        "number": 18,
        "guid": "00000000-0000-4000-8000-000000000902",
        "tags": [
            "vip"
        ],
        "paymentPrice": 1500,
        "paymentPaid": 1,
        "payment_link": ""
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

Сертификаты9 методов

GET/certificatesСписок видов сертификатов

Справочник видов сертификатов заведения по возрастанию id. Для купленных сертификатов используйте /issuedCertificates. Поисковые фильтры не поддерживаются. Поле totalPages не отражает фактическое число страниц справочника.

Необходимое право ключа: Список сертификатов

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1

HTTP 200

application/json

Список записей.

Пример успешного ответа
{
    "method": "certificates",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 42,
            "checked": 1,
            "name": "Подарочный сертификат",
            "price": 5000,
            "validity_count": 1,
            "validity_type": "months",
            "increase": 0
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

GET/certificates/{id}Получить вид сертификата

Возвращает вид сертификата заведения по id. Если вид не найден, ответ содержит HTTP 200 и responseData: [].

Необходимое право ключа: Список сертификатов

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json

Запись либо [] при отсутствии.

Пример успешного ответа
{
    "method": "certificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 42,
        "checked": 1,
        "name": "Подарочный сертификат",
        "price": 5000,
        "validity_count": 1,
        "validity_type": "months",
        "increase": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

GET/issuedCertificatesСписок купленных сертификатов

Сертификаты гостей по возрастанию id, до 400 записей на страницу. Каждый сертификат содержит полное info, включая историю использования info.used. Некорректные значения поддерживаемых фильтров возвращают HTTP 200 и responseData: [].

Необходимое право ключа: Список сертификатов

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

ПараметрГде передатьОписание и формат
pageURL

Страница списка по 400 записей. Неположительное или отсутствующее значение заменяется на 1.

Тип: integer По умолчанию: 1 Минимум: 1
updatedAfterTimeURL

Изменены строго после Unix timestamp в секундах. 0 или отсутствие параметра отключают фильтр.

Тип: integer Минимум: 0
query[number]URL

Номер сертификата, включая буквы и ведущие нули. Передавайте строкой, не id записи.

Тип: string Шаблон: ^[a-zA-Z0-9]+$

Примеры: "AB001234"

query[phone]URL

Телефон гостя: цифры без пробелов, скобок, дефисов и знака +.

Тип: string Шаблон: ^[1-9][0-9]*$

Примеры: "79990000000"

query[email]URL

Точное совпадение email.

Тип: string Формат: email
query[status]URL

Код текущего статуса.

Тип: integer Минимум: 1
query[certificate_id]URL

ID вида сертификата из справочника /certificates.

Тип: integer Минимум: 1
query[paymentPaid]URL

Сертификаты с paymentPrice > 0 и указанным признаком оплаты.

Тип: integer Допустимые значения: [0,1]
query[createdDate]URL

Дата создания с 00:00:00 до 23:59:59 по московскому времени (UTC+3).

Тип: string Формат: date

HTTP 200

application/json

Список купленных сертификатов.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": [
        {
            "id": 812,
            "number": "AB0012345",
            "certificate_id": 42,
            "certificate_name": "Подарочный сертификат",
            "status": 2,
            "start": "2026-10-13 00:00:00",
            "end": "2026-11-13 23:59:59",
            "name": "Иван",
            "phone": "79990000000",
            "email": "guest@example.com",
            "tags": [
                "vip"
            ],
            "paymentPrice": 5000,
            "paymentPriceTotal": 5000,
            "paymentPaid": 1,
            "paymentUsed": 0,
            "paymentRefund": 0,
            "currency": 643,
            "info": {
                "paid": [
                    {
                        "date": "2026-10-13 12:00:00",
                        "who": "0",
                        "price": 5000
                    }
                ]
            }
        }
    ],
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

POST/issuedCertificatesСоздать сертификат

Создаёт один сертификат гостя. Стоимость и срок рассчитываются по настройкам вида сертификата и заведения. При deposit_paid=0 для платной покупки формируется ссылка оплаты; deposit_paid=1 фиксирует внешнюю оплату. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос считается новой командой. Если ответ потерян, проверьте сертификат перед повторной отправкой.

Необходимое право ключа: Создавать и изменять сертификаты

Тело запроса обязательное

application/json / application/x-www-form-urlencoded

Создание сертификата гостя. Неизвестные поля отклоняются. Дата начала и переменный номинал зависят от настроек заведения и вида сертификата.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
name обязательное

Имя гостя.

Тип: string

Примеры: "Иван"

phone обязательное

Телефон гостя.

Тип: string

Примеры: "79990000000"

email обязательное

Email получателя; обязателен.

Тип: string Формат: email

Примеры: "guest@example.com"

text

Комментарий.

Тип: string
tags

Ключи меток массивом или CSV. Пробелы по краям удаляются, повторы и пустые ключи исключаются. Итоговый CSV не длиннее 255 байт. В PUT отсутствие поля сохраняет метки, [] или пустая строка очищают. Новые назначения проверяются по активным меткам организации; существующие отключённые можно сохранить, удалённые исключаются при явном новом наборе.

Ровно один вариант (oneOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string Шаблон: ^[^,]*$
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]
Пример 3
[]
source

Источник покупки.

Тип: string По умолчанию: "api.restoplace.cc"
deposit_paid

Флаг 0/1; принимаются строки «0»/«1» и boolean.

Допустимые значения: [0,1,"0","1",false,true]

0 — сформировать ссылку оплаты для платной покупки; 1 — зафиксировать внешнюю оплату. Стоимость рассчитывается по настройкам сертификата и заведения.

По умолчанию: 0
promocode

Промокод.

Тип: string
allergy_text

Сведения об аллергии; добавляются к комментарию.

Тип: string
certificate_id обязательное

Положительное целое в диапазоне, поддерживаемом API. Можно передать числовую строку без ведущих нулей; значение за пределами диапазона отклоняется с HTTP 400.

Ровно один вариант (oneOf)

Вариант 1
Тип: integer Минимум: 1
Вариант 2
Тип: string Шаблон: ^[1-9][0-9]*$

ID вида сертификата вашего заведения из /certificates.

date_start

Начало действия YYYY-MM-DD. Обязательно и учитывается, если в заведении разрешён выбор даты начала. Иначе используется текущий рабочий день заведения.

Тип: string Формат: date
user_price

Конечное числовое значение строго больше нуля. Числовые строки принимаются; ноль, отрицательные значения и бесконечность запрещены.

Ровно один вариант (oneOf)

Вариант 1
Тип: number Строго больше: 0
Вариант 2
Тип: string Шаблон: ^\+?(?:[0-9]*[1-9][0-9]*(?:\.[0-9]*)?|[0-9]*\.[0-9]*[1-9][0-9]*)(?:[eE][+-]?[0-9]+)?$

Номинал для вида сертификата с increase=1; в этом случае обязателен и не может быть меньше price из справочника. Для фиксированного номинала применяется цена вида.

Поля, не перечисленные в этой схеме, запрещены.

Примеры для application/json:

Пример
{
    "certificate_id": 42,
    "name": "Иван",
    "phone": "79990000000",
    "email": "guest@example.com",
    "tags": [
        "vip"
    ],
    "deposit_paid": 0
}

Примеры для application/x-www-form-urlencoded:

Пример
{
    "certificate_id": 42,
    "name": "Иван",
    "phone": "79990000000",
    "email": "guest@example.com",
    "tags": [
        "vip"
    ],
    "deposit_paid": 0
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа при внешней оплате
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "number": "AB0012345",
        "guid": "00000000-0000-4000-8000-000000000812",
        "tags": [
            "vip"
        ],
        "paymentPrice": 5000,
        "paymentPaid": 1,
        "payment_wait_to": "2026-10-13 12:30:00",
        "payment_link": ""
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

GET/issuedCertificates/{id}Получить купленный сертификат

Используйте id из ответа API, а не number или certificate_id. Возвращает полное info, включая info.used. Если сертификат не найден в заведении, ответ содержит HTTP 200 и responseData: [].

Необходимое право ключа: Список сертификатов

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

HTTP 200

application/json

Сертификат либо [] при отсутствии.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "number": "AB0012345",
        "certificate_id": 42,
        "certificate_name": "Подарочный сертификат",
        "status": 2,
        "start": "2026-10-13 00:00:00",
        "end": "2026-11-13 23:59:59",
        "name": "Иван",
        "phone": "79990000000",
        "email": "guest@example.com",
        "tags": [
            "vip"
        ],
        "paymentPrice": 5000,
        "paymentPriceTotal": 5000,
        "paymentPaid": 1,
        "paymentUsed": 0,
        "paymentRefund": 0,
        "currency": 643,
        "info": {
            "paid": [
                {
                    "date": "2026-10-13 12:00:00",
                    "who": "0",
                    "price": 5000
                }
            ]
        }
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

PUT/issuedCertificates/{id}Изменить данные сертификата

Изменяет только переданные контакты, комментарий, метки и дату окончания; требуется хотя бы одно поле. Пропущенные поля сохраняются. Для погашения и отмены используйте отдельные команды. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос считается новой командой. Если ответ потерян, проверьте сертификат перед повторной отправкой.

Необходимое право ключа: Создавать и изменять сертификаты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

application/json

Хотя бы одно изменяемое поле. Неотправленные поля сохраняются; финансовые и неизвестные поля отклоняются.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
name

Имя гостя.

Тип: string

Примеры: "Иван"

phone

Телефон гостя; после удаления разделителей номер не должен быть пустым.

Тип: string

Примеры: "79990000000"

email

Email гостя; для непустого значения проверяется корректность адреса.

Тип: string

Примеры: "guest@example.com"

text

Комментарий.

Тип: string
tags

Ключи меток массивом или CSV. Пробелы по краям удаляются, повторы и пустые ключи исключаются. Итоговый CSV не длиннее 255 байт. В PUT отсутствие поля сохраняет метки, [] или пустая строка очищают. Новые назначения проверяются по активным меткам организации; существующие отключённые можно сохранить, удалённые исключаются при явном новом наборе.

Ровно один вариант (oneOf)

Вариант 1
Тип: array
Каждый элемент массива
Тип: string Шаблон: ^[^,]*$
Вариант 2
Тип: string

Примеры: "vip,birthday"

Пример 1
[
    "vip",
    "birthday"
]
Пример 3
[]
end

Новая дата окончания YYYY-MM-DD. Действует до 23:59:59 в часовом поясе заведения; не может быть в прошлом.

Тип: string Формат: date

Поля, не перечисленные в этой схеме, запрещены.

Хотя бы один вариант (anyOf)

Вариант 1

Обязательные поля: name.

Вариант 2

Обязательные поля: phone.

Вариант 3

Обязательные поля: email.

Вариант 4

Обязательные поля: text.

Вариант 5

Обязательные поля: tags.

Вариант 6

Обязательные поля: end.

Пример
{
    "text": "Подарок на день рождения",
    "tags": [
        "birthday"
    ],
    "end": "2027-12-31"
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "status": 2,
        "paymentPrice": 5000,
        "paymentPriceTotal": 5000,
        "paymentUsed": 0,
        "paymentRefund": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

PUT/issuedCertificates/{id}/redeemПогасить сертификат

Погашает весь остаток или указанную сумму. Сертификат должен быть активен и действовать на момент запроса; платная покупка должна быть оплачена. Частичное погашение должно быть разрешено настройками заведения; сумма сверх остатка отклоняется. При полном использовании остатка сертификат закрывается. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос считается новой командой. Если ответ потерян, проверьте сертификат перед повторной отправкой.

Необходимое право ключа: Создавать и изменять сертификаты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса

application/json

Пустое тело или {} погашает весь остаток. Для типов 2/3 необходимы сумма и разрешение частичного погашения в настройках заведения. Поле status не передаётся.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
amount_type

1 — весь остаток; 2 — указанная сумма с сохранением активности при наличии остатка; 3 — указанная сумма с закрытием сертификата.

Допустимые значения: [1,2,3,"1","2","3"] По умолчанию: 1
amount

Для amount_type=2/3 обязательна конечная положительная сумма не больше остатка. Для amount_type=1 значение игнорируется.

Тип: number | string | boolean

Поля, не перечисленные в этой схеме, запрещены.

Все условия одновременно (allOf)

Условие 1

Условное правило

Если выполнено (if)
amount_type обязательное
Допустимые значения: [2,3,"2","3"]
То дополнительно требуется (then)
amount обязательное

Конечное числовое значение строго больше нуля. Числовые строки принимаются; ноль, отрицательные значения и бесконечность запрещены.

Ровно один вариант (oneOf)

Вариант 1
Тип: number Строго больше: 0
Вариант 2
Тип: string Шаблон: ^\+?(?:[0-9]*[1-9][0-9]*(?:\.[0-9]*)?|[0-9]*\.[0-9]*[1-9][0-9]*)(?:[eE][+-]?[0-9]+)?$
Пример
{
    "amount_type": 2,
    "amount": 1500
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "status": 5,
        "paymentPrice": 5000,
        "paymentPriceTotal": 5000,
        "paymentUsed": 5000,
        "paymentRefund": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

PUT/issuedCertificates/{id}/cancelОтменить сертификат

Отмена и возврат оплаты выполняются отдельно: по умолчанию отмена не запрашивает возврат. Для возврата передайте refund_payment=1 и положительный refund_amount. При явном запросе возврата успешный ответ отмены всегда содержит refund. Проверяйте refund.success: отмена может завершиться успешно при ошибке возврата. У неоплаченного платного сертификата итоговый статус — 8, у остальных — 6. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос считается новой командой. Если ответ потерян, проверьте сертификат перед повторной отправкой.

Необходимое право ключа: Создавать и изменять сертификаты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса

application/json

Пустое тело или {} отменяет без возврата оплаты. При refund_payment=1 обязательна положительная refund_amount. Без флага сумма игнорируется. Поле status не передаётся.

Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
refund_payment

Флаг 0/1; принимаются строки «0»/«1» и boolean.

Допустимые значения: [0,1,"0","1",false,true]

1 — запросить возврат оплаты; по умолчанию 0 — отменить без возврата.

По умолчанию: 0
refund_amount

При refund_payment=1 обязательна конечная сумма больше 0. Без флага сумма игнорируется. Размер возврата может быть ограничен суммой платежа и правилами платёжного провайдера.

Тип: number | string | boolean

Поля, не перечисленные в этой схеме, запрещены.

Все условия одновременно (allOf)

Условие 1

Условное правило

Если выполнено (if)
refund_payment обязательное
Допустимые значения: [1,"1",true]
То дополнительно требуется (then)
refund_amount обязательное

Конечное числовое значение строго больше нуля. Числовые строки принимаются; ноль, отрицательные значения и бесконечность запрещены.

Ровно один вариант (oneOf)

Вариант 1
Тип: number Строго больше: 0
Вариант 2
Тип: string Шаблон: ^\+?(?:[0-9]*[1-9][0-9]*(?:\.[0-9]*)?|[0-9]*\.[0-9]*[1-9][0-9]*)(?:[eE][+-]?[0-9]+)?$
Пример
{
    "refund_payment": 1,
    "refund_amount": 4500
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "status": 6,
        "paymentPrice": 5000,
        "paymentPriceTotal": 5000,
        "paymentUsed": 0,
        "paymentRefund": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

PUT/issuedCertificates/{id}/restoreВосстановить отменённый сертификат

Восстанавливает сертификат со статусом 6, без возврата оплаты, с положительным остатком и оплаченной стоимостью покупки. Обязательна дата окончания не в прошлом; итоговый статус — 2. Требуется ключ типа api. Неизвестные поля отклоняются. Idempotency-Key не поддерживается: повторный запрос считается новой командой. Если ответ потерян, проверьте сертификат перед повторной отправкой.

Необходимое право ключа: Создавать и изменять сертификаты

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

ПараметрГде передатьОписание и формат
idобязательныйПуть

Внутренний идентификатор записи, не её номер для гостя.

Тип: integer Минимум: 1

Тело запроса обязательное

application/json
Тип: object
api_key

Необязательный альтернативный способ передачи ключа (вместо X-API-Key).

Тип: string
end обязательное

Дата окончания YYYY-MM-DD; не раньше текущей даты заведения. Срок устанавливается до 23:59:59.

Тип: string Формат: date

Поля, не перечисленные в этой схеме, запрещены.

Пример
{
    "end": "2027-12-31"
}

HTTP 200

application/json

Результат операции.

Пример успешного ответа
{
    "method": "issuedCertificates",
    "requestDate": 1791882000,
    "responseData": {
        "id": 812,
        "status": 2,
        "paymentPrice": 5000,
        "paymentPriceTotal": 5000,
        "paymentUsed": 0,
        "paymentRefund": 0
    },
    "page": 1,
    "totalPages": 1
}

HTTP 401

application/json

Ключ отсутствует, не найден, отключён или не подходит источнику запроса.

Пример
{
    "error": "Invalid Key"
}

HTTP 403

application/json

Недостаточно прав ключа или лицензия не разрешает API.

Пример
{
    "error": "Insufficient permissions"
}

HTTP 500

application/json

Ошибка обработки запроса.

HTTP 400

application/json

Некорректные параметры или нарушение условий выполнения операции.

HTTP 404

application/json

Маршрут, метод или запрошенная сущность не найдены; см. особенности конкретной операции.

HTTP 405

application/json

Операция не поддерживается либо параметры запроса или состояние записи не позволяют её выполнить. Конкретные условия указаны в описании операции.

HTTP 502

application/json

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

Webhook

Настройка вебхуков описана в отдельных инструкциях.

Прочитайте ещё


Как произвести интеграцию Restoplace с iiko. Особенности, технические требования, как установить

Как произвести интеграцию Restoplace с Bitrix24. Как подключить и настроить

Как изменить цветовое оформление виджета для гостей, который устанавливается на вашем сайте и в соцсетях

Пошаговое руководство по установке виджета бронирования RESTOPLACE в группу вашего заведения в Вконтакте

Пошаговое руководство по установке виджета бронирования RESTOPLACE в Inst-m вашего заведения

В этой инструкции вы узнаете, как установить HTML-код виджета бронирования Restoplace на Ваш сайт