GET /user/notifications
Возвращает очередь модалок для показа текущему пользователю в конкретном сервисе.
Параметры: service_id (обязательный, из токена бэк знает юзера, но не знает, где он сейчас) и limit (по умолчанию 5, максимум 20).
Что делает: увеличивает счётчик заходов юзера в этот сервис в таблице user_visit, берёт группы юзера из данных UnionAuth, отбирает подходящие модалки, сортирует по priority по убыванию и created_at по возрастанию, режет по limit. Показы при этом не засчитывает, для этого есть отдельная ручка POST /user/{id}/view.
Модалка попадает в очередь, если выполнены все условия сразу: статус ACTIVE и не удалена, start_ts пустой или уже наступил, is_always или end_ts ещё не прошёл, service_id есть в её service_ids, группы юзера пересекаются с её group_ids, юзер на неё ещё не отвечал (нет записи в note_response), отклонял меньше двух раз, показов меньше max_shows если он задан, и либо показов ещё не было, либо с последнего показа прошло не меньше frequency заходов (visit_no минус last_visit_no).
Ответ — список полных объектов модалок с полями своего типа. Админские поля не отдаём: admin_id, status, view_count, rejected_count, is_deleted, group_ids, service_ids, frequency, priority, max_shows. Если ничего не подошло — 200 и пустой список, не 404. Несуществующий service_id тоже не ошибка, просто пустой список.
Ошибки: 401 без авторизации, 422 если не передан service_id.
GET /user/notifications
Возвращает очередь модалок для показа текущему пользователю в конкретном сервисе.
Параметры: service_id (обязательный, из токена бэк знает юзера, но не знает, где он сейчас) и limit (по умолчанию 5, максимум 20).
Что делает: увеличивает счётчик заходов юзера в этот сервис в таблице user_visit, берёт группы юзера из данных UnionAuth, отбирает подходящие модалки, сортирует по priority по убыванию и created_at по возрастанию, режет по limit. Показы при этом не засчитывает, для этого есть отдельная ручка POST /user/{id}/view.
Модалка попадает в очередь, если выполнены все условия сразу: статус ACTIVE и не удалена, start_ts пустой или уже наступил, is_always или end_ts ещё не прошёл, service_id есть в её service_ids, группы юзера пересекаются с её group_ids, юзер на неё ещё не отвечал (нет записи в note_response), отклонял меньше двух раз, показов меньше max_shows если он задан, и либо показов ещё не было, либо с последнего показа прошло не меньше frequency заходов (visit_no минус last_visit_no).
Ответ — список полных объектов модалок с полями своего типа. Админские поля не отдаём: admin_id, status, view_count, rejected_count, is_deleted, group_ids, service_ids, frequency, priority, max_shows. Если ничего не подошло — 200 и пустой список, не 404. Несуществующий service_id тоже не ошибка, просто пустой список.
Ошибки: 401 без авторизации, 422 если не передан service_id.