API
Базовый URL: https://app.kombinator.ru/
Аутентификация — JWT Bearer-токен. Токен получается через Account/Login и передается в заголовке:
Authorization: Bearer {accessToken}
1. Аутентификация: POST /api/v3/Account/Login
Вход по email и паролю. Доступен анонимно, предварительная аутентификация не требуется. При успехе возвращает пару токенов (access + refresh) и дополнительно выставляет refresh-token cookie.
Тело запроса
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
email |
string | да | Email учетной записи |
password |
string | да | Пароль |
Пример запроса
POST https://app.kombinator.ru/api/v3/Account/Login
content-type: application/json
{
"email": "user@example.com",
"password": "password"
}
Ответ 200
| Поле | Тип | Описание |
|---|---|---|
profile |
object | Информация о профиле учетной записи |
accessToken |
string | JWT access-токен для заголовка Authorization |
accessExpiresAt |
date-time | Время истечения access-токена |
refreshToken |
string | Refresh-токен для продления сессии |
refreshExpiresAt |
date-time | Время истечения refresh-токена |
Ошибки
| Код | Описание |
|---|---|
| 404 | Учетная запись не найдена |
| 422 | Ошибка валидации / неверные учетные данные |
| 500 | Внутренняя ошибка сервера |
2. Генерация документа: POST /api/v3/Templates/Files/{TemplateId}/Generate
Заполняет шаблон данными и генерирует документ в запрошенном формате. Может разбивать результат на отдельные поддокументы и возвращать их zip-архивом, если это предусмотренно шаблоном.
Заголовок: Authorization: Bearer {accessToken}
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
TemplateId |
int32 | Идентификатор шаблона |
Тело запроса
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
data |
object | да | Словарь значений полей анкеты (см. раздел «Формат поля data») |
format |
string | да | "docx" или "pdf" |
Пример запроса
Пример для шаблона договора аренды жилого помещения
POST https://app.kombinator.ru/api/v3/Templates/Files/700/Generate
Authorization: Bearer {{accessToken}}
content-type: application/json
{
"data": {
"город": "Москва",
"датаДоговора": "2025-12-01",
"срокАренды": 12,
"стоимостьАренды": 50000,
"арендатор" :
{
"ФИО": "Иванов Иван Иванович",
"пол": "мужской",
"датаРождения": "1978-05-12",
"местоРождения": "г. Москва",
"паспорт": {
"серия": "4501",
"номер": "234567",
"датаВыдачи": "2002-06-20",
"органВыдачи": "ОУФМС России по г. Москве по району Тверской"
}
},
"собственники": [
{
"ФИО": "Петров Сергей Григорьевич",
"пол": "мужской",
"датаРождения": "1972-09-03",
"местоРождения": "г. Екатеринбург",
"паспорт": {
"серия": "4503",
"номер": "345678",
"дата": "2003-10-10",
"органВыдачи": "ОУФМС России по г. Москве по району Арбат"
},
"адресРегистрации": "г. Москва, ул. Чехова, д. 15, кв. 42",
"телефон": "89162345678"
},
{
"ФИО": "Сидорова Анна Сергеевна",
"пол": "женский",
"датаРождения": "1980-01-27",
"местоРождения": "г. Зеленоград",
"паспорт": {
"серия": "4505",
"номер": "456789",
"дата": "2004-03-05",
"органВыдачи": "ОУФМС России по г. Москве по району Хорошевский"
},
"адресРегистрации": "г. Москва, ул. Чехова, д. 15, кв. 42",
"телефон": "89163456789"
}
],
"деньАренднойПлаты": 15
},
"format": "docx"
}
Ответ 200
| Поле | Тип | Описание |
|---|---|---|
bytes |
string (base64) | Содержимое сгенерированного файла в Base64 |
mediaType |
string | MIME-тип результата: application/vnd.openxmlformats-officedocument.wordprocessingml.document (docx), application/pdf, application/zip |
Ошибки
| Код | Описание |
|---|---|
| 400 | Некорректный запрос |
| 401 | Не авторизован (нет или истек токен) |
| 403 | Недостаточно прав |
| 404 | Шаблон не найден |
| 422 | Ошибка валидации данных |
| 500 | Внутренняя ошибка сервера |
Формат поля data
Поле data — это словарь «идентификатор поля → значение», где ключи соответствуют
идентификаторам полей анкеты документа.
"data":
{
"<наименование простого поля>": "<значение поля>",
"<наименование составного поля>" :
[
{
"<наименование вложенного поля>": "<значение вложенного поля>", …
} ,
…
]
}
Обратите внимание:
- Группы не создают пространства имен. Поля анкеты могут быть объединены в «Группы»,
но группа служит исключительно для визуального разделения в анкете. Все поля группы
передаются в
dataна верхнем уровне, без вложенности. - Регистр символов не важен. Идентификаторы полей в JSON не учитывают регистр
- Логические значения (поля «Да/Нет») принимают значения
trueиfalse.
"data": {
…
"включаяНДС": true,
…
}
- Числа передаются в стандартной JSON-нотации (числом, не строкой); разделителем
дробной части всегда служит точка:
1001.11.
"data": {
…
"цена": 20.7,
…
}
- Списки передаются в стандартной JSON-нотации — массивом объектов. Идентификатор элемента списка из анкеты использовать не нужно.
"data": {
"Заказ": [
{ "товарнаяПозиция": "печенье", "цена": 525 },
{ "товарнаяПозиция": "макароны", "цена": 271 },
]
}
- Даты и Время задаются в формате ISO8601
"data": {
…
"датаРождения": "1980-01-27",
…
}