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"}'