ProHelper LK API (1.0.0)

Download OpenAPI specification:Download

Спецификация API личного кабинета (Landing). Добавляйте детали по мере готовности.

Auth

Регистрация пользователя и создание организации

Регистрирует нового пользователя, создает организацию и возвращает JWT токен. Пользователь автоматически становится владельцем созданной организации.

Request Body schema:
name
required
string <= 255 characters
email
required
string <email> <= 255 characters
password
required
string <password> >= 8 characters
password_confirmation
required
string <password>
phone
string or null <= 20 characters
position
string or null <= 100 characters
avatar
string or null <binary>
organization_name
required
string <= 255 characters
organization_legal_name
string or null <= 255 characters
organization_tax_number
string or null^(\\d{10}|\\d{12})$
organization_registration_number
string or null^(\\d{13}|\\d{15})$
organization_phone
string or null <= 20 characters
organization_email
string or null <email> <= 255 characters
organization_address
string or null <= 500 characters
organization_city
string or null <= 100 characters
organization_postal_code
string or null^\\d{6}$
organization_country
string or null <= 100 characters

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Вход выполнен успешно",
  • "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  • "user": {
    }
}

Авторизация пользователя в личном кабинете

Аутентифицирует пользователя по email/паролю и возвращает JWT токен. Токен используется для доступа ко всем защищенным эндпоинтам.

Request Body schema: application/json
email
required
string <email>

Email пользователя

password
required
string <password>

Пароль пользователя

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "Password123"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Вход выполнен успешно",
  • "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  • "user": {
    }
}

Получить профиль текущего пользователя

Возвращает детальную информацию о профиле аутентифицированного пользователя

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Обновить профиль пользователя

Обновляет профиль текущего пользователя. Поддерживает загрузку аватара. Обрабатывается: ProfileController::update

Authorizations:
bearerAuth
Request Body schema:
name
string <= 255 characters

Имя пользователя

email
string <email> <= 255 characters

Email пользователя (должен быть уникальным)

phone
string or null <= 20 characters ^(\+7|8)[- ]?\(?[0-9]{3}\)?[- ]?\(?[0-9]{3}[-...

Телефон в российском формате

position
string or null <= 100 characters

Должность пользователя

avatar
string or null <binary>

Файл аватара (jpeg, png, jpg, gif, max 2MB)

remove_avatar
boolean or null

Флаг для удаления текущего аватара

Responses

Request samples

Content type
{
  "name": "Иван Петров",
  "email": "ivan.petrov@example.com",
  "phone": "+79001234567",
  "position": "Главный инженер",
  "avatar": "(binary file)"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Профиль успешно обновлен",
  • "user": {
    }
}

Обновить JWT токен

Обновляет JWT токен используя текущий валидный токен. Возвращает новый токен с продленным временем действия.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

Выход из системы

Аннулирует JWT токен пользователя. После вызова токен становится недействительным.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Выход выполнен успешно"
}

Profile

Обновить профиль пользователя

Обновляет профиль текущего пользователя. Поддерживает загрузку аватара. Обрабатывается: ProfileController::update

Authorizations:
bearerAuth
Request Body schema:
name
string <= 255 characters

Имя пользователя

email
string <email> <= 255 characters

Email пользователя (должен быть уникальным)

phone
string or null <= 20 characters ^(\+7|8)[- ]?\(?[0-9]{3}\)?[- ]?\(?[0-9]{3}[-...

Телефон в российском формате

position
string or null <= 100 characters

Должность пользователя

avatar
string or null <binary>

Файл аватара (jpeg, png, jpg, gif, max 2MB)

remove_avatar
boolean or null

Флаг для удаления текущего аватара

Responses

Request samples

Content type
{
  "name": "Иван Петров",
  "email": "ivan.petrov@example.com",
  "phone": "+79001234567",
  "position": "Главный инженер",
  "avatar": "(binary file)"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Профиль успешно обновлен",
  • "user": {
    }
}

Organization

Получить данные текущей организации

Возвращает детальную информацию об организации пользователя. Использует контекст текущей организации из middleware.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Обновить данные организации

Обновляет информацию о текущей организации пользователя. Требует права 'organization.manage'. Автоматически запускает верификацию при наличии достаточных данных.

Authorizations:
bearerAuth
Request Body schema: application/json
name
string [ 2 .. 255 ] characters

Название организации

legal_name
string or null [ 2 .. 255 ] characters

Юридическое название организации

tax_number
string or null^(\d{10}|\d{12})$

ИНН (10 цифр для организации или 12 для ИП)

registration_number
string or null^(\d{13}|\d{15})$

ОГРН (13 цифр для организации или 15 для ИП)

phone
string or null <= 20 characters ^(\+7|8)[- ]?\(?[0-9]{3}\)?[- ]?[0-9]{3}[- ]?...

Телефон организации в российском формате

email
string or null <email> <= 255 characters

Email организации (должен быть уникальным)

address
string or null [ 10 .. 500 ] characters

Юридический адрес организации

city
string or null [ 2 .. 100 ] characters ^[а-яёА-ЯЁa-zA-Z\s\-\.]+$

Город (только буквы, пробелы, дефисы и точки)

postal_code
string or null^\d{6}$

Почтовый индекс (6 цифр)

country
string or null [ 2 .. 100 ] characters

Страна

description
string or null <= 1000 characters

Описание деятельности организации

Responses

Request samples

Content type
application/json
{
  • "name": "ООО Строймонтаж",
  • "legal_name": "Общество с ограниченной ответственностью \"Строймонтаж\"",
  • "tax_number": "7707083893",
  • "registration_number": "1037739010891",
  • "phone": "+74951234567",
  • "email": "info@stroymontazh.ru",
  • "address": "115093, г. Москва, ул. Люсиновская, д. 36, стр. 1",
  • "city": "Москва",
  • "postal_code": "115093",
  • "country": "Россия"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Данные организации обновлены",
  • "data": {
    }
}

Получить статус верификации и рекомендации

Возвращает статус верификации организации, рекомендации по улучшению и понятное пользователю сообщение о следующих шагах.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Обновить данные организации для верификации

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

Authorizations:
bearerAuth
Request Body schema: application/json
name
string [ 2 .. 255 ] characters

Название организации

legal_name
string or null [ 2 .. 255 ] characters

Юридическое название организации

tax_number
string or null^(\d{10}|\d{12})$

ИНН (10 цифр для организации или 12 для ИП)

registration_number
string or null^(\d{13}|\d{15})$

ОГРН (13 цифр для организации или 15 для ИП)

phone
string or null <= 20 characters ^(\+7|8)[- ]?\(?[0-9]{3}\)?[- ]?[0-9]{3}[- ]?...

Телефон организации в российском формате

email
string or null <email> <= 255 characters

Email организации (должен быть уникальным)

address
string or null [ 10 .. 500 ] characters

Юридический адрес организации

city
string or null [ 2 .. 100 ] characters ^[а-яёА-ЯЁa-zA-Z\s\-\.]+$

Город (только буквы, пробелы, дефисы и точки)

postal_code
string or null^\d{6}$

Почтовый индекс (6 цифр)

country
string or null [ 2 .. 100 ] characters

Страна

description
string or null <= 1000 characters

Описание деятельности организации

Responses

Request samples

Content type
application/json
{
  • "name": "ООО Строймонтаж",
  • "legal_name": "Общество с ограниченной ответственностью \"Строймонтаж\"",
  • "tax_number": "7707083893",
  • "registration_number": "1037739010891",
  • "phone": "+74951234567",
  • "email": "info@stroymontazh.ru",
  • "address": "115093, г. Москва, ул. Люсиновская, д. 36, стр. 1",
  • "city": "Москва",
  • "postal_code": "115093",
  • "country": "Россия",
  • "description": "Строительно-монтажные работы"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Данные организации обновлены",
  • "data": {
    }
}

Запросить верификацию организации

Инициирует процесс верификации организации. Организация должна иметь все необходимые данные (название, ИНН, ОГРН и т.д.).

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Запрос на верификацию отправлен успешно",
  • "data": {
    }
}

Получить рекомендации по улучшению верификации

Возвращает персонализированные рекомендации по заполнению данных организации для повышения уровня верификации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Рекомендации по верификации получены",
  • "data": {
    }
}

Поиск организаций по ИНН или названию

Публичное API (без авторизации). Поиск организаций через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
query
required
string [ 3 .. 100 ] characters

Поисковый запрос для получения подсказок

Responses

Request samples

Content type
application/json
{
  • "query": "7707083893"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Подсказки получены успешно",
  • "data": [
    ]
}

Поиск адресов по части адреса

Публичное API (без авторизации). Поиск адресов через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
query
required
string [ 3 .. 200 ] characters

Часть адреса для поиска

Responses

Request samples

Content type
application/json
{
  • "query": "Москва, Красная площадь"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Подсказки получены успешно",
  • "data": [
    ]
}

Очистка и нормализация адреса

Публичное API (без авторизации). Очистка адреса через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
address
required
string [ 5 .. 500 ] characters

Адрес для очистки и стандартизации

Responses

Request samples

Content type
application/json
{
  • "address": "мск красная площадь 1"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Адрес очищен успешно",
  • "data": { }
}

Verification

Получить статус верификации и рекомендации

Возвращает статус верификации организации, рекомендации по улучшению и понятное пользователю сообщение о следующих шагах.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Обновить данные организации для верификации

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

Authorizations:
bearerAuth
Request Body schema: application/json
name
string [ 2 .. 255 ] characters

Название организации

legal_name
string or null [ 2 .. 255 ] characters

Юридическое название организации

tax_number
string or null^(\d{10}|\d{12})$

ИНН (10 цифр для организации или 12 для ИП)

registration_number
string or null^(\d{13}|\d{15})$

ОГРН (13 цифр для организации или 15 для ИП)

phone
string or null <= 20 characters ^(\+7|8)[- ]?\(?[0-9]{3}\)?[- ]?[0-9]{3}[- ]?...

Телефон организации в российском формате

email
string or null <email> <= 255 characters

Email организации (должен быть уникальным)

address
string or null [ 10 .. 500 ] characters

Юридический адрес организации

city
string or null [ 2 .. 100 ] characters ^[а-яёА-ЯЁa-zA-Z\s\-\.]+$

Город (только буквы, пробелы, дефисы и точки)

postal_code
string or null^\d{6}$

Почтовый индекс (6 цифр)

country
string or null [ 2 .. 100 ] characters

Страна

description
string or null <= 1000 characters

Описание деятельности организации

Responses

Request samples

Content type
application/json
{
  • "name": "ООО Строймонтаж",
  • "legal_name": "Общество с ограниченной ответственностью \"Строймонтаж\"",
  • "tax_number": "7707083893",
  • "registration_number": "1037739010891",
  • "phone": "+74951234567",
  • "email": "info@stroymontazh.ru",
  • "address": "115093, г. Москва, ул. Люсиновская, д. 36, стр. 1",
  • "city": "Москва",
  • "postal_code": "115093",
  • "country": "Россия",
  • "description": "Строительно-монтажные работы"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Данные организации обновлены",
  • "data": {
    }
}

Запросить верификацию организации

Инициирует процесс верификации организации. Организация должна иметь все необходимые данные (название, ИНН, ОГРН и т.д.).

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Запрос на верификацию отправлен успешно",
  • "data": {
    }
}

