Uygulamalar¶
Uygulama, tek bir kullanıcı hesabının sahip olduğu bir OAuth2 istemcisidir ve her bot hesabı bir uygulamaya aittir. Bir uygulama oluşturmak her zaman onun bot hesabını da oluşturur. Bir kullanıcı en fazla 25 uygulamaya sahip olabilir. Yetkilendirme kodu akışı (authorisation code grant), kapsamlar ve üçüncü taraf istemcilere verilen token'lar OAuth2 kaynağına aittir. Adım adım anlatım için bkz. Bot oluşturma.
Erişim kuralları¶
Yönetim yolları yalnızca kullanıcıya yöneliktir: kullanıcı oturumu token'ı gerektirirler; geçerli bir bot token'ı 403 ACCESS_DENIED ile (geçersiz olanı 401 ile) reddedilir. Herkese açık uygulamayı getir hiçbir kimlik bilgisi gerektirmez. Bot uygulamasını getir yalnızca bot token'ı kabul eder; Geçerli uygulamayı getir ise ikisini de kabul eder.
Bir uygulamayı yalnızca sahibi okuyabilir veya değiştirebilir. Başka bir hesap 403 FORBIDDEN alır.
Kimlik bilgisi yenileme yolları ve Uygulamayı sil sudo kipi gerektirir. Kanıtı JSON gövdesine koyun (password, mfa_code veya sudo_proof) ya da bu yolları Sudo kipi ver ile alınmış bir sudo yetkisine sahip bir oturumdan çağırın. Kanıt eksikse 403 SUDO_MODE_REQUIRED döner.
Kimlik bilgileri yalnızca bir kez gösterilir
İstemci gizli anahtarı yalnızca Uygulama oluştur ve İstemci gizli anahtarını sıfırla tarafından, bot token'ı ise yalnızca Uygulama oluştur ve Bot token'ını sıfırla tarafından döndürülür. TEBHOS her birinin yalnızca hash'ini saklar ve onları yeniden gösteremez.
Bot token'ları¶
Bot token'ı; uygulama kimliği, bir nokta ve base64url olarak kodlanmış 32 rastgele bayttan oluşan bir gizli değerdir:
Onu Authorization: Bot <token> olarak gönderin. Bot kullanıcısının kimliği her zaman uygulama kimliğine eşittir. Bkz. Kimlik doğrulama.
Uygulama nesnesi¶
Uygulamanın, sahibinin gördüğü hâli.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
| name | string | Uygulama adı (1-100 karakter) |
| redirect_uris | array[string] | Kayıtlı OAuth2 yönlendirme URI'leri, tanımlı bir sıra olmadan; hiç yoksa boş dizi |
| bot_public | boolean | Botu yalnızca sahibinin değil, herkesin kurup kuramayacağı |
| bot_require_code_grant | boolean | Botu kurmanın yönlendirme URI'si içeren tam bir kod akışı gerektirip gerektirmediği |
| client_secret? | string | İstemci gizli anahtarı; yalnızca Uygulama oluştur ve İstemci gizli anahtarını sıfırla yanıtlarında bulunur |
| bot? | uygulama botu nesnesi | Bot hesabı; bot hesabı artık okunamıyorsa yer almaz |
Örnek¶
{
"id": "1501314428688998182",
"name": "Party Parrot",
"redirect_uris": ["https://example.com/callback"],
"bot_public": true,
"bot_require_code_grant": false,
"bot": {
"id": "1501314428688998182",
"username": "Party_Parrot",
"discriminator": "0001",
"avatar": null,
"banner": null,
"bio": null,
"mfa_enabled": false,
"authenticator_types": [],
"flags": 0
}
}
Uygulama botu nesnesi¶
Bir uygulamanın sahip olduğu bot hesabı.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Bot kullanıcı kimliği; uygulama kimliğine eşittir |
| username | string | Botun kullanıcı adı |
| discriminator | string | Başı sıfırla doldurulmuş dört haneli ayırt edici (discriminator) |
| avatar | ?string | Avatar hash'i veya null |
| banner | ?string | Afiş (banner) hash'i veya null |
| bio | ?string | Profil biyografisi veya null |
| mfa_enabled | boolean | authenticator_types listesinin boş olup olmadığı |
| authenticator_types | array[integer] | Bot oluşturulurken sahibinin hesabından kopyalanan kimlik doğrulayıcı türleri |
| flags | integer | Botun kullanıcı bayrakları; bot bayrakları dahil |
| token? | string | Bot token'ı; yalnızca Uygulama oluştur yanıtında bulunur |
Bot bayrakları¶
| Değer | Ad | Açıklama |
|---|---|---|
| 1 << 4 | FRIENDLY_BOT | Bot arkadaşlık isteklerini kabul eder |
| 1 << 5 | FRIENDLY_BOT_MANUAL_APPROVAL | Bota gelen arkadaşlık istekleri elle onay gerektirir |
Bu bitler botun kullanıcı flags değerinde bulunur. Bot profilini güncelle yalnızca bu iki biti değiştirebilir. İstemci tanımadığı bitleri yok saymalıdır (MUST).
Herkese açık uygulama nesnesi¶
Uygulamanın, kimlik bilgisi göndermeyen çağıranlar dahil herhangi bir çağıranın gördüğü hâli.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
| name | string | Uygulama adı |
| icon | ?string | Uygulama simgesi olarak kullanılan bot avatar hash'i veya null |
| description | null | Her zaman null |
| redirect_uris | array[string] | Kayıtlı yönlendirme URI'leri |
| scopes | array[string] | Uygulamanın bot hesabı varsa ["bot"], aksi hâlde boş |
| bot_public | boolean | Çağıranın botu kurup kuramayacağı. Bot özel olsa bile sahip için her zaman true |
| bot | ?object | Bot hesabının {id, username, discriminator, global_name, avatar, bot, flags} bilgisi veya null |
| current_user | ?object | Çağıranın {id, username, discriminator, global_name, avatar} bilgisi; istekte geçerli bir kullanıcı oturumu yoksa null |
Herkese açık veri
Bu nesne yönlendirme URI listesini ve bot profilini herkese açar. İstemci gizli anahtarını, bot token'ını veya sahibin kimliğini hiçbir zaman içermez.
Geçerli bot uygulaması nesnesi¶
Bir bot token'ının arkasındaki uygulama; o token'a döndürüldüğü hâliyle.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
| name | string | Uygulama adı |
| icon | ?string | Botun avatar hash'i veya null |
| description | ?string | Botun biyografisi veya null |
| bot_public | boolean | Botu herkesin kurup kuramayacağı |
| bot_require_code_grant | boolean | Botu kurmanın tam bir kod akışı gerektirip gerektirmediği |
| verify_key | string | Uyumluluk için yer tutucu: her zaman 64 adet 0 karakteri |
| owner | object | Sahip hesabın {id, username, discriminator, global_name, avatar} bilgisi |
| redirect_uris | array[string] | Kayıtlı yönlendirme URI'leri |
| bot? | uygulama botu nesnesi | token olmadan bot hesabı |
Bot profili nesnesi¶
Bot profilini güncelle tarafından döndürülür.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Bot kullanıcı kimliği |
| username | string | Botun kullanıcı adı |
| discriminator | string | Başı sıfırla doldurulmuş dört haneli ayırt edici |
| avatar | ?string | Avatar hash'i veya null |
| banner | ?string | Afiş hash'i veya null |
| bio | ?string | Biyografi veya null |
| flags | integer | Botun kullanıcı bayrakları |
Bot token'ı sıfırlama nesnesi¶
Bot token'ını sıfırla tarafından döndürülür.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| token | string | Yeni bot token'ı |
| bot | uygulama botu nesnesi | token olmadan bot hesabı |
Sahip olunan uygulamaları listele¶
GET /users/@me/applications
Geçerli kullanıcının sahip olduğu tüm uygulama nesnelerinin bir dizisini döndürür. Kullanıcı oturumu token'ı gerektirir; Bot kimlik bilgisiyle yapılan bir istek 403 FORBIDDEN döndürür. Hiçbir girdide istemci gizli anahtarı veya bot token'ı yoktur. Liste sayfalanmaz.
Hız sınırı¶
oauth_dev:clients:list kovasında, her hesap için dakikada 60 istek.
Geçerli uygulamayı getir¶
GET /oauth2/applications/@me
Çağıranın uygulamalarını, kimlik bilgisi türüne göre seçerek döndürür:
- Kullanıcı oturumu, Sahip olunan uygulamaları listele ile aynı diziyi döndürür.
- Bot token'ı, geçerli bot uygulaması nesnesini döndürür.
Yanıtın biçimi kimlik bilgisine bağlıdır
Gövde, kullanıcı için bir dizi, bot için tek bir nesnedir. İkisini de kabul eden bir istemci biçime göre dallanmalıdır (MUST).
Hız sınırı¶
oauth_dev:clients:list kovasında, her kullanıcı veya bot için dakikada 60 istek.
Bot uygulamasını getir¶
GET /applications/@me
Sunulan bot token'ı için geçerli bot uygulaması nesnesini döndürür. Yalnızca Authorization: Bot <token> kabul edilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | geçerli bot uygulaması nesnesi | Uygulama döndürüldü |
| 401 | hata yanıtı | Kimlik bilgisi eksik, bir bot token'ı değil, doğrulanamıyor ya da uygulaması veya sahibi artık mevcut değil (UNAUTHORIZED, mesaj invalid_token) |
Her ret aynıdır; bu yüzden çağıran, hatalı biçimli bir token'ı uygulaması silinmiş bir token'dan ayırt edemez. Bir bot bu yolu açılışta token'ını doğrulamak için kullanabilir.
Herkese açık uygulamayı getir¶
GET /oauth2/applications/{id}/public
Herkese açık uygulama nesnesini döndürür. Kimlik doğrulama gerekmez. Geçerli bir kullanıcı oturumu current_user alanını doldurur; sahip ise bot_public: true görür.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | herkese açık uygulama nesnesi | Uygulama döndürüldü |
| 400 | hata yanıtı | Kimlik bir snowflake değil |
| 404 | hata yanıtı | Uygulama mevcut değil |
Hız sınırı¶
oauth_dev:clients:list kovasında, her istemci için dakikada 60 istek.
Uygulama oluştur¶
POST /oauth2/applications
Bot hesabıyla birlikte bir uygulama oluşturur. İlk client_secret değerini ve bot.token içinde ilk bot token'ını içeren uygulama nesnesini döndürür.
Yol CAPTCHA korumalıdır: örnekte (instance) bir CAPTCHA sağlayıcısı varsa, eksik bir X-Captcha-Token 400 CAPTCHA_REQUIRED, reddedilen bir token ise 400 INVALID_CAPTCHA döndürür. Bkz. CAPTCHA işleme.
İstek başlıkları¶
| Alan | Tür | Açıklama |
|---|---|---|
| X-Captcha-Token? | string | CAPTCHA çözümü |
| X-Captcha-Type? | string | hcaptcha veya turnstile; örnekteki (instance) sağlayıcıyı kullanmak için göndermeyin |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| name | string | Uygulama adı (kırpıldıktan sonra 1-100 karakter) |
| redirect_uris? | ?array[string] | Kaydedilecek OAuth2 yönlendirme URI'leri |
| bot_public? | boolean | Botu herkesin kurup kuramayacağı (varsayılan true) |
| bot_require_code_grant? | boolean | Botu kurmanın tam bir kod akışı gerektirip gerektirmediği (varsayılan false) |
Yönlendirme URI'leri tam olarak verildiği gibi saklanır. Uygulamayı yetkilendir ve token değişimi bunları bayt bayt karşılaştırır; bu yüzden geri çağırma adresinizin kullandığı dizeyi birebir, tercihen https ile kaydedin.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | uygulama nesnesi | Uygulama ve botu oluşturuldu |
| 400 | hata yanıtı | Ad geçersiz ya da CAPTCHA eksik veya reddedildi |
| 401 | hata yanıtı | Geçerli bir kullanıcı oturumu yok |
| 400 | hata yanıtı | MAX_APPLICATIONS: çağıran zaten 25 uygulamaya sahip |
| 429 | hata yanıtı | Yol kovası isteği reddetti |
Yan etkiler¶
Botun kullanıcı adı uygulama adından türetilir: ASCII harfler, rakamlar ve _ korunur; boşluklar, - ve . ise _ olur ve sonuç 32 karaktere kesilir. Bu işlem 2 karakterden az bırakırsa veya adın boş bir ayırt edicisi yoksa, Bot artı 8 harf ve rakamdan oluşan rastgele bir ad kullanılır. Ayırt edici, o kullanıcı adı için boştaki en küçük sayıdır. Bot avatar, afiş veya biyografi olmadan başlar.
Hız sınırı¶
oauth_dev:clients:create kovasında, her hesap için saatte 10 istek.
Örnek¶
curl -X POST https://tebhos.com/api/v1/oauth2/applications \
-H "Authorization: Bearer <session token>" \
-H "Content-Type: application/json" \
-d '{"name": "Party Parrot", "redirect_uris": ["https://example.com/callback"]}'
Uygulamayı getir¶
GET /oauth2/applications/{id}
Tek bir uygulama nesnesi döndürür. Yalnızca sahibi okuyabilir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | uygulama nesnesi | Uygulama döndürüldü |
| 400 | hata yanıtı | Kimlik bir snowflake değil |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil |
| 404 | hata yanıtı | Uygulama mevcut değil |
Hız sınırı¶
oauth_dev:clients:list kovasında, her hesap için dakikada 60 istek.
Uygulamayı güncelle¶
PATCH /oauth2/applications/{id}
Bir uygulamayı günceller ve sonuçtaki uygulama nesnesini döndürür. Yalnızca sahibi güncelleyebilir. Gönderilmeyen alanlar değiştirilmeden bırakılır.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| name? | string | Uygulama adı (kırpıldıktan sonra 1-100 karakter) |
| redirect_uris? | array[string] | Yönlendirme URI'lerinin yeni ve eksiksiz kümesi. [] hepsini kaldırır; null veya alanın gönderilmemesi kümeyi değiştirmez |
| bot_public? | boolean | Botu herkesin kurup kuramayacağı |
| bot_require_code_grant? | boolean | Botu kurmanın tam bir kod akışı gerektirip gerektirmediği |
Bir yönlendirme URI'sini kaldırmak yalnızca yeni yetkilendirme isteklerini etkiler. O URI için zaten verilmiş bir kod onunla hâlâ değiştirilebilir ve mevcut token'lar etkilenmez. Ne istemci gizli anahtarı ne de bot token'ı değişir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | uygulama nesnesi | Uygulama güncellendi |
| 400 | hata yanıtı | Kimlik veya ad geçersiz |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil |
| 404 | hata yanıtı | Uygulama mevcut değil |
Hız sınırı¶
oauth_dev:clients:update kovasında, her uygulama için dakikada 30 istek; Bot profilini güncelle ile paylaşılır.
Bot profilini güncelle¶
PATCH /oauth2/applications/{id}/bot
Uygulamanın bot hesabını günceller ve bot profili nesnesini döndürür. Yalnızca sahibi güncelleyebilir.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| username? | string | Yeni kullanıcı adı (kırpıldıktan sonra 2-32 karakter) |
| discriminator? | integer | Yalnızca mevcut ayırt ediciye eşitse kabul edilir; ayırt edici seçilemez |
| avatar? | ?string | Veri URI'si (data:image/png;base64,...) olarak yeni bir avatar veya kaldırmak için null |
| banner? | ?string | Veri URI'si olarak yeni bir afiş veya kaldırmak için null |
| bio? | ?string | Biyografi (en fazla 1024 karakter) veya kaldırmak için null |
| bot_flags? | integer | İstenen bot bayrakları. Yalnızca bu iki bit okunur; diğer tüm bitler yok sayılır |
Görsel PNG, JPEG, GIF veya WebP olmalı ve kod çözüldükten sonra 1 bayt ile 8 MiB arasında olmalıdır. Gönderilmeyen bir avatar, banner veya bio saklanan değeri değiştirmez; yalnızca null onu kaldırır.
Kullanıcı adı değiştiğinde bot, yeni ad için boştaysa ayırt edicisini korur; aksi hâlde boştaki en küçük ayırt ediciyi alır. Boş ayırt edicisi olmayan bir ad 400 döndürür.
Güncelleme botun görünen adını her zaman temizler; böylece bot her zaman kullanıcı adıyla gösterilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | bot profili nesnesi | Profil güncellendi |
| 400 | hata yanıtı | Bir alan, bir görsel veya ayırt edici geçersiz ya da boş ayırt edici yok |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil |
| 404 | hata yanıtı | Uygulama veya bot hesabı mevcut değil |
Hız sınırı¶
oauth_dev:clients:update kovasında, her uygulama için dakikada 30 istek; Uygulamayı güncelle ile paylaşılır.
Bot token'ını sıfırla¶
POST /oauth2/applications/{id}/bot/reset-token
Bot token'ını yeniler ve bot token'ı sıfırlama nesnesini döndürür. Çağıran uygulamanın sahibi olmalı ve sudo kipini kanıtlamalıdır.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
JSON gövdesi¶
İsteğe bağlı sudo doğrulama alanları: password, mfa_code veya sudo_proof. Oturum bir sudo yetkisine sahipse boş bir gövde gönderin.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | bot token'ı sıfırlama nesnesi | Token yenilendi |
| 401 | hata yanıtı | Parola veya kod yanlış |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil veya sudo kipi kanıtlanmadı (SUDO_MODE_REQUIRED) |
| 404 | hata yanıtı | Uygulama veya bot hesabı mevcut değil |
Yenileme botun bağlantısını keser
Önceki token hemen çalışmayı bırakır ve botun sahip olduğu her Gateway oturumu kapatılır. Bot ancak operatörü yeni token'ı kurduktan sonra yeniden bağlanır.
Botun sunucu ve grup DM üyelikleri değişmez.
Hız sınırı¶
oauth_dev:clients:rotate_secret kovasında, her uygulama için saatte 10 istek; İstemci gizli anahtarını sıfırla ile paylaşılır.
İstemci gizli anahtarını sıfırla¶
POST /oauth2/applications/{id}/client-secret/reset
OAuth2 istemci gizli anahtarını yeniler ve yeni client_secret değerini içeren uygulama nesnesini döndürür. Çağıran uygulamanın sahibi olmalı ve sudo kipini kanıtlamalıdır.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
JSON gövdesi¶
Bot token'ını sıfırla ile aynı şekilde isteğe bağlı sudo doğrulama alanları.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | uygulama nesnesi | Gizli anahtar yenilendi |
| 401 | hata yanıtı | Parola veya kod yanlış |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil veya sudo kipi kanıtlanmadı |
| 404 | hata yanıtı | Uygulama mevcut değil |
Token değişimi, token inceleme (introspection) ve iptal işlemleri önceki gizli anahtarı hemen kabul etmeyi bırakır. Mevcut erişim ve yenileme token'ları geçerli kalır.
Hız sınırı¶
oauth_dev:clients:rotate_secret kovasında, her uygulama için saatte 10 istek; Bot token'ını sıfırla ile paylaşılır.
Uygulamayı sil¶
DELETE /oauth2/applications/{id}
Bir uygulamayı siler ve bot hesabını emekliye ayırır. 204 döndürür. Çağıran uygulamanın sahibi olmalı ve sudo kipini kanıtlamalıdır.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Uygulama kimliği |
JSON gövdesi¶
Bot token'ını sıfırla ile aynı şekilde isteğe bağlı sudo doğrulama alanları.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Uygulama silindi |
| 401 | hata yanıtı | Parola veya kod yanlış |
| 403 | hata yanıtı | Çağıran uygulamanın sahibi değil veya sudo kipi kanıtlanmadı |
| 404 | hata yanıtı | Uygulama mevcut değil |
Silme kalıcıdır
Bot her sunucudan çıkarılır, Gateway oturumları kapatılır ve profili anonimleştirilir (kullanıcı adı silinmis_bot_<id>, görünen ad Silinmiş Bot, avatar, afiş veya biyografi yok). Uygulama, istemci gizli anahtarı ve bot token'ı yok edilir.
Silmeden sonra token, token inceleme ve iptal yolları istemciyi reddeder; Geçerli OAuth2 yetkilendirmesini getir ise uygulamanın erişim token'ları için 401 döndürür. Botun mesajları, anonimleştirilmiş hesaba atfedilmiş olarak kalır.
Hız sınırı¶
oauth_dev:clients:delete kovasında, her uygulama için saatte 10 istek.