Модель 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 обязателен.
Если кампания не найдена, возвращается ошибка.
Фильтрация по датам, ролям или клиникам в этом отчете не поддерживается.