Documentação

Registro de auditoria

O registro de auditoria registra cada alteração na configuração de um projeto: quem a fez, o que mudou, quando, por qual superfície e o valor de cada campo alterado antes e depois. É pesquisável, encadeado para que uma reescrita seja detectável, mantido por 400 dias em todos os planos e exportado em CSV, XLSX ou PDF.

O que é registrado

Uma alteração em uma tela, uma pasta de telas, uma playlist, um arquivo ou pasta de mídia, um aplicativo, um card, uma programação ou um nível, uma campanha, uma notificação, um webhook, um gatilho, uma fonte, um link de frota, uma programação de relatório, um silenciamento de alerta, um membro ou papel, um convite, um cliente de serviço, uma conexão de agente, uma configuração de login único ou de SCIM, um usuário ou grupo provisionado por um provedor de identidade, um vínculo de grupo ou uma configuração do projeto ou da organização é uma entrada. Também é um comando enviado a uma tela (reiniciar, recarregar, identificar, limpar cache, reiniciar o app, atualizar, aviso na tela, captura de tela) e uma ação de frota, com os parâmetros que ela levava.

Uma entrada contém:

MembroSignificado
atQuando a alteração foi confirmada (UTC)
actorQuem: kind person, agent, service_client, staff ou system, com id e name
approved_by, review_idA pessoa que aprovou uma alteração proposta por um agente e a revisão que a reteve
sourceA superfície: dashboard, api, cli, mcp, staff, device, webhook ou system
actionUm código estável, tipo de recurso e verbo: screen.update, playlist.create, webhook.rotate_secret
resourcetype, id e o name do recurso após a alteração
changesCada membro alterado: path (um ponteiro JSON como /label), before e after
revisionA revisão que a alteração produziu, vinculada em vez de copiada (uma revisão de playlist, uma versão de mídia, o número de revisão do próprio recurso)
request_id, route, client, client_ipA requisição pela qual chegou
seq, prev_hash, hashA posição da entrada na cadeia

Os valores são os armazenados: nomes, e-mails, endereços, URLs e ids aparecem como estão. Um segredo (um token, uma chave de API, uma senha, um segredo de webhook ou de assinatura, uma credencial de fonte, um código de pareamento, uma URL de receptor que é ela própria a credencial) aparece como (redacted) nos dois lados, de modo que uma rotação surge como uma alteração sem mostrar nenhum dos dois valores. Um valor acima de 1 KiB é substituído por seu tamanho e SHA-256, e uma entrada guarda no máximo 100 alterações e 16 KiB; truncated indica que mais coisas mudaram. As páginas de uma playlist e os bytes de um arquivo de mídia não são copiados: a entrada vincula a revisão.

Dados de card, valores de chave/valor (inclusive os gravados por webhooks e fontes) e telemetria do Player são dados, não configuração. Eles não estão no registro de auditoria; o registro de eventos do projeto indica que foram gravados.

Quem pode ler

O proprietário do projeto, um administrador de sua organização e um membro da equipe que acompanha o projeto o leem no painel. Um agente ou cliente de serviço com a capacidade do projeto o lê pela API e pela CLI. As alterações nos administradores, domínios e configurações de cobrança de uma organização ficam no registro próprio da organização: GET /api/organizations/{org_id}/audit, para seus administradores.

Resistência a adulteração

Nada grava, edita ou exclui uma entrada: não existe rota para isso. Cada entrada é encadeada à anterior em seu projeto: seu hash é o SHA-256 do hash da entrada anterior, de sua posição e de seu conteúdo. Alguns segundos após uma alteração, a entrada recebe seu seq e seu hash.

screenrig audit head
screenrig audit verify
screenrig audit verify --anchor 128:3f2c0b6e9a4d81c7f5e0a2b4c6d8e0f1a3b5c7d9e1f30415263748596a7b8c9d

audit verify (GET /api/audit/verify) recalcula cada hash a partir do conteúdo armazenado e verifica cada elo, a continuidade de seq e o cabeçalho da cadeia; informa hash_mismatch, prev_mismatch, gap, head_mismatch, anchor_mismatch ou floor_mismatch para a entrada com problema e encerra com o código 13 quando a cadeia não é verificada. Uma chamada verifica até 5.000 entradas e retorna next_seq para continuar. Uma âncora é um cabeçalho de cadeia (SEQ:HASH) que você guardou de uma exportação anterior ou de audit head: verificar contra ela prova que o histórico até essa entrada não mudou e não foi truncado.

Retenção e exclusão

As entradas são mantidas por 400 dias em todos os planos. Uma entrada que passa desse prazo é removida, começando pela mais antiga, e a cadeia registra onde ela agora começa (floor_seq, floor_hash), de modo que uma remoção em qualquer outro ponto é detectada. Quando um projeto é excluído, seu registro de auditoria é excluído com ele. screenrig project export DIR grava o registro em log/audit.jsonl, com o cabeçalho da cadeia em log/audit-head.json, de modo que uma cópia sobrevive ao projeto e continua verificável contra sua âncora.

Exportação

screenrig audit export --format csv --output audit.csv
screenrig audit export --format xlsx --since 2026-07-01T00:00:00Z --until 2026-10-01T00:00:00Z
screenrig audit export --format pdf --resource-type playlist --output playlist-changes.pdf

GET /api/audit?format=csv|xlsx|pdf grava o registro filtrado com o mesmo renderizador de todos os relatórios: uma linha por campo alterado, da mais antiga para a mais recente, os últimos 30 dias, a menos que since diga outra coisa, até 50.000 linhas (truncated indica quando o arquivo contém só as primeiras linhas). O cabeçalho da cadeia e o limite de retenção estão no arquivo, então uma cópia que você guarda serve de âncora para um audit verify posterior.