📋
Disponible

Audit Trail

Audit Trail fournit un journal d'événements immutable (append-only) stocké dans PostgreSQL avec garantie d'intégrité. Chaque événement est horodaté, signé et indexé pour un requêtage rapide. Le service est nativement conforme RGPD avec des fonctions d'export de données personnelles (droit d'accès) et d'anonymisation (droit à l'oubli). L'ingestion asynchrone via Redis Streams garantit des performances élevées sans impact sur vos services métier. Idéal pour la conformité réglementaire, les audits internes et la traçabilité des opérations.

RGPDImmutableAsyncCompliance

Comment ça marche

1

Émission d'un événement

Envoyez un événement structuré (acteur, action, ressource, metadata) via l'API REST. L'ingestion est asynchrone via Redis Streams.

2

Persistance immutable

L'événement est persisté dans PostgreSQL en mode append-only avec horodatage, hash d'intégrité et index de recherche.

3

Requêtage et filtrage

Recherchez les événements par acteur, action, ressource, période ou metadata avec pagination et tri.

4

Export et anonymisation

Exportez les événements d'un utilisateur (RGPD accès) ou anonymisez-les (RGPD oubli) en un seul appel API.

Exemple d'appel API

log_audit_event.py
import httpx

class=class="text-teal">"text-text-faint italic"># Log an audit event
response = httpx.post(
    class="text-teal">"https:class="text-text-faint italicclass="text-teal">">//api.djinn.dev/v1/events",
    headers={class="text-teal">"X-API-Key": class="text-teal">"djinn_live_..."},
    json={
        class="text-teal">"actor": {class="text-teal">"id": class="text-teal">"user_42", class="text-teal">"type": class="text-teal">"user", class="text-teal">"email": class="text-teal">"alice@acme.fr"},
        class="text-teal">"action": class="text-teal">"document.extracted",
        class="text-teal">"resource": {class="text-teal">"id": class="text-teal">"doc_789", class="text-teal">"type": class="text-teal">"invoice"},
        class="text-teal">"metadata": {
            class="text-teal">"confidence": 0.97,
            class="text-teal">"processing_time_ms": 1250,
        },
    },
)

event = response.json()
print(fclass="text-teal">"Event ID: {event['id']}")
print(fclass="text-teal">"Timestamp: {event['timestamp']}")
print(fclass="text-teal">"Hash: {event['integrity_hash']}")

class=class="text-teal">"text-text-faint italic"># Query events for GDPR export
events = httpx.get(
    class="text-teal">"https:class="text-text-faint italicclass="text-teal">">//api.djinn.dev/v1/events",
    headers={class="text-teal">"X-API-Key": class="text-teal">"djinn_live_..."},
    params={class="text-teal">"actor_id": class="text-teal">"user_42", class="text-teal">"limit": 100},
).json()
print(fclass="text-teal">"Total events: {events['total']}")

Spécifications techniques

FormatsJSON (entrée/sortie)
Taille maxIllimité
Latence P95< 100ms (log) / < 500ms (requête)
SLA99.9%

Prêt à intégrer ce service ?

Testez l'API gratuitement avec 1 000 appels offerts. Intégration en quelques minutes.