Download OpenAPI specification:
Документация API SmartCommAI
Вход по логину и паролю
| login required | string Логин пользователя |
| password required | string Пароль пользователя |
{- "login": "admin",
- "password": "Qwerty123"
}{- "data": {
- "id": 12,
- "country": {
- "id": 12,
- "alias": "FRA",
- "title": "France",
- "phone": {
- "code": 33,
- "codePreview": "+1-767",
- "phoneStartsWith": "767",
- "mask": "##-##-##-##",
- "lengthMin": 11,
- "lengthMax": 14,
- "lengthDiff": 3
},
}, - "language": {
- "id": 12,
- "code": "en",
- "name": "English"
}, - "currency": {
- "id": 12,
- "code": "USD",
- "name": "United States dollar"
}, - "created_at": "2025-09-21T12:00:00Z",
- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com"
}
}{- "title": "Не авторизован",
- "status": 401,
- "detail": "Сессия не найдена или истекла.",
- "instance": "/auth/me"
}Регистрация пользователя
| login required | string Логин пользователя |
| name required | string Имя пользователя |
| surname required | string Фамилия пользователя |
| birthDate required | string <date> Дата рождения пользователя |
| phone required | string^\+[1-9]\d{1,14}$ Телефон пользователя |
| email required | string <email> E-mail пользователя |
| countryId required | integer Идентификатор страны пользователя |
| password required | string Пароль пользователя |
{- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com",
- "countryId": 12,
- "password": "Qwerty123"
}{- "data": {
- "id": 12,
- "country": {
- "id": 12,
- "alias": "FRA",
- "title": "France",
- "phone": {
- "code": 33,
- "codePreview": "+1-767",
- "phoneStartsWith": "767",
- "mask": "##-##-##-##",
- "lengthMin": 11,
- "lengthMax": 14,
- "lengthDiff": 3
},
}, - "language": {
- "id": 12,
- "code": "en",
- "name": "English"
}, - "currency": {
- "id": 12,
- "code": "USD",
- "name": "United States dollar"
}, - "created_at": "2025-09-21T12:00:00Z",
- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com"
}
}Принимает email. Если пользователь с таким email существует — отправляет письмо с 4-значным кодом. Если не существует — ничего не делает. В любом случае возвращает success=true, чтобы исключить перебор существующих email.
Данные для запроса кода восстановления
| email required | string <email> Email пользователя |
{- "email": "user@example.com"
}{- "data": {
- "success": true
}
}Проверяет 4-значный код из письма и возвращает reset_token. reset_token используется на следующем шаге для установки нового пароля.
Данные для проверки кода восстановления
| email required | string <email> Email пользователя |
| code required | string^\d{4}$ 4-значный код из письма |
{- "email": "user@example.com",
- "code": "1234"
}{- "data": {
- "success": true,
- "reset_token": "fV3p1hKz9mQe4uTt7yXw2aBc6dEf0GhIjKlMnOpQrStUvWxYz0123456789ABCD"
}
}Принимает email, reset_token и новый пароль. При успехе меняет пароль пользователя и выполняет вход.
Данные для установки нового пароля
| email required | string <email> Email пользователя |
| reset_token required | string Токен, полученный на шаге verify-code |
| password required | string >= 8 characters Новый пароль (минимум 8 символов) |
{- "email": "user@example.com",
- "reset_token": "fV3p1hKz9mQe4uTt7yXw2aBc6dEf0GhIjKlMnOpQrStUvWxYz0123456789ABCD",
- "password": "NewStrongPassword123!"
}{- "data": {
- "success": true
}
}{- "data": {
- "id": 12,
- "country": {
- "id": 12,
- "alias": "FRA",
- "title": "France",
- "phone": {
- "code": 33,
- "codePreview": "+1-767",
- "phoneStartsWith": "767",
- "mask": "##-##-##-##",
- "lengthMin": 11,
- "lengthMax": 14,
- "lengthDiff": 3
},
}, - "language": {
- "id": 12,
- "code": "en",
- "name": "English"
}, - "currency": {
- "id": 12,
- "code": "USD",
- "name": "United States dollar"
}, - "created_at": "2025-09-21T12:00:00Z",
- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com"
}
}Редактирует и возвращает профиль текущего пользователя
| login | string Логин пользователя |
| name | string Имя пользователя |
| surname | string Фамилия пользователя |
| birthDate | string <date> Дата рождения пользователя |
| phone | string^\+[1-9]\d{1,14}$ Телефон пользователя |
string <email> E-mail пользователя | |
| countryId | integer Идентификатор страны пользователя |
| languageId | integer Идентификатор языка |
| currencyId | integer Идентификатор валюты |
{- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com",
- "countryId": 12,
- "languageId": 12,
- "currencyId": 12
}{- "data": {
- "id": 12,
- "country": {
- "id": 12,
- "alias": "FRA",
- "title": "France",
- "phone": {
- "code": 33,
- "codePreview": "+1-767",
- "phoneStartsWith": "767",
- "mask": "##-##-##-##",
- "lengthMin": 11,
- "lengthMax": 14,
- "lengthDiff": 3
},
}, - "language": {
- "id": 12,
- "code": "en",
- "name": "English"
}, - "currency": {
- "id": 12,
- "code": "USD",
- "name": "United States dollar"
}, - "created_at": "2025-09-21T12:00:00Z",
- "login": "JohnDoe1987",
- "name": "John",
- "surname": "Doe",
- "birthDate": "1987-05-19",
- "phone": "+16842344567",
- "email": "johndoe87@gmail.com"
}
}{- "data": [
- {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z",
- "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
]
}Создаёт новый объект и возвращает его.
Данные для создания объекта.
| name required | string Название объекта. |
| area required | number <float> Площадь объекта (в квадратных метрах). |
| address required | string Адрес объекта. |
| fileIds required | Array of strings (FileIds) [ 0 .. 20 ] items Массив идентификаторов загруженных файлов (ULID). |
{- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "fileIds": [
- "01JCC4VZK3QW2XH1J2Y6R5A8Q9"
]
}{- "data": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z",
- "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Возвращает объект по идентификатору.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
{- "data": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z",
- "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Обновляет объект по идентификатору и возвращает его.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
Данные для обновления объекта.
| name | string Название объекта. |
| area | number <float> Площадь объекта (в квадратных метрах). |
| address | string Адрес объекта. |
| fileIds | Array of strings (FileIds) [ 0 .. 20 ] items Массив идентификаторов загруженных файлов (ULID). |
{- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "fileIds": [
- "01JCC4VZK3QW2XH1J2Y6R5A8Q9"
]
}{- "data": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z",
- "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Удаляет объект по идентификатору.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
{- "title": "Не авторизован",
- "status": 401,
- "detail": "Сессия не найдена или истекла.",
- "instance": "/auth/me"
}Возвращает список событий с курсорной пагинацией.
| limit | integer [ 1 .. 200 ] Default: 50 Example: limit=50 Количество элементов в результате |
| cursor | string Example: cursor=eyJuYW1lIjogItCf0YDQvtC00LDQstC10YYiLCAiaWQiOiAxMjMgfQ== Курсор пагинации |
| object_id | integer Example: object_id=101 Фильтр по объекту. |
| date_from | string <date> Example: date_from=2026-01-01 Начало периода (YYYY-MM-DD). |
| date_to | string <date> Example: date_to=2026-01-31 Конец периода (YYYY-MM-DD). |
{- "pagination": {
- "nextCursor": "eyJuYW1lIjogItCf0YDQvtC00LDQstC10YYiLCAiaWQiOiAxMjMgfQ==",
- "hasMore": true
}, - "data": [
- {
- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "id": 501,
- "created_at": "2026-01-15T08:00:00Z",
- "updated_at": "2026-01-15T08:05:00Z",
- "object": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z"
}, - "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
]
}Создаёт новое событие и возвращает его.
Данные для создания события.
| date required | string <date> Дата события. |
| notification_date required | string <date> Дата уведомления. |
| income required | integer Доход. |
| expense required | integer Расход. |
| description | string Описание/заметки. |
| object_id required | integer Идентификатор объекта, к которому относится событие. |
| fileIds | Array of strings (FileIds) [ 0 .. 20 ] items Массив идентификаторов загруженных файлов (ULID). |
{- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "object_id": 101,
- "fileIds": [
- "01JCC4VZK3QW2XH1J2Y6R5A8Q9"
]
}{- "data": {
- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "id": 501,
- "created_at": "2026-01-15T08:00:00Z",
- "updated_at": "2026-01-15T08:05:00Z",
- "object": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z"
}, - "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Возвращает событие по идентификатору.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
{- "data": {
- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "id": 501,
- "created_at": "2026-01-15T08:00:00Z",
- "updated_at": "2026-01-15T08:05:00Z",
- "object": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z"
}, - "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Обновляет событие по идентификатору и возвращает его.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
Данные для обновления события.
| date | string <date> Дата события. |
| notification_date | string <date> Дата уведомления. |
| income | integer Доход. |
| expense | integer Расход. |
| description | string Описание/заметки. |
| object_id | integer Идентификатор объекта, к которому относится событие. |
| fileIds | Array of strings (FileIds) [ 0 .. 20 ] items Массив идентификаторов загруженных файлов (ULID). |
{- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "object_id": 101,
- "fileIds": [
- "01JCC4VZK3QW2XH1J2Y6R5A8Q9"
]
}{- "data": {
- "date": "2025-12-13",
- "notification_date": "2025-12-14",
- "income": 12000,
- "expense": 10000,
- "description": "Оплатить до 20 числа",
- "id": 501,
- "created_at": "2026-01-15T08:00:00Z",
- "updated_at": "2026-01-15T08:05:00Z",
- "object": {
- "id": 101,
- "name": "Studio Nook",
- "area": 28.5,
- "address": "12 Mercury Lane, Soho, London",
- "created_at": "2026-01-12T09:00:00Z",
- "updated_at": "2026-01-15T09:10:00Z"
}, - "files": [
- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]
}
}Удаляет событие по идентификатору.
| id required | integer >= 1 Example: 123 Уникальный идентификатор сущности. |
{- "title": "Не авторизован",
- "status": 401,
- "detail": "Сессия не найдена или истекла.",
- "instance": "/auth/me"
}Возвращает финансовую сводку по событиям за период.
| date_from | string <date> Example: date_from=2026-01-01 Начало периода (YYYY-MM-DD). |
| date_to | string <date> Example: date_to=2026-01-31 Конец периода (YYYY-MM-DD). |
| object_id | integer Example: object_id=101 Фильтр по объекту. |
{- "data": {
- "total": {
- "income": 150000,
- "expense": 42000,
- "net": 108000
}, - "months": [
- {
- "month": "2025-01",
- "income": 150000,
- "expense": 42000,
- "net": 108000
}
], - "period_from": "2025-01-01",
- "period_to": "2025-03-31"
}
}Возвращает список дней указанного месяца и года, в которых есть события.
| year required | integer [ 2000 .. 2100 ] Example: 2026 Год. |
| month required | integer [ 1 .. 12 ] Example: 1 Месяц. |
{- "data": [
- 28
]
}{- "data": [
- {
- "id": 12,
- "alias": "FRA",
- "title": "France",
- "phone": {
- "code": 33,
- "codePreview": "+1-767",
- "phoneStartsWith": "767",
- "mask": "##-##-##-##",
- "lengthMin": 11,
- "lengthMax": 14,
- "lengthDiff": 3
},
}
]
}Загружает один или несколько файлов в приватное хранилище и возвращает информацию о созданных файлах. Файлы доступны только пользователю, который их загрузил.
| files required | Array of strings <binary> [ 1 .. 20 ] items [ items <binary > ] Files to upload (multipart field name "files[]") |
| scope required | string Enum: "image" "all" image - only images; all - any file type (limited only by size) |
[- {
- "id": "01JCC4VZK3QW2XH1J2Y6R5A8Q9",
- "originalName": "photo.png",
- "mime": "image/png",
- "ext": "png",
- "sizeBytes": 250880,
- "sha256": "b0c1c2f3f4b5a6b7c8d9e0f1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f809",
- "kind": "image",
- "isAttached": false,
- "expiresAt": "2026-01-23T10:15:00Z",
- "attachedAt": null,
}
]Отдаёт содержимое файла потоково. Реальный путь к файлу в хранилище никогда не раскрывается. Если файл не прикреплён и срок его действия (expiresAt) истёк, возвращается код 410 (Gone).
| fileId required | string Example: 01kfp3kkspgkz9hxb6wt0yc4n2 Идентификатор файла (ULID) |
{- "title": "Не авторизован",
- "status": 401,
- "detail": "Сессия не найдена или истекла.",
- "instance": "/auth/me"
}