Авторизация
API поддерживает три способа авторизации. Передавайте один из заголовков в каждом запросе.
Authorization: Bearer <token> (POST) или query-параметром ?token= (GET). Получить токен — auth.createToken.user_id и secret_key из конфига. Позволяет боту обращаться к любому методу API от имени пользователя без хранения токенов. Передаётся в заголовке SecretKey: <value>.window.Telegram.WebApp.initData. Передаётся в заголовке InitData: <value> (POST) или query-параметром ?init_data= (GET).# secret_key берётся из config.toml # результат encode() передаётся в заголовке SecretKey каждого запроса def encode(user_id) -> str: sig = hmac.new( config.secret_key.encode(), str(user_id).encode(), hashlib.sha256 ).hexdigest() raw = f"{user_id}:{sig}" return base64.urlsafe_b64encode(raw.encode()).decode()
auth.createToken
Обменивает одноразовый код на постоянный токен доступа. Код действителен 5 минут с момента создания. После успешного обмена код уничтожается.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| code | integer | required | Одноразовый 4-значный код, полученный через бота командой /code |
{
"status": "success",
"data": {
"token": cc1bad5404f....,
"ok": true
}
}
auth.createCode
Генерирует одноразовый 4-значный код для авторизации. Код действует 5 минут. Если сессия уже существует — вернёт ошибку 409.
— нет —
{
"status": "success",
"data": {
"code": 4821,
"ok": true
}
}
report.get
Возвращает список отчётов по смене с пагинацией. Поддерживает фильтрацию по дате и типу смены.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| limit | integer | optional | Кол-во записей. По умолчанию 30, макс. 100 |
| offset | integer | optional | Смещение для пагинации. По умолчанию 0 |
| date | string | optional | Фильтр по дате в формате YYYY-MM-DD |
| report_type | string | optional | Тип смены: day или night |
| token | string | optional | Токен авторизации (альтернатива заголовку) |
report.create
Создаёт отчёт по смене. Принимает JSON или multipart/form-data (если прикладываются фото). За один день можно создать один дневной и один ночной отчёт. Ночной отчёт автоматически относится к предыдущей дате.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| report_type | string | required | day или night |
| money | integer | required | Товарооборот за смену в рублях |
| checks | integer | required | Количество чеков за смену |
| itph | float | required | ITPH |
| sos | integer | required | Время обслуживания в секундах |
| sos_delivery | integer | required | Время обслуживания доставки в секундах |
| guest_experience | integer | required | Количество негативных отзывов |
| comments | string | required | Комментарий к смене |
| photo0, photo1... | file | optional | Фотографии (только multipart/form-data). Макс. 50 МБ |
{
"status": "success",
"data": { "ok": true }
}
credit.get
Возвращает список долгов между ресторанами. Активные долги идут первыми, затем закрытые. Внутри каждой группы — сортировка по дате убыванию.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| limit | integer | optional | Кол-во записей. По умолчанию 30, макс. 100 |
| offset | integer | optional | Смещение для пагинации. По умолчанию 0 |
{
"status": "success",
"data": {
"items": [
{
"id": 1,
"date": "2026-03-11",
"restaurant": 1088,
"what_take": "Булки",
"measurement_unit": "кс.",
"count": 5.0,
"credit_type": "взяли",
"repayment_date": "2026-03-15",
"is_transfer": false,
"is_active": true
}
],
"ok": true
}
}
credit.create
Создаёт запись о долге между ресторанами. После создания уведомление автоматически отправляется в Telegram-чат.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| restaurant | integer | required | Номер ресторана |
| what_take | string | required | Что взяли / отдали |
| measurement_unit | string | required | Единица измерения (шт., кс., кг., сл.) |
| count | integer | required | Количество |
| credit_type | string | required | take — взяли, give — отдали |
| is_transfer | boolean | required | Является ли операция трансфером |
| repayment_date | string | optional | Дата возврата в формате ISO 8601 |
{
"status": "success",
"data": { "ok": true }
}
credit.toggle
Переключает статус долга между активным и закрытым. Если долг был активным — закрывает его, и наоборот.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| credit_id | integer | required | ID долга из credit.get |
{
"status": "success",
"data": { "ok": true }
}
user.get
Возвращает информацию о текущем авторизованном пользователе.
— нет —
{
"status": "success",
"data": {
"tg_id": 123456789,
"full_name": "Иван Иванов",
"short_name": "Иван И.",
"role": "admin",
"ok": true
}
}