Ana içeriğe geç

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:

{"message": "..."}

İ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.

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ı:

  • selected kapsamında dört include_* alanından en az biri true olmalıdır.
  • İki tarih de verildiğinde start_date, end_date değ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:

  1. Toplama yok veya başka bir hesaba ait: 404.
  2. Tamamlanma zamanı yok veya saklanan arşiv yok: 400.
  3. Toplama başarısız olmuş: 400.
  4. İ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.