Resumo

  • A cadeia state de RFC 8620 representa todos os dados de um tipo em uma conta; quando muda, o cliente deve reconciliar sua cache.
  • Um StateChange aponta contas e tipos que se moveram. Sozinho, não contém ator, motivo, valores antes/depois, ordem auditável nem resultado de caixa postal.

Um aviso que pede uma busca posterior

Neil Jenkins e Chris Newman definiram no RFC 8620 uma forma de um cliente descobrir divergência sem baixar sempre um conjunto inteiro de dados. A resposta Foo/get traz uma cadeia curta para o estado do tipo de dados na conta. Se os dados mudarem, a cadeia deve mudar; se não mudarem, o servidor normalmente deve repetir o valor.

O alcance é maior que os objetos retornados naquela chamada e menor que uma narrativa de operação. Ao receber um valor diferente, o cliente deve descartar a cache ou usar Foo/changes para obter as mudanças exatas. A cadeia diz que é preciso convergir. Ela não explica, por sua própria forma, qual solicitação, pessoa ou política produziu a divergência.

/changes devolve oldState, newState e pode listar identificadores criados, atualizados ou destruídos. É excelente para sincronizar. Ainda assim, uma lista de identificadores não demonstra o principal autenticado, a decisão de autorização, campos anteriores e posteriores, tempo confiável ou retenção íntegra. Esses elementos pertencem a uma trilha de auditoria separada.

Uma notificação pode condensar várias operações

O StateChange mapeia contas para estados de tipos alterados desde o push anterior. O cliente compara os valores e busca diferenças quando necessário. O exemplo do RFC permite que o servidor reúna mudanças de duas contas em um único push. A condensação ajuda a rede; por isso mesmo não deve ser lida como um registro de evento um-por-um.

Uma tela que mostra mudança em Email ou Mailbox pode corretamente indicar que a sincronização é necessária. Ela não pode, apenas com esse sinal, concluir qual caixa foi modificada por qual pessoa ou qual resultado alcançou um usuário. Cada afirmação precisa da evidência no limite onde foi observada.

Pergunta Evidência JMAP útil Evidência adicional
A cache está atual? state correspondente Nenhuma para essa questão restrita
O que deve ser reconciliado? Identificadores de /changes Conteúdo dos objetos, se relevante
Quem modificou a caixa? Não provado por StateChange Principal, solicitação e autorização
Que resultado ocorreu ao destinatário? Não provado por estado genérico Observação de entrega, caixa ou leitura

A contribuição associada a Jenkins é um mecanismo de convergência, não uma promessa de auditoria total. Usá-lo bem significa manter a indicação de sincronização e buscar o registro detalhado antes de tirar conclusões responsáveis.

Fontes