Получить рекомендации по улучшению верификации

Возвращает персонализированные рекомендации по заполнению данных организации для повышения уровня верификации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Рекомендации по верификации получены",
  • "data": {
    }
}

DaData

Поиск организаций по ИНН или названию

Публичное API (без авторизации). Поиск организаций через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
query
required
string [ 3 .. 100 ] characters

Поисковый запрос для получения подсказок

Responses

Request samples

Content type
application/json
{
  • "query": "7707083893"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Подсказки получены успешно",
  • "data": [
    ]
}

Поиск адресов по части адреса

Публичное API (без авторизации). Поиск адресов через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
query
required
string [ 3 .. 200 ] characters

Часть адреса для поиска

Responses

Request samples

Content type
application/json
{
  • "query": "Москва, Красная площадь"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Подсказки получены успешно",
  • "data": [
    ]
}

Очистка и нормализация адреса

Публичное API (без авторизации). Очистка адреса через DaData API. Ограничение: 60 запросов в минуту.

Request Body schema: application/json
address
required
string [ 5 .. 500 ] characters

Адрес для очистки и стандартизации

Responses

Request samples

Content type
application/json
{
  • "address": "мск красная площадь 1"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Адрес очищен успешно",
  • "data": { }
}

OrganizationRoles

Получить список кастомных ролей организации

Возвращает все кастомные роли, созданные в текущей организации.

Типы ролей:

  • Системные роли - предопределенные роли системы (organization_owner, foreman, etc.)
  • Кастомные роли - роли, созданные администраторами организации

Разрешения для ролей:

  • system_permissions - системные разрешения (users.manage, projects.view, etc.)
  • module_permissions - разрешения модулей (billing.view, reports.export, etc.)
  • interface_access - доступ к интерфейсам (lk, mobile, admin)

Требует права roles.view_custom в организации.

Authorizations:
bearerAuth
query Parameters
search
string
Example: search=Менеджер

Поиск по названию роли

interface_access
string
Enum: "lk" "mobile" "admin"

Фильтр по типу доступа к интерфейсу

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ],
  • "meta": {
    }
}

Создать новую кастомную роль

Создает новую кастомную роль в организации с указанными разрешениями.

Процесс создания роли:

  1. Проверяется уникальность названия роли в организации
  2. Валидируются указанные разрешения (должны быть доступны для организации)
  3. Создается роль с уникальным slug
  4. Роль становится доступна для назначения пользователям

