Einen Benutzer aktualisieren

PATCH /v1/users/{user_id} · Berechtigung users:write

Aktualisiert einen Benutzer mit einem JSON-Merge-Patch (Content-Type: application/merge-patch+json). Nur die übermittelten Felder werden geändert. Textfelder werden mit null oder einer leeren Zeichenkette geleert; email_verified und phone_verified können nicht geleert werden; address wird insgesamt ersetzt; user_metadata und app_metadata werden Schlüssel für Schlüssel zusammengeführt, und ein null-Wert löscht diesen Schlüssel. Wird user_metadata oder app_metadata selbst als null übermittelt, werden alle Daten gelöscht und {} bleibt zurück. Der Status kann hier nicht geändert werden; verwenden Sie dafür Sperren und Entsperren. Ein Benutzer, dessen Löschung ansteht, kann nicht aktualisiert werden. If-Match ist optional: Wenn es übermittelt wird, muss es mit dem aktuellen ETag des Benutzers übereinstimmen.

Anfrage

Parameter In Erforderlich Beschreibung
user_id Pfad ja Benutzer-ID mit dem Präfix usr_.
If-Match Header nein Das ETag aus einem vorherigen Lesevorgang.

Der Body akzeptiert dieselben Felder wie Benutzer anlegen, alle optional, zuzüglich der unten beschriebenen Altersfelder. Unbekannte Felder werden mit unknown_field abgelehnt.

Alter und elterliche Zustimmung

Wenn Ihr eigener Prozess zur Altersprüfung oder zur elterlichen Zustimmung abgeschlossen ist, speichern Sie dessen Ergebnis mit diesen Feldern am Benutzer. Sie werden außerdem bei jedem Benutzerobjekt zurückgegeben; null bedeutet, dass der Benutzer noch nicht bewertet wurde.

Feld Werte Hinweise
age_group adult, minor, unknown Kann nicht geleert werden; senden Sie unknown, wenn das Alter nicht bekannt ist.
parental_consent_status not_required, pending, granted, denied, revoked null leert das Feld. Jeder andere Wert außer not_required wird nur akzeptiert, wenn das age_group des Benutzers minor ist.
age_assurance_level self_declared, birthdate_declared, third_party_verified null leert das Feld. Gibt an, wie belastbar Ihr Prozess das Alter festgestellt hat.

Eine Änderung an age_group oder parental_consent_status löst ein user.updated-Ereignis aus. Tragen Sie in diese Felder oder in die Metadaten weder ein Geburtsdatum noch eine Nummer eines Ausweisdokuments ein; übermitteln Sie nur das Ergebnis.

Antwort

200 OK. Der Body ist das Benutzerobjekt. Der ETag-Header enthält die Version des Benutzers.

Personenbezogene Daten werden maskiert, wenn der Schlüssel nicht über die Berechtigung users:read_pii verfügt: email wird zu a***@e***.com, phone_number behält nur die letzten 2 Ziffern (+**********67), name, given_name, family_name, middle_name und nickname werden zu Initialen (A. L.), username behält nur das erste Zeichen (a***), birthdate wird zu ****-**-** und address wird zu {"redacted": true}. user_metadata und app_metadata werden nicht maskiert.

{
  "id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "kind": "regular",
  "status": "active",
  "external_id": null,
  "username": null,
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "email_verified": true,
  "phone_number": null,
  "phone_verified": false,
  "age_group": "adult",
  "parental_consent_status": null,
  "age_assurance_level": "self_declared",
  "user_metadata": {},
  "app_metadata": {},
  "created_via": "admin_api",
  "created_at": "2026-01-15T09:30:00Z",
  "updated_at": "2026-01-15T09:30:00Z",
  "last_sign_in_at": null,
  "deletion_requested_at": null,
  "deletion_due_at": null
}

Fehler

Jeder Fehler ist ein application/problem+json-Body mit einem stabilen code.

HTTP code Wann
400 malformed_request, unknown_field Der Patch ist kein JSON-Objekt oder ein Feld ist nicht im Schema enthalten; oder If-Match ist fehlerhaft.
409 conflict Der Wert wird bereits verwendet, oder der Benutzer hat eine anstehende Löschung (errors[].code ist user_pending_deletion).
412 precondition_failed If-Match stimmt nicht mit der aktuellen Version überein.
415 unsupported_media_type Content-Type ist nicht application/merge-patch+json.
422 validation_failed Ein Wert ist ungültig oder hat den falschen Typ; errors[].pointer nennt das Feld.
404 not_found Der Benutzer existiert in dieser Umgebung nicht (oder die ID ist fehlerhaft).
401 unauthenticated Der API-Schlüssel fehlt, ist ungültig oder wurde widerrufen.
403 insufficient_permissions Der Schlüssel verfügt nicht über die Berechtigung users:write.
429 rate_limited Das Ratenlimit wurde überschritten; beachten Sie Retry-After.
503 service_unavailable Eine Abhängigkeit ist vorübergehend nicht verfügbar; versuchen Sie es später erneut.

Beispiel

curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -d '{"name": "Ada King", "app_metadata": {"tier": "gold"}}'

Erfassen Sie eine erteilte elterliche Zustimmung für einen Minderjährigen:

curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -d '{"age_group": "minor", "parental_consent_status": "granted", "age_assurance_level": "third_party_verified"}'

Personenbezogene Daten

Dieser Endpunkt verarbeitet personenbezogene Daten: das Profil des Endnutzers. Personenbezogene Daten in den KeenAuth-APIs beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Übermitteln Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).