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.