Profil aktualisieren
PATCH /fapi/v1/me · aufgerufen vom Anmeldehost der Umgebung
Ändert die Profilfelder des authentifizierten Benutzers. Ein Feld, das im Body enthalten ist, wird geändert. Ein fehlendes Feld bleibt unverändert, und ein leerer String oder null löscht das Feld. user_metadata wird, sofern angegeben, als Merge-Patch nach RFC 7396 zusammengeführt. Es gelten dieselben Feldregeln wie in der Management-API. Erforderlich ist das Cookie __Host-idp_session des authentifizierten Benutzers; eine erneute Verifizierung ist nicht nötig. Eine First-Party-App auf einem anderen Origin kann stattdessen ihr Front-API-Zugriffstoken senden (Authorization: DPoP <token> mit einem DPoP-Proof; siehe Front-API-Zugriffstoken).
Feldfehler (422 validation_failed, in errors[]): invalid (Format oder Länge; /locale auch dann, wenn die Sprache für die Umgebung nicht aktiviert ist), too_large und too_many_keys (user_metadata über 16 KiB, Tiefe 5 oder 100 Schlüssel auf oberster Ebene), identifier_type_disabled (Benutzernamen sind in der Umgebung deaktiviert), profile_field_disabled (die Umgebung hat das Feld deaktiviert; das Leeren ist weiterhin erlaubt) und profile_field_required (die Umgebung verlangt das Feld, daher kann es nicht geleert werden).
Anfrage
Header:
| Header | Erforderlich | Beschreibung |
|---|---|---|
Idp-Client |
ja | SDK-Kennung. |
Origin |
ja | Muss exakt https://<Anmeldehost> sein. |
If-Match |
nein | Optional. Der ETag einer früheren Antwort (oder *); die Änderung erfolgt nur, wenn das Profil noch in dieser Version vorliegt. |
Body (application/json oder application/merge-patch+json):
| Feld | Typ | Beschreibung |
|---|---|---|
given_name |
string oder null | Vorname. |
family_name |
string oder null | Nachname. |
name |
string oder null | Vollständiger Name. |
picture |
string oder null | URL des Profilbilds (https). |
locale |
string oder null | Sprache (BCP-47-Tag). |
zoneinfo |
string oder null | Zeitzone (IANA-Name). |
username |
string oder null | Benutzername. |
user_metadata |
object | Merge-Patch, der auf user_metadata angewendet wird (RFC 7396). |
{
"given_name": "Ada",
"zoneinfo": "",
"user_metadata": {
"theme": null
}
}
Antwort
200 OK mit dem aktualisierten Profil (dieselben Felder wie bei GET /fapi/v1/me) und einem neuen ETag.
Fehler
| Status | Code | Wann |
|---|---|---|
| 400 | malformed_request |
Der Body oder der If-Match-Header ist fehlerhaft. |
| 400 | unknown_field |
Der Body enthält ein Feld, das hier nicht geändert werden kann (zum Beispiel email oder app_metadata). |
| 401 | unauthenticated |
Kein gültiges Sitzungs-Cookie. |
| 403 | origin_not_allowed |
Origin fehlt oder ist falsch. |
| 404 | not_found |
Das Konto kann nicht gelesen werden (zum Beispiel gesperrt oder in der Löschung). |
| 409 | username_unavailable |
Der Benutzername ist reserviert oder wird bereits von einem anderen Konto verwendet (beide Fälle führen zu derselben Antwort). |
| 412 | precondition_failed |
If-Match stimmt nicht mit der aktuellen Version überein; es wurde nichts geändert. |
| 413 | payload_too_large |
Der Body überschreitet 16 KiB. |
| 415 | unsupported_media_type |
Nicht unterstützter Content-Type. |
| 422 | validation_failed |
Ein Feld verletzt eine Regel; errors[] nennt das Feld und den Grund (siehe oben). |
| 503 | service_unavailable |
Das Benutzerverzeichnis ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach Retry-After Sekunden. |
Beispiel
curl -X PATCH https://example.keenauth.app/fapi/v1/me \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H 'If-Match: "7"' \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{"given_name":"Ada","zoneinfo":""}'
Personenbezogene Daten
Dieser Endpunkt verarbeitet personenbezogene Daten: das Endbenutzerprofil. Personenbezogene Daten in den KeenAuth-APIs beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).