Saltar para o conteúdo principal

Registo de Auditoria

O DokStamp regista automaticamente todas as operações de escrita em todas as entidades. O registo de auditoria fornece um histórico completo e à prova de adulteração das alterações: quem as efetuou, quando, a partir de que endereço IP e URL, e exatamente o que mudou (diferenças ao nível do campo com os valores antigos e novos).

O que é registado

Cada operação POST, PATCH, PUT, DELETE e de restauro desencadeia uma entrada de auditoria. Os seguintes eventos são registados:
EventoDesencadeado por
createdUma nova entidade é criada
updatedQualquer campo de uma entidade é alterado
deletedUma entidade é eliminada logicamente
restoredUma entidade com eliminação lógica é restaurada

Estrutura de um registo de auditoria

Cada entrada de auditoria captura:
CampoDescrição
eventcreated, updated, deleted ou restored
auditable_typeO modelo que foi alterado (ex.: App\Models\Certificate)
auditable_idO ID do registo alterado
user_type + user_idO utilizador autenticado que efetuou a alteração
tenant_idO tenant em que a alteração ocorreu
old_valuesObjeto JSON com os valores anteriores dos campos alterados
new_valuesObjeto JSON com os novos valores dos campos alterados
urlO endpoint da API que foi chamado
ip_addressEndereço IP do cliente
user_agentIdentificador do cliente HTTP
created_atMarca temporal da alteração
As marcas temporais (created_at, updated_at) são intencionalmente excluídas das diferenças de auditoria. Apenas alterações de campos com significado aparecem em old_values / new_values.

Exemplos de entradas de auditoria

Certificado emitido

{
  "event": "created",
  "auditable_type": "App\\Models\\Certificate",
  "auditable_id": 142,
  "user_id": 3,
  "tenant_id": 1,
  "old_values": {},
  "new_values": {
    "status": "issued",
    "student_id": 88,
    "course_id": 12,
    "institution_id": 1,
    "issued_at": "2024-12-01 00:00:00"
  },
  "url": "https://api.dokstamp.eu/certificates",
  "ip_address": "203.0.113.42",
  "created_at": "2024-12-01T10:15:30Z"
}

Nome do curso alterado

{
  "event": "updated",
  "auditable_type": "App\\Models\\Course",
  "auditable_id": 12,
  "user_id": 2,
  "tenant_id": 1,
  "old_values": {
    "name": "Bachelor of Computer Science"
  },
  "new_values": {
    "name": "Bachelor of Computer Science and Engineering"
  },
  "url": "https://api.dokstamp.eu/courses/c3d4e5f6-a7b8-9012-cdef-123456789012",
  "ip_address": "203.0.113.10",
  "created_at": "2025-03-15T09:05:00Z"
}

Certificado revogado

{
  "event": "updated",
  "auditable_type": "App\\Models\\Certificate",
  "auditable_id": 142,
  "user_id": 1,
  "tenant_id": 1,
  "old_values": {
    "status": "issued",
    "revoked_at": null,
    "revocation_reason": null
  },
  "new_values": {
    "status": "revoked",
    "revoked_at": "2025-06-01 14:22:00",
    "revocation_reason": "Issued in error"
  },
  "url": "https://api.dokstamp.eu/certificates/a1b2c3d4-.../revoke",
  "ip_address": "203.0.113.10",
  "created_at": "2025-06-01T14:22:05Z"
}

Isolamento por tenant

Os registos de auditoria estão limitados ao tenant. Os administradores de cada tenant só podem consultar as entradas de auditoria dos seus próprios dados. Não existe acesso cruzado entre tenants.

Casos de uso para integrações

Depuração de problemas de sincronização: Se o sistema enviou uma atualização mas o DokStamp apresenta um valor diferente, o registo de auditoria mostrará exatamente quando o valor foi alterado e qual o utilizador/IP responsável. Conformidade: Em ambientes regulados, o registo de auditoria fornece evidência de que a emissão e revogação de certificados seguiram um fluxo de trabalho autorizado. Deteção de conflitos: Se dois sistemas estiverem a escrever no DokStamp em simultâneo e a sobrescrever as alterações um do outro, o registo de auditoria revelará o padrão de conflito através da sequência de old_values / new_values. Rastreio do historial de um certificado: Cada transição de estado de um certificado (draftissuedrevoked) é registada como uma entrada de auditoria separada, fornecendo um historial completo.

Aceder ao registo de auditoria

O registo de auditoria está atualmente acessível através do painel de administração do DokStamp (painel Nova). Não está disponível como endpoint público da API. Para consultar o historial de auditoria de uma entidade específica, aceda ao painel e navegue até à vista de detalhe da entidade — um separador Auditoria apresenta o histórico completo de alterações para esse registo.

O que NÃO é registado

  • Campos de marca temporal (created_at, updated_at) — são campos de sistema excluídos por definição
  • Os campos de array/JSON não são individualmente comparados — o valor JSON completo é capturado
  • Operações de leitura (pedidos GET) — apenas as escritas são auditadas
  • Trabalhos internos do sistema em segundo plano (ex.: atualização de tokens, operações internas de cache)