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).