Сервис рассылки push-уведомлений

Общая информация

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

GET /

Описание: Получение списка уведомлений с сервера уведомлений.

Теги: Уведомления

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (query):

*  Все параметры передаются в виде query параметров и будут прокинуты на сервер уведомлений.

Ответ:

  • 200 OK:
    {
       // Ответ от сервера уведомлений
    }
    
  • 4xx или 5xx: Возможные ошибки, связанные с обработкой запроса, например, ошибки сервера уведомлений.
    {
       "error": {
          // error от сервера уведомлений
         }
    }
    
    {
      "error": "Internal Server Error"
    }
    

GET /all

Описание: Получение всех уведомлений с сервера уведомлений.

Теги: Уведомления

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (query):

  • Все параметры передаются в виде query параметров и будут прокинуты на сервер уведомлений.

Ответ:

  • 200 OK:
    {
       // Ответ от сервера уведомлений
    }
    
  • 4xx или 5xx: Возможные ошибки, связанные с обработкой запроса, например, ошибки сервера уведомлений.
    {
       "error": {
          // error от сервера уведомлений
         }
    }
    
    {
      "error": "Internal Server Error"
    }
    

GET /:customerId

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

Теги: Уведомления

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • customerId: (string, required) - ID пользователя.

Параметры запроса (query):

  • Все параметры передаются в виде query параметров и будут прокинуты на сервер уведомлений.

Ответ:

  • 200 OK:
    {
       // Ответ от сервера уведомлений
    }
    
  • 4xx или 5xx: Возможные ошибки, связанные с обработкой запроса, например, ошибки сервера уведомлений.
    {
       "error": {
          // error от сервера уведомлений
         }
    }
    
    {
      "error": "Internal Server Error"
    }
    

POST /device

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

Теги: Уведомления

Предварительная проверка: Требуется аутентификация пользователя (user role).

Тело запроса (body):

{
  "customerId": "user_id_uuid",
  "FCMToken": "firebase_cloud_messaging_token"
   //... другие поля
}
  • customerId: (string, required) - ID пользователя.
  • FCMToken: (string, required) - FCM токен устройства.

Ответ:

  • 201 Created:
    {}
    
  • 500 Internal Server Error:
    {
      "error": "Internal Server Error"
    }
    

POST /send-bulk-notification-all-devices

Описание: Отправка массового уведомления всем устройствам.

Теги: Уведомления

Предварительная проверка: Требуется аутентификация пользователя (admin role).

Тело запроса (body):

{
  "title": "Заголовок уведомления",
  "body": "Текст уведомления"
}
  • title: (string, required) - Заголовок уведомления.
  • body: (string, required) - Текст уведомления.

Ответ:

  • 200 OK:
    {
        "success": true,
        "message": "Сообщения были отправлены",
        "result": "Messages sent to RabbitMQ"
    }
    
  • success: (boolean) - Успешность отправки.
  • message: (string) - Сообщение об успехе.
  • result: (string) - Результат отправки в RabbitMQ.
  • 500 Internal Server Error:
    {
        "success": false,
        "message": "Проблема с отправкой сообщений"
    }
    

GET /customer

Описание: Получение списка пользователей для уведомлений.

Теги: Уведомления

Предварительная проверка: Отсутствует

Параметры запроса (query):

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

Ответ:

  • 200 OK:
  {
    "items": [
      {
          "deviceId": 1,
          "FCMToken": "some_token",
          "lastMessageSentAt": "2024-01-01T00:00:00.000Z",
          "customerId": "some_customer_id",
           "fullName": "John Doe",
          "birthday": "2024-01-01T00:00:00.000Z",
           "orderStatus": "NEW",
          "lastOrderTerminalId": "some_terminal_id",
          "isSelfService": 0,
          "orderCount": 12,
          "lastOrderDate": "2024-01-01T00:00:00.000Z",
          "averageCheck": 123,
           "lastOrderTerminal": "Some restaurant",
           "lastMessageSentAtFormat": "01.01.2024 (1 дн.)",
           "birthdayFormat": "01.01.2024 (365 дн.)",
           "lastOrderDateFormat": "01.01.2024 (1 дн.)"
      }
    ],
    "pagination": {
      "currentPage": 1,
      "pageSize": 50,
      "totalPages": 1,
      "totalItems": 1
    }
  }
  • items`: (array) - Массив пользователей
    • deviceId: (integer) - ID девайса
    • FCMToken: (string) - FCM токен
    • lastMessageSentAt: (string, date-time) - Дата последнего сообщения
    • customerId: (string) - ID пользователя
    • fullName: (string) - Полное имя пользователя
    • birthday: (string, date-time) - День рождения пользователя
    • orderStatus: (string) - Статус заказа
    • lastOrderTerminalId: (string) - ID терминала последнего заказа
    • isSelfService: (integer) - Является ли заказ самообслуживанием
    • orderCount: (integer) - Количество заказов пользователя
    • lastOrderDate: (string, date-time) - Дата последнего заказа пользователя
    • averageCheck: (number) - Средний чек пользователя
    • lastOrderTerminal: (string) - Название ресторана последнего заказа
    • lastMessageSentAtFormat: (string) - Форматированная дата последнего сообщения
    • birthdayFormat: (string) - Форматированная дата рождения
    • lastOrderDateFormat: (string) - Форматированная дата последнего заказа
  • pagination: (object) - Информация о пагинации.
    • currentPage: (integer) - Текущая страница.
    • pageSize: (integer) - Количество элементов на странице.
    • totalPages: (integer) - Общее количество страниц.
    • totalItems: (integer) - Общее количество элементов.
  • 500 Internal Server Error:
    {
        "success": false,
        "message": "Проблема с получением списка пользователей"
    }
    

POST /send-bulk-notification-filter-customers

Описание: Отправка массового уведомления по фильтру пользователей

Теги: Уведомления

Предварительная проверка: Отсутствует

Тело запроса (body):

{
    "title": "Заголовок уведомления",
    "body": "Текст уведомления"
}
  • title: (string, required) - Заголовок уведомления.
  • body: (string, required) - Текст уведомления.

Параметры запроса (query):

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

Ответ:

  • 200 OK:
    {
        "success": true,
        "message": "Сообщения были отправлены",
        "result": "Messages sent to RabbitMQ"
    }
    
  • 500 Internal Server Error:
    {
        "success": false,
        "message": "Проблема с получением списка пользователей"
    }
    

Примечания:

  • Все запросы требуют авторизации с ролью user или admin.
  • Все запросы возвращают 500 Internal Server Error в случае внутренней ошибки на сервере.