Pular para o conteúdo

Como funciona

O núcleo do notific.me tem cinco peças. Todo o resto é construído em cima delas.

Peça O que é Exemplo
Event Algo aconteceu deploy.ok, lead.new, container.die
Policy Quem deve saber, quando, com que urgência e com qual nível “Tudo que vem de agente de IA exige nível 2”
Card Como a notificação aparece Resumo, card declarativo
Action O que dá para fazer a partir dela Aprovar, escolher uma opção, abrir um painel
Reply A resposta assinada que volta { question_set_id, version, answers, signature }
Como o notific.me funciona, de ponta a pontaSeu sistema envia um evento ou uma pergunta. A API de ingestão valida, as regras de policy decidem se e para quem entregar, a notificação com o card chega à pessoa no app, a pessoa decide e assina, o servidor aceita a decisão uma única vez e devolve a resposta assinada ao seu sistema por webhook ou long-poll.Seu sistemaSDK · REST · hookagente de IA (MCP)API de ingestãovalida, deduplica,idempotênciaRegras de policynotify · digestsuppress · escalateNotificaçãoresumo + card+ perguntasPessoaapp · PWA · pushDecisão assinadanível 0–4: biometriaou código 2FAAceite atômicouma resposta vence+ outboxResposta de voltawebhook assinadoou long-poll do askentregaresposta assinada
  1. Seu sistema envia um evento (POST /v0/events) ou um grupo de perguntas (POST /v0/asks) com um token de serviço. Também pode mandar qualquer webhook para um hook de entrada, ou um agente de IA pode usar o servidor MCP.
  2. A API de ingestão valida o conteúdo pelo protocolo aberto, junta duplicados pelo dedup_key e torna as novas tentativas seguras com chaves de idempotência.
  3. As regras de policy do workspace decidem o que acontece: notify, digest, suppress ou escalate.
  4. Uma notificação é criada para cada destinatário, com resumo, card e, no caso de perguntas, o grupo de perguntas.
  5. A pessoa recebe no app, no app web ou por push.
  6. A pessoa decide. O nível define o que isso exige: um toque, o aparelho desbloqueado, biometria ou código 2FA, e talvez um quórum.
  7. O servidor aceita a resposta de forma atômica: uma resposta vence, e a resposta mais o webhook para o seu sistema são gravados na mesma transação (outbox transacional), então a decisão nunca se perde.
  8. A resposta assinada volta para o seu sistema: como webhook para o callback_url, assinado com Ed25519, ou como resultado da chamada ask() que está fazendo long-poll.
Como as regras de policy decidemO evento é comparado com as regras do workspace, em ordem; a primeira que casar decide a ação: notify (avisa agora), digest (resumo agrupado), suppress (guardado, não entregue) ou escalate (avisa com prioridade alta e destinatários extras). No silêncio programado, notify vira digest, a menos que a regra ignore o silêncio.Eventosource · typeseverity · horárioRegras, em ordema primeira que casar;senão o padrãoSilêncio programado?notify → digestsalvo bypass_quietnotifyentregue agoradigestagrupado num resumosuppressguardado, não entregueescalateprioridade alta + extras

As regras são avaliadas em ordem, e a primeira que casar decide. Se nenhuma casar, vale o padrão do workspace. O silêncio programado pode transformar notify em resumo (ou suprimir) abaixo de uma severidade mínima. Mais em Regras e policies.

Ciclo de vida de uma perguntaPOST /v0/asks cria o question set no estado open. Seu código espera com GET /v0/asks/{id}?wait=60 (long-poll) ou recebe um webhook. Termina como answered (resposta assinada), timeout (respostas de on_timeout aplicadas, com reply), expired ou cancelled (sem resposta).POST /v0/asks201 · Idempotency-KeyopenGET /v0/asks/{id}?wait=60ou callback_urlansweredresposta assinadatimeoutrespostas de on_timeoutexpired · cancelledsem resposta (AskClosedError)

