Bağlantı oluşturma

POST /v1/connections · izin connections:write

Ortamda yeni bir bağlantı kaydeder. Protokol yapılandırması gerektiren bağlantılar (social, enterprise) inactive durumunda başlar; bunları :activate ile açıkça etkinleştirin. Bir enterprise bağlantısı active olarak oluşturulamaz: yeni bir bağlantının henüz başarılı bir test girişi olamaz. Ayarlar gizli bilgi içermemelidir. Bir ortamda en fazla 100 bağlantı ve 20 genel sosyal (oidc_generic, oauth2_generic) bağlantı bulunabilir; bir kuruluşta ise en fazla 20 bağlantı bulunabilir.

İstek

JSON gövdesi (bilinmeyen alanlar 400 unknown_field ile reddedilir):

Alan Tür Zorunlu Açıklama
key string evet Kararlı yapılandırma anahtarı, ^[a-z0-9_-]{1,64}$, ortamda benzersiz, değiştirilemez.
type string evet database, passwordless, passkey, social veya enterprise. Değiştirilemez.
strategy string evet Tür için strateji, örneğin password, email_otp, google, saml. Değiştirilemez.
name string evet 1-128 karakter, ortamda benzersiz.
display_name string hayır Giriş ekranlarında gösterilen 1-128 karakter.
status string hayır active veya inactive. database, passwordless, passkey için varsayılan active, social, enterprise için varsayılan inactive.
org_id string hayır Sahip kuruluş (org_…), yalnızca enterprise. Atlanırsa ortam bağlantısı olur. Değiştirilemez.
allowed_email_domains array of strings hayır Ana bölge keşfiyle bu bağlantıya yönlendirilen e-posta alan adları: IDNA A-etiketi, küçük harf (örneğin xn--bcher-kva.example), benzersiz, en fazla 100; yalnızca enterprise için boş olmayabilir. Kuruluş bağlantısında her alan adı kuruluşun doğrulanmış bir alan adı olmalıdır ve active bir kuruluş bağlantısı en az bir alan adı gerektirir.
allow_external_domains boolean hayır Listelenmeyen e-posta alan adına sahip kullanıcıların da giriş yapmasına izin verir. Yalnızca enterprise; varsayılan false.
jit_mode string hayır Anlık sağlama: create kullanıcıyı ilk girişte oluşturur, create_and_update profili ayrıca kimlik sağlayıcıdan günceller, off mevcut bir hesap gerektirir. Yalnızca enterprise. Ortam bağlantısında varsayılan create_and_update, kuruluş bağlantısında varsayılan offtur.
email_trust boolean hayır Otomatik hesap bağlama ve anlık sağlama için kimlik sağlayıcının bildirdiği e-posta adresine güven. Yalnızca enterprise; varsayılan false. Kuruluş bağlantısında true için boş olmayan ve her alan adı kuruluşun doğrulanmış alan adı olan bir allowed_email_domains gerekir.
default_role_ids array of strings hayır Anlık girişle oluşturulan üyeliğe, ortamın varsayılan rolüne ve bağlantının grup rol eşlemelerine ek olarak verilecek ortam rolleri (rol_…, benzersiz, en fazla 10). Yalnızca kuruluş enterprise bağlantısında. Her rol bu ortamın ayrıcalıklı olmayan bir ortam rolü olmalıdır; başka bir ortamın rolü, bir kuruluş rolü, ayrıcalıklı bir rol veya var olmayan bir rol reddedilir. Daha sonra silinen ya da ayrıcalıklı hale getirilen rol giriş sırasında atlanır.
trust_idp_mfa boolean hayır Kimlik sağlayıcının bildirdiği çok faktörlü kimlik doğrulamayı (SAML kimlik doğrulama bağlamı, OIDC amr/acr) oturumun MFA kanıtı olarak kabul eder. Yalnızca enterprise; varsayılan false.
settings object hayır En fazla 32 KiB, gizli bilgi içermeyen ayarlar. Gizli bilgi gibi görünen anahtarlar veya değerler reddedilir.
Idempotency-Key header hayır Yeniden denenen isteği güvenli kılan isteğe bağlı anahtar (16-64 karakter).

Yanıt

201 Created ile bağlantı ve sürümünü tutan bir ETag üstbilgisi döner.

