Pular para o conteúdo principal

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 ou false
  • 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

CampoTipoDescrição
idstringIdentificador único
readAt?DateData e hora de leitura (nulo se não lida)
createdAtDateData e hora da criação
priorityPriorityPrioridade da notificação
userIdstringID do usuário destinatário
typeNotificationTypeTipo da notificação
dataObjectDados 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
CampoTipo
followerActor
  • POST_LIKED

João curtiu seu post.

  • Priority: LOW
CampoTipo
postPostPreview
actorActor
  • COMMENT_CREATED

João comentou no seu post.

  • Priority: HIGH
CampoTipo
actorActor
commentCommentPreview
postPostPreview
  • COMMENT_REPLIED

João respondeu seu comentário.

  • Priority: HIGH
CampoTipo
replyReplyPreview
actorActor
  • COMMENT_LIKED

João curtiu seu comentário.

  • Priority: MEDIUM
CampoTipo
actorActor
commentCommentPreview
  • REPLY_LIKED

  • Priority: MEDIUM

CampoTipo
actorActor
replyReplyPreview
  • MESSAGE_RECEIVED

'Olá, bom dia!'

  • Priority: URGENT
CampoTipo
messageMessagePreview
actorActor
  • COMMENT_MENTION

João mencionou você em um comentário.

  • Priority: URGENT
CampoTipo
commentCommentPreview
actorActor
  • REPLY_MENTION

João mencionou você em uma resposta.

  • Priority: URGENT
CampoTipo
replyReplyPreview
actorActor
  • MESSAGE_MENTION

João mencionou você em uma mensagem.

  • Priority: URGENT
CampoTipo
messageMessagePreview
actorActor
  • SYSTEM_POST_PUBLISHED

Seu chub foi publicado!

  • Priority: LOW
CampoTipo
postPostPreview
  • SYSTEM_POST_IN_REVIEW

Seu chub foi para revisão.

  • Priority: LOW
CampoTipo
postPostPreview
  • SYSTEM_POST_REJECTED

Seu chub foi rejeitado.

  • Priority: HIGH

Value Objects

CampoTipo
idstring
avatarUrl?string
usernamestring
namestring
  • PostPreview

CampoTipo
idstring
thumbnailUrl?string
  • CommentPreview

CampoTipo
idstring
postIdstring
contentstring
hasAttachmentsboolean
  • ReplyPreview extends CommentPreview

CampoTipo
commentIdstring
  • MessagePreview

CampoTipo
idstring
chatIdstring
contentstring
hasAttachmentsboolean

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 prioridade URGENT enquanto COMMENT_CREATED tem prioridade HIGH

Caso as duas notificações possuam mesmo nível de prioridade, escolha manualmente.