Ограничения:

  • Максимум 50 кастомных ролей на организацию
  • Название роли должно быть уникальным в рамках организации
  • Разрешения должны быть из списка доступных для организации

Требует права roles.create_custom в организации.

Authorizations:
bearerAuth
Request Body schema: application/json
name
required
string [ 2 .. 100 ] characters
slug
string or null^[a-z0-9_-]+$
description
string or null <= 500 characters
permissions
required
Array of strings non-empty
color
string or null^#[0-9A-Fa-f]{6}$
is_active
boolean or null
display_order
integer or null >= 0

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Менеджер проектов",
  • "description": "Управление проектами, задачами и отчетами",
  • "system_permissions": [
    ],
  • "module_permissions": [
    ],
  • "interface_access": [
    ],
  • "conditions": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно создана",
  • "data": {
    }
}

Получить детали кастомной роли

Возвращает подробную информацию о кастомной роли, включая:

Основная информация:

  • Название, описание, разрешения
  • Информация о создателе роли
  • Статистика использования

Связанные данные:

  • Список пользователей с этой ролью
  • История назначений и изменений
  • Условия и ограничения роли

Требует права roles.view_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID кастомной роли

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Обновить кастомную роль

Обновляет существующую кастомную роль организации.

Что можно изменить:

  • Название и описание роли
  • Разрешения (системные и модульные)
  • Доступ к интерфейсам
  • Условия и ограничения

Ограничения при обновлении:

  • Нельзя изменить slug роли (генерируется автоматически)
  • При изменении разрешений, они применяются ко всем пользователям с этой ролью
  • Нельзя удалить критические разрешения, если роль назначена активным пользователям

Требует права roles.manage_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID кастомной роли

Request Body schema: application/json
name
string [ 2 .. 100 ] characters
slug
string or null^[a-z0-9_-]+$
description
string or null <= 500 characters
permissions
Array of strings or null
color
string or null^#[0-9A-Fa-f]{6}$
is_active
boolean or null
display_order
integer or null >= 0

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "permissions": [
    ],
  • "color": "string",
  • "is_active": true,
  • "display_order": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Удалить кастомную роль

Удаляет кастомную роль из организации.

Процесс удаления:

  1. Проверяется, что роль не назначена активным пользователям
  2. Роль помечается как удаленная
  3. Все связанные назначения архивируются

Ограничения:

  • Нельзя удалить роль, если она назначена хотя бы одному пользователю
  • Системные роли не могут быть удалены
  • Роль владельца организации не может быть удалена

Требует права roles.manage_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID кастомной роли

query Parameters
force
boolean
Default: false

Принудительное удаление с переназначением пользователей

reassign_to_role_id
integer

ID роли для переназначения пользователей (обязательно при force=true)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно удалена"
}

Получить доступные разрешения для создания ролей

Возвращает полный список разрешений, доступных для создания кастомных ролей в организации.

Типы разрешений:

🔧 Системные разрешения:

  • users.* - управление пользователями
  • projects.* - управление проектами
  • contracts.* - управление договорами
  • reports.* - доступ к отчетам
  • billing.* - управление биллингом

📦 Модульные разрешения:

  • Зависят от активированных модулей организации
  • project_management.* - модуль управления проектами
  • multi_organization.* - модуль мультиорганизации
  • И другие активные модули

🖥️ Доступ к интерфейсам:

  • lk - личный кабинет (web)
  • mobile - мобильное приложение
  • admin - административная панель

Разрешения автоматически переводятся на русский язык и группируются по категориям. Требует права roles.create_custom в организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Клонировать кастомную роль

Создает копию существующей кастомной роли с новым названием.

Процесс клонирования:

  1. Копируются все разрешения и настройки исходной роли
  2. Генерируется новый slug на основе нового названия
  3. Клон создается в той же или другой организации (если указано)
  4. Пользователи НЕ копируются (клон создается пустым)

Возможности:

  • Клонирование в ту же организацию (для создания вариаций роли)
  • Клонирование в другую организацию (если есть права)
  • Автоматическая адаптация разрешений под целевую организацию

Требует права roles.manage_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID роли для клонирования

Request Body schema: application/json
name
required
string <= 255 characters

Название новой роли (должно быть уникальным)

target_organization_id
integer or null

ID организации для клонирования (по умолчанию текущая)

description
string or null <= 1000 characters

Новое описание роли (опционально)

Responses

Request samples

Content type
application/json
{
  • "name": "Копия - Менеджер проектов",
  • "target_organization_id": 456,
  • "description": "Клонированная роль для другого отдела"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно клонирована",
  • "data": {
    }
}

Получить пользователей с указанной ролью

Возвращает список всех пользователей, которым назначена указанная кастомная роль.

Информация о пользователях:

  • Основные данные пользователя (ID, имя, email)
  • Дата назначения роли
  • Информация о том, кто назначил роль
  • Статус пользователя (активен/неактивен)

Требует права roles.view_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID роли

query Parameters
status
string
Enum: "active" "inactive"

Фильтр по статусу пользователя

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Назначить роль пользователю

Назначает кастомную роль указанному пользователю в определенном контексте.

Типы контекстов:

  • organization - роль действует в рамках всей организации
  • project - роль действует только в рамках конкретного проекта

Особенности назначения:

  • Один пользователь может иметь несколько ролей
  • Роли могут иметь срок действия (expires_at)
  • При назначении проверяются права на управление пользователями
  • Системные роли имеют приоритет над кастомными

Требует права roles.manage_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID роли для назначения

Request Body schema: application/json
user_id
required
integer

ID пользователя для назначения роли

context_type
required
string
Enum: "organization" "project"

Тип контекста применения роли

context_id
required
integer

ID контекста (организации или проекта)

expires_at
string or null <date-time>

Дата истечения назначения роли (опционально)

note
string or null <= 500 characters

Комментарий к назначению

Responses

Request samples

Content type
application/json
{
  • "user_id": 25,
  • "context_type": "organization",
  • "context_id": 123,
  • "expires_at": "2024-12-31T23:59:59Z",
  • "note": "Временно на период отпуска основного менеджера"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно назначена пользователю",
  • "data": null
}

Отозвать роль у пользователя

Отзывает (удаляет) назначение кастомной роли у указанного пользователя.

Процесс отзыва:

  1. Проверяется существование назначения роли
  2. Роль удаляется из активных назначений пользователя
  3. Информация об отзыве сохраняется в историю
  4. Права пользователя пересчитываются автоматически

Ограничения:

  • Нельзя отозвать последнюю роль владельца организации
  • Системные роли отзываются через отдельные эндпоинты
  • При отзыве роли пользователь может потерять доступ к данным

Требует права roles.manage_custom в организации.

Authorizations:
bearerAuth
path Parameters
roleId
required
integer
Example: 123

ID роли для отзыва

