📋
Disponible

Audit Trail

Audit Trail fournit un journal d'evenements immutable (append-only) stocke dans PostgreSQL avec garantie d'integrite. Chaque evenement est horodate, signe et indexe pour un requetage rapide. Le service est nativement conforme RGPD avec des fonctions d'export de donnees personnelles (droit d'acces) et d'anonymisation (droit a l'oubli). L'ingestion asynchrone via Redis Streams garantit des performances elevees sans impact sur vos services metier. Ideal pour la conformite reglementaire, les audits internes et la tracabilite des operations.

RGPDImmutableAsyncCompliance

Cas d'usage

Conformite RGPD

Repondez aux demandes d'acces et de suppression de donnees personnelles avec export automatise et anonymisation selective.

Audit interne

Tracez chaque action utilisateur (creation, modification, suppression, consultation) pour vos audits internes et certifications ISO.

Tracabilite reglementaire

Conservez un historique inalterable de toutes les operations pour repondre aux exigences des regulateurs (AMF, ACPR, CNIL).

Comment ca marche

1

Emission d'un evenement

Envoyez un evenement structure (acteur, action, ressource, metadata) via l'API REST. L'ingestion est asynchrone via Redis Streams.

2

Persistance immutable

L'evenement est persiste dans PostgreSQL en mode append-only avec horodatage, hash d'integrite et index de recherche.

3

Requetage et filtrage

Recherchez les evenements par acteur, action, ressource, periode ou metadata avec pagination et tri.

4

Export et anonymisation

Exportez les evenements d'un utilisateur (RGPD acces) 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']}")

Specifications techniques

FormatsJSON (entree/sortie)
Taille maxIllimite
Latence P95< 100ms (log) / < 500ms (requete)
SLA99.9%

Pret a integrer ce service ?

Testez l'API gratuitement avec 1 000 appels offerts. Integration en quelques minutes.