Yaş politikasını değiştir
PUT /v1/age-policy · İzin identity-settings:write
Tüm yaş politikasını yazar. If-Match zorunludur (eksikse 428, eşleşmiyorsa 412); hiç yazılmamış bir politikanın sürümü "0". Kurallar: min_age ve ülke eşikleri 13-21 arasındadır; ülke kodları ISO 3166-1 alpha-2 (büyük harf) olmalı ve en fazla 250 girdi içerebilir; parental_consent_below null veya 1..min_age olabilir; store_birthdate ancak mode birthdate ise true olabilir. Politika yalnızca sonraki hesap oluşturmalara uygulanır; mevcut kullanıcılar değişmez.
İstek
JSON gövdesi (bilinmeyen alanlar 400 unknown_field ile reddedilir):
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
If-Match |
header | evet | Başlık: GET /v1/age-policy içindeki ETag değeri. |
mode |
string | evet | off, attestation (doğum yılı ve ayı sorusu, değer saklanmaz) veya birthdate. |
min_age |
integer | evet | 13-21. |
country_min_age |
object | evet | Ülke kodu → eşik (13-21); eksik ülkeler min_age kullanır. |
country_source |
string | evet | ip veya declared. |
under_age_action |
string | evet | block veya create_minor. |
parental_consent_below |
integer | null | hayır | null (ebeveyn onayı yok) veya 1..min_age. |
pending_consent_action |
string | evet | block_sign_in veya issue_limited. |
store_birthdate |
boolean | evet | true yalnızca mode: birthdate ile. |
applies_to |
string | evet | self_signup veya all. |
Yanıt
200 OK ile politika ve ETag başlığı döner.
{
"mode": "attestation",
"min_age": 16,
"country_min_age": {"DE": 16, "FR": 15, "IT": 14},
"country_source": "ip",
"under_age_action": "block",
"parental_consent_below": null,
"pending_consent_action": "block_sign_in",
"store_birthdate": false,
"applies_to": "self_signup",
"updated_at": "2026-10-05T09:30:00.123456Z"
}
Belirteçler
mode off değilken, istenen kapsamlar ne olursa olsun ID belirteçleri, erişim belirteçleri ve UserInfo yanıtı kullanıcının age_group değerini taşır (adult, minor veya unknown); değeri olduğunda ise parental_consent_status (not_required, pending, granted, denied veya revoked) da taşınır. mode: off ile bu iki talep de verilmez. İkisi de yalnızca KeenAuth tarafından yazılır (kancalarınız ve talep şablonlarınız bunları ayarlayamaz); bunları PATCH /v1/users/{user_id} ile değiştirin.
pending_consent_action: block_sign_in altında, parental_consent_status değeri pending, denied veya revoked olan kullanıcıya belirteç verilmez: yetkilendirme isteği access_denied ile sonlanır ve belirteç uç noktası, yetkilendirme kodu, cihaz kodu ve yenileme belirteci akışları için invalid_grant (Parental consent has not been granted.) yanıtı verir. Yenileme belirteci iptal edilmez; onay granted olduğunda yeniden çalışır. issue_limited altında belirteçler verilir ve uygulamanız kullanıcıyı taleplerden kısıtlar.
Hatalar
| HTTP | kod | Ne zaman |
|---|---|---|
| 400 | unknown_field |
Gövdede bilinmeyen bir alan var. |
| 412 | precondition_failed |
If-Match mevcut sürümle eşleşmiyor. |
| 415 | unsupported_media_type |
İçerik türü application/json değil. |
| 422 | validation_failed |
Bir alan eksik (required) veya yukarıdaki kurallardan birini bozuyor; işaretçi alanı gösterir, örneğin /country_min_age/DE. |
| 428 | precondition_required |
If-Match başlığı eksik. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisi gerekli izne sahip değil. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -X PUT https://api.eu.keenauth.com/v1/age-policy \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "0"' \
-d '{"mode":"attestation","min_age":16,"country_min_age":{"DE":16,"FR":15},"country_source":"ip","under_age_action":"block","parental_consent_below":null,"pending_consent_action":"block_sign_in","store_birthdate":false,"applies_to":"self_signup"}'