{
  "id": "conn_0k3v8m1q2x9dz4h7s5t6w0y1ab",
  "key": "google",
  "type": "social",
  "strategy": "google",
  "name": "Google",
  "display_name": "Sign in with Google",
  "status": "inactive",
  "org_id": null,
  "allowed_email_domains": [],
  "allow_external_domains": false,
  "jit_mode": null,
  "email_trust": null,
  "default_role_ids": [],
  "trust_idp_mfa": null,
  "allow_idp_initiated": null,
  "idp_initiated_default_application_id": null,
  "idp_initiated_allowed_application_ids": [],
  "settings": {},
  "created_at": "2026-10-05T09:30:00.123456Z",
  "updated_at": "2026-10-05T09:30:00.123456Z"
}

Passkey ayarları

type: "passkey" için settings nesnesi yalnızca aşağıdaki anahtarları kabul eder. Diğer her anahtar, yanlış bir tür veya aralık dışı bir değer 422 validation_failed ile reddedilir ve errors[].pointer alanında /settings/max_credentials_per_user gibi bir yol bildirilir. null değeri varsayılanı ifade eder. Biçim hataları plan hatalarından önce bildirilir.

Anahtar Tür Notlar
rp_id string Yoksa, null veya boşsa: her giriş ana makinesi kendi rpId değerine sahiptir. Aksi halde ortamın active özel alan adının ana makine adı (küçük harf, IDNA A-etiketi); başka her değer 422 validation_failed (/settings/rp_id) döner. Ortamda passkey varsa, değiştirmek için Passkey rpId değerini değiştirme sayfasını kullanın.
rp_name string En fazla 128 karakter.
passkey_first_factor_enabled, security_key_second_factor_enabled boolean Varsayılan true.
user_verification string preferred (varsayılan) veya required.
max_credentials_per_user integer 1-20, varsayılan 20; ondalıklı değerler reddedilir.
require_device_bound_passkeys boolean Plana bağlı: true için Startup gerekir.
attestation_required boolean Plana bağlı: true için Enterprise gerekir.
aaguid_allowlist, aaguid_blocklist array of UUID strings Her biri en fazla 500 benzersiz girdi (hatalar /settings/<key>/<index> yolunu gösterir). Plana bağlı: boş olmayan bir liste için Enterprise gerekir.
related_origins array of strings https://host[:port] kaynakları. Plana bağlı: boş olmayan bir liste için Enterprise gerekir.
passkey_enrollment_prompt string off veya after_login (varsayılan).

Plana bağlı bir anahtara varsayılan olmayan bir değer yazılırsa 403 plan_feature_unavailable döner ve feature ile required_plan üyeleri bulunur. Plan yetkileri kullanılabilir olana kadar bu anahtarlar hiçbir ortamda ayarlanamaz; varsayılan bir değer (false, [], null) yazmak ya da anahtarı kaldırmak her zaman mümkündür. Özellik kullanılabilir olduğunda her related_origins girdisi ortamın etkin ve doğrulanmış bir özel alan adı olmalıdır; aksi halde istek 422 related_origin_not_verified ile başarısız olur.

Hatalar

HTTP kod Ne zaman
400 unknown_field Gövde bilinmeyen bir alan içerir.
403 quota_exceeded Ortamın veya kuruluşun (org_id) bağlantı sınırına ulaşıldı.
409 conflict Aynı key veya name değerine sahip bir bağlantı var.
409 connection_test_required İstek status: active ile bir enterprise bağlantısı oluşturur; hiçbir şey yazılmaz. Bağlantıyı inactive oluşturun, giriş testini yapın, sonra :activate ile etkinleştirin.
415 unsupported_media_type İçerik türü application/json değil.
422 validation_failed Bir alan eksik veya geçersiz; errors[].pointer bunu belirtir (örneğin gizli bilgi gibi ayarlar için /settings/client_secret).
422 related_origin_not_verified İlişkili bir kaynak ortamın doğrulanmış bir özel alan adı değil.
403 plan_feature_unavailable Planınız belirlediğiniz bir ayarı içermiyor (feature, required_plan üyeleri), örneğin attestation_required.
401 unauthenticated Kimlik bilgisi eksik, geçersiz veya iptal edilmiş.
403 insufficient_permissions Kimlik bilgisinin gerekli izni yok.
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 POST https://api.eu.keenauth.com/v1/connections \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"google","type":"social","strategy":"google","name":"Google"}'