Request Body schema: application/json
user_id
required
integer

ID пользователя для отзыва роли

context_type
string
Enum: "organization" "project"

Тип контекста (опционально, если не указан - все контексты)

context_id
integer or null

ID контекста (опционально)

reason
string or null <= 500 characters

Причина отзыва роли

Responses

Request samples

Content type
application/json
{
  • "user_id": 25,
  • "context_type": "organization",
  • "context_id": 123,
  • "reason": "Смена должности"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно отозвана у пользователя"
}

UserInvitations

Получить список приглашений организации

Возвращает все приглашения пользователей для текущей организации.

Статусы приглашений:

  • pending - ожидает принятия
  • accepted - принято пользователем
  • expired - срок действия истек
  • cancelled - отменено администратором

Приглашения сортируются по дате создания (новые в начале).

Authorizations:
bearerAuth
query Parameters
status
string
Enum: "pending" "accepted" "expired" "cancelled"
Example: status=pending

Фильтр по статусу приглашения

email
string <email>
Example: email=user@example.com

Поиск по email получателя

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Создать приглашение пользователя

Создает новое приглашение пользователя в организацию и отправляет приглашение на email.

Процесс создания приглашения:

  1. Проверяется, что пользователь с таким email еще не состоит в организации
  2. Проверяется отсутствие активных приглашений для этого email
  3. Создается приглашение с уникальным токеном
  4. Отправляется email с ссылкой для принятия приглашения

Типы ссылок в зависимости от ролей:

  • foreman → мобильное приложение (APK)
  • organization_admin, accountant, web_admin → admin.prohelper.pro
  • organization_owner или без ролей → prohelper.pro

Требует права users.invite в организации.

Authorizations:
bearerAuth
Request Body schema: application/json
email
required
string <email> <= 255 characters

Email адрес приглашаемого пользователя

name
required
string [ 2 .. 255 ] characters

Полное имя приглашаемого пользователя

roles
Array of strings [ 0 .. 10 ] items

Массив слагов ролей, которые будут назначены приглашенному пользователю.

Типы ролей:

  • organization_owner - владелец организации (полные права)
  • organization_admin - администратор организации
  • foreman - прораб (мобильное приложение)
  • accountant - бухгалтер
  • web_admin - веб-администратор
  • worker - рабочий

Влияние на ссылку приглашения:

  • foreman → мобильное приложение (APK загрузка)
  • organization_admin, accountant, web_admin → admin.prohelper.pro
  • organization_owner или пустой массив → prohelper.pro (основной ЛК)

Если массив пустой, пользователь получит базовые права.

Responses

Request samples

Content type
application/json
Example
{
  • "email": "foreman@example.com",
  • "name": "Иван Прорабов",
  • "roles": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Повторно отправить приглашение

Повторно отправляет приглашение пользователю на email.

Условия для повторной отправки:

  • Приглашение должно иметь статус pending
  • Срок действия приглашения не должен истечь
  • Приглашение принадлежит текущей организации

При повторной отправке обновляется время последней отправки (sent_at). Требует права users.invite в организации.

Authorizations:
bearerAuth
path Parameters
invitationId
required
integer
Example: 123

ID приглашения для повторной отправки

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Приглашение повторно отправлено на email newuser@example.com",
  • "data": null
}

OrganizationUsers

Получить роли пользователя (НЕ РЕАЛИЗОВАН) Deprecated

⚠️ ВНИМАНИЕ: ЭНДПОИНТ НЕ РЕАЛИЗОВАН

Этот эндпоинт описан в роутах, но метод getRoles() в OrganizationUserController не реализован. Возвращает пустой ответ.

Для получения ролей используйте эндпоинт /available-roles.

Authorizations:
bearerAuth
path Parameters
userId
required
integer
Example: 123

ID пользователя

Responses

Response samples

Content type
application/json
{
  • "message": "Метод не реализован"
}

Обновить кастомные роли пользователя

Обновляет список кастомных ролей пользователя в организации.

Процесс обновления:

  1. Проверяется принадлежность пользователя к организации
  2. Валидируются указанные роли (должны существовать в организации)
  3. Назначаются новые кастомные роли пользователю
  4. Предыдущие кастомные роли заменяются новыми

Важно:

  • Системные роли (organization_owner, foreman) не затрагиваются
  • Обновляются только кастомные роли, созданные в организации
  • Пользователь должен принадлежать текущей организации

Требует права users.manage_roles в организации.

Authorizations:
bearerAuth
path Parameters
userId
required
integer
Example: 123

ID пользователя для обновления ролей

Request Body schema: application/json
custom_role_ids
required
Array of integers [ 0 .. 20 ] items

Массив ID кастомных ролей для назначения пользователю

Responses

Request samples

Content type
application/json
Example
{
  • "custom_role_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роли пользователя успешно обновлены"
}

Назначить кастомную роль пользователю

Назначает указанную кастомную роль пользователю в контексте организации.

Процесс назначения:

  1. Проверяется существование пользователя и роли
  2. Валидируется принадлежность роли к организации
  3. Создается назначение роли в контексте организации
  4. Права пользователя пересчитываются автоматически

Особенности:

  • Роль назначается в контексте текущей организации
  • Пользователь может иметь несколько кастомных ролей одновременно
  • Назначение роли дополняет существующие роли (не заменяет)

Требует права users.manage_roles в организации.

Authorizations:
bearerAuth
path Parameters
userId
required
integer
Example: 123

ID пользователя для назначения роли

roleId
required
integer
Example: 15

ID кастомной роли для назначения

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно назначена пользователю"
}

Отозвать кастомную роль у пользователя

Отзывает (удаляет) указанную кастомную роль у пользователя в контексте организации.

Процесс отзыва:

  1. Проверяется существование назначения роли пользователю
  2. Роль удаляется из активных назначений
  3. Права пользователя пересчитываются автоматически
  4. Информация об отзыве сохраняется в аудит-лог

Ограничения:

  • Можно отзывать только кастомные роли (не системные)
  • Нельзя отозвать последнюю роль владельца организации
  • Роль должна быть реально назначена пользователю

Требует права users.manage_roles в организации.

Authorizations:
bearerAuth
path Parameters
userId
required
integer
Example: 123

ID пользователя для отзыва роли

roleId
required
integer
Example: 15

ID кастомной роли для отзыва

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Роль успешно отозвана у пользователя"
}

Получить лимиты пользователя в рамках подписки

Возвращает информацию о лимитах пользователя в рамках текущей подписки организации.

Типы лимитов:

  • Пользователи - максимальное количество пользователей в организации
  • Проекты - максимальное количество активных проектов
  • Хранилище - лимит на объем загружаемых файлов (в ГБ)
  • API запросы - лимит на количество API запросов в месяц
  • Экспорт отчетов - лимит на количество экспортов в месяц

Информация о текущем использовании:

  • Текущее количество по каждому лимиту
  • Процент использования
  • Дата сброса лимитов (если применимо)

