Uygulama oluşturun

POST /v1/applications · izin applications:write

Çağıran anahtarın ortamında bir uygulama (bir OAuth/OIDC istemcisi) oluşturur. key, name, app_type ve party zorunludur; diğer her alan uygulama türünden türetilen güvenli bir varsayılan değer alır. Yanıt, güncelleme veya silme sırasında If-Match olarak göndermeniz gereken bir ETag içerir. Bu işlem bir istemci gizli anahtarı oluşturmaz; gizli anahtarlar ve anahtarlar uygulama kimlik bilgisi uç noktaları üzerinden yönetilir.

İstek

Gövde (application/json). Tanımsız alanlar reddedilir. Yalnızca key, name, app_type ve party zorunludur.

Alan Tür Zorunlu Açıklama
key string evet Kararlı yapılandırma anahtarı, ^[a-z0-9_-]{1,64}$, ortam başına benzersiz. Oluşturma sırasında zorunludur; sonradan değiştirilemez.
name string evet Görünen ad, 1-100 karakter.
app_type string evet web, spa, native, m2m, device veya management. Oluşturma sırasında zorunludur; sonradan değiştirilemez.
party string evet first_party veya third_party. Oluşturma sırasında zorunludur; yalnızca first_party değerinden third_party değerine değiştirilebilir.
owner_org_id string veya null hayır Sahip kuruluşun org_… kimliği; yalnızca m2m uygulamalar için; değiştirilemez.
status string hayır active veya suspended. Askıya alınmış bir uygulama yeni belirteçler alamaz.
allowed_web_origins string[] hayır İzin verilen CORS kökenleri (https://host[:port]), en fazla 20, joker karakter yok.
organization_usage string hayır deny, allow veya require. organization yetkilendirme parametresini yönetir (bir org_… kimliği veya kuruluşun slug'ı): deny bunu reddeder, allow isteğe bağlı kılar, require zorunlu kılar. Belirteç, org_id değerini yalnızca kullanıcının üyeliği doğrulandıktan sonra taşır.
org_access_mode string hayır Kuruluş girişi erişimi: all_organizations (varsayılan; her kuruluşun her üyesi), enabled_organizations (yalnızca uygulamanın etkin olduğu kuruluşlar) veya assigned_only (ayrıca yalnızca atanmış üyelikler veya dizin grupları). Bkz. Kuruluş uygulamaları.
registration_mode string veya null hayır open, invite_only veya closed; boş bırakılırsa ortam ayarı devralınır.
registration_source string hayır Oluşturmada dashboard veya management_api (varsayılan management_api); değiştirilemez. Yanıtlar ayrıca dcr veya cimd gösterebilir.
verification_status string hayır verified veya unverified.
security_profile string hayır baseline (bugün yazılabilir tek profil).
token_endpoint_auth_method string hayır private_key_jwt, client_secret_basic, client_secret_post veya none; app_type için izin verilmiş olmalıdır.
grant_types string[] hayır İzin verilen yetki türleri; app_type'ın izin verdiklerinin bir alt kümesi.
default_api_id string veya null hayır İstekte resource yoksa kullanılan API'nin api_… kimliği.
require_par boolean hayır Gönderilmiş yetkilendirme isteklerini zorunlu kılar.
require_state boolean hayır state değerini zorunlu kılar.
require_nonce boolean hayır nonce değerini zorunlu kılar.
pkce_required boolean hayır PKCE'yi zorunlu kılar; yalnızca gizli tutulan bir web uygulaması için devre dışı bırakılabilir. PKCE olmadan nonce, yetkilendirme kodu enjeksiyonuna karşı tek savunmadır; bu nedenle geliştirme ortamları dışında require_nonce açık kalmalıdır (aksi halde /require_nonce üzerinde validation_failed).
skip_consent boolean hayır Onay ekranını atlar; yalnızca birinci taraf uygulamalar.
token_binding_policy string hayır none veya dpop_required.
login_host string veya null hayır Ortamın giriş ana makinelerinden biri (küçük harfli DNS adı).
default_max_age_s integer veya null hayır Saniye cinsinden varsayılan max_age.
min_acr string veya null hayır Asgari kimlik doğrulama güvencesi: urn:idp:acr:1fa, urn:idp:acr:mfa veya urn:idp:acr:phr.
access_token_lifetime_s integer veya null hayır Erişim belirteci ömrü, 60-86400 saniye.
refresh_idle_s integer veya null hayır Saniye cinsinden yenileme belirteci boşta kalma ömrü; refresh_absolute_s değerini aşamaz.
refresh_absolute_s integer veya null hayır Saniye cinsinden yenileme belirteci mutlak ömrü.
refresh_reuse_interval_s integer hayır Yenileme belirteci yeniden kullanım penceresi, 0-30 saniye (varsayılan 5).
backchannel_logout_uri string veya null hayır Arka kanal oturum kapatma URI'si (https).
frontchannel_logout_uri string veya null hayır Ön kanal oturum kapatma URI'si (https).
frontchannel_logout_session_required boolean hayır Ön kanal oturum kapatma URI'sine iss ve sid ekler. Ortamın ön kanal oturum kapatma ayarı kapalıyken bunu true yapmak 422 döndürür. Varsayılan false.
initiate_login_uri string hayır OIDC giriş başlatma URI'si (OpenID Connect Core 1.0 §4): IdP tarafından başlatılan bir SAML girişinden sonra tarayıcı buraya iss ile yönlendirilir ve uygulama kendi yetkilendirme kodu akışını state ve PKCE ile başlatır. Küçük harfli DNS ana makinesine sahip mutlak https URL, parça veya kullanıcı bilgisi yok, en fazla 2048 bayt; m2m ve management uygulamalar için izin verilmez. Yalnızca bu URI'ye sahip bir uygulama, IdP tarafından başlatılan bir hedef olabilir.
id_token_org_claims boolean hayır true ise (varsayılan), kuruluş girişinin kimlik belirteci org_id, org_slug ve org_roles taşır; false ise kimlik belirteci kuruluş talepleri taşımaz. Erişim belirteçleri etkilenmez ve kimlik belirteçleri asla izin taşımaz.
policy_uri string veya null hayır Gizlilik politikası URI'si (https), onay ekranında gösterilir.
tos_uri string veya null hayır Hizmet koşulları URI'si (https).
client_uri string veya null hayır Uygulama ana sayfası URI'si (https).
jwks object veya null hayır Satır içi JWK Kümesi ({"keys":[…]}): 1-5 genel anahtar, en fazla 16 KiB; özel anahtar üyeleri reddedilir. jwks_uri ile birlikte kullanılamaz.
jwks_uri string veya null hayır Uzak JWK Kümesi URI'si (https); jwks ile birlikte kullanılamaz.
software_id string veya null hayır Yalnızca DCR uygulamaları.
software_version string veya null hayır Yalnızca DCR uygulamaları.
m2m_token_lifetime_s integer veya null hayır m2m uygulamalar için belirteç ömrü, 60-86400 saniye.
redirect_uris string[] hayır İzin verilen yönlendirme URI'leri, en fazla 50; m2m ve management için boş olmalıdır.
post_logout_redirect_uris string[] hayır İzin verilen oturum kapatma sonrası yönlendirme URI'leri, en fazla 50.
connection_ids string[] hayır Uygulamada etkin bağlantılar (conn_…), sıralı; sıra düğme sırasıdır. En fazla 100.
allowed_first_factors string[] hayır Uygulamada izin verilen birincil faktörler: password, passkey, email_otp, magic_link, sms_otp, social, enterprise değerlerinden; yinelenen yok; bu sırayla döndürülür. Boş liste (varsayılan) uygulamanın kısıtlama eklemediği anlamına gelir. Küme, ortamın allowed_first_factors değeriyle kesiştirilir; geriye yöntem kalmazsa 422 policy_conflict.
allowed_response_modes string[] hayır Uygulamanın yetkilendirme ve gönderilmiş yetkilendirme isteklerinde kullanabileceği response_mode değerleri: query, form_post (biri veya ikisi, yinelenen yok); bu sırayla döndürülür. Varsayılan ["query"]: yetkilendirme yanıtını form post ile alan bir uygulama form_post değerini açıkça ekler. response_mode değeri listede olmayan bir yetkilendirme isteği reddedilir; response_mode içermeyen istek query kullanır. Boş liste 422 döndürür. JARM modları (jwt, query.jwt, fragment.jwt, form_post.jwt) henüz desteklenmez. Dinamik istemci kaydı veya istemci kimliği meta veri belgesi üzerinden kaydedilen uygulamalar ["query"] alır.

Yanıt

ETag üstbilgisi ile birlikte uygulamayla 201 Created.

{
  "id": "app_6f8d0cjgbmf0gtn2rg6pscp3cg",
  "client_id": "app_6f8d0cjgbmf0gtn2rg6pscp3cg",
  "version": 1,
  "created_at": "2026-10-05T10:00:01Z",
  "updated_at": "2026-10-05T10:00:01Z",
  "key": "portal",
  "name": "Portal",
  "app_type": "web",
  "party": "first_party",
  "status": "active",
  "redirect_uris": ["https://portal.example.com/cb"],
  "...": "all other fields from the field reference"
}

Hatalar

HTTP code Ne zaman
401 unauthenticated Anahtar eksik, geçersiz veya iptal edilmiş.
403 insufficient_permissions Anahtarın gerekli izni yok.
409 conflict Bu key ile zaten bir uygulama var.
422 validation_failed Bir alan geçersiz; errors[].pointer bunu belirtir (örneğin /redirect_uris/0).
422 policy_conflict allowed_first_factors içinde ortamın birincil faktör kümesiyle ortak bir yöntem yok.
400 unknown_field Gövdede şemanın parçası olmayan bir alan var.
403 quota_exceeded Uygulamalar için plan sınırına ulaşıldı.

Örnek

curl -X POST https://api.eu.keenauth.com/v1/applications \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"portal","name":"Portal","app_type":"web","party":"first_party","redirect_uris":["https://portal.example.com/cb"]}'

Yanıt alanları

id ve client_id uygulama kimliğidir (app_…); version ayrıca ETag olarak döndürülür; created_at, updated_at, last_token_issued_at ve last_token_asn salt okunurdur. Yukarıdaki yazılabilir her alan döndürülür. İstemci gizli anahtarları bu kaynağın hiçbir zaman parçası değildir.