Kullanıcı oluştur

POST /v1/users · izin users:write

API anahtarının ortamında bir kullanıcı oluşturur. Kullanıcı yalnızca bu ortama aittir; aynı e-posta adresi iki ortamda kullanılırsa bunlar iki ayrı kullanıcıdır. Benzersiz değerler (email, phone_number, username, external_id) ortam bazında kontrol edilir. Yeniden denemelerin güvenli olması için bir Idempotency-Key başlığı gönderin.

İstek

Gövde bir JSON nesnesidir. Tanımlanmamış alanlar unknown_field hatasıyla reddedilir.

Alan Tür Zorunlu Açıklama
email string hayır* Birincil e-posta adresi.
email_verified boolean hayır E-postayı doğrulanmış olarak işaretler. Varsayılan false.
phone_number string hayır* E.164 biçiminde birincil telefon numarası.
phone_verified boolean hayır Telefon numarasını doğrulanmış olarak işaretler. Varsayılan false.
phone_country_code string hayır ISO 3166-1 alpha-2 kodu. Boş bırakılırsa telefon önekinden türetilir.
username string hayır* 3 ila 64 karakter. Ortamda benzersiz olmalıdır.
external_id string hayır Sizin belirlediğiniz tanımlayıcı, 1 ila 255 karakter. Ortamda benzersiz olmalıdır.
name, given_name, family_name, middle_name, nickname string hayır Profil adları.
picture, website, profile_url string hayır https:// URL'leri, en fazla 2048 karakter.
locale, zoneinfo, gender, birthdate string hayır Profil öznitelikleri. birthdate biçimi YYYY-MM-DD'dir.
address object hayır OIDC address nesnesi, en fazla 2048 bayt.
user_metadata, app_metadata object hayır Serbest biçimli JSON nesneleri; en fazla 16 KiB, derinlik 5, en üst düzeyde 100 anahtar.

* email, phone_number veya username alanlarından en az biri zorunludur.

Yanıt

201 Created. Gövde kullanıcı nesnesidir. ETag başlığı kullanıcı sürümünü taşır.

API anahtarında users:read_pii izni yoksa kişisel veriler maskelenir: email değeri a***@e***.com olur, phone_number yalnızca son 2 rakamını korur (+**********67), name, given_name, family_name, middle_name ve nickname baş harflere dönüşür (A. L.), username yalnızca ilk karakterini korur (a***), birthdate değeri ****-**-** olur ve address değeri {"redacted": true} olur. user_metadata ve app_metadata maskelenmez.

{
  "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,
  "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
}

Hatalar

Her hata, kararlı bir code değeri içeren bir application/problem+json gövdesidir.

HTTP code Ne zaman
400 malformed_request, unknown_field Gövde geçerli bir JSON değilse veya şemada bulunmayan bir alan içeriyorsa.
409 conflict Değer zaten kullanımdaysa. errors[] alanı, alanı ve nedenini belirtir (email_taken, phone_taken, username_taken, external_id_taken).
415 unsupported_media_type Content-Type değeri application/json değilse.
422 validation_failed Bir değer geçersizse; errors[].pointer alanı ilgili alanı belirtir.
401 unauthenticated API anahtarı eksik, geçersiz veya iptal edilmişse.
403 insufficient_permissions Anahtarda users:write izni yoksa.
429 rate_limited Hız sınırı aşıldıysa; Retry-After değerine uyun.
503 service_unavailable Bir bağımlılık geçici olarak kullanılamıyorsa; daha sonra yeniden deneyin.

Örnek

curl -X POST https://api.eu.keenauth.com/v1/users \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"email": "ada@example.com", "email_verified": true, "name": "Ada Lovelace"}'

Kişisel veriler

Bu uç nokta kişisel veri içerir: son kullanıcı profili. KeenAuth API'lerinde kişisel veriler bölümünde neyin saklandığı, ne kadar süreyle tutulduğu ve nasıl silindiği açıklanır. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.