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=trueoufalse - 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
LOWMEDIUMHIGHURGENT
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 |
-
ReplyPreviewextendsCommentPreview
| 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_MENTIONserá a única enviada, pois tem prioridadeURGENTenquantoCOMMENT_CREATEDtem prioridadeHIGH
Caso as duas notificações possuam mesmo nível de prioridade, escolha manualmente.