Importer des enregistrements de consentement

POST /v1/jobs/consent-imports · autorisation consent-records:write

Importe les acceptations de vos documents juridiques qui ont été enregistrées dans un autre système, par exemple lorsque vous migrez des utilisateurs vers KeenAuth. La requête est synchrone : de 1 à 500 enregistrements sont écrits dans une seule transaction, de sorte que soit tous sont écrits, soit aucun ne l'est. Chaque enregistrement importé comporte method = import, et occurred_at conserve l'heure du système source. La version, le hachage du contenu et la langue sont repris du document ; vous ne pouvez pas les fournir. Les enregistrements importés sont en ajout seul, comme tous les autres enregistrements de consentement. Pour enregistrer une seule acceptation obtenue à l'instant, utilisez Enregistrer un consentement.

Idempotency-Key est obligatoire. Une nouvelle tentative avec la même clé et la même requête renvoie la même réponse (avec Idempotent-Replayed: true) et n'écrit rien une seconde fois.

Requête

Corps JSON (les champs inconnus sont rejetés avec 400 unknown_field) :

Champ Type Obligatoire Description
records object[] oui De 1 à 500 enregistrements, écrits dans cet ordre.
records[].user_id string oui Identifiant de l'utilisateur (usr_…).
records[].subject_type string oui Uniquement document.
records[].subject_id string oui Identifiant du document juridique (ldoc_…).
records[].state string oui presented, accepted ou declined.
records[].application_id string | null non Application (app_…) ; si ce champ est omis et que le document est propre à une application, l'application du document est enregistrée.
records[].occurred_at string (date-time) oui Moment de l'événement dans le système source ; ne doit pas être dans le futur.

Réponse

201 Created avec les enregistrements écrits (records), dans l'ordre de la requête.

{
  "imported_count": 1,
  "records": [
    {
      "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": "import",
      "application_id": null,
      "occurred_at": "2025-03-14T08:00:00Z"
    }
  ]
}

Erreurs

HTTP code Quand
400 malformed_request, unknown_field L'en-tête Idempotency-Key est absent ou mal formé, le corps n'est pas du JSON valide, ou il contient un champ inconnu.
401 unauthenticated Les identifiants sont absents, invalides ou révoqués.
403 insufficient_permissions Les identifiants ne disposent pas de l'autorisation requise.
413 payload_too_large Le corps dépasse 1 Mio.
415 unsupported_media_type Le type de contenu n'est pas application/json.
422 validation_failed Un enregistrement est invalide ; errors[].pointer vaut /records/<index>/<field>. Un utilisateur inconnu donne unknown_user, une application inconnue unknown_application, un document inconnu unknown_subject ; moins de 1 ou plus de 500 enregistrements donne out_of_range à /records. Rien n'est écrit.
422 idempotency_key_reuse La Idempotency-Key a été utilisée avec une autre requête.
429 rate_limited La limite de débit a été dépassée ; réessayez après la période Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la période Retry-After.

Exemple

curl -X POST https://api.eu.keenauth.com/v1/jobs/consent-imports \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"records":[{"user_id":"usr_01j9xk3m7q8r2s4t6v8w0y2z4c","subject_type":"document","subject_id":"ldoc_01j9xk3m7q8r2s4t6v8w0y2z4a","state":"accepted","occurred_at":"2025-03-14T08:00:00Z"}]}'

CLI : keenauth jobs consent-imports create --data records.json

Données personnelles

Ce point de terminaison contient des données personnelles : des 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.