Skip to content

Ручка получения модалок #39

Description

@petrCher

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions