Bağlantılar¶
Bağlantı, bir TEBHOS hesabını TEBHOS dışındaki bir şeye bağlar: kullanıcının denetiminde olduğunu kanıtladığı bir alan adına veya desteklenen harici bir hizmetteki bir hesaba. Görüntüleyenin görmesine izin verilen doğrulanmış bağlantılar, kullanıcının profilinde connected_accounts içinde görünür (bkz. Kullanıcılar).
Her /users/@me/connections yolu bir kullanıcı oturum token'ı gerektirir; yalnızca Bağlantıları listele ayrıca connections kapsamlı bir OAuth2 erişim token'ını da kabul eder. Geçerli bir bot token'ı 403 ACCESS_DENIED ile reddedilir (geçersiz olanı 401 ile); diğer bağlantı yollarındaki geçerli bir erişim token'ı da öyle. Bağlantı kimlikleri snowflake değil, dizedir.
Hesap bağlantı sınırı¶
Bir hesap tüm türlerde toplam en fazla 20 bağlantıya sahip olabilir. Bir tane daha oluşturmak 400 BAD_REQUEST döndürür.
Bağlantı nesnesi¶
Bir bağlantı, türü ve id değerinden oluşan çiftle tanımlanır. İkisi de bağlantı başına her yolun adresinde yer alır.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | Bağlantı kimliği, kendi türü içinde benzersizdir. domain için 64 küçük harfli onaltılık karakterdir ve hesap aynı alan adını yeniden oluşturursa değişmez. Sağlayıcı türü için o hizmetteki hesap kimliğidir |
| type | string | Bağlantı türü |
| name | string | Bağlantı için gösterilen etiket: alan adı veya hesabın harici hizmetteki görünen adı |
| verified | boolean | En son kanıtın başarılı olup olmadığı |
| visibility_flags | integer | Bağlantı görünürlük bayrakları |
| sort_order | integer | Hesabın bağlantı listesindeki konum. Yeni bir bağlantı, kendisinden önce var olan bağlantı sayısını alır |
Örnek¶
{
"id": "12345678",
"type": "github",
"name": "partyparrot",
"verified": true,
"visibility_flags": 1,
"sort_order": 0
}
Bağlantı türleri¶
| Değer | Ad | Nasıl oluşturulur |
|---|---|---|
| domain | Alan adı | Bağlantı başlat, ardından Doğrula ve bağlantı oluştur |
| github | GitHub | Sağlayıcı yetkilendirmesini başlat |
| spotify | Spotify | Sağlayıcı yetkilendirmesini başlat |
| steam | Steam | Sağlayıcı yetkilendirmesini başlat |
| twitch | Twitch | Sağlayıcı yetkilendirmesini başlat |
| Sağlayıcı yetkilendirmesini başlat | ||
| X | Sağlayıcı yetkilendirmesini başlat | |
| riot | Riot Games | Sağlayıcı yetkilendirmesini başlat |
Bir sağlayıcı türü yalnız örnekte (instance) onun için kimlik bilgileri varsa kullanılabilir. Hangilerinin etkin olduğunu Bağlantı sağlayıcılarını listele bildirir. Steam OpenID kullanır ve her zaman etkindir.
TEBHOS'ta desteklenmez
Bluesky (bsky) bağlantıları kullanılamaz. Bluesky yolları uyumluluk için vardır ve her zaman Bluesky'nin etkin olmadığını bildirir; bkz. Bluesky yolları.
Bağlantı görünürlük bayrakları¶
Bayraklar, sahibin profilini görüntüleyenlerden hangilerinin bir bağlantıyı göreceğine karar verir.
| Değer | Ad | Açıklama |
|---|---|---|
| 1 << 0 | EVERYONE | Profili görüntüleyebilen herkes bağlantıyı görür |
| 1 << 1 | FRIENDS | Arkadaşlar bağlantıyı görür |
| 1 << 2 | MUTUAL_GUILDS | Sahibin de bulunduğu bir sunucunun üyeleri bağlantıyı görür |
İstek başka bir değer belirtmedikçe yeni bir bağlantı EVERYONE (1) alır. 0 değeri bağlantıyı, sahibinin kendi profiline bakışı dahil herkesten gizler. Doğrulanmamış bir bağlantı, bayrakları ne olursa olsun profilde asla görünmez. Bağlantıları listele bayrakları yok sayar ve hesabın sahip olduğu her bağlantıyı döndürür.
Bağlantı doğrulama nesnesi¶
Bağlantı başlat tarafından döndürülür. Doğrula ve bağlantı oluştur başarılı olana kadar bağlantı oluşmaz.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| token | string | Kanıt olarak alan adında yayımlanacak değer, 64 küçük harfli onaltılık karakter |
| type | string | Her zaman domain |
| id | string | Alan adı, gönderildiği biçimde |
| instructions | string | Token'ın nasıl yayımlanacağına dair insanlar için okunabilir talimatlar |
| initiation_token | string | Doğrula ve bağlantı oluştur tarafından kabul edilen imzalı token. Verilişinden 30 dakika sonra süresi dolar ve yalnız onu isteyen hesap için çalışır |
Kanıt token'ı yalnız hesaba ve küçük harfe çevrilmiş alan adına bağlıdır; bu yüzden aynı alan adı için Bağlantı başlat yinelendiğinde aynı token döner ve yayımlanan bir kayıt denemeler boyunca yerinde kalabilir.
Başlatma token'ını koruyun
initiation_token günlüğe yazılmamalı veya başkasına iletilmemelidir. Yalnız token yayımlanmak içindir.
Alan adı sahipliği kanıtı¶
Token iki yoldan biriyle yayımlanır:
- DNS:
_tebhos.<domain>adresinde değeri tam olaraktebhos-verification=<token>olan bir TXT kaydı. TEBHOS kaydı DNS-over-HTTPS üzerinden çözümler; bu yüzden doğrulamadan önce DNS değişikliklerinin yayılması için zaman tanınmalıdır. - HTTPS: yalın token
https://<domain>/.well-known/tebhos-verificationadresinden sunulur. Yanıtın durumu 2xx olmalı, gövdesi en fazla 4096 bayt olmalı ve boşluklar kırpıldıktan sonra token'a eşit olmalıdır. Yönlendirmeler izlenmez ve istek 5 saniye sonra zaman aşımına uğrar.
Önek yalnız DNS kaydında bulunur
DNS değeri tebhos-verification=<token> olur; HTTPS belgesi yalnız token'ı içerir.
Alan adı bir . içermeli ve yalnız ASCII harfler, rakamlar, . ve - karakterlerinden oluşmalıdır. Diğer her değer kanıtta başarısız olur.
Bağlantıları listele¶
GET /users/@me/connections
Hesabın sahip olduğu her bağlantı nesnesinden oluşan, sort_order değerine göre sıralanmış bir dizi döndürür. Bağlantısı olmayan bir hesap boş dizi alır.
connections kapsamlı bir OAuth2 erişim token'ını da kabul eder; bu kapsamı olmayan bir token 403 MISSING_OAUTH_SCOPE alır.
Hız sınırı¶
connection:list kovasında her hesap için dakikada 60 istek.
Bağlantı sağlayıcılarını listele¶
GET /users/@me/connections/providers
Sağlayıcı bağlantı türlerini ve her birinin bu örnekte etkin olup olmadığını döndürür.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | array[object] | Her öğe {type, name, enabled} biçimindedir, örneğin {"type": "github", "name": "GitHub", "enabled": true} |
Bağlantı başlat¶
POST /users/@me/connections
Alan adı sahipliği doğrulamasını başlatır ve bir bağlantı doğrulama nesnesi döndürür. Henüz bağlantı oluşturulmaz.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| type | string | domain olmalıdır |
| identifier | string | Sahipliği kanıtlanacak alan adı |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 201 | bağlantı doğrulama nesnesi | Doğrulama başlatıldı |
| 400 | hata yanıtı | Tür domain değil (bsky dahil) veya hesabın zaten 20 bağlantısı var |
| 409 | hata yanıtı | Hesabın bu alan adı için zaten bir bağlantısı var |
Hız sınırı¶
connection:create kovasında her hesap için dakikada 5 istek.
Doğrula ve bağlantı oluştur¶
POST /users/@me/connections/verify
Bir başlatma token'ı için alan adı sahipliği kanıtını denetler; başarılı olursa bağlantı nesnesini oluşturur ve 201 durumuyla döndürür.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| initiation_token | string | Bağlantı başlat yanıtındaki token |
| visibility_flags? | integer | Bağlantı görünürlük bayrakları (varsayılan EVERYONE) |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 201 | bağlantı nesnesi | Kanıt başarılı oldu ve bağlantı oluşturuldu |
| 400 | hata yanıtı | Başlatma token'ı geçersiz, süresi dolmuş veya başka bir hesaba ait; hesabın zaten 20 bağlantısı var; ya da kanıt başarısız oldu |
| 409 | hata yanıtı | Alan adı zaten bağlı |
Başlatma token'ı süresi dolana kadar kullanılabilir kalır; bu yüzden kanıtı henüz görünür olmayan bir istemci aynı token ile yeniden deneyebilir.
Yan etkiler¶
Başarı durumunda eksiksiz, sıralanmış liste hesabın oturumlarına {"connections": [...]} yüküyle bir USER_CONNECTIONS_UPDATE Gateway olayı olarak gönderilir.
Hız sınırı¶
connection:verify_and_create kovasında her hesap için dakikada 5 istek.
Bir bağlantıyı yeniden doğrula¶
POST /users/@me/connections/{type}/{connection_id}/verify
Mevcut bir domain bağlantısının sahiplik kanıtını yeniden çalıştırır. Başarılı olursa güncellenmiş bağlantı nesnesini döndürür.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| type | string | Bağlantı türü; domain olmalıdır |
| connection_id | string | Bağlantı kimliği |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | bağlantı nesnesi | Kanıt başarılı oldu |
| 400 | hata yanıtı | Bağlantı bir alan adı bağlantısı değil veya kanıt başarısız oldu |
| 404 | hata yanıtı | Hesapta böyle bir bağlantı yok |
Başarısız bir kanıt, daha önce doğrulanmış bir bağlantıyı doğrulanmamış olarak işaretler ve bu da onu profilden kaldırır. Bir hesabın doğrulanmış alan adı bağlantılarını yeniden denetleyen bir arka plan görevi de aynısını yapabilir.
Hız sınırı¶
connection:verify kovasında her hesap için dakikada 5 istek.
Bağlantıyı güncelle¶
PATCH /users/@me/connections/{type}/{connection_id}
Bir bağlantının görünürlüğünü veya konumunu günceller. Atlanan alan değişmeden kalır. Güncellenmiş bağlantı nesnesini döndürür.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| type | string | Bağlantı türü |
| connection_id | string | Bağlantı kimliği |
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| visibility_flags? | integer | Bağlantı görünürlük bayrakları |
| sort_order? | integer | Yeni konum |
İki yol parametresi de aynı bağlantıyı belirtmelidir: yanlış tür altında doğru bir kimlik 404 döndürür. İki bağlantı aynı sort_order değerini paylaşabilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | bağlantı nesnesi | Bağlantı güncellendi |
| 404 | hata yanıtı | Hesapta böyle bir bağlantı yok |
Yan etkiler¶
Eksiksiz listeyi USER_CONNECTIONS_UPDATE içinde gönderir.
Hız sınırı¶
connection:update kovasında her hesap için dakikada 30 istek; Bağlantıları yeniden sırala ile paylaşılır.
Bağlantıyı sil¶
DELETE /users/@me/connections/{type}/{connection_id}
Bir bağlantıyı kaldırır. 204 döndürür.
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| type | string | Bağlantı türü |
| connection_id | string | Bağlantı kimliği |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Bağlantı silindi |
| 404 | hata yanıtı | Hesapta böyle bir bağlantı yok |
Silme işlemi anında gerçekleşir ve geri alınamaz. Diğer bağlantılar sort_order değerlerini korur. Bir sağlayıcı bağlantısını silmek harici hizmette hiçbir şeyi iptal etmez.
Yan etkiler¶
Kalan listeyi USER_CONNECTIONS_UPDATE içinde gönderir.
Hız sınırı¶
connection:delete kovasında her hesap için dakikada 10 istek.
Bağlantıları yeniden sırala¶
PATCH /users/@me/connections/reorder
Listelenen bağlantıların görüntülenme sırasını dizideki konumlarına göre ayarlar. 204 döndürür.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| connection_ids | array[string] | Yeni sıralarıyla bağlantı kimlikleri |
Listelenen her bağlantı, sıfırdan başlayan dizi indeksini sort_order olarak alır. Bilinmeyen kimlikler yok sayılır; listelenmeyen bağlantılar mevcut değerlerini korur, bu yüzden kısmi bir liste iki bağlantının aynı konumu paylaşmasına yol açabilir.
Yan etkiler¶
Hiçbir şey değişmemiş olsa bile eksiksiz listeyi USER_CONNECTIONS_UPDATE içinde gönderir.
Hız sınırı¶
connection:update kovasında her hesap için dakikada 30 istek; Bağlantıyı güncelle ile paylaşılır.
Sağlayıcı yetkilendirmesini başlat¶
POST /users/@me/connections/{provider}/authorize
Harici bir hesabı bağlamayı başlatır. {"authorize_url": string} döndürür; bu URL bir tarayıcı penceresinde açılır (TEBHOS bir açılır pencere açar).
Yol parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| provider | string | Bir sağlayıcı bağlantı türü: github, spotify, steam, twitch, reddit, twitter veya riot |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | {"authorize_url": string} |
Kullanıcı authorize_url adresine gönderilir |
| 400 | hata yanıtı | Sağlayıcı bilinmiyor veya bu örnekte etkin değil |
Akışı tamamlama¶
Harici hizmet tarayıcıyı API üzerindeki GET /connections/{provider}/callback adresine geri döndürür. İstemciler bu yolu kendileri çağırmaz. Yol, sonucu bildiren ve kısa bir süre sonra pencereyi kapatan küçük bir HTML sayfasıyla yanıt verir.
Yetkilendirme durumu on dakika geçerlidir ve bir kez tamamlanabilir. Spotify ve X, PKCE kullanır.
Başarı durumunda TEBHOS, id değeri harici hizmetteki hesap kimliği, name değeri o hesabın görünen adı olan, EVERYONE görünürlüğünde doğrulanmış bir bağlantı oluşturur ve USER_CONNECTIONS_UPDATE gönderir. Aynı harici hesabı yeniden bağlamak, kopya oluşturmak yerine adını ve doğrulama zamanını yeniler. Kullanıcı iptal ettiğinde, durumun süresi dolduğunda, değişim başarısız olduğunda veya hesabın zaten 20 bağlantısı olduğunda sayfa bir hata bildirir.
Bluesky yolları¶
Bu yollar, Bluesky bağlantıları için geliştirilmiş istemcilerin açık bir yanıt alması için vardır. Bluesky TEBHOS'ta etkin değildir.
| Yol | Yanıt |
|---|---|
POST /users/@me/connections/bluesky/authorize |
400 BAD_REQUEST, Bluesky etkin değil. Kullanıcı oturumu gerektirir; connection:create kovasında dakikada 5 istek |
GET /connections/bluesky/client-metadata.json |
{"error": "Bluesky OAuth is not enabled"} ile 404 |
GET /connections/bluesky/jwks.json |
{"error": "Bluesky OAuth is not enabled"} ile 404 |
GET /connections/bluesky/callback |
https://tebhos.com/connection-callback?status=error&reason=not_enabled adresine 302 |