O ask() do SDK faz os dois passos para você: cria o grupo de perguntas e faz long-poll até a resposta ou o prazo. Veja Perguntas e respostas.

Níveis de decisão de 0 a 4O serviço pede um nível mínimo; o workspace só pode subir. Vale o maior nível entre as perguntas. Nível 0 é um toque, nível 1 aparelho desbloqueado, nível 2 biometria ou código 2FA (a janela do 2FA pode cobrir), nível 3 biometria ou código 2FA a cada ação, online e com prazo curto, nível 4 é o nível 3 mais quórum de pessoas.Nível do serviçolevel: 0–4 no ask()(padrão 1)Mínimo do workspacepode subir,nunca baixarNível efetivoo maior entreas perguntas0 · toquemarcar lido, ver1 · aparelho desbloqueadoreiniciar container2 · biometria ou 2FAa janela do 2FA pode cobrir3 · biometria ou 2FA, toda açãoonline · prazo curto4 · nível 3 + quórumex.: 2 de 3 aprovam (app)

O serviço define o nível mínimo no ask(). O workspace pode subir, nunca baixar. Vale o maior nível entre as perguntas, e uma assinatura cobre todas as respostas.

Nem todo aparelho tem leitor de digital, e no navegador não há biometria. Quem ativa a verificação em duas etapas (um app autenticador com códigos TOTP) assina decisões de nível 2 e 3 com o código de 6 dígitos.

Assinando uma decisão com o código 2FASem biometria, quem ativou o 2FA assina decisões de nível 2 e 3 com o código de 6 dígitos do app autenticador. O nível 3 sempre pede o código. No nível 2, se a sessão estiver dentro da janela do 2FA escolhida pela pessoa, a assinatura sai sem digitar código; senão a pessoa digita o código, o servidor confere (±30 segundos, uso único, 5 erros em 15 minutos bloqueiam) e um código válido abre a janela para aquela sessão.Abre a decisãosem biometria aqui(navegador, PWA)Nível?2 ou 3Digita o código de 6 dígitosdo app autenticadorServidor confere±30 s · uso único5 erros / 15 min = bloqueioJanela do 2FA aberta?nesta sessão,0–240 min, você escolheResposta aceitaauth_method: "totp"(código válido abre a janela)Assina sem códigosó nível 2nível 3válidonível 2nãosim
  • Nível 3 sempre pede um código novo, a cada ação.
  • Nível 2 pode usar uma janela do 2FA que a pessoa escolhe na conta (desligada, 5, 15, 30, 60, 120 ou 240 minutos). Depois de um código válido, aquela sessão assina decisões de nível 2 sem digitar o código de novo. Com 50 aprovações pendentes, ninguém quer digitar 50 códigos.
  • A biometria é sempre um pedido por decisão.
  • Nível 4 (quórum) continua exigindo o app com biometria.
Como a notificação chega à pessoaCom o app aberto, a notificação chega pelo gateway WebSocket em milissegundos. Com o app fechado, o relay de push envia por APNs (iOS), FCM (Android) ou Web Push para o PWA instalado, cifrado de ponta a ponta. Quando o app abre de novo, sincroniza de forma incremental a partir de um cursor.Notificaçãopara cada destinatárioApp aberto?Gateway WebSocketdezenas de milissegundosRelay de pushem geral 1–2 s,sem garantiaInbox atualiza ao vivoapp · web · PWAAPNsapp iOSFCMapp AndroidWeb PushPWA · VAPID · cifradoAo abrir: sync pelo cursorsimnão
  • App aberto: o gateway WebSocket entrega em dezenas de milissegundos.
  • App fechado: o relay de push envia por APNs (iOS), FCM (Android) ou Web Push para o PWA instalado. O Web Push é cifrado de ponta a ponta, então pode mostrar título e resumo.
  • Quando o app abre de novo, ele sincroniza de forma incremental a partir de um cursor, sem perder nada.

Veja App, PWA e push.