Enregistrer un consentement
POST /v1/users/{user_id}/consent-records · autorisation consent-records:write
Enregistre une acceptation obtenue dans votre propre canal (method = management_api). Le sujet est un document juridique (subject_type = document ; les finalités de consentement ne sont pas encore disponibles) et state vaut presented, accepted ou declined. La version, le hachage du contenu et la langue sont repris du document ; vous ne pouvez pas les fournir. occurred_at vaut par défaut la date et l'heure actuelles et ne peut pas être dans le futur ni dater de plus de 5 minutes. Les enregistrements sont en ajout seul : ils ne sont jamais modifiés ni supprimés.
Requête
Paramètres de chemin :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
user_id |
string | oui | Identifiant de l'utilisateur (usr_…). |
Corps JSON (les champs inconnus sont rejetés avec 400 unknown_field) :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
Idempotency-Key |
header | non | Clé facultative (16 à 64 caractères) qui rend sûre une requête relancée. |
subject_type |
string | oui | Uniquement document. |
subject_id |
string | oui | Identifiant du document juridique (ldoc_…) vu par l'utilisateur. |
state |
string | oui | presented, accepted ou declined. |
application_id |
string | null | non | Application (app_…) ; si elle est omise et que le document est propre à une application, l'application du document est enregistrée. |
occurred_at |
string (date-time) | non | Moment de l'événement ; par défaut la date et l'heure actuelles, pas dans le futur, au plus 5 minutes avant. |
Réponse
201 Created avec l'enregistrement de consentement.
{
"id": "crec_01j9xk3m7q8r2s4t6v8w0y2z4b",
"user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4c",
"subject_type": "document",
"subject_id": "ldoc_01j9xk3m7q8r2s4t6v8w0y2z4a",
"subject_version": "2026-10",
"content_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"locale": "en",
"state": "accepted",
"method": "management_api",
"application_id": null,
"occurred_at": "2026-10-05T09:31:12.004211Z"
}
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 400 | unknown_field |
Le corps contient un champ inconnu. |
| 404 | not_found |
L'utilisateur ou application_id n'existe pas dans cet environnement. L'extension resource indique lequel est manquant : user ou application. |
| 415 | unsupported_media_type |
Le type de contenu n'est pas application/json. |
| 422 | validation_failed |
Un champ est invalide : document inconnu (/subject_id, unknown_subject), subject_type: purpose (not_supported), un état non autorisé pour les documents, ou occurred_at hors plage. |
| 401 | unauthenticated |
L'identifiant est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | rate_limited |
La limite de débit a été dépassée ; réessayez après la période indiquée par Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez après la période indiquée par Retry-After. |
Exemple
curl -X POST https://api.eu.keenauth.com/v1/users/usr_01j9xk3m7q8r2s4t6v8w0y2z4c/consent-records \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"subject_type":"document","subject_id":"ldoc_01j9xk3m7q8r2s4t6v8w0y2z4a","state":"accepted"}'
Données personnelles
Cet endpoint traite des données personnelles : enregistrements de consentement. Données personnelles dans les API KeenAuth décrit ce qui est stocké, la durée de conservation et la manière dont elles sont supprimées. N'envoyez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.