Örnek (instance)¶
Bir TEBHOS kurulumunun uç noktalarını, etkin özelliklerini, herkese açık yapılandırmasını ve sınırlarını kimlik doğrulaması gerektirmeyen tek bir istekle keşfedin.
Örnek keşfini al, API'nin giriş noktasıdır. Yalnızca TEBHOS kaynağını (origin) bilen bir istemci önce /.well-known/tebhos adresini okur; bu tek yanıt API taban URL'sini, Gateway WebSocket URL'sini, medya taban URL'sini, CAPTCHA sağlayıcısını ve hesaplar ile sunucular için geçerli sınırları açıklar.
Yol kimlik doğrulaması gerektirmez ve bir kimlik bilgisi yanıtta hiçbir şeyi değiştirmez. Authorization başlığı olmadan gönderildiğinde genel hız sınırından da muaftır.
Örnek keşif nesnesi¶
Keşif belgesi, tek bir kurulumun herkese açık tanımının tamamıdır. Burada listelenen her alan her zaman bulunur.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| api_code_version | integer | Bu kurulumun sunduğu API sözleşmesinin sürümü. Geçerli değer 1 |
| endpoints | örnek uç noktaları nesnesi | Bu kurulumun herkese açık hizmet uç noktaları |
| captcha | CAPTCHA yapılandırması nesnesi | Herkese açık CAPTCHA yapılandırması |
| features | örnek özellikleri nesnesi | Kurulum özellik anahtarları |
| gif | GIF sağlayıcısı nesnesi | GIF sağlayıcısı ve atıf gereksinimi |
| sso | SSO durumu nesnesi | Herkese açık tek oturum açma (SSO) durumu |
| registration | kayıt politikası nesnesi | Herkese açık kayıt politikası |
| community | topluluk politikası nesnesi | Tek topluluk ve DM politikası |
| services | hizmet kullanılabilirliği nesnesi | İsteğe bağlı entegrasyonların kullanılabilirliği |
| limits | sınır yapılandırması nesnesi | Sıralı sınır kuralları ve kurulumun tanımladığı özellikler (trait) |
| push | anlık bildirim yapılandırması nesnesi | Herkese açık Web Push kimliği |
| app_public | herkese açık uygulama yapılandırması nesnesi | Marka, kurulum, yasal ve kayıt formu yapılandırması |
| version | string | API sunucusunun derleme sürümü, örneğin 0.1.0 |
| gateway | ?string | Yapılandırılmış herkese açık Gateway URL'si; yapılandırılmamışsa null. endpoints.gateway tercih edilmelidir |
| cdn | ?string | Yüklenen dosyaların yapılandırılmış herkese açık taban URL'si; yapılandırılmamışsa null |
| experiments | object | Her zaman boş bir nesne; deneyler Deneyler üzerinden sunulur |
Son dört alan, eski tüketiciler için korunan kısa bir eski özet niteliğindedir. Yeni istemciler gateway yerine endpoints okur.
Örnek¶
{
"api_code_version": 1,
"version": "0.1.0",
"gateway": "wss://tebhos.com/ws",
"cdn": "https://cdn.tebhos.com",
"experiments": {},
"endpoints": {
"api": "https://tebhos.com/api",
"api_client": "https://tebhos.com/api",
"api_public": "https://tebhos.com/api",
"gateway": "wss://tebhos.com/ws",
"media": "https://tebhos.com/api/v1",
"static_cdn": "https://tebhos.com",
"marketing": "https://tebhos.com",
"admin": "https://admin.tebhos.com",
"invite": "https://tebhos.com",
"gift": "https://tebhos.com",
"webapp": "https://tebhos.com"
},
"captcha": {
"provider": "hcaptcha",
"hcaptcha_site_key": "00000000-0000-0000-0000-000000000000",
"turnstile_site_key": null
},
"features": {
"voice_enabled": true,
"stripe_enabled": true,
"payment_provider": "polar",
"self_hosted": true,
"presigned_attachment_uploads": true,
"emails_enabled": true,
"sms_enabled": false
},
"gif": {"provider": "klipy", "display_name": "KLIPY", "attribution_required": true},
"sso": {"enabled": false, "enforced": false, "display_name": null, "redirect_uri": "https://tebhos.com/auth/sso/callback"},
"registration": {"mode": "open", "admin_registration_urls_enabled": true},
"community": {"single_community": false, "single_community_guild_id": null, "direct_messages_disabled": false},
"services": {"gif_enabled": true, "youtube_enabled": false, "bluesky_enabled": false},
"limits": {"version": 1, "traitDefinitions": ["premium"], "rules": ["..."]},
"push": {"public_vapid_key": "BM4KrfS2..."},
"app_public": {
"branding": {"product_name": "TEBHOS", "icon_url": null, "symbol_url": null, "logo_url": null, "wordmark_url": null, "favicon_url": null, "theme_color": null},
"setup": {"configured": true, "admin_url": "https://admin.tebhos.com"},
"legal": {"terms_url": null, "privacy_url": null},
"registration": {"collect_date_of_birth": true}
}
}
Yukarıdaki değerler örnek amaçlıdır. Her zaman kurulumun gerçekte döndürdüğü değerleri kullanın.
Örnek uç noktaları nesnesi¶
Her değer mutlak bir URL'dir. Birkaç uç nokta aynı kaynağı paylaşıp yalnızca yolda farklılaşabilir.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| api | string | API kökü. REST taban URL'sini elde etmek için sonuna /v1 ekleyin |
| api_client | string | api ile aynı değer; web uygulamasının kullandığı taban |
| api_public | string | api ile aynı değer; bir botun, kütüphanenin veya diğer üçüncü taraf istemcilerin kullandığı taban |
| gateway | string | ws veya wss şemalı Gateway WebSocket URL'si |
| media | string | Medya yollarının (avatarlar, simgeler, afişler, /files/...) tabanı. Bu, API v1 tabanının kendisidir; bu yüzden bir avatar URL'si {media}/avatars/{user_id}/{hash}.{ext} biçimindedir |
| static_cdn | string | Yerleşik emoji görselleri gibi statik varlıkların tabanı |
| marketing | string | Tanıtım sitesinin taban URL'si |
| admin | string | Yönetim panelinin taban URL'si |
| invite | string | Davet bağlantılarının üzerine kurulduğu taban URL |
| gift | string | Hediye bağlantılarının üzerine kurulduğu taban URL |
| webapp | string | Web uygulamasının taban URL'si |
Kurulum ayrı alan adları yapılandırmadıkça invite ve gift varsayılan olarak web uygulaması URL'sidir.
Yayımlanan uç noktayı tam olarak yayımlandığı gibi kullanın
İstemci, yayımlanan bir http değerini https'e yükseltMEMELİ, bir hatadan sonra https'i düşürMEMELİ, bir bağlantı noktasını atMAMALI veya bir ana makine adı tahmin etMEMELİDİR. Yerel geliştirme kurulumu, açık bağlantı noktalarıyla düz http ve ws değerleri yayımlar.
CAPTCHA yapılandırma nesnesi¶
Kurulumun hangi CAPTCHA sağlayıcısını kullandığı ve istemcinin sınamayı çizmek için ihtiyaç duyduğu site anahtarı.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| provider | string | Etkin CAPTCHA sağlayıcısı |
| hcaptcha_site_key | ?string | Yapılandırılmış hCaptcha site anahtarı veya null |
| turnstile_site_key | ?string | Yapılandırılmış Turnstile site anahtarı veya null |
hCaptcha gizli anahtarı ve site anahtarının ikisi de yapılandırılmışsa provider değeri hcaptcha, değilse iki Turnstile anahtarı da yapılandırılmışsa turnstile, aksi hâlde none olur. Anahtar yapılandırıldığı her durumda yayımlandığından, provider değeri none iken bir site anahtarı bulunabilir; dallanmayı anahtarın varlığına göre değil, provider değerine göre yapın.
CAPTCHA sağlayıcıları¶
| Değer | Açıklama |
|---|---|
| none | CAPTCHA gerekmez |
| hcaptcha | CAPTCHA korumalı işlemler hCaptcha sınamalarıyla korunur |
| turnstile | CAPTCHA korumalı işlemler Cloudflare Turnstile sınamalarıyla korunur |
X-Captcha-Token ve X-Captcha-Type istek başlıkları dahil sınama el sıkışması CAPTCHA işleme sayfasında anlatılmıştır.
Örnek özellikleri nesnesi¶
İstemcinin bir özelliği sunmadan önce okuduğu, kurulum geneli anahtarlar.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| voice_enabled | boolean | Ses ve görüntünün (LiveKit) yapılandırılıp yapılandırılmadığı |
| stripe_enabled | boolean | Ücretli Premium ödeme akışının yapılandırılıp yapılandırılmadığı. Ad istemci uyumluluğu için korunur; ödeme sağlayıcısı her zaman Polar'dır |
| payment_provider | string | Ödeme sağlayıcısı, her zaman polar. Bkz. Faturalandırma |
| self_hosted | boolean | Her zaman true; her TEBHOS kurulumu tek kiracılı bir kurulumdur |
| presigned_attachment_uploads | boolean | Yüklemelerin önceden imzalanmış nesne depolama URL'leri kullanıp kullanmadığı (bkz. Ek yüklemeleri) |
| emails_enabled | boolean | Bir e-posta sağlayıcısının yapılandırılıp yapılandırılmadığı |
| sms_enabled | boolean | SMS tesliminin kullanılabilir olup olmadığı. False iken telefon doğrulaması ve SMS ikinci faktörleri kullanılamaz |
GIF sağlayıcı nesnesi¶
GIF sağlayıcısı ve istemcinin sağlayıcı atfını göstermesi gerekip gerekmediği.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| provider | string | Sağlayıcının makine adı, her zaman klipy |
| display_name | string | Sağlayıcının insan tarafından okunabilir adı, her zaman KLIPY |
| attribution_required | boolean | Her zaman true: GIF sonuçlarını gösteren istemci, sağlayıcı atfını bunların yanında gösterir |
İstemci, GIF seçiciyi sunup sunmayacağına karar vermek için services.gif_enabled değerini okur.
Kayıt politikası nesnesi¶
Bu kurulumda kimin hesap açabileceği.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| mode | string | Kayıt modu |
| admin_registration_urls_enabled | boolean | Yönetici tarafından verilen kayıt URL'lerinin yönetim panelinde etkin olup olmadığı |
Kayıt modları¶
| Değer | Açıklama |
|---|---|
| open | Herkes kayıt olabilir |
| approval | Yeni hesaplar yönetici onayını bekler |
| closed | Herkese açık kayıt kapalıdır |
Değer, yönetim panelinin sakladığı ayarı yansıtır. Kayıt yolunun kendisinin neleri denetlediği için bkz. Hesap oluştur.
Topluluk politikası nesnesi¶
Kurulumun tek bir topluluk olarak çalışıp çalışmadığı ve DM'lerin kullanılabilir olup olmadığı.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| single_community | boolean | Kurulumun tek bir topluluk olarak çalışıp çalışmadığı |
| single_community_guild_id | ?snowflake | Topluluk sunucusunun kimliği; yalnızca single_community true iken yayımlanır, aksi hâlde null |
| direct_messages_disabled | boolean | DM'lerin kurulum genelinde devre dışı olup olmadığı |
Hizmet kullanılabilirliği nesnesi¶
Her isteğe bağlı entegrasyonun kullanılabilir olup olmadığı.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| gif_enabled | boolean | GIF seçicinin kullanılabilir olup olmadığı. Bir GIF sağlayıcı anahtarı yapılandırıldığında varsayılan olarak true'dur ve bir yönetici tarafından geçersiz kılınabilir |
| youtube_enabled | boolean | YouTube bağlantı zenginleştirmesinin kullanılabilir olup olmadığı. Bir yönetici etkinleştirmedikçe false |
| bluesky_enabled | boolean | Bluesky bağlantılarının kullanılabilir olup olmadığı. Bir yönetici etkinleştirmedikçe false; bkz. Bağlantılar |
Anlık bildirim yapılandırma nesnesi¶
Kurulumun herkese açık Web Push kimliği.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| public_vapid_key | ?string | Bir tarayıcıyı anlık bildirimlere abone ederken kullanılan Web Push VAPID açık anahtarı; Web Push yapılandırılmamışsa null |
Sınır yapılandırma nesnesi¶
İstemcinin bir hesaba veya sunucuya uygulanan sınırları hesaplamak için değerlendirdiği sıralı kurallar.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| version | integer | Aktarım biçimi sürümü. Saklanan yapılandırma başka bir değer ayarlamadıkça 1 |
| traitDefinitions | array[string] | Kurulumun tanımladığı özellik (trait) adları. Hazır yapılandırma premium tanımlar |
| rules | array[sınır kuralı nesnesi] | Sırayla değerlendirilecek kurallar |
Hazır yapılandırmada üç kural vardır: default (filtre yok, her sınır anahtarını ayarlar), premium (premium özelliğine göre filtrelenir) ve very_large_guild (VERY_LARGE_GUILD sunucu özelliğine göre filtrelenir).
İstemci default kuralından başlar, ardından filtrelerinin tümü eşleşen her kuralı uygular: adını verdiği her özellik hesabın özelliklerinden biridir ve adını verdiği her sunucu özelliği sunucunun özelliklerinden biridir. Eşleşen bir kuralın değerleri, ayarladığı anahtarlar için geçerli değerlerin yerini alır.
İşlem kendi sınırını uygular
Belge, istemcinin bir işlemi denemeden önce doğru sınırları göstermesini sağlar. Bir sınırı aşan istek yine de işlemin kendi belgelenmiş hatasıyla başarısız olur.
Sınır kuralı nesnesi¶
Sınır yapılandırmasının tek bir kuralı.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | Kararlı kural tanımlayıcısı |
| filters? | sınır filtreleri nesnesi | Kuralı seçen özellikler ve sunucu özellikleri; kural her zaman eşleşiyorsa yoktur |
| limits | map[string, integer] | Sınır anahtarına göre anahtarlanmış değerler |
Yönetim panelinde düzenlenmiş bir kural fazladan kayıt tutma üyeleri (örneğin modifiedFields) taşıyabilir. İstemci tanımadığı üyeleri yok saymak ZORUNDADIR.
Örnek¶
{
"id": "premium",
"filters": {"traits": ["premium"]},
"limits": {"feature_higher_video_quality": 1}
}
Sınır filtreleri nesnesi¶
Bir sınır kuralının gerektirdiği özellikler ve sunucu özellikleri.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| traits? | array[string] | Tümünün bulunması gereken özellik adları |
| guildFeatures? | array[string] | Tümünün bulunması gereken sunucu özelliği adları |
Sınır anahtarları¶
Adı feature_ ile başlayan anahtar bir özellik kapısıdır: özellik kullanılamıyorsa 0, kullanılabiliyorsa 1. Diğer her anahtar, açıklamasında belirtilen birimde bir üst sınırdır. Varsayılanlar hazır default kuralının değerleridir; bir kurulum bunları değiştirebilir.
| Anahtar | Varsayılan | Açıklama |
|---|---|---|
| avatar_max_size | 10485760 | Bayt cinsinden en büyük avatar yükleme boyutu |
| emoji_max_size | 524288 | Bayt cinsinden en büyük emoji yükleme boyutu |
| sticker_max_size | 524288 | Bayt cinsinden en büyük çıkartma yükleme boyutu |
| feature_animated_avatar | 1 | Animasyonlu avatar yüklemeleri |
| feature_animated_banner | 1 | Animasyonlu afiş yüklemeleri |
| feature_custom_discriminator | 1 | Özel ayırıcı (discriminator) seçimi |
| feature_custom_notification_sounds | 1 | Özel bildirim sesleri |
| feature_early_access | 1 | Erken erişim özellikleri |
| feature_global_expressions | 1 | İfadeleri tüm sunucularda kullanma |
| feature_higher_video_quality | 0 | Daha yüksek yayın kalitesi (premium özelliği için 1) |
| feature_per_guild_profiles | 1 | Her sunucu için farklı profil |
| feature_voice_entrance_sounds | 1 | Sese katılırken ses çalma |
| max_attachment_file_size | 524288000 | Bayt cinsinden her ekin en büyük boyutu |
| max_attachments_per_message | 10 | Mesaj başına en fazla ek |
| max_bio_length | 320 | Biyografide en fazla karakter |
| max_bookmarks | 300 | En fazla kayıtlı mesaj |
| max_channels_per_category | 50 | Kategori başına en fazla kanal |
| max_created_packs | 50 | Bir hesabın oluşturabileceği en fazla ifade paketi |
| max_custom_backgrounds | 15 | En fazla özel profil arka planı |
| max_embeds_per_message | 10 | Mesaj başına en fazla gömme (embed) |
| max_favorite_meme_tags | 10 | Kayıtlı mem başına en fazla etiket |
| max_favorite_memes | 500 | En fazla kayıtlı mem |
| max_group_dm_recipients | 50 | Bir grup DM'nin en fazla üyesi |
| max_group_dms_per_user | 150 | Hesap başına en fazla grup DM |
| max_guild_channels | 500 | Sunucu başına en fazla kanal |
| max_guild_emojis | 500 | Sunucu başına en fazla emoji |
| max_guild_emojis_animated | 500 | max_guild_emojis için uyumluluk takma adı |
| max_guild_emojis_animated_more | 500 | max_guild_emojis için uyumluluk takma adı |
| max_guild_emojis_static | 500 | max_guild_emojis için uyumluluk takma adı |
| max_guild_emojis_static_more | 500 | max_guild_emojis için uyumluluk takma adı |
| max_guild_invites | 1000 | Sunucu başına en fazla etkin davet |
| max_guild_members | 1000000 | Sunucu başına en fazla üye (VERY_LARGE_GUILD özelliğiyle 10000000) |
| max_guild_roles | 250 | Sunucu başına en fazla rol |
| max_guild_stickers | 500 | Sunucu başına en fazla çıkartma |
| max_guild_stickers_more | 500 | max_guild_stickers için uyumluluk takma adı |
| max_guilds | 200 | Bir hesabın katılabileceği en fazla sunucu |
| max_installed_packs | 50 | Bir hesabın kurabileceği en fazla ifade paketi |
| max_message_length | 4000 | Mesaj başına en fazla karakter |
| max_pack_expressions | 200 | Paket başına en fazla ifade |
| max_private_channels_per_user | 250 | Hesap başına en fazla DM kanalı |
| max_reactions_per_message | 30 | Mesaj başına en fazla farklı tepki |
| max_relationships | 1000 | En fazla arkadaş ve engelleme |
| max_users_per_message_reaction | 1000000 | Tek bir tepkideki en fazla kullanıcı |
| max_voice_message_duration | 1200 | Saniye cinsinden en uzun sesli mesaj süresi |
| max_webhooks_per_channel | 15 | Kanal başına en fazla webhook |
| max_webhooks_per_guild | 1000 | Sunucu başına en fazla webhook |
Herkese açık uygulama yapılandırma nesnesi¶
İstemcinin herhangi biri oturum açmadan önce okuduğu marka, kurulum durumu, yasal bağlantılar ve kayıt formu ayarları. Bu değerleri yönetim paneli düzenler.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| branding | herkese açık marka nesnesi | Örneğin kimliği |
| setup | herkese açık kurulum durumu nesnesi | İlk yapılandırma durumu |
| legal | herkese açık yasal yapılandırma nesnesi | Yasal belge URL'leri |
| registration | herkese açık kayıt alanları nesnesi | Kayıt formu ayarları |
Herkese açık marka nesnesi¶
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| product_name | string | İstemcinin gösterdiği örnek adı; değiştirilmedikçe TEBHOS |
| icon_url | ?string | Tam uygulama simgesi URL'si veya null |
| symbol_url | ?string | Kompakt uygulama sembolü URL'si veya null |
| logo_url | ?string | Uygulama logosu URL'si veya null |
| wordmark_url | ?string | Uygulama yazı logosu URL'si veya null |
| favicon_url | ?string | Tarayıcı favicon URL'si veya null |
| theme_color | ?string | Tarayıcı tema rengi veya null |
Herkese açık kurulum durumu nesnesi¶
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| configured | boolean | İlk kurulum yapılandırmasının tamamlanıp tamamlanmadığı (varsayılan true) |
| admin_url | ?string | Yönetim paneli URL'si; yapılandırılmamışsa null |
Herkese açık yasal yapılandırma nesnesi¶
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| terms_url | ?string | Hizmet şartları URL'si veya null |
| privacy_url | ?string | Gizlilik politikası URL'si veya null |
Herkese açık kayıt alanları nesnesi¶
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| collect_date_of_birth | boolean | Kayıt formunun doğum tarihi toplayıp toplamadığı (varsayılan true). Kayıt her zaman birth_date gerektirir |
Örnek keşfini al¶
GET /.well-known/tebhos
Örnek keşif nesnesini döndürür. Kimlik doğrulama gerekmez. Yanıtta Cache-Control: no-cache bulunur; bu yüzden istemci her başlangıçta yanıtı yeniden doğrular. Web uygulaması yeni bir kurulumu fark etmek için version değerini kullanır.
Yol v1 tabanının altındadır: https://tebhos.com/api/v1/.well-known/tebhos.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | örnek keşif nesnesi | Keşif belgesi döndürüldü |
| 429 | hata yanıtı | Yol kovası isteği reddetti |
Hız sınırı¶
instance:info kovasında, her istemci için dakikada 60 istek. İstemci Authorization başlığıyla, başlık göndermiyorsa IP adresiyle tanımlanır.
Örnek¶
TEBHOS'ta desteklenmez
TEBHOS istemci konum belirleme yolu ve OpenAPI belgesi sunmaz. Bir kurulumun makine tarafından okunabilir tanımı olarak yukarıdaki keşif belgesini kullanın.