Модель GlobalMessagesMessage — представляет конкретные сообщения, отправленные пользователям. Каждое сообщение принадлежит определенной кампании и имеет статус, отражающий его состояние.
id (integer) — ID сообщения
user_id (integer) — ID пользователя, которому адресовано сообщение
clinic_id (integer) — ID клиники, к которой относится сообщение (может быть NULL для общесистемных сообщений)
message (string) — Текст сообщения
campaign (string) — Название кампании, к которой относится сообщение
status (enum) — Статус сообщения ('pending', 'sent', 'read')
created_at (timestamp) — Дата создания сообщения
updated_at (timestamp) — Дата последнего обновления сообщения
1. Получение анонимного списка пользователей с ролями
Описание: Возвращает список пользователей в формате user_id и role, без раскрытия персональных данных.
Эндпоинт: GET /rest/api/user/anonymousList
curl --location --request GET 'https://{DOMAIN NAME}/rest/api/user/anonymousList' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'Ответ сервера:
{
"success": true,
"data": {
"users": [
{
"user_id": 1,
"role": "Администратор"
},
{
"user_id": 2,
"role": "Менеджер"
},
{
"user_id": 3,
"role": "Врач"
}
]
}
}2. Добавление сообщений для отдельных пользователей
Описание: Позволяет добавить сообщение для конкретных пользователей, указанных по их идентификаторам.
Эндпоинт: POST /rest/api/messages/users
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/users' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \
--data-raw '{
"message": "Текст сообщения",
"campaign": "Кампания 2023",
"user_ids": [1, 2, 3]
}'Ответ сервера:
{
"success": true,
"message": "Messages successfully sent to 3 users"
}Пример ошибки:
{
"success": false,
"errors": ["User list cannot be empty"]
}Замечания:
Поле user_ids обязательно. Содержит массив идентификаторов пользователей.
Если массив пустой, возвращается ошибка.
3. Добавление сообщений для всех пользователей
Описание: Позволяет добавить сообщение, которое увидят все пользователи в системе.
Эндпоинт: `POST /rest/api/messages/all`
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/all'
--header 'Content-Type: application/json'
--header 'X-REST-API-KEY: {REST API KEY}'
--data-raw '{ "message": "Текст сообщения", "campaign": "Кампания 2023" }'Ответ сервера:
```json
{
"success": true,
"message": "Messages successfully sent to 15 users"
}Пример ошибки:
{
"success": false,
"errors": ["No active users found to send messages"]
}Замечания:
Сообщение автоматически сохраняется в таблице messages с clinic_id = NULL для универсальности.
4. Добавление сообщений для определенных ролей
Описание: Позволяет добавить сообщение для пользователей, относящихся к указанным ролям.
Эндпоинт: POST /rest/api/messages/roles
curl --location --request POST 'https://{DOMAIN NAME}/rest/api/messages/roles' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \
--data-raw '{
"message": "Текст сообщения",
"campaign": "Кампания 2023",
"role_ids": [2, 3]
}'Ответ сервера:
{
"success": true,
"message": "Messages successfully sent to 5 users with the specified roles"
}Пример ошибки:
{
"success": false,
"errors": ["Role list cannot be empty"]
}Пример ошибки при отсутствии пользователей с указанными ролями:
{
"success": false,
"errors": ["No users found with the specified roles"]
}Замечания:
Поле role_ids обязательно. Содержит массив идентификаторов ролей.
Если массив пустой, возвращается ошибка.
Если такой роли в клинике не существует, то ответ успешен, но сообщения не создаются.
5. Получение отчета по одной кампании
Описание: Возвращает информацию о количестве сообщений, связанных с указанной кампанией, с разбивкой по статусам: pending (ожидающие отправки) и sent (отправленные).
Эндпоинт: GET /rest/api/messages/reports
Параметры запроса:
campaign (обязательный): Название кампании, для которой нужно сформировать отчет.
curl --location --request GET 'https://{DOMAIN NAME}/rest/api/messages/reports?campaign=Кампания 2023' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'Ответ сервера:
{
"success": true,
"data": {
"campaign": "Кампания 2023",
"total": 150,
"sent": 140,
"pending": 10
}
}Пример ошибки:
{
"success": false,
"errors": ["Campaign name cannot be empty"]
}Ограничения:
Одна кампания за запрос: Параметр campaign обязателен.
Если кампания не найдена, возвращается ошибка.
Фильтрация по датам, ролям или клиникам в этом отчете не поддерживается.