Ana içeriğe geç

OAuth2

OAuth2, bir kullanıcının bir uygulamaya hesabına erişim izni vermesinin yoludur. Aynı onay adımı, uygulamanın botunu bir sunucuya veya grup DM'ye de kurabilir. Uygulama kayıtları, istemci gizli anahtarları ve bot token'ları Uygulamalar kaynağına aittir.

Yetkilendirme kodu akışı

  1. Uygulama, kullanıcının tarayıcısını Uygulamayı yetkilendir (GET /oauth2/authorize) adresine gönderir. TEBHOS tarayıcıyı, tüm sorgu parametrelerini ileterek web uygulamasının onay ekranına (https://tebhos.com/oauth2/authorize) yönlendirir.
  2. Kullanıcı onayladığında web uygulaması OAuth2 onayı ver yolunu çağırır. TEBHOS bir yetkilendirme kodu üretir ve sonuna code (ve state) eklenmiş olarak uygulamanın geri çağırma URL'sini döndürür.
  3. Uygulamanın sunucusu, istemci kimlik bilgileriyle kodu OAuth2 token'ı değiş tokuş et yolunda takas eder ve bir erişim token'ı ile bir yenileme token'ı alır.
  4. Uygulama, Authorization: Bearer <access_token> ile OAuth2 kullanıcı bilgilerini al veya Geçerli OAuth2 yetkilendirmesini al yolunu çağırır.

Proof Key for Code Exchange (PKCE), S256 ve plain yöntemleriyle desteklenir. Meydan okuma (challenge), kod üretildiği anda koda bağlanır. code_challenge_method olmadan verilen bir code_challenge, plain olarak değerlendirilir. Meydan okuması olan bir kodun takasında eşleşen bir code_verifier verilmesi zorunludur.

Kimlik bilgileri ve ömürleri

Yetkilendirme kodlarını, istemci gizli anahtarlarını, erişim token'larını ve yenileme token'larını opak gizli değerler olarak ele alın. Her biri base64url ile kodlanmış 32 rastgele bayttır.

Kimlik bilgisi Ömür
Yetkilendirme kodu Tek kullanımlık. TEBHOS şu anda kullanılmayan kodların süresini doldurmaz; bu yüzden kodu gelir gelmez takas edin
Erişim token'ı Üretildiği andan itibaren 7 gün (604800 saniye)
Yenileme token'ı Süresi dolmaz; takas edildiğinde tüketilir, iptal edildiğinde silinir

Yenileme takası, sunulan yenileme token'ını tüketir ve yeni bir çift üretir. Daha önce üretilmiş erişim token'ları süreleri dolana kadar geçerli kalır.

Yol kimlik doğrulaması

Uygulamayı yetkilendir, OAuth2 onayı ver ve yetkilendirme listeleme yolları kullanıcının kimliğini bir oturum token'ıyla doğrular. Token, iç gözlem (introspection) ve iptal yolları ise uygulamanın kimliğini istemci kimliği ve istemci gizli anahtarıyla doğrular ve hız sınırlarını istemcinin IP adresine göre anahtarlar. OAuth2 kullanıcı bilgilerini al ve Geçerli OAuth2 yetkilendirmesini al OAuth2 erişim token'ı ile kimlik doğrular.

OAuth2 kapsamları

Bir kapsam (scope), uygulamanın kullanıcı adına okuyabileceği veya yapabileceği tek bir şeyi adlandırır.

Değer Açıklama
identify Kullanıcının kimliğini OAuth2 kullanıcı bilgilerini al ve Geçerli kullanıcıyı getir üzerinden okur ve kullanıcıyı Geçerli OAuth2 yetkilendirmesini al yanıtına dahil eder
email Kullanıcının e-posta adresini bu yanıtlara ekler. identify olmadan etkisi yoktur
guilds Kullanıcının sunucularını Geçerli kullanıcının sunucularını listele, Sunucuyu al ve Sunucu rollerini listele üzerinden okur
connections Kullanıcının bağlantılarını Bağlantıları listele üzerinden okur
bot Uygulamanın botunu seçilen bir sunucuya veya grup DM'ye kurar. Kendi başına hiçbir erişim token'ı yeteneği vermez

TEBHOS kapsam dizesini boşluk ve + karakterlerinden böler, boş parçaları atar ve tekrarlanan değerleri birleştirir. Tanınmayan bir değer isteği invalid_scope ile reddeder.

Erişim token'ları yalnızca listelenen yollara ulaşır

OAuth2 erişim token'ı OAuth2 kullanıcı bilgilerini al, Geçerli OAuth2 yetkilendirmesini al ve yukarıdaki tabloda adı geçen kapsamlı okuma yolları tarafından kabul edilir. Yolun kapsamını taşımayan bir token, required_scope alanıyla birlikte 403 MISSING_OAUTH_SCOPE alır. Diğer tüm REST yolları bir kullanıcı oturum token'ı veya bot token'ı ister ve geçerli bir erişim token'ını 403 ACCESS_DENIED ile yanıtlar. Bkz. OAuth2 erişim token'ları.

OAuth2 hataları

OAuth2 hataları olağan hata yanıtını kullanır. OAuth2 hata adı message içindedir; bazen ardından iki nokta üst üste ve ayrıntı gelir:

{
  "error": "400 Bad Request",
  "code": "BAD_REQUEST",
  "message": "invalid_grant"
}
message Durum Anlamı
invalid_client 400 İstemci kimliği eksik, snowflake değil veya hiçbir uygulamayı adlandırmıyor
invalid_request: ... 400 İstemci gizli anahtarı verilmedi
invalid_client_secret 401 İstemci gizli anahtarı eşleşmiyor
invalid_grant 400 Kod veya yenileme token'ı eksik, bilinmiyor, kullanılmış ya da başka bir uygulamaya bağlı; redirect_uri kodla eşleşmiyor veya PKCE doğrulayıcısı eksik ya da yanlış
unsupported_grant_type: ... 400 grant_type ne authorization_code ne de refresh_token
invalid_scope: ... 400 İstenen bir kapsam tanınmıyor veya hiç kapsam istenmedi
missing_redirect_uri 400 Yönlendirme URI'si zorunlu ama verilmedi
invalid_redirect_uri 400 Yönlendirme URI'si uygulama için kayıtlı değil veya ayrıştırılamıyor
invalid_response_type_for_non_bot 400 bot dışındaki bir kapsam için yapılan istekte response_type, code değil
invalid_token 401 Erişim token'ı eksik, bilinmiyor veya süresi dolmuş

İstemci dallanmayı HTTP durumuna ve message başındaki hata adına göre yapmak ZORUNDADIR; metnin geri kalanına göre asla yapmamalıdır.

OAuth2 token nesnesi

Başarılı bir token takasının döndürdüğü çift.

Yapı

Alan Tür Açıklama
access_token string Uygulamanın Authorization başlığında gönderdiği bearer token
token_type string Her zaman Bearer
expires_in integer Saniye cinsinden erişim token'ı ömrü, her zaman 604800
refresh_token string Takas edildiğinde bu çiftin yerini alacak yenileme token'ı
scope string Verilen kapsamlar; alfabetik sırayla, boşlukla ayrılmış

Örnek

{
  "access_token": "M2xQb1RkY0hqTmZLc1B2WndBcUx1RWc2WXRJbk9iUmE",
  "token_type": "Bearer",
  "expires_in": 604800,
  "refresh_token": "VGhpc0lzQUZha2VSZWZyZXNoVG9rZW5Gb3JEb2NzMDE",
  "scope": "email identify"
}

OAuth2 kullanıcı bilgisi nesnesi

Yapı

Alan Tür Açıklama
sub snowflake Kullanıcı kimliği; id ile aynıdır
id snowflake Kullanıcı kimliği
username string Kullanıcının görünen adı
discriminator string Her zaman "0"
global_name string Kullanıcının görünen adı
avatar null Bu nesnede her zaman null
email? ?string E-posta adresi; yalnızca email kapsamıyla bulunur
verified? boolean Her zaman true; yalnızca email kapsamıyla bulunur

username görünen adı taşır

Bu nesnede hem username hem de global_name hesabın görünen adını tutar. Benzersiz kullanıcı adını göstermek için kullanıcıyı bunun yerine oturumla kimlik doğrulanan bir yol üzerinden okuyun.

OAuth2 iç gözlem nesnesi

Yapı

Alan Tür Açıklama
active boolean Token'ın var olup olmadığı ve geçerli olup olmadığı
scope? string Verilen kapsamlar; alfabetik sırayla, boşlukla ayrılmış
client_id? snowflake Token'ın üretildiği uygulama
token_type? string Erişim token'ı için Bearer, yenileme token'ı için refresh_token
iat? integer Unix saniyesi cinsinden üretilme zamanı
exp? integer Unix saniyesi cinsinden son geçerlilik zamanı; yalnızca erişim token'ı için
sub? snowflake Token'ın üretildiği kullanıcı

Etkin olmayan bir sonuç yalnızca active: false içerir. active true olduğunda diğer tüm alanlar bulunur; yalnızca exp hariç, çünkü yenileme token'ında hiçbir zaman yoktur.

client_id değerini denetleyin

İç gözlem, başka bir uygulamaya üretilmiş olanlar dahil geçerli her token'ı etkin olarak bildirir. Bir kaynak sunucusu sonuca güvenmeden önce client_id değerini kendi uygulama kimliğiyle karşılaştırmak ZORUNDADIR.

Geçerli OAuth2 yetkilendirme nesnesi

Yapı

Alan Tür Açıklama
application OAuth2 uygulama özeti nesnesi Token'ın üretildiği uygulama
scopes array[string] Alfabetik sırayla verilen kapsamlar
expires ISO8601 zaman damgası Erişim token'ının süresinin dolacağı zaman
user? object Yalnızca token identify içerdiğinde bulunur: kullanıcı bilgisi nesnesiyle aynı anlamlara sahip {id, username, discriminator, global_name, avatar}; email kapsamıyla ayrıca email ve verified

OAuth2 uygulama özeti nesnesi

Yapı

Alan Tür Açıklama
id snowflake Uygulama kimliği
name string Uygulama adı
icon null Bu nesnede her zaman null
description null Bu nesnede her zaman null
bot_public boolean Botu herkesin kurup kuramayacağı
bot_require_code_grant boolean Botu kurmanın tam bir kod akışı gerektirip gerektirmediği
flags integer Her zaman 0

OAuth2 yetkilendirme nesnesi

Geçerli kullanıcının yetkilendirdiği bir uygulama.

Yapı

Alan Tür Açıklama
application object Uygulamanın {id, name} değerleri
scopes array[string] Kullanıcının uygulama için geçerli erişim token'larının kapsamları; belirli bir sırası yoktur

Kullanıcı bir uygulama için en az bir geçerli erişim token'ına sahip olduğu sürece uygulama listede görünür.

Uygulamayı yetkilendir

GET /oauth2/authorize

Bir yetkilendirme isteği başlatır. Her zaman 302 yönlendirmesiyle yanıt verir. Kimlik doğrulama isteğe bağlıdır.

Sorgu parametreleri

Alan Tür Açıklama
client_id snowflake Yetkilendirilen uygulama
scope string Boşlukla ayrılmış istenen kapsamlar
response_type? string code
redirect_uri? string Uygulamanın kaydettiği bir yönlendirme URI'si. İstek yalnızca bot istemiyorsa zorunludur
state? string Geri çağırmada değiştirilmeden döndürülen opak bir değer
prompt? string Kullanıcı istenen tüm kapsamları zaten verdiyse onay ekranını atlamak için none
code_challenge? string PKCE meydan okuması
code_challenge_method? string S256 veya plain (varsayılan plain)
guild_id? snowflake bot kapsamı için önceden seçilen sunucu
channel_id? snowflake bot kapsamı için önceden seçilen grup DM
permissions? string Ondalık dize olarak bot izin tamsayısı
disable_guild_select? string Onay ekranında sunucu seçicisini kilitlemek için true

Yanıt

Durum Gövde Koşul
302 boş Location başlığı onay ekranı, uygulama geri çağırması veya bir hata geri çağırmasıdır

prompt=none olmadan yönlendirme, verilen tüm parametreler iletilerek https://tebhos.com/oauth2/authorize adresine gider. Bu aşamada hiçbir şey doğrulanmaz; doğrulamayı onay ekranı OAuth2 onayı ver yolunu çağırdığında yapar.

prompt=none ile TEBHOS sessizce kod üretmeyi dener:

Sonuç Yönlendirme
İstek geçerli, kullanıcı oturum açmış ve istenen tüm bot dışı kapsamlar bu uygulamaya daha önce verilmiş code ve state içeren geri çağırma URL'si
Oturum açmış kullanıcı yok error=login_required içeren hata hedefi
client_id bir snowflake değil error=invalid_client içeren hata hedefi
Verilmemiş bir kapsam dahil diğer tüm hatalar error=consent_required içeren hata hedefi

Hata hedefi, uygulama tam olarak o dizeyi kaydetmişse verilen redirect_uri, aksi hâlde web uygulaması URL'sidir; bu sayede bu yol hiçbir zaman rastgele bir kaynağa yönlendirmez. Hata yönlendirmesi error ve state taşır, error_description taşımaz.

Hız sınırı

oauth:authorize kovasında, her IP adresi için dakikada 60 istek.

POST /oauth2/authorize/consent

Oturum açmış kullanıcı adına bir yetkilendirme isteğini tamamlar ve bot kapsamının bir hedefi varsa botu kurar. Bir kullanıcı oturum token'ı gerektirir. code ve, verildiyse, state içeren geri çağırma URL'sini {"redirect_to": string} olarak döndürür.

Bu, TEBHOS onay ekranının çağırdığı yoldur. Üçüncü taraf bir uygulama onu doğrudan çağırmaz.

JSON gövdesi

Alan Tür Açıklama
client_id snowflake Yetkilendirilen uygulama
scope string Boşlukla ayrılmış istenen kapsamlar
redirect_uri? string Kayıtlı bir yönlendirme URI'si. İstek yalnızca bot istemiyorsa ve uygulama bot_require_code_grant ayarlamıyorsa zorunludur
state? string Geri çağırma URL'sine eklenir
response_type? string bot dışındaki herhangi bir kapsam için yapılan istekte code (varsayılan) olmak zorundadır
code_challenge? string PKCE meydan okuması
code_challenge_method? string S256 veya plain (varsayılan plain)
guild_id? snowflake Botun kurulacağı sunucu
channel_id? snowflake Botun kurulacağı grup DM
permissions? string Ondalık dize olarak bot izin tamsayısı. Tanımlı izin maskesinin dışındaki bitler atılır

guild_id ve channel_id birbirini dışlar. redirect_uri olmadan yapılan yalnızca-bot isteği, geri çağırmasını web uygulaması URL'sine çözümler.

Yanıt

Durum Gövde Koşul
200 {"redirect_to": string} Onay tamamlandı
400 hata yanıtı Bkz. OAuth2 hataları; ayrıca iki hedefin birden verilmesi, geçersiz bir permissions değeri (invalid_permissions_integer, invalid_permissions_negative), botu olmayan bir uygulama (not_a_bot_application), grup DM olmayan bir kanal veya dolu bir grup DM
401 hata yanıtı Geçerli kullanıcı oturumu yok
403 hata yanıtı Bot özeldir ve çağıran uygulamanın sahibi değildir; çağıranın sunucuya kurulum izni yoktur ya da çağıran grup DM'nin üyesi değildir
404 hata yanıtı Sunucu veya kanal yok
409 hata yanıtı Bot zaten sunucunun üyesi

Bot kurulumu

bot kapsamı ve bir guild_id ile çağıranın sunucu sahibi olması ya da o sunucuda Manage Guild veya Administrator iznine sahip olması gerekir. Administrator izni olmayan bir çağıran yalnızca kendisinin sahip olduğu izin bitlerini isteyebilir.

Bot, çağıran davet eden olarak kaydedilerek sunucuya katılır. Sıfır olmayan bir izin maskesi istendiğinde TEBHOS ayrıca uygulamanın adını taşıyan ve tam olarak bu maskeye sahip bir rol oluşturur (renk #99AAB5, ayrı gösterilmez, bahsedilemez, mevcut rollerin üstüne yerleştirilir) ve rolü bota atar. Sunucunun oturumları bir üye ekleme olayı alır. Bu yolla kurulan bir bot için sunucunun üye sınırı ve yasak listesi denetlenmez.

bot kapsamı ve bir channel_id ile çağıranın grup DM'nin alıcısı olması gerekir. Bot alıcı olarak eklenir ve bir alıcı-ekleme sistem mesajı gönderilir. Zaten alıcı olan bir bot olduğu gibi bırakılır.

Kurulum başarısız olduğunda aynı isteğin ürettiği yetkilendirme kodu silinir; böylece çağıran hiçbir zaman kullanılabilir bir kod almaz.

Hız sınırı

oauth:authorize kovasında, her IP adresi için dakikada 60 istek.

OAuth2 token'ı değiş tokuş et

POST /oauth2/token

Bir yetkilendirme kodunu veya yenileme token'ını bir OAuth2 token nesnesiyle takas eder.

Gövde application/x-www-form-urlencoded biçimindedir. Uygulama HTTP Basic (Authorization: Basic base64(client_id:client_secret)) ile ya da client_id ve client_secret form alanlarıyla kimlik doğrular. İkisi birden verildiğinde her form alanı, eşleşen Basic değerinden önceliklidir.

Form gövdesi: yetkilendirme kodu

Alan Tür Açıklama
grant_type string authorization_code
code string Geri çağırmadan gelen kod
redirect_uri string Kodun üretildiği yönlendirme URI'si; birebir dize olarak karşılaştırılır. Yönlendirme URI'si olmayan yalnızca-bot izninde web uygulaması URL'sidir
code_verifier? string PKCE doğrulayıcısı. Kodun meydan okuması varsa zorunludur; S256 için SHA-256 özeti base64url ile kodlanır ve meydan okumayla karşılaştırılır
client_id? snowflake HTTP Basic kullanılmadığında istemci kimliği
client_secret? string HTTP Basic kullanılmadığında istemci gizli anahtarı

Form gövdesi: yenileme token'ı

Alan Tür Açıklama
grant_type string refresh_token
refresh_token string Takas edilecek yenileme token'ı
client_id? snowflake HTTP Basic kullanılmadığında istemci kimliği
client_secret? string HTTP Basic kullanılmadığında istemci gizli anahtarı

Yanıt

Durum Gövde Koşul
200 OAuth2 token nesnesi Bir token çifti üretildi
400 hata yanıtı Form, istemci veya izin geçersiz (bkz. OAuth2 hataları)
401 hata yanıtı İstemci gizli anahtarı yanlış (invalid_client_secret)
429 hata yanıtı Yol kovası isteği reddetti

İzin denetlenmeden önce istemcinin kimliği doğrulanır. Kod, token'lar üretilmeden önce silinir; bu yüzden bir kodu yeniden oynatmak invalid_grant döndürür. İstemci kimlik bilgileri (client-credentials) akışı yoktur: her token bir kullanıcıya bağlıdır.

Hız sınırı

oauth:token kovasında, her IP adresi için dakikada 120 istek.

Örnek

curl -X POST https://tebhos.com/api/v1/oauth2/token \
  -u "1501314428688998182:<client_secret>" \
  -d grant_type=authorization_code \
  -d code=<code> \
  -d redirect_uri=https://example.com/callback \
  -d code_verifier=<verifier>

OAuth2 kullanıcı bilgilerini al

GET /oauth2/userinfo

Erişim token'ının üretildiği kullanıcı için OAuth2 kullanıcı bilgisi nesnesini döndürür. identify kapsamıyla Authorization: Bearer <access_token> gerektirir.

Yanıt

Durum Gövde Koşul
200 OAuth2 kullanıcı bilgisi nesnesi Kullanıcı döndürüldü
401 hata yanıtı Token eksik, bilinmiyor veya süresi dolmuş ya da kullanıcı artık yok (invalid_token)
403 hata yanıtı Token'da identify yok (MISSING_OAUTH_SCOPE)

Hız sınırı

oauth:introspect kovasında, her istemci için dakikada 120 istek.

OAuth2 token'ına iç gözlem yap

POST /oauth2/introspect

Tek bir erişim veya yenileme token'ı için bir OAuth2 iç gözlem nesnesi döndürür. Gövde application/x-www-form-urlencoded biçimindedir ve uygulama OAuth2 token'ı değiş tokuş et yolundaki gibi kimlik doğrular.

Form gövdesi

Alan Tür Açıklama
token string İncelenecek erişim veya yenileme token'ı
client_id? snowflake HTTP Basic kullanılmadığında istemci kimliği
client_secret? string HTTP Basic kullanılmadığında istemci gizli anahtarı

Yanıt

Durum Gövde Koşul
200 OAuth2 iç gözlem nesnesi İç gözlem tamamlandı; etkin olmayan sonuç dahil
400 hata yanıtı İstemci eksik veya bilinmiyor ya da gizli anahtar verilmedi
401 hata yanıtı İstemci gizli anahtarı yanlış

Hız sınırı

oauth:introspect kovasında, her IP adresi için dakikada 120 istek.

OAuth2 token'ını iptal et

POST /oauth2/token/revoke

Bir token'ı iptal eder. Gövde application/x-www-form-urlencoded biçimindedir ve uygulama OAuth2 token'ı değiş tokuş et yolundaki gibi kimlik doğrular.

Form gövdesi

Alan Tür Açıklama
token string İptal edilecek token
token_type_hint? string token bir yenileme token'ı olduğunda refresh_token. Bu alan olmadan token yalnızca erişim token'ı olarak aranır
client_id? snowflake HTTP Basic kullanılmadığında istemci kimliği
client_secret? string HTTP Basic kullanılmadığında istemci gizli anahtarı

İptal tüm izni temizler

Token eşleştiğinde TEBHOS, kullanıcının kimliği doğrulanan uygulama için sahip olduğu tüm erişim token'larını ve tüm yenileme token'larını siler.

Bir yenileme token'ını iptal eden istemci token_type_hint=refresh_token göndermek ZORUNDADIR; aksi hâlde hiçbir şey eşleşmez.

Yanıt

Durum Gövde Koşul
200 boş İstek işlendi; hiçbir şeyle eşleşmeyen token dahil
400 hata yanıtı İstemci eksik veya bilinmiyor ya da gizli anahtar verilmedi
401 hata yanıtı İstemci gizli anahtarı yanlış

Bilinmeyen bir token 200 döndürür; böylece yanıt bir token'ın var olup olmadığını hiçbir zaman göstermez.

Hız sınırı

oauth:introspect kovasında, her IP adresi için dakikada 120 istek.

Geçerli OAuth2 yetkilendirmesini al

GET /oauth2/@me

Sunulan erişim token'ı için geçerli OAuth2 yetkilendirme nesnesini döndürür. Authorization: Bearer <access_token> gerektirir; kapsam gerekmez. user üyesi yalnızca token identify içerdiğinde eklenir.

Yanıt

Durum Gövde Koşul
200 geçerli OAuth2 yetkilendirme nesnesi Yetkilendirme döndürüldü
401 hata yanıtı Token eksik, bilinmiyor veya süresi dolmuş ya da uygulaması artık yok (invalid_token)

OAuth2 yetkilendirmelerini listele

GET /oauth2/@me/authorizations

Geçerli kullanıcının verdiği OAuth2 yetkilendirme nesnelerini döndürür. Bir kullanıcı oturum token'ı gerektirir. Liste sayfalanmaz.

Hız sınırı

oauth_dev:clients:list kovasında, her hesap için dakikada 60 istek.

OAuth2 yetkilendirmesini iptal et

DELETE /oauth2/@me/authorizations/{application_id}

Geçerli kullanıcının tek bir uygulama için erişim token'larını iptal eder. Bir kullanıcı oturum token'ı gerektirir. Hiçbir şey verilmemiş olsa bile 204 döndürür.

Yol parametreleri

Alan Tür Açıklama
application_id snowflake Erişimi iptal edilen uygulama

Yenileme token'ları bu yoldan etkilenmez

Bu yol, kullanıcının uygulama için erişim token'larını siler. Uygulamanın yeni erişim token'ı alamaması için yenileme token'larını da silmek isterseniz OAuth2 yetkilendirmelerini toplu iptal et yolunu kullanın.

Uygulamanın kurduğu bot, katıldığı her sunucuda ve grup DM'de kalır. Uygulamaya bildirim gönderilmez.

Hız sınırı

oauth:introspect kovasında, her hesap için dakikada 120 istek.

OAuth2 yetkilendirmelerini toplu iptal et

POST /oauth2/@me/authorizations/revoke

Geçerli kullanıcının birkaç uygulama için verdiği iznin tamamını (erişim ve yenileme token'ları) iptal eder. Bir kullanıcı oturum token'ı gerektirir. 204 döndürür.

JSON gövdesi

Alan Tür Açıklama
application_ids array[snowflake] İptal edilecek uygulamalar. Tekrarlanan kimlikler birleştirilir

Hiçbir şey silinmeden önce her uygulama aranır; bu yüzden tek bir bilinmeyen kimlik 404 döndürür ve tüm izinleri olduğu gibi bırakır. Snowflake olmayan bir değer 400 döndürür.

Hız sınırı

oauth:introspect kovasında, her hesap için dakikada 120 istek.