Skip to main content
Notification representa o conteúdo e o contexto de uma notificação persistida no DEVMOB. Ela não substitui envios transacionais por email ou WhatsApp; esses canais continuam sendo responsabilidade do adapter de notificação externa.

Campos

CampoTipoDescrição
notificationIdUUIDIdentificador único
organizationIdUUID?Organização relacionada à notificação, quando aplicável
createdByUserIdUUID?Usuário ou ator que originou a notificação, quando aplicável
audienceNotificationAudienceSuperfície onde a notificação deve aparecer
typeNotificationTypeTipo da notificação
priorityNotificationPriorityPrioridade de exibição
titleStringTítulo exibido na inbox
bodyStringTexto exibido na inbox
resourceDomainString?Domain do recurso relacionado
resourceString?Entity ou recurso relacionado
resourceIdUUID?ID do recurso relacionado
payloadJson?Dados extras para renderização ou roteamento no front
expiresAtDateTime?Data de expiração da notificação
statusNotificationStatusStatus global da notificação
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtDateTimeData de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtDateTimeData da última atualização
deletedByUUID?Usuário que removeu o registro, quando aplicável
deletedAtDateTime?Data de remoção lógica

Relacionamentos

  • Relaciona-se com Organization, quando a notificação está em escopo organizacional.
  • Relaciona-se com User por createdByUserId, quando existe ator de origem.
  • Relaciona-se com múltiplos NotificationRecipient.
  • Pode referenciar qualquer recurso por resourceDomain, resource e resourceId, sem FK direta.

Regras de negócio

  • Notification guarda o conteúdo compartilhado entre todos os destinatários.
  • O estado por usuário fica em NotificationRecipient.
  • O front resolve a rota de abertura pelo type e pelo recurso relacionado; não existe actionUrl.
  • companyId e cooperativeId não ficam na notificação. O escopo operacional é resolvido por organizationId, audience, memberships e recurso relacionado.
  • audience = OPS representa o ambiente operacional usado por Company e Cooperative.
  • Se o mesmo evento precisar aparecer em superfícies diferentes, deve criar uma Notification por audience.
  • payload deve conter apenas dados não sensíveis e necessários para renderização.
  • status = CANCELED impede novas entregas para destinatários.
  • status = EXPIRED indica que a notificação não deve mais aparecer como ativa.
  • Remoção lógica não deve apagar recipients já criados.

Enums

NotificationAudience

ValorDescrição
CUSTOMERApp ou superfície do passageiro
DRIVERApp ou superfície do motorista
OPSOperação de Company ou Cooperative
BKOBackOffice interno da plataforma

NotificationType

ValorDescrição
SUPPORT_CASE_CREATEDChamado de suporte criado
SUPPORT_CASE_MESSAGE_CREATEDNova mensagem em chamado de suporte
SUPPORT_CASE_ASSIGNEDChamado atribuído a um atendente
SUPPORT_CASE_STATUS_CHANGEDStatus do chamado alterado
ROUTE_APPROVAL_REQUESTEDAprovação de rota solicitada
ROUTE_APPROVEDRota aprovada
ROUTE_REJECTEDRota rejeitada
TRIP_STATUS_CHANGEDStatus da viagem alterado
TRIP_EVENT_RECORDEDEvento operacional da viagem registrado
PAYMENT_CONFIRMEDPagamento confirmado
PAYMENT_FAILEDPagamento falhou
TRANSFER_PROCESSEDTransferência processada
TRANSFER_FAILEDTransferência falhou
ORDER_CONFIRMEDPedido confirmado
ORDER_CANCELLEDPedido cancelado
TICKET_CANCELLEDTicket cancelado
BENEFIT_REQUEST_APPROVEDSolicitação de benefício aprovada
BENEFIT_REQUEST_REJECTEDSolicitação de benefício rejeitada
EXPORT_COMPLETEDExportação concluída
EXPORT_FAILEDExportação falhou

NotificationPriority

ValorDescrição
LOWInformativa
NORMALPrioridade padrão
HIGHRequer atenção
URGENTCrítica para operação

NotificationStatus

ValorDescrição
ACTIVENotificação ativa
CANCELEDNotificação cancelada antes ou durante a entrega
EXPIREDNotificação expirada

Example

{
  "notificationId": "0197fa00-3e63-7f58-a878-7ef7ecfa9bc1",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "createdByUserId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "audience": "OPS",
  "type": "SUPPORT_CASE_MESSAGE_CREATED",
  "priority": "NORMAL",
  "title": "Nova mensagem no chamado SUP-20260704-0001",
  "body": "O passageiro respondeu ao chamado de suporte.",
  "resourceDomain": "SUPPORT",
  "resource": "SUPPORT_CASE",
  "resourceId": "0197f150-40d6-7c1a-bdf2-c5884e07d401",
  "payload": {
    "supportCaseCode": "SUP-20260704-0001"
  },
  "expiresAt": null,
  "status": "ACTIVE",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T16:00:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T16:00:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}