API güncelle

PATCH /v1/apis/{api_id} · izin apis:write

API'yi JSON birleştirme yamasıyla günceller (RFC 7396, application/merge-patch+json): gönderdiğiniz alanlar değişir, göndermedikleriniz kalır. If-Match zorunludur. key ve identifier oluşturulduktan sonra değişmez; sistem API'si değiştirilemez. Hiçbir şeyi değiştirmeyen yama yazma yapmaz ve sürümü korur.

İstek

Parametre Yer Açıklama
api_id yol API kimliği.
If-Match başlık Son okumadaki ETag (zorunlu).

Gövde: aşağıdaki yazılabilir alanlardan herhangi biri (hepsi isteğe bağlı). Bir alan null ile kaldırılamaz.

Alan Tür Zorunlu Açıklama
key string hayır Kararlı yapılandırma anahtarı, ^[a-z0-9_-]{1,64}$. Değişmez.
identifier string hayır Jeton kitlesi: https URL (sorgu ve parça yok) ya da urn:<nid>:<nss>; kanonik biçimde saklanır. Değişmez. urn:idp: ad alanı ayrılmıştır.
name string hayır 1-128 karakter.
access_token_lifetime_s integer hayır 60-86400. Varsayılan 3600 (mcp_profile ile 600).
token_format string hayır jwt (varsayılan) ya da opaque.
rbac_mode string hayır Rol ve izinlerin jetona yansıması: claims (varsayılan) permissions ve org_permissions ekler; off ikisini de eklemez (org_roles yine eklenir); enforce ikisini ekler ve verilen scope'ları kullanıcının etkin izinleriyle sınırlar.
allow_offline_access boolean hayır Varsayılan true.
require_resource_indicator boolean hayır Varsayılan false (mcp_profile ile true).
dpop_required boolean hayır Varsayılan false.
mcp_profile boolean hayır https identifier ve require_resource_indicator: true ister.
first_party_access string hayır all (varsayılan) ya da granted_only.
introspection_applications dizi hayır Bu API'nin jetonlarını introspection ile sorgulayabilen uygulamalar (app_…), en çok 50, tekrarsız. Yalnız aynı ortamın web ve m2m uygulamaları. Liste bütünüyle değiştirilir; [] listeyi boşaltır, null kabul edilmez.

Introspection uygulamaları

Introspection ucu (POST <issuer>/oauth2/introspect, RFC 7662) bir erişim jetonu için active: true yanıtını yalnız iki çağırana verir: jetonun verildiği uygulamaya ya da jetonun aud değerindeki API'nin introspection_applications listesindeki uygulamaya. Diğer her çağıran active: false alır; böylece API'ler birbirinin jetonunu sorgulayamaz. Listeye yalnız aynı ortamın gizli uygulamaları (web, m2m) eklenebilir; liste küme olarak saklanır ve kimlik sırasıyla döner. Askıya alınmış uygulama listede kalır ama sorgulayamaz. Sistem API'sinin listesi yazılamaz.

Yanıt

200 OK, yeni ETag ile:

{
  "id": "api_01h455vb4pex5vsknk084sn02q",
  "key": "orders",
  "identifier": "https://api.example.com/orders",
  "name": "Orders API",
  "is_system": false,
  "access_token_lifetime_s": 3600,
  "token_format": "jwt",
  "rbac_mode": "off",
  "allow_offline_access": true,
  "require_resource_indicator": false,
  "dpop_required": false,
  "mcp_profile": false,
  "first_party_access": "all",
  "introspection_applications": ["app_01h455vb4pex5vsknk084sn02r"],
  "created_at": "2026-10-05T12:00:00Z",
  "updated_at": "2026-10-05T12:00:00Z"
}

Hatalar

HTTP code Ne zaman
400 unknown_field Yama salt okunur ya da bilinmeyen bir alan içeriyor.
404 not_found Bu ortamda böyle bir API yok.
409 conflict API sistem API'si.
412 precondition_failed If-Match güncel sürümle eşleşmiyor.
415 unsupported_media_type İçerik türü application/merge-patch+json değil.
422 validation_failed Bir değer geçersiz, bir alan null yapılmış ya da key / identifier değiştirilmiş.
422 validation_failed introspection_applications öğesi bu ortamda yok (unknown_application), gizli değil (not_confidential), tekrarlı (duplicate) ya da app_… biçiminde değil (invalid_value); işaretçi istekteki indeksi gösterir.
428 precondition_required If-Match yok.

Örnek

curl -X PATCH https://api.eu.keenauth.com/v1/apis/api_01h455vb4pex5vsknk084sn02q \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "1"' \
  -d '{"access_token_lifetime_s":900}'