Перейти к содержанию

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",
   …
}