Лимиты зависят от тарифного плана организации и активированных модулей.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Создать пользователя с кастомными ролями

Создает нового пользователя и сразу назначает ему указанные кастомные роли в организации.

Процесс создания:

  1. Валидируются данные пользователя (email должен быть уникальным)
  2. Создается новый пользователь с захешированным паролем
  3. Пользователь привязывается к текущей организации
  4. Назначаются указанные кастомные роли через новую систему авторизации
  5. Опционально отправляются учетные данные на email

Особенности:

  • Пользователь сразу получает доступ к организации
  • Можно назначить несколько кастомных ролей одновременно
  • Автоматическая установка текущей организации для пользователя
  • Поддержка отправки учетных данных по email

Требует права users.manage в организации.

Authorizations:
bearerAuth
Request Body schema: application/json
name
required
string <= 255 characters

Полное имя пользователя

email
required
string <email> <= 255 characters

Email пользователя (должен быть уникальным)

password
required
string >= 8 characters

Пароль пользователя

password_confirmation
string >= 8 characters

Подтверждение пароля (должно совпадать с password)

custom_role_ids
required
Array of integers [ 1 .. 10 ] items

Массив ID кастомных ролей для назначения

send_credentials
boolean
Default: false

Отправить учетные данные пользователю на email

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Мария Петрова",
  • "email": "maria.petrova@company.com",
  • "password": "SecurePassword123",
  • "password_confirmation": "SecurePassword123",
  • "custom_role_ids": [
    ],
  • "send_credentials": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Пользователь успешно создан с назначенными ролями",
  • "data": {
    }
}

Получить доступные роли для организации

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

Типы ролей:

🔧 Системные роли:

  • Предопределенные роли системы
  • Нельзя создавать или изменять
  • Имеют фиксированный набор разрешений
  • Примеры: organization_owner, foreman, accountant

🎨 Кастомные роли:

  • Созданные администраторами организации
  • Можно настраивать разрешения
  • Уникальны для каждой организации
  • Поддерживают описания и дополнительные настройки

Информация полезна для создания селектов в интерфейсе и понимания доступных возможностей. Требует права roles.view_custom в организации.

Authorizations:
bearerAuth
query Parameters
include_inactive
boolean
Default: false

Включить неактивные кастомные роли

interface_filter
string
Enum: "lk" "mobile" "admin"

Фильтр по типу доступа к интерфейсу

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Billing

Получить список доступных тарифных планов

Возвращает все доступные тарифные планы для оформления подписки организации. Требует права 'billing.manage'.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Получить текущую подписку организации

Возвращает информацию о текущей активной подписке организации. Если подписки нет, возвращает соответствующее сообщение.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Обновить подписку организации

Обновляет подписку на новый план или изменяет настройки автоплатежа.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
string

Слаг нового плана

is_auto_payment_enabled
boolean

Включить автоплатеж

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "basic",
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Оформить подписку для организации

Оформляет новую подписку на выбранный план для организации.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг тарифного плана

is_auto_payment_enabled
boolean
Default: true

Включить автоматические платежи

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "basic",
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Отменить подписку организации

Отменяет текущую подписку организации. Доступ к функциям сохраняется до окончания периода.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "message": "Подписка отменена. Доступ сохранится до 15.02.2024"
}

Включить/выключить автоплатеж подписки

Изменяет настройку автоматических платежей для текущей подписки организации.

Authorizations:
bearerAuth
Request Body schema: application/json
is_auto_payment_enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить баланс организации

Возвращает текущий баланс организации и связанную информацию.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "balance": 0,
  • "currency": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Получить историю транзакций баланса

Возвращает список транзакций по балансу организации с пагинацией.

Authorizations:
bearerAuth
query Parameters
limit
integer [ 1 .. 100 ]
Default: 15

Количество записей на страницу

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": { },
  • "meta": { }
}

Пополнить баланс организации

Инициирует процесс пополнения баланса организации через платежный шлюз.

Authorizations:
bearerAuth
Request Body schema: application/json
amount
required
number <float> >= 1

Сумма пополнения в основной валюте (рублях)

currency
required
string = 3 characters ^[A-Z]{3}$

Код валюты в формате ISO 4217

payment_method_token
string or null

Токен метода оплаты от платежного шлюза

Responses

Request samples

Content type
application/json
{
  • "amount": 1000,
  • "currency": "RUB",
  • "payment_method_token": "tok_mock_visa"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "chargeId": "string",
  • "status": "string",
  • "message": "string",
  • "redirectUrl": "string",
  • "gatewaySpecificResponse": [ ]
}

Получить лимиты текущей подписки

Возвращает лимиты и ограничения текущего тарифного плана организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Предварительный просмотр смены плана

Показывает что произойдет при смене тарифного плана (стоимость, пропорциональные расчеты и т.д.).

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг нового плана для предпросмотра

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "premium"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "message": "Доплата за смену плана составит 500 руб."
}

Сменить тарифный план

Выполняет смену тарифного плана подписки с пропорциональным перерасчетом стоимости.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг нового плана

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "premium"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "billing_info": { },
  • "message": "План успешно изменен на Premium"
}

Получить дашборд биллинга организации

Возвращает сводную информацию о биллинге организации: подписка, баланс, статистика платежей и т.д.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Получить биллинг информацию по модулям

Возвращает статистику биллинга и предстоящие платежи по модулям организации. Требует права 'modules.billing'.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить историю биллинга по модулям

Возвращает историю платежей и транзакций по модулям организации. Требует права 'modules.billing'.

Authorizations:
bearerAuth
query Parameters
module_slug
string
Example: module_slug=analytics

Фильтр по конкретному модулю (опционально)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Subscription

Получить список доступных тарифных планов

Возвращает все доступные тарифные планы для оформления подписки организации. Требует права 'billing.manage'.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Получить текущую подписку организации

Возвращает информацию о текущей активной подписке организации. Если подписки нет, возвращает соответствующее сообщение.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Обновить подписку организации

Обновляет подписку на новый план или изменяет настройки автоплатежа.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
string

Слаг нового плана

is_auto_payment_enabled
boolean

Включить автоплатеж

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "basic",
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Оформить подписку для организации

Оформляет новую подписку на выбранный план для организации.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг тарифного плана

is_auto_payment_enabled
boolean
Default: true

Включить автоматические платежи

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "basic",
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Отменить подписку организации

Отменяет текущую подписку организации. Доступ к функциям сохраняется до окончания периода.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "message": "Подписка отменена. Доступ сохранится до 15.02.2024"
}

Включить/выключить автоплатеж подписки

Изменяет настройку автоматических платежей для текущей подписки организации.

Authorizations:
bearerAuth
Request Body schema: application/json
is_auto_payment_enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "is_auto_payment_enabled": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить лимиты текущей подписки

Возвращает лимиты и ограничения текущего тарифного плана организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Предварительный просмотр смены плана

