Ana içeriğe geç

Geçerli kullanıcı

Geçerli kullanıcı, kimlik bilgisini sunan hesaptır ve bir kullanıcı nesnesiyle temsil edilir. Buradaki yollar bu hesabı okur, değiştirir ve yaşam döngüsü işlemlerini yürütür.

Bu sayfadaki Geçerli kullanıcıyı getir dışındaki her yol bir kullanıcı oturumu (Authorization: Bearer <token>) gerektirir. Geçerli bir bot token'ı veya geçerli bir OAuth2 erişim token'ı 403 ACCESS_DENIED ile reddedilir.

Yol Amaç
GET /users/@me Geçerli kullanıcıyı getir
PATCH /users/@me Geçerli kullanıcıyı değiştir
POST /users/@me/avatar/upload-url, POST /users/@me/avatar/confirm Avatarı değiştir
POST /users/@me/banner/upload-url, POST /users/@me/banner/confirm Afişi değiştir
DELETE /users/@me/authorized-ips Yetkili IP'leri unut
POST /auth/account/disable Geçerli hesabı devre dışı bırak
POST /auth/account/delete Geçerli hesabın silinmesini zamanla
POST /users/@me/terms-acceptance Güncel politikaları kabul et

Sudo doğrulaması

Güvenlik açısından hassas değişiklikler (kullanıcı adı, yaşam döngüsü işlemleri, yetkili IP'leri unutma ve birkaç MFA yolu) istek gövdesinde kimlik kanıtı gerektirir. Her yerde aynı üç isteğe bağlı alan kabul edilir:

Alan Tür Açıklama
password? string Mevcut parola. Yalnızca hesapta TOTP doğrulayıcısı ve kayıtlı geçiş anahtarı (passkey) yoksa kabul edilir
mfa_code? string Geçerli bir TOTP kodu veya kullanılmamış bir yedek kod. Boşluklar yok sayılır
sudo_proof? string Başarılı bir geçiş anahtarı doğrulamasından sonra verilen tek kullanımlık kanıt. Bkz. MFA

sudo_proof, mfa_code, password sırasındaki ilk boş olmayan alan denetlenir.

Hesap durumu Kabul edilen kanıt
TOTP doğrulayıcısı ve geçiş anahtarı yok password, mfa_code veya sudo_proof
Bir TOTP doğrulayıcısı veya en az bir geçiş anahtarı var Yalnızca mfa_code veya sudo_proof; tek başına password reddedilir

Kabul edilen bir kanıt içermeyen istek 403 ile başarısız olur:

{
  "error": "SUDO_REQUIRED",
  "code": "SUDO_MODE_REQUIRED",
  "message": "..."
}

Yanlış bir parola veya kod 401 UNAUTHORIZED ile başarısız olur. Parola denemeleri hesap başına 5 dakikada 10 ile (kova auth:sudo_pwd), kod denemeleri ise 15 dakikada 10 ile (kova auth:sudo_mfa) sınırlıdır.

Sudo yetkileri

Aynı kanıt alanlarıyla yapılan POST /auth/sudo, isteği yapan oturuma bağlı 5 dakikalık bir sudo penceresi verir ve {"granted_at", "expires_at"} döndürür. DELETE /auth/sudo bu yetkiyi iptal eder. Diğer sayfalardaki bazı yollar gövde alanları yerine bu yetkiyi denetler; örneğin kendi mesajlarınızı toplu silme ve kanıt alanı gönderilmediğinde uygulama yönetimi. GET /auth/sudo/mfa-methods, istemcinin hangi kanıtı isteyeceğini bilmesi için {"totp", "webauthn", "has_mfa"} döndürür. Bkz. MFA.

Geçerli kullanıcıyı getir

GET /users/@me

Geçerli kullanıcı nesnesini döndürür. Bu sayfada bot token'ını (Authorization: Bot <token>) da kabul eden tek yol budur; bir bot bot: true ile kendi kullanıcı nesnesini alır.

identify kapsamlı bir OAuth2 erişim token'ını da kabul eder.

Erişim token'ı yanıtı

OAuth2 erişim token'ıyla yanıt aynı kullanıcı nesnesidir; özel alanlar nötr değerlerle değiştirilir:

Alan Değer
email Adres yalnızca token ayrıca email kapsamını taşıyorsa döner; aksi halde null
email_bounced, authenticator_types Yer almaz
acls, traits, required_actions []
mfa_enabled, nsfw_allowed, premium_will_cancel, premium_badge_hidden, premium_badge_masked, premium_badge_timestamp_hidden, premium_badge_sequence_hidden, premium_purchase_disabled, premium_enabled_override, premium_perks_disabled, has_dismissed_premium_onboarding, has_ever_purchased, has_unread_gift_inventory false
password_last_changed_at, premium_since, premium_until, premium_billing_cycle, premium_lifetime_sequence, pending_bulk_message_deletion null
unread_gift_inventory_count 0

Diğer tüm alanlar bir oturumda olduğu gibi döner.

Yanıt

Durum Gövde Koşul
200 kullanıcı nesnesi Hesap döndürüldü
401 hata Kimlik bilgisi eksik veya geçersiz
403 hata identify kapsamı olmayan bir OAuth2 erişim token'ı (MISSING_OAUTH_SCOPE)

Hız sınırı

Kullanıcı başına 10 saniyede 40 istek, kova user:settings:get; Geçerli kullanıcı ayarlarını getir ile paylaşılır.

curl https://tebhos.com/api/v1/users/@me \
  -H "Authorization: Bearer $TEBHOS_TOKEN"
const res = await fetch("https://tebhos.com/api/v1/users/@me", {
  headers: { Authorization: `Bot ${process.env.TEBHOS_BOT_TOKEN}` },
});
const me = await res.json();
console.log(me.username, me.id);
import os, requests

r = requests.get(
    "https://tebhos.com/api/v1/users/@me",
    headers={"Authorization": f"Bot {os.environ['TEBHOS_BOT_TOKEN']}"},
)
print(r.json()["username"])

Geçerli kullanıcıyı değiştir

PATCH /users/@me

Geçerli hesabı değiştirir ve sonuçtaki kullanıcı nesnesini döndürür. Her alan isteğe bağlıdır; gönderilmeyen alan değiştirilmeden bırakılır. Hiçbir şeyi değiştirmeyen bir gövde hata değildir ve geçerli kullanıcıyı döndürür.

Gövde üç adımda işlenir ve önceki bir adımdaki hata isteği durdurur: önce hesap alanları doğrulanır, sonra kullanıcı adı değişikliği çalışır, ardından profil alanları yazılır ve son olarak hesap alanları saklanır.

JSON gövdesi

Kullanıcı adı (sudo doğrulaması gerektirir)

Alan Tür Açıklama
username? string Yeni kullanıcı adı. Küçük harfe çevrilir; a-z, 0-9, _ ve - karakterlerinden oluşan 3-32 karakter. Başka bir hesabın kullandığı kullanıcı adı 409 CONFLICT döndürür
password? / mfa_code? / sudo_proof? string Sudo doğrulaması kanıtı. Yalnızca username varsa okunur

Profil

Alan Tür Açıklama
global_name? ?string Görünen ad, 2-32 karakter; temizlemek için null. name takma ad olarak kabul edilir ve ikisi birlikte gönderilirse o geçerli olur
bio? ?string Biyografi, en fazla 4000 karakter. Null veya "" onu temizler
pronouns? ?string Hitap zamirleri, en fazla 40 karakter. Null veya "" onları temizler
accent_color? ?integer Paketlenmiş 24 bitlik RGB olarak vurgu rengi; temizlemek için null
timezone? string IANA saat dilimi tanımlayıcısı (en fazla 128 karakter), kırpılır. "" onu temizler. Bilinmeyen bir tanımlayıcı 400 INVALID_FORM_BODY (INVALID_TIMEZONE_IDENTIFIER) döndürür
timezone_privacy_flags? integer Saat dilimi için profil alanı gizlilik bayrakları. Bu alan olmadan ilk kez bir saat dilimi ayarlamak onu EVERYONE yapar
custom_status? string Özel durum metni, en fazla 100 karakter. "" metni, emojiyi ve bitiş zamanını birlikte temizler
custom_status_emoji_id? string Özel durum emojisi: bir özel emoji kimliği veya bir Unicode emoji (en fazla 100 karakter)
custom_status_expires_at? ISO8601 zaman damgası Özel durumun sona erdiği zaman
image_url? string Yalnızca "" anlamlıdır: avatarı kaldırır. Yeni bir avatarı Avatarı değiştir ile yükleyin
banner_color? string #RRGGBB biçiminde profil afişi rengi (tam olarak 7 karakter)
banner_type? string Afiş görüntüleme türü (en fazla 20 karakter), örneğin color veya image
banner_image_url? string Afiş görseli URL'si (en fazla 512 karakter); "" onu temizler. Yeni bir afişi Afişi değiştir ile yükleyin
active_frame_url? string Gösterilecek avatar çerçevesi (en fazla 512 karakter); "" onu kaldırır
active_badge_url? string Gösterilecek Premium rozeti; "" onu kaldırır. Hesap, rozetin kademesi için yeterince uzun süredir TEBHOS Pro'ya sahip olmalıdır; aksi hâlde 403
active_badge_name? string Seçilen Premium rozetinin adı
boost_badge_url? string Gösterilecek takviyeci rozeti; "" onu kaldırır. Rozetin kademesi için yeterli sayıda gün kesintisiz sunucu takviyesi gerektirir, aksi hâlde 403; bilinmeyen bir rozet 400 döndürür
boost_badge_name? string Seçilen takviyeci rozetinin adı

Hesap

Alan Tür Açıklama
mention_flags? integer Yanıt bahsetme tercihi: 0, 1 veya 2. Başka herhangi bir değer 400 döndürür
premium_badge_hidden? boolean Premium rozetini herkese açık profilden gizler
premium_badge_masked? boolean Ömür boyu rozetini sıradan bir abonelik rozeti olarak gösterir
premium_badge_timestamp_hidden? boolean Premium başlangıç tarihini gizler
premium_badge_sequence_hidden? boolean Ömür boyu sıra numarasını gizler
premium_enabled_override? boolean Yalnızca ekip. Diğer hesaplar 403 MISSING_ACCESS alır
has_dismissed_premium_onboarding? boolean Yalnızca true etkilidir: kapatma zamanını kaydeder
has_unread_gift_inventory? boolean Yalnızca false etkilidir: hediye envanterini okundu olarak işaretler

Burada kabul edilmez

E-posta ve parola değişiklikleri E-posta ve parola sayfasındaki kod tabanlı akışları kullanır. Avatarlar ve afişler aşağıdaki yükleme yollarını kullanır. discriminator ve date_of_birth değiştirilemez.

Sınırlar

Değişiklik Hak Hata
Profil alanı içeren herhangi bir istek Kullanıcı başına 60 saniyede 20 (kova user:update) 429
Kullanıcı adı Kullanıcı başına 3 saatte 5 (kova username_change); sudo doğrulamasından sonra sayılır 429
Biyografiyi farklı bir değere değiştirme 30 dakikada 25 400 INVALID_FORM_BODY, bio üzerinde BIO_CHANGED_TOO_MANY_TIMES
Hitap zamirlerini farklı bir değere değiştirme 30 dakikada 25 400 INVALID_FORM_BODY, pronouns üzerinde PRONOUNS_CHANGED_TOO_MANY_TIMES
Vurgu rengini farklı bir değere değiştirme 30 dakikada 25 400 INVALID_FORM_BODY, accent_color üzerinde ACCENT_COLOR_CHANGED_TOO_MANY_TIMES

Bir alanın zaten sahip olduğu değeri kaydetmek alan başına haklardan düşülmez.

Yanıt

Durum Gövde Koşul
200 kullanıcı nesnesi Değişiklikler uygulandı
400 hata Bir alan doğrulamadan geçemedi
401 hata Yanlış sudo parolası veya kodu
403 hata Sudo kanıtı eksik (SUDO_MODE_REQUIRED), yalnızca ekibe açık alan veya rozetin kilidi açılmamış
409 hata CONFLICT Kullanıcı adı alınmış
429 hata Hız sınırına takıldı

Yan etkiler

Hesabın kendi oturumları, üst düzeyde özel kullanıcı nesnesini içeren USER_UPDATE alır. Sunucu üyeleri ve arkadaşlar da profil değişikliğini alır; Gateway, önbellekteki üye verisi değişen sunucular için GUILD_MEMBER_UPDATE türetir. Bkz. Gateway olayları.

curl -X PATCH https://tebhos.com/api/v1/users/@me \
  -H "Authorization: Bearer $TEBHOS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"global_name": "Aria", "pronouns": "she/her", "mention_flags": 2}'

Avatarı değiştir

Avatarlar önceden imzalanmış bir URL ile doğrudan depolamaya yüklenir, ardından onaylanır.

Avatar yükleme URL'si oluştur

POST /users/@me/avatar/upload-url

Alan Tür Açıklama
filename string Özgün dosya adı; boş olmamalıdır
content_type string image/png, image/jpeg, image/jpg, image/gif veya image/webp
size integer Bayt cinsinden dosya boyutu, 1 ile 8388608 (8 MiB) arası

Döndürür:

Alan Tür Açıklama
upload_url string Önceden imzalanmış URL. Dosyayı PUT ile ve aynı Content-Type ile gönderin
storage_key string Onaylama yoluna iletilecek anahtar
url string Yüklemenin geçici herkese açık URL'si
expires_in integer Yükleme URL'sinin geçerli kaldığı saniye (300)

Avatarı onayla

POST /users/@me/avatar/confirm

Alan Tür Açıklama
storage_key string Önceki adımdan gelen storage_key. Hesabınıza ait olmalıdır

TEBHOS görsel meta verilerini (EXIF, GPS ve benzerleri) temizler, dosyayı içerik hash'i altında saklar ve {"avatar_hash", "image_url"} döndürür. Hareketli bir avatar (baytlardan algılanan GIF, APNG veya hareketli WebP) TEBHOS Pro gerektirir; aksi hâlde 403 ile başarısız olur. Avatar değişiklikleri 30 dakikada 25 ile sınırlıdır (400 INVALID_FORM_BODY, AVATAR_CHANGED_TOO_MANY_TIMES). Başarılı bir değişiklik USER_UPDATE yayınlar.

Avatarı kaldırmak için Geçerli kullanıcıyı değiştir yoluna {"image_url": ""} gönderin.

Genel yükleme akışı için bkz. Yüklemeler.

Afişi değiştir

POST /users/@me/banner/upload-url ve POST /users/@me/banner/confirm

Gövdeler, sınırlar ve akış Avatarı değiştir ile aynıdır. Onaylama yolu {"banner_hash", "banner_image_url"} döndürür. Hareketli bir afiş TEBHOS Pro gerektirir. Afiş değişiklikleri 30 dakikada 25 ile sınırlıdır (BANNER_CHANGED_TOO_MANY_TIMES). Afiş hash'i kullanıcı nesnesinde yalnızca hesap Premium'a sahip olduğu sürece görünür.

Yetkili IP'leri unut

DELETE /users/@me/authorized-ips

Hesabın tüm yetkili IP kayıtlarını siler; böylece herhangi bir adresten yapılan bir sonraki giriş yeni bir IP yetkilendirmesi gerektirir. Sudo doğrulaması gerektirir; gövde kanıt alanlarını taşır.

Yanıt

Durum Gövde Koşul
204 boş Kayıtlar temizlendi
403 hata SUDO_MODE_REQUIRED Kabul edilen kanıt yok

Hız sınırı

Kullanıcı başına 60 saniyede 10 istek, kova user:authorized_ips:forget.

Geçerli hesabı devre dışı bırak

POST /auth/account/disable

Hesabı, verilerini koruyarak devre dışı bırakır ve isteği yapan oturum dahil sahip olduğu her oturumu sonlandırır. Yeniden giriş yapmak hesabı yeniden etkinleştirir. Sudo doğrulaması gerektirir.

Yanıt

Durum Gövde Koşul
204 boş Hesap devre dışı bırakıldı
401 hata Yanlış parola veya kod
403 hata SUDO_MODE_REQUIRED Kabul edilen kanıt yok

Hız sınırı

Kullanıcı başına saatte 5 istek, kova user:account:disable.

Geçerli hesabın silinmesini zamanla

POST /auth/account/delete

Hesabı şu andan 14 gün sonra silinecek şekilde zamanlar ve her oturumu sonlandırır. Son tarihten önce giriş yapmak silmeyi iptal eder. Sudo doğrulaması gerektirir.

Önce sunucu sahipliğini devredin

Bir sunucunun sahibi olan hesap silinemez; istek 400 BAD_REQUEST ile başarısız olur. Önce sahip olunan her sunucuyu devredin veya silin.

Yanıt

Durum Gövde Koşul
204 boş Silme zamanlandı
400 hata Hesap en az bir sunucunun sahibi
403 hata SUDO_MODE_REQUIRED Kabul edilen kanıt yok

Hız sınırı

Kullanıcı başına saatte 5 istek, kova user:account:delete.

curl -X POST https://tebhos.com/api/v1/auth/account/delete \
  -H "Authorization: Bearer $TEBHOS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mfa_code": "123456"}'

Güncel politikaları kabul et

POST /users/@me/terms-acceptance

terms_agreed_at ve privacy_agreed_at değerlerini istek zamanına ayarlayarak güncel hizmet şartlarının ve gizlilik politikasının kabul edildiğini kaydeder. Gövde yok sayılır. Güncellenmiş kullanıcı nesnesini döndürür ve hesabın oturumlarına USER_UPDATE yayınlar. Çağrıyı tekrarlamak iki zaman damgasını da yeniler.

Hız sınırı

Kullanıcı başına 60 saniyede 20 istek, kova user:update.

Eski profil okumaları

TEBHOS web istemcisi ayrıca iki eski, düz profil okuması kullanır. Yeni entegrasyonlar Geçerli kullanıcıyı getir yolunu tercih etmelidir.

Yol Döndürdüğü
GET /auth/me Geçerli hesabın düz bir TEBHOS profil kaydı (profil özelleştirmesi, MFA zaman damgaları, Premium özeti)
GET /me email dahil, bir profil nesnesi olarak geçerli hesap