Gerenciamento de notificações
Filtragem de notificações
Deve ser possível filtrar notificações por:
-
Tipo:
COMMENT_CREATED
,NEW_FOLLOWER
, etc. A rota deve aceitar esses valores separados por vírgula, ex:
GET /notifications?type=COMMENT_CREATED,NEW_FOLLOWER&isRead=true&limit=20&cursor=<createdAt>
Authorization: Bearer
- Status de leitura:
isRead=true
oufalse
- Prioridade:
LOW
,MEDIUM
,HIGH
,URGENT
Marcar notificação como lida
- Endpoint para marcar uma notificação específica como lida pelo
id
. - Endpoint para marcar todas as notificações como lidas, respeitando os filtros da seção: Filtragem de notificações
Verificar notificações não lidas
- Endpoint para verificar se existem notificações não lidas para o usuário.
Estrutura da notificação
Campos básicos da entidade Notification
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único |
readAt | ?Date | Data e hora de leitura (nulo se não lida) |
createdAt | Date | Data e hora da criação |
priority | Priority | Prioridade da notificação |
userId | string | ID do usuário destinatário |
type | NotificationType | Tipo da notificação |
data | Object | Dados específicos conforme o tipo |
Valores possíveis para Priority
LOW
MEDIUM
HIGH
URGENT
Dados específicos por tipo de notificação
Entidades
-
NEW_FOLLOWER
João começou a seguir você.
- Priority: LOW
Campo | Tipo |
---|---|
follower | Actor |
-
POST_LIKED
João curtiu seu post.
- Priority: LOW
Campo | Tipo |
---|---|
post | PostPreview |
actor | Actor |
-
COMMENT_CREATED
João comentou no seu post.
- Priority: HIGH
Campo | Tipo |
---|---|
actor | Actor |
comment | CommentPreview |
post | PostPreview |
-
COMMENT_REPLIED
João respondeu seu comentário.
- Priority: HIGH
Campo | Tipo |
---|---|
reply | ReplyPreview |
actor | Actor |
-
COMMENT_LIKED
João curtiu seu comentário.
- Priority: MEDIUM
Campo | Tipo |
---|---|
actor | Actor |
comment | CommentPreview |
-
REPLY_LIKED
-
Priority: MEDIUM
Campo | Tipo |
---|---|
actor | Actor |
reply | ReplyPreview |
-
MESSAGE_RECEIVED
'Olá, bom dia!'
- Priority: URGENT
Campo | Tipo |
---|---|
message | MessagePreview |
actor | Actor |
-
COMMENT_MENTION
João mencionou você em um comentário.
- Priority: URGENT
Campo | Tipo |
---|---|
comment | CommentPreview |
actor | Actor |
-
REPLY_MENTION
João mencionou você em uma resposta.
- Priority: URGENT
Campo | Tipo |
---|---|
reply | ReplyPreview |
actor | Actor |
-
MESSAGE_MENTION
João mencionou você em uma mensagem.
- Priority: URGENT
Campo | Tipo |
---|---|
message | MessagePreview |
actor | Actor |
-
SYSTEM_POST_PUBLISHED
Seu chub foi publicado!
- Priority: LOW
Campo | Tipo |
---|---|
post | PostPreview |
-
SYSTEM_POST_IN_REVIEW
Seu chub foi para revisão.
- Priority: LOW
Campo | Tipo |
---|---|
post | PostPreview |
-
SYSTEM_POST_REJECTED
Seu chub foi rejeitado.
- Priority: HIGH
Value Objects
-
Actor
Campo | Tipo |
---|---|
id | string |
avatarUrl | ?string |
username | string |
name | string |
-
PostPreview
Campo | Tipo |
---|---|
id | string |
thumbnailUrl | ?string |
-
CommentPreview
Campo | Tipo |
---|---|
id | string |
postId | string |
content | string |
hasAttachments | boolean |
-
ReplyPreview
extendsCommentPreview
Campo | Tipo |
---|---|
commentId | string |
-
MessagePreview
Campo | Tipo |
---|---|
id | string |
chatId | string |
content | string |
hasAttachments | boolean |
Evitar múltiplas notificações
O tipo de notificação que possuir maior prioridade precederá caso dois tipos de notificações sejam cabíveis.
Ex:
- Usuário comentou no seu meme, te mencionando.
Nesse caso,
COMMENT_MENTION
será a única enviada, pois tem prioridadeURGENT
enquantoCOMMENT_CREATED
tem prioridadeHIGH
Caso as duas notificações possuam mesmo nível de prioridade, escolha manualmente.