Микросервис push-notification-orchestration
Микросервис предназначен для взаимодействия сервиса push-уведомлений с другими микросервисами платформы.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса участвуют следующие сущности:
- Токен Firebase (FirebaseToken) - содержит токен Firebase и срок его действия
- Push-уведомление (PushUserNotification) - содержит информацию о конкретном push-уведомлении (заголовок, тело уведомления, изображение и др.)
- Сводка о наличии непрочитанных уведомлений (NotificationsSummary) - содержит информацию о наличии одного или нескольких непрочитанных уведомлений у конкретного пользователя
- История push-уведомлений (NotificationHistory) - содержит данные обо всех push-уведомлениях пользователя (ID уведомления, ID пользователя, данные о прочтении/непрочтении уведомления, дата отправки и др.)
Аутентификация
Для работы со следующими запросами требуется в заголовке Authorization
указать токен:
- POST /v1/firebase/token
- DELETE /v1/firebase/token
- POST /v1/firebase/push
- GET /v1/firebase/notifications-history
- GET /v1/firebase/notifications-summary
Для остальных запросов аутентификация не требуется.
Service context path
/api/push-orchestration/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "push_orchestration",
"POSTGRES_MIGRATION_USER": "push_orchestration_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "push_orchestration_user"
}
}
// пример взят с тестового стенда
{
"env": {
"ECOM_SECURITY_API_KEY": "секретный_ключ",
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
"OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
"POSTGRES_HOST": "хост_бд",
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль"
}
}
Методы микросервиса
- Сохранение токена - POST запрос, /v1/firebase/token
barrier-user-utc-offset - header: тайм-зона пользователя относительно
UTC
{
"token": //токен,
"expiration": "2024-05-27T13:52:46.761Z"
}
Отсутствует.
- 204 - операция выполнена успешно
- 401 - ошибка, Unauthorized
- 403 - ошибка, Forbidden
- 500 - ошибка, Internal Server
Error
- Удаление токена - DELETE запрос, /v1/firebase/token
Отсутствуют.
{
"token": //токен,
"expiration": "2024-05-27T13:52:46.761Z"
}
Отсутствует.
- 204 - операция выполнена успешно
- 401 - ошибка, Unauthorized
- 403 - ошибка, Forbidden
- 500 - ошибка, Internal Server Error
- Запуск тестового триггера отправки push-уведомлений - POST запрос, /v1/firebase/test-job-notifications
Отсутствуют.
Отсутствует.
Отсутствует.
- 202 - операция выполнена успешно
- 500 - ошибка, Internal Server Error
- Отправка push-уведомлений - POST запрос, /v1/firebase/push
Отсутствуют.
{
"title": "Благодарим за заказ",
"message": "Ваш заказ №123 оформлен. Спасибо за
покупку!",
"image": "order_push.jpg",
"utcOffsets": [
0
]
}
Отсутствует.
- 204 - операция выполнена успешно
- 401 - ошибка, Unauthorized
- 403 - ошибка, Forbidden
- 500 - ошибка, Internal Server Error
- Получение истории firebase push-уведомлений - GET запрос, /v1/firebase/notifications-history
markViewed - query-параметр: флаг, указывающий нужно ли пометить
уведомления как прочитанные или нет
page - query-параметр: номер
страницы
size - query-параметр: количество элементов на
странице
sort - query-параметр: сортировка элементов на
странице
{
"content": [
{
"id":
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
"userId": "143948",
"viewed": true,
"notification":
{
"title": "Благодарим
за заказ",
"message":
"Ваш заказ №123 оформлен. Спасибо за покупку!",
"image": null
},
"sendAt":
"2024-05-28T10:09:21.984Z"
}
],
"number": 0,
"size": 10,
"totalElements": 1
}
- 200 - операция выполнена успешно, получен список push-уведомлений
- 401 - ошибка, Unauthorized
- 403 - ошибка, Forbidden
- 500 - ошибка, Internal Server
Error
- Получение информации о непрочитанных push-уведомлениях - GET запрос, /v1/firebase/notifications-summary
page - query-параметр: номер страницы
size - query-параметр: количество элементов на странице
sort - query-параметр: сортировка элементов на странице
//в ответе приходит информация о наличии одного или нескольких непрочитанных уведомлений; возвращает значение true
, если просмотрены все уведомления, в противном случае приходит значение false
{
"viewed": true
}
- 200 - операция выполнена успешно, получены данные о наличии/отсутствии непрочитанных уведомлений
- 401 - ошибка, Unauthorized
- 403 - ошибка, Forbidden
- 500 - ошибка, Internal Server Error