Показывает что произойдет при смене тарифного плана (стоимость, пропорциональные расчеты и т.д.).

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг нового плана для предпросмотра

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "premium"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "message": "Доплата за смену плана составит 500 руб."
}

Сменить тарифный план

Выполняет смену тарифного плана подписки с пропорциональным перерасчетом стоимости.

Authorizations:
bearerAuth
Request Body schema: application/json
plan_slug
required
string

Слаг нового плана

Responses

Request samples

Content type
application/json
{
  • "plan_slug": "premium"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { },
  • "billing_info": { },
  • "message": "План успешно изменен на Premium"
}

Balance

Получить баланс организации

Возвращает текущий баланс организации и связанную информацию.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "balance": 0,
  • "currency": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Получить историю транзакций баланса

Возвращает список транзакций по балансу организации с пагинацией.

Authorizations:
bearerAuth
query Parameters
limit
integer [ 1 .. 100 ]
Default: 15

Количество записей на страницу

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": { },
  • "meta": { }
}

Пополнить баланс организации

Инициирует процесс пополнения баланса организации через платежный шлюз.

Authorizations:
bearerAuth
Request Body schema: application/json
amount
required
number <float> >= 1

Сумма пополнения в основной валюте (рублях)

currency
required
string = 3 characters ^[A-Z]{3}$

Код валюты в формате ISO 4217

payment_method_token
string or null

Токен метода оплаты от платежного шлюза

Responses

Request samples

Content type
application/json
{
  • "amount": 1000,
  • "currency": "RUB",
  • "payment_method_token": "tok_mock_visa"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "chargeId": "string",
  • "status": "string",
  • "message": "string",
  • "redirectUrl": "string",
  • "gatewaySpecificResponse": [ ]
}

Dashboard

Получить дашборд биллинга организации

Возвращает сводную информацию о биллинге организации: подписка, баланс, статистика платежей и т.д.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Получить дашборд холдинга

Возвращает агрегированную информацию по всему холдингу: статистику по организациям, проектам, финансам.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить дашборд организации

Возвращает расширенную сводку по текущей организации, включающую:

📊 Основные метрики:

  • Финансовая сводка (баланс, поступления, списания)
  • Статистика по проектам (всего, активных, завершенных)
  • Статистика по договорам (количество, суммы, статусы)
  • Информация по выполненным работам и материалам
  • Статистика по актам выполненных работ

👥 Информация о команде:

  • Общее количество участников
  • Распределение по ролям
  • Детальный список участников команды

📈 Графики и диаграммы:

  • Временные ряды: проекты, договоры, работы, баланс (по месяцам)
  • Круговые диаграммы: распределение проектов и договоров по статусам

Данные собираются в реальном времени для текущей организации пользователя.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "financial": {
    },
  • "projects": {
    },
  • "contracts": {
    },
  • "works_materials": {
    },
  • "acts": {
    },
  • "team": {
    },
  • "team_details": [
    ],
  • "charts": {
    }
}

Modules

Получить список всех доступных модулей с их статусами

Возвращает все доступные модули системы с указанием их активности для текущей организации. Модули группируются по категориям и включают информацию о статусе активации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить список только активных модулей

Возвращает только те модули, которые активированы для текущей организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Получить модули с истекающим сроком действия

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

Authorizations:
bearerAuth
query Parameters
days_ahead
integer [ 1 .. 90 ]
Default: 7

Количество дней вперед для поиска истекающих модулей

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Предпросмотр активации модуля

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

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Предпросмотр деактивации модуля

Показывает что потеряет организация при деактивации модуля: функции, данные, возможные возвраты средств.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Проверить доступ к модулю

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

Authorizations:
bearerAuth
Request Body schema: application/json
module_slug
required
string

Уникальный идентификатор модуля

Responses

Request samples

