Veri toplama (harvest)¶
TEBHOS, bir hesabın verilerinin kopyasını almak için üç yol sunar:
| Yol | Elde edilen | Durum |
|---|---|---|
POST /profile/request-export |
Hesabın ve yazdığı her mesajın ZIP arşivi. İndirme bağlantısı e-postayla gönderilir | Çalışır. TEBHOS web uygulamasının kullandığı yol budur |
GET /kvkk/export |
Anında JSON özeti: profil, istatistikler ve onay kayıtları | Çalışır |
/users/@me/harvest yolları |
Durum sorgulama ve indirme URL'si olan bir toplama kaydı | Kayıtlar oluşturulur, ancak arşiv henüz oluşturulmaz |
Bu sayfadaki tüm yollar yalnız kullanıcı hesapları içindir. Geçerli bir Bot token'ı ile yapılan istek 403 ACCESS_DENIED ile reddedilir. Bu yolların hiçbiri sudo kipi gerektirmez. Hatalar standart hata yanıtını kullanır.
Veri dışa aktarımı iste¶
POST /profile/request-export
Hesabın arşivini arka planda oluşturmaya başlar ve hemen 200 döndürür:
İstek gövde almaz. Bir hesap 7 günde bir dışa aktarım isteyebilir. Bu süre içindeki ikinci bir istek 400 BAD_REQUEST döndürür. 7 günlük süre, arşivin oluşturulması daha sonra başarısız olsa bile isteğin kabul edildiği anda başlar.
Arşiv içeriği¶
Arşiv hazır olduğunda TEBHOS, hesabın e-posta adresine bir indirme bağlantısı gönderir. Arşiv, şunları içeren bir ZIP dosyasıdır:
| Dosya | İçerik |
|---|---|
user.json |
user: kimlik, kullanıcı adı, görünen ad, e-posta, avatar ve afiş başvuruları, biyografi, zamirler, vurgu ve afiş renkleri, oluşturulma zamanı, MFA'nın açık olup olmadığı, Premium katmanı ve bitiş tarihi, son etkinlik zamanı. auth_sessions: en yeni 50 oturuma kadar; oluşturulma, son kullanım ve bitiş zamanları, kullanıcı aracısı ve IP ile |
channels/{channel_id}/messages.json |
Hesabın yazdığı her kanal için bir dosya. Her dosya, hesabın mesajlarını en eskiden başlayarak id, timestamp, content ve attachments (filename, content_type, size, content_hash) ile listeler |
payments/payment_history.json |
Geçerli Polar aboneliği; product_type, status, expires_at ve provider olarak ya da boş bir dizi |
integrations/oauth.json |
{"applications": []} |
account/security.json |
authorized_ips (son etkin IP) ve activity_tracking (last_active_at, last_active_ip) |
Ek dosyaları dahil edilmez. Her ek, content_hash değeriyle tanımlanır. Arşivde avatar veya afiş görsel dosyaları yoktur.
Durum yolu yok
Dışa aktarım hiçbir Gateway olayı göndermez ve ilerlemesini bildiren bir yolu yoktur. Dışa aktarımın bittiğini gösteren tek işaret e-postadır. Hesabın e-posta adresi yoksa veya e-posta teslim edilemezse kullanıcı bağlantıyı almaz.
KVKK veri özetini al¶
GET /kvkk/export
Hesabın kişisel verilerinin JSON özetini Content-Disposition: attachment; filename="tebhos-data-export.json" ile hemen döndürür. Bu yolun hız sınırı yoktur.
| Alan | Tür | Açıklama |
|---|---|---|
| profile | object | name, email, image_url, bio, custom_status |
| statistics | object | messages_sent, direct_messages_sent (DM'lerdeki ve grup DM'lerdeki mesajlar), servers_joined |
| consents | array | Kaydedilmiş onaylar; her biri consent_type, granted, granted_at, revoked_at ile |
| exported_at | ISO8601 zaman damgası | Özetin üretildiği zaman |
| note | string | İnsanlar için okunabilir bir not |
Özet yalnız sayıları içerir. Mesaj içerikleri için Veri dışa aktarımı iste kullanılır.
Onay kaydet¶
POST /kvkk/consent
Kullanıcının bir onayı verdiğini veya geri çektiğini, istek IP'siyle birlikte kaydeder. 200 {"message": "..."} döndürür.
| Alan | Tür | Açıklama |
|---|---|---|
| consent_type | string | İstemcinin seçtiği onay tanımlayıcısı |
| granted | boolean | Vermek için true, geri çekmek için false (bu, revoked_at değerini ayarlar) |
Aynı consent_type için yapılan her çağrı saklanan sürüm numarasını artırır. Onayın ilk verildiği zaman korunur.
Kişisel verileri sil¶
DELETE /kvkk/delete
Geri alınamaz, sudo doğrulaması gerektirir
Bu yol hesabı hemen anonimleştirir. Hesabın mesajlarının içeriğini, kullanıcı kaydını ve profil eklerini (özel durum ve afiş) anonimleştirir, e-posta adresini serbest bırakır ve her ilişkiyi siler. 200 {"message": "..."} döndürür.
Hesap silmede olduğu gibi sudo doğrulaması gerektirir. JSON gövdesinde password (MFA'sı olmayan hesaplar), mfa_code veya sudo_proof gönderilir ya da çağrı geçerli oturumun sudo süresi içinde yapılır. İkisi de yoksa SUDO_MODE_REQUIRED koduyla 403 döndürür.
Toplama kayıtları¶
Arşiv oluşturma TEBHOS'ta henüz kullanılamıyor
/users/@me/harvest yolları toplama kayıtları oluşturur ve döndürür. Ancak TEBHOS, arşivi oluşturan arka plan işini henüz çalıştırmaz. Yeni bir kayıt 0 ilerlemeyle pending durumunda kalır ve Veri toplama indirme URL'sini al bunun için 400 döndürür. Bugün arşiv almak için Veri dışa aktarımı iste kullanılır. İş eklendiğinde bu yollar arşiv üretmeye başlayacak; istek ve yanıt biçimleri değişmeyecektir.
Toplama durum değerleri¶
status, kaydın zaman damgalarından şu sırayla belirlenir:
| Değer | Koşul |
|---|---|
| failed | failed_at ayarlı |
| completed | completed_at ayarlı |
| running | started_at ayarlı |
| pending | Yukarıdakilerin hiçbiri |
Toplama nesnesi¶
İndirme yolu dışındaki her toplama yolu tarafından döndürülür.
| Alan | Tür | Açıklama |
|---|---|---|
| harvest_id | snowflake | Toplamanın kimliği |
| status | string | Toplama durumu |
| created_at | ISO8601 zaman damgası | Toplamanın istendiği zaman |
| progress_percent | integer | 0 ile 100 arasında ilerleme |
| progress_step | ?string | Geçerli aşama için kısa bir etiket veya null |
| file_size | ?integer | Bayt cinsinden arşiv boyutu; arşiv yazılmadan önce null |
| error_message | ?string | Son denemenin neden başarısız olduğu veya null |
{
"harvest_id": "1501314428688998182",
"status": "pending",
"created_at": "2026-09-23T10:12:44.018+00:00",
"progress_percent": 0,
"progress_step": null,
"file_size": null,
"error_message": null
}
Toplama mesaj filtresi nesnesi¶
Filtreli veri toplama iste isteğinin gövdesi. Her alan isteğe bağlıdır.
| Alan | Tür | Açıklama |
|---|---|---|
| scope? | string | selected veya inaccessible_only. Varsayılan selected |
| include_dms? | boolean | Çağıranın hâlâ açık tuttuğu bire bir DM'leri dahil et. Varsayılan true |
| include_dms_closed? | boolean | Çağıranın kapattığı bire bir DM'leri dahil et. Varsayılan true |
| include_group_dms? | boolean | Grup DM'leri dahil et. Varsayılan true |
| include_guilds? | boolean | Sunucu kanallarını dahil et. Varsayılan true |
| guild_filter_mode? | string | exclude veya include_only. Varsayılan exclude |
| excluded_guild_ids? | array[snowflake] | exclude kipinde dışarıda bırakılacak sunucular (en fazla 500) |
| included_guild_ids? | array[snowflake] | include_only kipinde dahil edilecek tek sunucular (en fazla 500) |
| start_date? | ?ISO8601 zaman damgası | Mesaj zamanı için dahil edilen alt sınır |
| end_date? | ?ISO8601 zaman damgası | Mesaj zamanı için hariç tutulan üst sınır |
Doğrulama kuralları:
selectedkapsamında dörtinclude_*alanından en az biritrueolmalıdır.- İki tarih de verildiğinde
start_date,end_datedeğerinden kesinlikle önce olmalıdır. - Geçerli ISO8601 olmayan bir tarih reddedilir.
Herhangi bir kural sağlanmazsa istek 400 BAD_REQUEST döndürür.
Not
TEBHOS filtreyi denetler, ancak kayıtla birlikte saklamaz ve hiçbir yanıt onu döndürmez. Gönderilen filtrenin bir kopyası istemci tarafında saklanmalıdır.
Veri toplama iste¶
POST /users/@me/harvest
Bir toplama kaydı oluşturur ve toplama nesnesiyle (durum pending) 201 döndürür. İstek gövde almaz. Yeni bir toplama oluşturmak önceki kayıtları silmez; hız sınırı dışında bir hesabın sahip olabileceği kayıt sayısında sınır yoktur.
Hız sınırı¶
user:data:harvest kovasında kullanıcı başına 30 dakikada 5 istek. Bu kova Filtreli veri toplama iste ile paylaşılır. Bkz. Hız sınırları.
Filtreli veri toplama iste¶
POST /users/@me/harvest/filtered
Bir toplama mesaj filtresi nesnesi olması gereken gövdeyi denetler (varsayılanları kullanmak için {} gönderilir), ardından Veri toplama iste ile aynı şekilde bir kayıt oluşturur. Toplama nesnesiyle 201 döndürür.
| Durum | Gövde | Koşul |
|---|---|---|
| 201 | toplama nesnesi | Kayıt oluşturuldu |
| 400 | hata yanıtı | Filtre doğrulamadan geçemedi veya gövde JSON değil |
Gövde kimlik doğrulamadan ve hız sınırından önce denetlenir; bu yüzden geçersiz bir filtre, istekte geçerli bir token olmasa bile 400 döndürür.
Hız sınırı: paylaşılan user:data:harvest kovası (kullanıcı başına 30 dakikada 5).
En son veri toplamayı al¶
GET /users/@me/harvest/latest
Çağıranın en yeni toplama nesnesini, durumu ne olursa olsun döndürür.
Toplaması olmayan bir hesap 200 ve null alır
Gövde, JSON değeri null olur. Yanıt nesne olarak işlenmeden önce bu durum denetlenmelidir.
Hız sınırı: user:harvest:latest kovasında kullanıcı başına 10 saniyede 40 istek.
Veri toplama durumunu al¶
GET /users/@me/harvest/{harvest_id}
Çağırana ait bir toplama nesnesi döndürür.
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | toplama nesnesi | Toplama bulundu |
| 400 | hata yanıtı | harvest_id geçerli bir snowflake değil |
| 404 | hata yanıtı | Toplama yok veya başka bir hesaba ait (NOT_FOUND) |
Başka bir hesaba ait bir toplama, var olmayan bir toplamayla aynı 404'ü döndürür.
Hız sınırı: user:harvest:status kovasında kullanıcı başına 10 saniyede 40 istek.
Veri toplama indirme URL'sini al¶
GET /users/@me/harvest/{harvest_id}/download
Tamamlanmış bir toplama için geçici bir indirme URL'si oluşturur.
Denetimler şu sırayla çalışır:
- Toplama yok veya başka bir hesaba ait: 404.
- Tamamlanma zamanı yok veya saklanan arşiv yok: 400.
- Toplama başarısız olmuş: 400.
- İndirme son tarihi geçmiş: 400.
400 yanıtlarının hepsi code olarak BAD_REQUEST kullanır; bu yüzden toplamanın status değeriyle birbirinden ayırt edilir.
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| download_url | string | ZIP arşivi için önceden imzalanmış bir dosya deposu URL'si |
| expires_at | ISO8601 zaman damgası | Bu yanıtın üretilmesinden 7 gün sonrası |
Her istek, giriş yapmadan çalışan yeni bir URL oluşturur
Her çağrı 7 gün geçerli kalan yeni bir URL oluşturur. Sonraki bir çağrı önceki URL'leri iptal etmez. Her URL gizli tutulmalıdır.
Hız sınırı: user:harvest:download kovasında kullanıcı başına dakikada 10 istek.
Not
TEBHOS'ta /users/@me/harvest altında token ile kimlik doğrulanan bir arşiv indirme yolu yoktur. Önceden imzalanmış URL, indirme URL'sinin tek biçimidir.