Journal d'audit
Consultez l'historique des actions sensibles de votre organisation via GET /api/v1/audit — accessible aux rôles owner et admin.
GET /api/v1/audit expose le journal d'audit de votre tenant : toute action
sensible (connexion, changement de rôle, création de clé d'API, invitation,
suspension de tenant par un opérateur…) y est tracée automatiquement.
L'accès est restreint aux membres du tenant avec le rôle owner ou admin —
un member reçoit un 403.
Endpoint
GET https://api.monitoring.crahe-arthur.com/api/v1/audit
Authorization: Bearer ${JWT} # JWT avec rôle owner ou adminParamètres de filtre
Tous les paramètres sont optionnels.
| Paramètre | Type | Description |
|---|---|---|
actorId | UUID | Filtre par auteur de l'action (users.id). |
action | string | Filtre par code d'action exact (ex. apikey.created). |
since | ISO 8601 | Borne inférieure sur created_at (inclusive). Ex. 2026-05-01T00:00:00Z. |
limit | integer 1–100 | Nombre maximum de résultats par page. Défaut : 20. |
cursor | string | Curseur keyset opaque retourné par la page précédente. |
Exemple
# Les 50 derniers événements des dernières 24 h
curl -G "https://api.monitoring.crahe-arthur.com/api/v1/audit" \
-H "Authorization: Bearer ${JWT}" \
--data-urlencode "since=$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)" \
--data-urlencode "limit=50"// 200 OK
{
"data": [
{
"id": "018f1a2b-…",
"timestamp": "2026-05-24T09:15:00.123Z",
"actorId": "01912abc-…",
"actorEmail": "alice@example.com",
"action": "apikey.created",
"resourceType": "apikey",
"resourceId": "01912def-…",
"metadata": { "keyName": "prod-ingest", "scopes": ["write:logs"] },
"tenantId": "01912fed-…"
}
],
"nextCursor": "eyJ0cyI6IjIwMjYt…"
}Pagination
La réponse est paginée par keyset : passer le nextCursor reçu tel quel via
?cursor=… à l'appel suivant. Quand nextCursor est null, vous avez atteint
la fin.
Codes d'action courants
Les codes d'action sont stables entre versions — vous pouvez les stocker pour construire des alertes ou des rapports personnalisés.
| Code | Événement |
|---|---|
auth.login | Connexion réussie |
auth.logout | Déconnexion |
auth.register | Création de compte |
auth.refresh | Rotation du refresh token |
auth.switch_tenant | Changement de tenant actif |
auth.password_changed | Mot de passe modifié |
auth.google.success | Connexion Google réussie |
auth.google.failure | Connexion ou liaison Google échouée (raison dans metadata.reason) |
auth.google.link.success | Compte Google lié |
auth.google.unlink | Compte Google délié |
tenant.created | Création d'une organisation supplémentaire |
apikey.created | Création d'une clé d'API |
apikey.revoked | Révocation d'une clé |
project.created | Création d'un projet |
project.updated | Modification d'un projet |
project.deleted | Suppression d'un projet |
member.invited | Invitation d'un membre |
member.invitation_renewed | Invitation renouvelée |
member.invitation_accepted | Invitation acceptée |
member.invitation_declined | Invitation déclinée |
member.invitation_revoked | Invitation révoquée |
member.role_changed | Changement de rôle tenant |
member.removed | Retrait d'un membre |
project_member.added | Ajout d'un membre projet |
project_member.role_changed | Changement de rôle projet |
project_member.removed | Retrait d'un membre projet |
ingestion.tenant_suspended_attempt | Tentative d'ingestion via une clé d'un tenant suspendu |
tenant.suspended_by_operator | Tenant suspendu par un opérateur |
tenant.unsuspended_by_operator | Suspension levée par un opérateur |
tenant.plan_changed_by_operator | Plan modifié par un opérateur |
tenant.copilot_content_access_changed | Accès Lyncea Command au contenu des logs activé ou désactivé (champ from/to booléen dans metadata) |
Les événements dont actorId est null sont émis par le système ou par un
opérateur Lyncea (ex. tenant.suspended_by_operator). Ils apparaissent dans
le journal pour informer l'organisation mais ne correspondent pas à une action
d'un membre.
Voir aussi
- Premiers pas — créer un projet et une clé d'API.
- Référence API — documentation complète des endpoints Front Office.