Content type
application/json
{
  • "module_slug": "analytics"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить права доступа пользователя

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

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Активировать модуль

Активирует указанный модуль для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
module_slug
required
string

Уникальный идентификатор модуля

object

Дополнительные настройки модуля

Responses

Request samples

Content type
application/json
{
  • "module_slug": "analytics",
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Массовая активация модулей

Активирует несколько модулей одновременно для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
module_slugs
required
Array of strings [ 1 .. 20 ] items

Список идентификаторов модулей для активации

Responses

Request samples

Content type
application/json
{
  • "module_slugs": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Деактивировать модуль

Деактивирует указанный модуль для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

query Parameters
with_refund
boolean
Default: false

Запросить возврат средств при деактивации

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Продлить срок действия модуля

Продлевает срок действия указанного модуля на заданное количество дней. Требует права 'modules.manage'.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Request Body schema: application/json
additional_days
integer [ 1 .. 365 ]
Default: 30

Количество дней для продления

Responses

Request samples

Content type
application/json
{
  • "additional_days": 30
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить биллинг информацию по модулям

Возвращает статистику биллинга и предстоящие платежи по модулям организации. Требует права 'modules.billing'.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить историю биллинга по модулям

Возвращает историю платежей и транзакций по модулям организации. Требует права 'modules.billing'.

Authorizations:
bearerAuth
query Parameters
module_slug
string
Example: module_slug=analytics

Фильтр по конкретному модулю (опционально)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Activation

Предпросмотр активации модуля

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

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Активировать модуль

Активирует указанный модуль для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
module_slug
required
string

Уникальный идентификатор модуля

object

Дополнительные настройки модуля

Responses

Request samples

Content type
application/json
{
  • "module_slug": "analytics",
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Массовая активация модулей

Активирует несколько модулей одновременно для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
module_slugs
required
Array of strings [ 1 .. 20 ] items

Список идентификаторов модулей для активации

Responses

Request samples

Content type
application/json
{
  • "module_slugs": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Deactivation

Предпросмотр деактивации модуля

Показывает что потеряет организация при деактивации модуля: функции, данные, возможные возвраты средств.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Деактивировать модуль

Деактивирует указанный модуль для организации. Требует права 'modules.manage'.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

query Parameters
with_refund
boolean
Default: false

Запросить возврат средств при деактивации

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Access

Проверить доступ к модулю

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

Authorizations:
bearerAuth
Request Body schema: application/json
module_slug
required
string

Уникальный идентификатор модуля

Responses

Request samples

Content type
application/json
{
  • "module_slug": "analytics"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

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

Проверяет, активирован ли модуль "Мультиорганизация" для текущей организации и возвращает информацию о возможностях пользователя.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "available": true,
  • "can_create_holding": true,
  • "current_type": "single",
  • "is_holding": false
}

Получить список доступных организаций

Возвращает все организации, к которым у пользователя есть доступ. Включает родительские, дочерние и связанные организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Permissions

Получить права доступа пользователя

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

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Renewal

Продлить срок действия модуля

Продлевает срок действия указанного модуля на заданное количество дней. Требует права 'modules.manage'.

Authorizations:
bearerAuth
path Parameters
moduleSlug
required
string
Example: analytics

Уникальный идентификатор модуля

Request Body schema: application/json
additional_days
integer [ 1 .. 365 ]
Default: 30

Количество дней для продления

Responses

Request samples

Content type
application/json
{
  • "additional_days": 30
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

MultiOrganization

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

Проверяет, активирован ли модуль "Мультиорганизация" для текущей организации и возвращает информацию о возможностях пользователя.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "available": true,
  • "can_create_holding": true,
  • "current_type": "single",
  • "is_holding": false
}

Получить иерархию организаций холдинга

Возвращает древовидную структуру организаций в холдинге с их статусами и связями.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить список доступных организаций

Возвращает все организации, к которым у пользователя есть доступ. Включает родительские, дочерние и связанные организации.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Получить детальные данные организации

Возвращает подробную информацию об указанной организации, включая статистику и настройки.

Authorizations:
bearerAuth
path Parameters
organizationId
required
integer
Example: 123

ID организации

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Переключить контекст организации

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

Authorizations:
bearerAuth
Request Body schema: application/json
organization_id
required
integer

ID организации для переключения

Responses

Request samples

Content type
application/json
{
  • "organization_id": 123
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Контекст переключен на организацию \"ООО Строймонтаж\"",
  • "data": {
    }
}

Получить дашборд холдинга

Возвращает агрегированную информацию по всему холдингу: статистику по организациям, проектам, финансам.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Получить список дочерних организаций

Возвращает все дочерние организации текущего холдинга с их статусами и базовой информацией.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Создать новый холдинг

Преобразует текущую организацию в холдинг и создает группу организаций. Требует права 'multi-organization.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
name
required
string <= 255 characters

Название холдинга

description
string or null <= 1000 characters

Описание холдинга

max_child_organizations
integer [ 1 .. 50 ]

Максимальное количество дочерних организаций

object or null

Дополнительные настройки холдинга

object or null

Конфигурация разрешений

Responses

Request samples

Content type
application/json
{
  • "name": "Строительный холдинг \"Монолит\"",
  • "description": "Объединение строительных компаний",
  • "max_child_organizations": 10,
  • "settings": { },
  • "permissions_config": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Холдинг успешно создан",
  • "data": {
    }
}

Добавить дочернюю организацию в холдинг

Создает новую дочернюю организацию и добавляет ее в холдинг. Автоматически создает владельца организации. Требует права 'multi-organization.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
group_id
required
integer

ID группы организаций (холдинга)

name
required
string <= 255 characters

Название дочерней организации

description
string or null <= 1000 characters

Описание организации

inn
string or null <= 12 characters

ИНН организации

kpp
string or null <= 9 characters

КПП организации

address
string or null <= 500 characters

Адрес организации

phone
string or null <= 20 characters

Телефон организации

email
string or null <email> <= 255 characters

Email организации

required
object

Данные владельца организации

Responses

Request samples

Content type
application/json
{
  • "group_id": 5,
  • "name": "ООО Монолит-Строй",
  • "description": "string",
  • "inn": "7707083893",
  • "kpp": "770701001",
  • "address": "string",
  • "phone": "string",
  • "email": "user@example.com",
  • "owner": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Дочерняя организация добавлена",
  • "data": {
    }
}

Получить сводную информацию по холдингу

Возвращает агрегированную сводку по всем организациям холдинга: организации, проекты, договоры, акты, выполненные работы, статистика. Поддерживает экспорт в CSV по секциям.

Authorizations:
bearerAuth
query Parameters
date_from
string <date>
Example: date_from=2024-01-01

Начальная дата фильтра

date_to
string <date>
Example: date_to=2024-12-31

Конечная дата фильтра

status
string

Фильтр по статусу

is_approved
boolean

Фильтр по утверждённости актов

export
string
Value: "csv"
Example: export=csv

Формат экспорта (если нужен файл)

section
string
Enum: "projects" "contracts" "acts" "completed_works"
Example: section=projects

Секция для экспорта CSV

Responses

Response samples

Content type
{
  • "success": true,
  • "data": {
    }
}

Structure

Получить иерархию организаций холдинга

Возвращает древовидную структуру организаций в холдинге с их статусами и связями.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Organizations

Получить детальные данные организации

Возвращает подробную информацию об указанной организации, включая статистику и настройки.

Authorizations:
bearerAuth
path Parameters
organizationId
required
integer
Example: 123

ID организации

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": {
    }
}

Context

Переключить контекст организации

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

Authorizations:
bearerAuth
Request Body schema: application/json
organization_id
required
integer

ID организации для переключения

Responses

Request samples

Content type
application/json
{
  • "organization_id": 123
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Контекст переключен на организацию \"ООО Строймонтаж\"",
  • "data": {
    }
}

ChildOrganizations

Получить список дочерних организаций

Возвращает все дочерние организации текущего холдинга с их статусами и базовой информацией.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "data": [
    ]
}

Добавить дочернюю организацию в холдинг

Создает новую дочернюю организацию и добавляет ее в холдинг. Автоматически создает владельца организации. Требует права 'multi-organization.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
group_id
required
integer

ID группы организаций (холдинга)

name
required
string <= 255 characters

Название дочерней организации

description
string or null <= 1000 characters

Описание организации

inn
string or null <= 12 characters

ИНН организации

kpp
string or null <= 9 characters

КПП организации

address
string or null <= 500 characters

Адрес организации

phone
string or null <= 20 characters

Телефон организации

email
string or null <email> <= 255 characters

Email организации

required
object

Данные владельца организации

Responses

Request samples

Content type
application/json
{
  • "group_id": 5,
  • "name": "ООО Монолит-Строй",
  • "description": "string",
  • "inn": "7707083893",
  • "kpp": "770701001",
  • "address": "string",
  • "phone": "string",
  • "email": "user@example.com",
  • "owner": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Дочерняя организация добавлена",
  • "data": {
    }
}

Holdings

Создать новый холдинг

Преобразует текущую организацию в холдинг и создает группу организаций. Требует права 'multi-organization.manage'.

Authorizations:
bearerAuth
Request Body schema: application/json
name
required
string <= 255 characters

Название холдинга

description
string or null <= 1000 characters

Описание холдинга

max_child_organizations
integer [ 1 .. 50 ]

Максимальное количество дочерних организаций

object or null

Дополнительные настройки холдинга

object or null

Конфигурация разрешений

Responses

Request samples

Content type
application/json
{
  • "name": "Строительный холдинг \"Монолит\"",
  • "description": "Объединение строительных компаний",
  • "max_child_organizations": 10,
  • "settings": { },
  • "permissions_config": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Холдинг успешно создан",
  • "data": {
    }
}

Support

Отправить запрос в техподдержку

Отправляет обращение в службу технической поддержки ProHelper.

📧 Процесс обработки:

  • Запрос отправляется на email поддержки
  • Письмо содержит информацию об отправителе и его организации
  • Служба поддержки ответит на email пользователя в рабочее время

⏰ Время обработки:

  • Критичные вопросы: до 4 часов
  • Обычные вопросы: 1-2 рабочих дня
  • Консультации: 2-3 рабочих дня

Для ускорения обработки укажите максимально подробное описание проблемы.

Authorizations:
bearerAuth
Request Body schema: application/json
subject
required
string <= 255 characters

Тема обращения

message
required
string <= 5000 characters

Текст обращения с подробным описанием проблемы

Responses

Request samples

Content type
application/json
Example
{
  • "subject": "Как добавить нового пользователя?",
  • "message": "Подскажите, пожалуйста, как добавить нового сотрудника в систему и назначить ему роль прораба?"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Запрос в поддержку отправлен успешно. Мы ответим вам в ближайшее время.",
  • "data": null
}

AdminPanelUsers

Получить список пользователей админ-панели

Возвращает список всех пользователей, имеющих доступ к административной панели организации.

Типы пользователей админ-панели:

  • super_admin - суперадминистратор системы
  • admin - администратор организации
  • content_admin - контент-администратор
  • support_admin - администратор поддержки
  • web_admin - веб-администратор
  • accountant - бухгалтер с доступом к админке

Функции админ-панели:

  • Управление пользователями и ролями
  • Настройка организации и модулей
  • Доступ к расширенным отчетам
  • Управление биллингом и подписками

Требует права users.manage_admin в организации.

Authorizations:
bearerAuth
query Parameters
role_slug
string
Example: role_slug=web_admin

Фильтр по роли пользователя. Принимает любую роль, которая имеет доступ к админ-панели (системную или кастомную)

is_active
boolean
Example: is_active=true

Фильтр по статусу активности

search
string
Example: search=admin@company.com

Поиск по имени или email

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Создать пользователя админ-панели

Создает нового пользователя с доступом к административной панели организации.

Процесс создания:

  1. Валидируется уникальность email
  2. Проверяется допустимость указанной роли
  3. Создается пользователь с захешированным паролем
  4. Назначается роль админ-панели
  5. Пользователь привязывается к организации

Доступные роли: Система принимает любые роли (системные или кастомные), которые имеют:

  • Право admin.access в системных разрешениях
  • Доступ к интерфейсу admin в настройках роли

Примеры ролей с доступом к админ-панели:

  • super_admin, admin - полные права администратора
  • content_admin - управление контентом
  • support_admin - поддержка пользователей
  • web_admin - настройка веб-интерфейсов
  • accountant - бухгалтерские функции
  • Кастомные роли организации с соответствующими правами

Права доступа: Каждая роль предоставляет специфический набор разрешений для работы с административной панелью согласно настройкам роли.

Требует права users.manage_admin в организации.

Authorizations:
bearerAuth
Request Body schema: application/json
name
required
string
email
required
string <email>
password
required
string <password>
password_confirmation
required
string <password>
role_slug
required
string

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Веб Администратор",
  • "email": "webadmin@company.com",
  • "password": "SecureAdminPass123",
  • "password_confirmation": "SecureAdminPass123",
  • "role_slug": "web_admin"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Пользователь админ-панели успешно создан",
  • "data": {
    }
}

Получить детали пользователя админ-панели

Возвращает подробную информацию о конкретном пользователе административной панели.

Возвращаемая информация:

  • Основные данные пользователя (имя, email)
  • Текущая роль и права доступа
  • Статус активности
  • Даты создания и последнего обновления
  • История активности (если доступно)

Области применения:

  • Просмотр профиля пользователя админ-панели
  • Проверка назначенных ролей и прав
  • Мониторинг активности пользователя

Требует права users.manage_admin в организации.

Authorizations:
bearerAuth
path Parameters
user
required
integer
Example: 123

ID пользователя админ-панели

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Обновить пользователя админ-панели

Обновляет информацию о пользователе административной панели.

Что можно обновить:

  • Имя пользователя
  • Email (должен остаться уникальным)
  • Роль администратора (с соответствующими правами)
  • Статус активности (включить/отключить пользователя)
  • Пароль (с подтверждением)

Ограничения при обновлении:

  • Нельзя изменить роль на недоступную для организации
  • Email должен быть уникальным в системе
  • При изменении роли права пересчитываются автоматически
  • Нельзя деактивировать последнего администратора

Безопасность:

  • Все изменения логируются для аудита
  • При смене пароля пользователь получает уведомление
  • Смена критичных данных требует подтверждения

Требует права users.manage_admin в организации.

Authorizations:
bearerAuth
path Parameters
user
required
integer
Example: 123

ID пользователя админ-панели

Request Body schema: application/json
name
string
password
string <password>
password_confirmation
string <password>
role_slug
string

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Старший Веб-администратор",
  • "role_slug": "admin",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Пользователь админ-панели успешно обновлен.",
  • "data": {
    }
}

Удалить пользователя админ-панели

Удаляет пользователя из административной панели организации.

Процесс удаления:

  1. Проверяется возможность удаления (не последний администратор)
  2. Отзываются все права доступа к админ-панели
  3. Пользователь удаляется из системы или деактивируется
  4. Все активные сессии пользователя завершаются
  5. Действие логируется для аудита

Ограничения удаления:

  • Нельзя удалить последнего администратора организации
  • Нельзя удалить владельца организации через этот эндпоинт
  • Суперадминистраторы могут удаляться только другими суперадминистраторами

Последствия удаления:

  • Потеря доступа ко всем административным функциям
  • Завершение всех активных сессий
  • Невозможность восстановления без повторного создания

Альтернатива: Вместо полного удаления рекомендуется деактивация пользователя (PUT с is_active: false).

Требует права users.manage_admin в организации.

Authorizations:
bearerAuth
path Parameters
user
required
integer
Example: 123

ID пользователя админ-панели

query Parameters
force
boolean
Default: false

Принудительное удаление (игнорировать предупреждения)

Responses

Response samples

Content type
application/json
Example
{
  • "success": false,
  • "message": "Нельзя удалить последнего администратора организации"
}

Reports

Получить сводную информацию по холдингу

Возвращает агрегированную сводку по всем организациям холдинга: организации, проекты, договоры, акты, выполненные работы, статистика. Поддерживает экспорт в CSV по секциям.

Authorizations:
bearerAuth
query Parameters
date_from
string <date>
Example: date_from=2024-01-01

Начальная дата фильтра

date_to
string <date>
Example: date_to=2024-12-31

Конечная дата фильтра

status
string

Фильтр по статусу

is_approved
boolean

Фильтр по утверждённости актов

export
string
Value: "csv"
Example: export=csv

Формат экспорта (если нужен файл)

section
string
Enum: "projects" "contracts" "acts" "completed_works"
Example: section=projects

Секция для экспорта CSV

Responses

Response samples

Content type
{
  • "success": true,
  • "data": {
    }
}