tellmelotellmelo.
KünyeGizlilikKullanım koşullarıTelif bildirimiİletişimAPIUygulamalar

API

Bu bir çeviridir. Bağlayıcı olan Almanca sürümdür. Bu metin ondan ayrılırsa Almanca metin geçerlidir. Dili sayfanın altından değiştirebilirsin.

Başlarken

  • Genel bakış
  • Hızlı başlangıç
  • Senin anahtarın
  • Bir anahtarın yapabildikleri
  • Hiçbir anahtarın yapamayacağı

Temeller

  • İstekler ve yanıtlar
  • Sayfalar
  • Yalnızca yeni olan
  • Sınırlar
  • Başlıklar
  • Bir şey olmazsa
  • Sürümler

Uç noktalar

  • Uç noktalar
  • Giriş
    • GET /
  • Gönderiler
    • GET /posts
    • GET /posts/{id}
    • POST /posts
    • DELETE /posts/{id}
  • Yanıtlar
    • GET /posts/{id}/replies
    • POST /posts/{id}/replies
  • Anketler
    • POST /posts/{id}/vote
  • Profiller
    • GET /profiles/{handle}
    • GET /profiles/{handle}/posts
  • Topluluklar
    • GET /communities
    • GET /communities/{id}
    • GET /communities/{id}/posts
  • Keşfet
    • GET /tags
    • GET /search
    • GET /emojis
  • Hesabın
    • GET /me
    • GET /feed
  • Bildirimler
    • GET /notifications
    • POST /notifications/read
  • Mesajlar
    • GET /conversations
    • GET /conversations/{with}/messages
    • POST /conversations/{with}/messages
    • POST /conversations/{with}/read
  • İlişkiler
    • POST /relations

Nesneler

  • Nesneler
  • Service
  • RateLimit
  • Post
  • Reply
  • Counts
  • Media
  • Poll
  • PollOption
  • ProfileBrief
  • Profile
  • CommunityBrief
  • Community
  • Tag
  • SearchResult
  • Emoji
  • Notification
  • Actor
  • Conversation
  • Message
  • Created
  • Ok

Diğer

  • Makinenin okuyabildiği tanım
  • v1’e ne oldu
  • Beklediğimiz
İçindekiler

Başlarken

  • Genel bakış
  • Hızlı başlangıç
  • Senin anahtarın
  • Bir anahtarın yapabildikleri
  • Hiçbir anahtarın yapamayacağı

Temeller

  • İstekler ve yanıtlar
  • Sayfalar
  • Yalnızca yeni olan
  • Sınırlar
  • Başlıklar
  • Bir şey olmazsa
  • Sürümler

Uç noktalar

  • Uç noktalar
  • Giriş
    • GET /
  • Gönderiler
    • GET /posts
    • GET /posts/{id}
    • POST /posts
    • DELETE /posts/{id}
  • Yanıtlar
    • GET /posts/{id}/replies
    • POST /posts/{id}/replies
  • Anketler
    • POST /posts/{id}/vote
  • Profiller
    • GET /profiles/{handle}
    • GET /profiles/{handle}/posts
  • Topluluklar
    • GET /communities
    • GET /communities/{id}
    • GET /communities/{id}/posts
  • Keşfet
    • GET /tags
    • GET /search
    • GET /emojis
  • Hesabın
    • GET /me
    • GET /feed
  • Bildirimler
    • GET /notifications
    • POST /notifications/read
  • Mesajlar
    • GET /conversations
    • GET /conversations/{with}/messages
    • POST /conversations/{with}/messages
    • POST /conversations/{with}/read
  • İlişkiler
    • POST /relations

Nesneler

  • Nesneler
  • Service
  • RateLimit
  • Post
  • Reply
  • Counts
  • Media
  • Poll
  • PollOption
  • ProfileBrief
  • Profile
  • CommunityBrief
  • Community
  • Tag
  • SearchResult
  • Emoji
  • Notification
  • Actor
  • Conversation
  • Message
  • Created
  • Ok

Diğer

  • Makinenin okuyabildiği tanım
  • v1’e ne oldu
  • Beklediğimiz

Genel bakış

v2, tellmelo’nun kendi programların için olan API’sidir. Her istek bir anahtar taşır, her yanıt JSON’dur ve her liste aynı biçimde sayfalanır. Bir anahtarın arkasında olan her şey, uygulamadaki bir tıklamayla aynı kurallardan geçer: hız sınırları, askıya almalar, geri alınmış haklar ve bu sunucunun ayarları burada da aynen işler.

  • Her yol, bu sunucunun kendi adresinde /api/v2 ile başlar, bu sayfadaki örneklerde kullanılan adres.
  • İstekler ve yanıtlar UTF-8 kodlu JSON’dur. Alan adları, kodlar ve değerler İngilizcedir ve öyle kalır.
  • Bir anahtar senin hesabın olarak davranır, asla ötesinde değil: uygulamada göremediğin bir şeyi hiçbir anahtar da okuyamaz.
https://tellmelo.com/api/v2

Hızlı başlangıç

  1. “Ayarlar → Uygulama ve veriler → API” altında bir anahtar oluştur ve kopyala. Yalnızca bir kez gösterilir.
  2. Onunla kökü sorgula. Yanıt hangi sürümün çalıştığını, anahtarın neler yapabildiğini ve bu dakika kaç isteği kaldığını söyler.
  3. Oradan sonra her yol aynı çalışır: anahtar başlıkta, geri JSON gelir, listelerde de items ve next.
curl -H "Authorization: Bearer tm_key_…" https://tellmelo.com/api/v2
{
  "name": "tellmelo",
  "version": "2.6",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/legal/api",
  "spec": "/api/v2/openapi.json"
}

Devamı için: kendi profilin için /me, herkese açık olanlar için /posts, uygulamanın sana gösterdikleri için /feed.

Senin anahtarın

Hesap başına tam olarak bir anahtar vardır, kullanıcı kimliğine bağlıdır. tm_key_ ile başlar, böylece bir tarayıcı onu ait olmadığı yerde tanır. Yalnızca bir kez, oluşturulduğu anda gösterilir; sonrasında burada yalnızca parmak izi durur ve kimse onu sana geri okuyamaz, ne biz ne sen. Kaybeden yenisini oluşturur; eskisi o andan sonra geçmez.

Onu “Ayarlar → Uygulama ve veriler → API” altında oluşturursun. İsteğin başlığında gider, Authorization: Bearer tm_key_… ya da X-Tellmelo-Key olarak. Adres satırında değil, çünkü oradaki her şey erişim kayıtlarına, tarayıcı geçmişine ve her bağlantının referer bilgisine düşer.

curl -H "Authorization: Bearer tm_key_…" \
  https://tellmelo.com/api/v2/posts

Ya da daha kolaysa kendi başlığında:

curl -H "X-Tellmelo-Key: tm_key_…" https://tellmelo.com/api/v2

Adres satırında değil. Oradaki her şey aradaki her sunucunun erişim kaydına, tarayıcı geçmişine ve her bağlantının referer bilgisine düşer. Anahtarın orada yeri yoktur.

Aynı anahtar görselleri de yükler. Bir yanıttaki her url bu sunucunun /api/media adresini gösterir; anahtarı oraya da başlıkta gönder, görsel geri gelir, hesabının görebildiği ölçüde.

curl -H "Authorization: Bearer tm_key_…" \
  -o picture.webp "https://tellmelo.com/api/media?id=…"

Bir anahtarın yapabildikleri

Bir anahtar iki yetki taşır ve aşağıdaki tablolardaki her yol hangisine ihtiyaç duyduğunu söyler. Beş değil iki: Kendine tek cümleyle açıklayamadığın bir yetki, okumadan işaretlediğin yetkidir. Dürüst çizgi bakmakla değiştirmek arasından geçer.

  • read: bakmak. Açık gönderiler, profiller, topluluklar ve etiketler, bir de kendi hesabın senin gördüğün hâliyle: akış, bildirimler, sohbetler, mesajlar.
  • write: değiştirmek. Senin adına olan her şey: yayımlamak, yanıtlamak, oy vermek, mesaj göndermek, takip etmek, katılmak, engellemek, bildirimleri okundu olarak işaretlemek.

Hiçbir anahtarın yapamayacağı

Hiçbir anahtar hesap verilerine uzanmaz: parola yok, e-posta adresi yok, hesap türü yok, yer yok, rol yok, silme yok. Oturumlar da yok, bildirim cihazları da yok, anahtarların kendisi de yok: anahtar çıkarabilen biri artık kapatılamazdı. Yönetim de yok, topluluk yönetimi de yok, çünkü bir topluluğu dağıtmak ya da devretmek başkalarının gönderileri üzerine bir karardır. Parolanın koruduğunu hiçbir anahtar yapamaz: Başkasının makinesindeki bir betikte duran bir sır, girişin yapabildiğini yapabilmemelidir. Bir hesabı ele geçirmek hâlâ girişe mal olur.

İstekler ve yanıtlar

  • Her yerde JSON. Hatalar dahil her yanıt UTF-8 kodlu application/json’dur. Yalnızca görseller görsel olarak gelir.
  • Gönderdiklerin. Bir POST, alanlarını gövdede bir JSON nesnesi olarak taşır. Adresteki parametreler gövdenin adını anmadığı alanları tamamlar; ikisi aynı alanı anarsa gövde geçerlidir.
  • Zamanlar, 1 Ocak 1970’ten bu yana geçen milisaniyelerin tam sayı halidir, UTC, veritabanı onları böyle tutar. Yanlış okunacak bir saat dilimi yoktur.
  • Kimlikler metindir. Onları parçalara ayırma ve biçimlerine güvenme; yalnızca bütün olarak karşılaştır.
  • Her alan her zaman vardır. Olmayan şey null’dır, asla eksik değildir; bir sayı her zaman sayıdır, bir liste her zaman listedir, gerekirse boş.
  • Metinler düz metindir, yazıldığı gibi. #etiketler, @adlar ve bağlantılar olduğu gibi kalır; sunucunun kendi emojileri de :name: olarak; görselleri /emojis altında listelenir.
  • Görseller bu sunucuya göre göreli adreslerdir, /api/media?id=…. Onları başlıkta aynı anahtarla yükle; anahtar olmadan yanıt 401 olur.

Sayfalar

Her liste limit ve cursor alır, items ve next ile yanıt verir. Son yanıttaki next değerini cursor olarak geri göndererek devam edersin; next boşsa son gelmiştir. Dolu bir sayfa yine de sonuncusu olabilir, yalnızca boş sayfada duran bir kez fazla sorar. İmleç şeffaf değildir: bir listedeki yer, bir zaman noktası değil. Onu parçalara ayırma ve kendin bir tane kurma; içindekiler, hiçbir yol değişmeden değişebilir.

{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }

curl -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/posts?limit=20&cursor=MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"

Bir sayfa limit olmadan 20, en fazla 50 kayıt taşır. Birkaç liste hiç sayfalanmaz: bu, yollarında yazar ve next değerleri her zaman null’dır.

Yalnızca yeni olan

Her yanıt bir ETag taşır. Durmadan soran bir program sonuncusunu If-None-Match olarak geri göndermelidir: o zamandan beri bir şey değişmediyse yanıt 304 olur ve gövde taşımaz. Bu, her dakika hattan geçen bir listeyle, ancak içinde bir şey olduğunda geçen bir liste arasındaki farktır, senin makinen için de bunun için de.

ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"  →  304

İki istisna var, ikisi de bilerek: /feed ETag taşımaz, çünkü sırası zamanla değişir ve her yanıt farklıdır; bir yazma işlemi de asla 304 ile yanıt vermez. İki aynı gönderi iki gönderidir.

Sınırlar

Bir anahtar dakikada 120 istek yapabilir, “Kurum” aboneliğiyle 600, yönetim ona başka bir sayı vermediyse. Sınır anahtar başınadır, hesap başına ya da adres başına değil. Üstünde yanıt 429 olur ve hiçbir şey olmamıştır: istek reddedildi, yürütülmedi. Bir dakika bekle ve yeniden gönder; düzenli olarak sınıra çarpan bir program hemen yeniden sormak yerine yavaşlamalıdır.

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060

Anahtarın kendi sınırının yanında yazma işlemleri uygulamadakiyle aynı sınırlara sayılır: birkaç dakikada kaç gönderi, yanıt ya da ilişki. Bunlar da rate_limited koduyla 429 döndürür.

Başlıklar

Adlar, her istemci kütüphanesinin zaten tanıdığı adlardır. Anahtar dışında hiçbiri zorunlu değildir.

Gönderdiklerin

BaşlıkAnlamı
AuthorizationAnahtarı taşır: Bearer tm_key_…. Olağan yol.
X-Tellmelo-KeyAuthorization yerine anahtar, o başlığı başka bir şey için kullanan araçlar için.
Content-TypeGövdesi olan bir istek için application/json.
If-None-MatchSon yanıtın ETag değeri. O zamandan beri hiçbir şey değişmediyse yanıt gövdesiz 304 olur.

Geri gelenler

BaşlıkAnlamı
ETagBu yanıtın zayıf olarak işaretlenmiş (W/) parmak izi. Onu If-None-Match olarak geri gönder.
X-RateLimit-LimitBu anahtarın dakikada kaç istek yapabileceği.
X-RateLimit-Remainingİçinde bulunulan dakikada bunlardan kaçının kaldığı.
X-RateLimit-ResetBir sonraki dakikanın ne zaman başladığı, 1970’ten beri saniye olarak, UTC.
X-Tellmelo-ScopeBu anahtarın neler yapabildiği: read ya da read write.
Retry-After429 ile birlikte: yeniden sormadan önce kaç saniye beklemen gerektiği.
WWW-AuthenticateEksik anahtar yüzünden gelen 401 ile birlikte: Bearer, anahtarın nasıl beklendiği.
Cache-Controlno-store: aradaki hiçbir vekil sunucu bir yanıtı saklayamaz, çünkü yanıt soran anahtara bağlıdır. Kendi programın yine de ETag ile kontrol edebilir.

Bir şey olmazsa

Hatalar iki alanlı JSON olarak gelir: error içinde programının karşılaştırabileceği sabit bir İngilizce kod, message içinde karşısındaki insan için bir cümle ve ona ait durum kodu. Kod aynı kalır; cümle değişebilir, üstelik her dilde değişebilir: cümleyi karşılaştıran bir program kimsenin duyurmadığı bir gün bozulur.

{ "error": "rate_limited",
  "message": "Too many requests. Try again in a minute.",
  "limit": 120 }

Bazı hatalar bir alan daha getirir: eksik anahtar yüzünden gelen 401 ile docs, 429 ile limit.

DurumKodAnlamı
400bad_requestİstek okunamıyor, zorunlu bir alan eksik ya da bir değer izin verilenlerden biri değil. Hangisi olduğunu message söyler.
401key_missingBaşlıkta anahtar yok.
401key_invalidAnahtar geçerli değil: yanlış yazılmış, yenisiyle değiştirilmiş ya da hesabı askıya alınmış. Hangisi olduğu bilerek söylenmez.
401unauthorizedAnahtarın kendisi dışında bir nedenle oturum açılmamış sayılıp reddedildi. Nadirdir ve anahtarın arkasındaki hesaba bakmak için bir nedendir.
403scope_missingAnahtarda bu yolun gerektirdiği yetki yok: çoğunlukla yalnızca okuyabilen bir anahtarda write.
403account_data_lockedBu, hiçbir anahtarın ulaşamadığı hesap verilerine dokunuyor: şifre, e-posta adresi, silme ve benzerleri.
403forbiddenHesabın bunu yapamaz: uygulamadakiyle aynı ret, örneğin geri alınmış bir yetki ya da bir engelleme.
404unknown_pathBöyle bir yol yok ya da bu yöntemle yok.
404not_foundYol var ama gösterdiği şey yok, ya da onu görmene izin yok. İkisi birbirinden ayrılmaz.
409conflictZaten var olan bir şeyle çakışıyor, örneğin alınmış bir ad.
413too_largeÇok büyük: bu sunucunun kabul ettiğinin ötesinde bir metin ya da istek.
422unprocessableOkunabilir ama bu biçimde mümkün değil.
429rate_limitedÇok fazla istek. Hiçbir şey yapılmadı; bekle ve yeniden gönder.
500internal_errorSorun bizim tarafımızda, senin tarafında değil. Sunucuda eksiksiz kaydedildi.

Sürümler

Sürüm yolun içinde. Orada v2 yazdığı sürece bu yollar ve alanları olduğu gibi kalır; eklenen şey yanına gelir.

Eklemeler ikinci sayıyı yükseltir: 2.1 ile /emojis ve bir sohbeti okundu olarak işaretleme geldi. 2.4 içerik uyarıları artık olmadığı için contentWarning alanını kaldırdı. 2.5 görsel açıklamaları artık olmadığı için görsellerdeki alt alanını kaldırdı. 2.6, ekibin yeni işleri için team bildirim türünü ekler. Her yol hangi sürümden beri var olduğunu, kök ise hangi sürümün çalıştığını söyler.

Uç noktalar

Önce bütün yollar bir bakışta, sonra her biri ayrıntılı: ne aldığı, örnek bir istek ve ne döndürdüğü.

YolYetkiNe işe yarar
Giriş
GET/api/v2readGiriş: bu API’nin konuştuğu sürüm ve bu sunucunun adı.
Gönderiler
GET/api/v2/postsreadAçık gönderiler, en yenisi önce.
GET/api/v2/posts/{id}readTek bir gönderi, id değeriyle.
POST/api/v2/postswriteBir gönderi yayımlamak.
DELETE/api/v2/posts/{id}writeKendi gönderilerinden birini kaldırmak.
Yanıtlar
GET/api/v2/posts/{id}/repliesreadBir gönderiye gelen yanıtlar, senin gördüğün hâliyle: engellenmiş bir hesabın yazdığı dışarıda kalır.
POST/api/v2/posts/{id}/replieswriteBir gönderiye yanıt vermek.
Anketler
POST/api/v2/posts/{id}/votewriteBir ankete katılmak.
Profiller
GET/api/v2/profiles/{handle}readBir profil, kısa adıyla.
GET/api/v2/profiles/{handle}/postsreadBir profilin açık gönderileri, en yenisi önce.
Topluluklar
GET/api/v2/communitiesreadBu sunucunun açık toplulukları.
GET/api/v2/communities/{id}readTek bir topluluk, id değeriyle.
GET/api/v2/communities/{id}/postsreadBir topluluğun açık gönderileri, en yenisi önce.
Keşfet
GET/api/v2/tagsreadŞu anda öne çıkan etiketler.
GET/api/v2/searchreadGönderilerde, adlarda, kısa adlarda ve etiketlerde arama.
GET/api/v2/emojisreadSunucunun kendi emojileri, görsellerinin adresiyle birlikte.
Hesabın
GET/api/v2/mereadKendi profilin, diğer yolların beklediği id ile.
GET/api/v2/feedreadKendi akışın, uygulamanın derlediği hâliyle.
Bildirimler
GET/api/v2/notificationsreadKendi bildirimlerin, en yenisi önce, sayfalanabilir, böylece bir program kaçırdığını sonradan alabilir.
POST/api/v2/notifications/readwriteBildirimlerini okundu olarak işaretlemek.
Mesajlar
GET/api/v2/conversationsreadPosta kutun: her sohbet için bir satır, en yenisi önce.
GET/api/v2/conversations/{with}/messagesreadBir sohbetin mesajları, en yenisi önce.
POST/api/v2/conversations/{with}/messageswriteBir sohbete mesaj göndermek.
POST/api/v2/conversations/{with}/readwriteBir sohbetin bütün mesajlarını okundu olarak işaretle.
İlişkiler
POST/api/v2/relationswriteBeğenmek, kaydetmek, paylaşmak, takip etmek, katılmak, engellemek, sessize almak, kind değerine göre.

Giriş

Her programın ilk isteği: anahtar çalışıyor mu, ne yapabilir?

GET/api/v2

Giriş: bu API’nin konuştuğu sürüm ve bu sunucunun adı.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Sonda eğik çizgi olmadan: /api/v2/, 308 ile /api/v2 adresine yönlendirir ve her program bunu izlemez.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2"

Yanıt

Bir Service ile yanıt verir.

Örnek
{
  "name": "tellmelo",
  "version": "2.6",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/legal/api",
  "spec": "/api/v2/openapi.json"
}

Olası durumlar: 200304401429

Gönderiler

Herkese açık gönderileri okumak, kendi gönderilerini yayımlamak ve yeniden kaldırmak.

GET/api/v2/posts

Açık gönderiler, en yenisi önce.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Herkese açık yollarda tepkiler sayılmaz: counts.likes ve counts.reposts 0, pinned ise false olur (bir kesit, bir ölçüm değil).

Bir topluluğun içindeki gönderilere buradan ulaşılamaz, ne listede ne de id ile. Onlar /communities/{id}/posts altında okunur.

Parametreler

AdTürAnlamı
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/posts?limit=20"

Yanıt

Bir sayfa Post ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304401429

GET/api/v2/posts/{id}

Tek bir gönderi, id değeriyle.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Herkese açık yollarda tepkiler sayılmaz: counts.likes ve counts.reposts 0, pinned ise false olur (bir kesit, bir ölçüm değil).

Bir topluluğun içindeki gönderilere buradan ulaşılamaz, ne listede ne de id ile. Onlar /communities/{id}/posts altında okunur.

Parametreler

AdTürAnlamı
idyoldastringzorunluBir gönderinin id değeri.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"

Yanıt

Bir Post ile yanıt verir.

Örnek
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "text": "The bees are back in the garden 🐝 #garden",
  "kind": "poll",
  "author": {
    "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
    "handle": "mara",
    "name": "Mara 🌻",
    "verified": true,
    "accountKind": "person"
  },
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening"
  },
  "media": [
    {
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
    }
  ],
  "poll": {
    "options": [
      {
        "text": "Lavender",
        "votes": 12
      },
      {
        "text": "Sunflowers",
        "votes": 7
      },
      {
        "text": "Clover",
        "votes": 3
      }
    ],
    "total": 22,
    "multiple": false,
    "endsAt": 1758710400000,
    "running": true,
    "resultsVisible": true,
    "myVotes": [
      0
    ]
  },
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 4,
    "likes": 31,
    "reposts": 2
  },
  "pinned": false,
  "createdAt": 1758624000000
}

Olası durumlar: 200304400401404429

POST/api/v2/posts

Bir gönderi yayımlamak.

  • Yetki write
  • v2.0 sürümünden beri

Bir gönderinin metne ya da ankete ihtiyacı vardır. Uzunluğunu, bir anketteki seçenek sayısını ve ne kadar sürede kaç gönderi yapılabileceğini bu sunucu belirler; bunların ötesinde yanıt, hangisi olduğunu söyleyen bir message ile 400 ya da 429 olur.

Görseller API üzerinden henüz eklenemiyor, yalnızca uygulamada.

Parametreler

AdTürAnlamı
textgövdedestringisteğe bağlıMetnin kendisi: gönderinin, yanıtın ya da mesajın.
communitygövdedestringisteğe bağlıGönderinin gideceği topluluğun id değeri. Verilmezse her topluluğun dışında.
quotesgövdedestringisteğe bağlıBu gönderinin alıntıladığı gönderinin id değeri.
pollgövdedestring[]isteğe bağlıBir anketin yanıt seçenekleri, metin listesi olarak. Kaç tanesine izin verildiğini sunucu belirler.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"The bees are back in the garden 🐝 #garden"}' \
  "https://tellmelo.com/api/v2/posts"

Yanıt

Bir Created ile yanıt verir.

Örnek
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

Olası durumlar: 200400401403429

DELETE/api/v2/posts/{id}

Kendi gönderilerinden birini kaldırmak.

  • Yetki write
  • v2.0 sürümünden beri

Parametreler

AdTürAnlamı
idyoldastringzorunluBir gönderinin id değeri.

Örnek istek

curl -X DELETE \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200400401403404429

Yanıtlar

Bir gönderinin altındaki sohbet: parentId ile ağaca dönüşen bir liste olarak okunur, gönderiye ya da bir yanıta yanıt verilerek yazılır.

GET/api/v2/posts/{id}/replies

Bir gönderiye gelen yanıtlar, senin gördüğün hâliyle: engellenmiş bir hesabın yazdığı dışarıda kalır.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Liste düzdür ve yazılma sırasındadır; parentId onu bir ağaca dönüştürür. Bir sayfa bütün dizileri taşır, yani bir yanıt asla yanıt verdiği mesaj olmadan gelmez. Engellediğin ya da seni engelleyen bir hesabın yazdıkları dışarıda kalır. İki anahtar farklı listeler görebilir.

Parametreler

AdTürAnlamı
idyoldastringzorunluBir gönderinin id değeri.
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies?limit=20"

Yanıt

Bir sayfa Reply ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
      "text": "Same here, the lavender is full of them.",
      "kind": "post",
      "author": {
        "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
        "handle": "jon",
        "name": "Jon",
        "verified": false,
        "accountKind": "person"
      },
      "community": null,
      "media": [],
      "poll": null,
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 0,
        "likes": 3,
        "reposts": 0
      },
      "pinned": false,
      "createdAt": 1758624600000,
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "parentId": null
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304400401404429

POST/api/v2/posts/{id}/replies

Bir gönderiye yanıt vermek.

  • Yetki write
  • v2.0 sürümünden beri

Yavaş moddaki bir gönderinin altında herkes 10 dakikada bir yanıt verebilir; bir yanıt daha 429 alır, bekleme süresi mesajdadır. Mod, yazara ve yazarın takip ettiği hesaplara uygulanmaz.

Parametreler

AdTürAnlamı
idyoldastringzorunluBir gönderinin id değeri.
textgövdedestringzorunluMetnin kendisi: gönderinin, yanıtın ya da mesajın.
parentIdgövdedestringisteğe bağlıBu yanıtın yanıtladığı yanıtın id değeri. Verilmezse doğrudan gönderiye.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Same here, the lavender is full of them."}' \
  "https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies"

Yanıt

Bir Created ile yanıt verir.

Örnek
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

Olası durumlar: 200400401403404429

Anketler

Anket, poll alanı dolu olan bir gönderidir. Oy vermenin kendi yolu vardır.

POST/api/v2/posts/{id}/vote

Bir ankete katılmak.

  • Yetki write
  • v2.0 sürümünden beri

Sonuç saklandığı sürece seçenek başına oylar null olur: kendi oyundan önce, anket sürerken. total her zaman vardır.

Parametreler

AdTürAnlamı
idyoldastringzorunluBir gönderinin id değeri.
optiongövdedeintegerzorunluHangi yanıt, 0’dan sayılarak. Çağrı başına bir tane: birden çok yanıtlı bir ankete birden çok kez çağırarak oy verilir.
retractgövdedebooleanisteğe bağlıBu oyun geri alınıp alınmadığı: true onu geri alır.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"option":0}' \
  "https://tellmelo.com/api/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/vote"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200400401403404429

Profiller

Kısa adlarıyla herkese açık profiller ve paylaştıkları.

GET/api/v2/profiles/{handle}

Bir profil, kısa adıyla.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Parametreler

AdTürAnlamı
handleyoldastringzorunluBir profilin kısa adı.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/profiles/mara"

Yanıt

Bir Profile ile yanıt verir.

Örnek
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

Olası durumlar: 200304400401404429

GET/api/v2/profiles/{handle}/posts

Bir profilin açık gönderileri, en yenisi önce.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Herkese açık yollarda tepkiler sayılmaz: counts.likes ve counts.reposts 0, pinned ise false olur (bir kesit, bir ölçüm değil).

Bir topluluğun içindeki gönderilere buradan ulaşılamaz, ne listede ne de id ile. Onlar /communities/{id}/posts altında okunur.

Parametreler

AdTürAnlamı
handleyoldastringzorunluBir profilin kısa adı.
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/profiles/mara/posts?limit=20"

Yanıt

Bir sayfa Post ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304400401404429

Topluluklar

Bu sunucunun açık toplulukları ve gönderileri. Dahili ve gizli olanlara bir anahtarla ulaşılamaz.

GET/api/v2/communities

Bu sunucunun açık toplulukları.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Zamana göre değil, üye sayısına göre sıralanır, bu yüzden bu liste sayfalanmaz ve next her zaman null’dır.

Parametreler

AdTürAnlamı
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/communities?limit=20"

Yanıt

Bir sayfa Community ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
      "name": "Urban Gardening",
      "description": "Balconies, allotments, rooftops: whatever grows.",
      "tags": [
        "garden",
        "bees"
      ],
      "members": 312,
      "joinPolicy": "open",
      "visibility": "open"
    }
  ],
  "next": null
}

Olası durumlar: 200304401429

GET/api/v2/communities/{id}

Tek bir topluluk, id değeriyle.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Parametreler

AdTürAnlamı
idyoldastringzorunluBir topluluğun id değeri.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"

Yanıt

Bir Community ile yanıt verir.

Örnek
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening",
  "description": "Balconies, allotments, rooftops: whatever grows.",
  "tags": [
    "garden",
    "bees"
  ],
  "members": 312,
  "joinPolicy": "open",
  "visibility": "open"
}

Olası durumlar: 200304400401404429

GET/api/v2/communities/{id}/posts

Bir topluluğun açık gönderileri, en yenisi önce.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Herkese açık yollarda tepkiler sayılmaz: counts.likes ve counts.reposts 0, pinned ise false olur (bir kesit, bir ölçüm değil).

Parametreler

AdTürAnlamı
idyoldastringzorunluBir topluluğun id değeri.
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts?limit=20"

Yanıt

Bir sayfa Post ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304400401404429

Keşfet

Şu anda ne konuşulduğu, gönderilerde, profillerde ve etiketlerde arama, ve sunucunun kendi emojileri.

GET/api/v2/tags

Şu anda öne çıkan etiketler.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Şu anda gündemde olan etiketler, en çok gönderisi olan önce. Sayfalanmaz: limit yalnızca listeyi kısaltır.

Parametreler

AdTürAnlamı
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/tags?limit=10"

Yanıt

Bir sayfa Tag ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "tag": "garden",
      "posts": 58
    }
  ],
  "next": null
}

Olası durumlar: 200304401429

GET/api/v2/search

Gönderilerde, adlarda, kısa adlarda ve etiketlerde arama.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Yalnızca herkese açık olanda arar: topluluk dışındaki gönderiler, profiller ve etiketler. limit tür başına sayılır: 20, 20 gönderi, 20 profil ve 20 etikete kadar getirebilir.

Parametreler

AdTürAnlamı
qadrestestringzorunluAranan sözcükler.
typeadrestestringisteğe bağlıHangi tür sonuç. Verilmezse her tür.allpostsprofilestags
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/search?q=garden&type=posts"

Yanıt

Bir SearchResult ile yanıt verir.

Örnek
{
  "posts": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "profiles": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "tags": [
    {
      "tag": "garden",
      "posts": 58
    }
  ]
}

Olası durumlar: 200304400401429

GET/api/v2/emojis

Sunucunun kendi emojileri, görsellerinin adresiyle birlikte.

  • Yetki read
  • ETag ile
  • v2.1 sürümünden beri

Metinlerde bu sunucunun bir emojisi :name: olarak durur. Onu bu listedeki görselle değiştir; listede olmayan bir ad metin olarak kalır: silinmiştir ya da hiç var olmamıştır.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/emojis"

Yanıt

Bir sayfa Emoji ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "name": "tellmelo",
      "url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
    }
  ],
  "next": null
}

Olası durumlar: 200304401429

Hesabın

Kendi profilin ve akışın, uygulamanın senin için bir araya getirdiği gibi.

GET/api/v2/me

Kendi profilin, diğer yolların beklediği id ile.

  • Yetki read
  • ETag ile
  • v2.0 sürümünden beri

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/me"

Yanıt

Bir Profile ile yanıt verir.

Örnek
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

Olası durumlar: 200304401429

GET/api/v2/feed

Kendi akışın, uygulamanın derlediği hâliyle.

  • Yetki read
  • sayfalanabilir
  • v2.0 sürümünden beri

Burada ETag yok: sıra zamanla değişir, bu yüzden her yanıt farklıdır. Başlamış bir liste yine de sonuna kadar aynı kalır: next onun başladığı anı taşır.

Parametreler

AdTürAnlamı
tabadrestestringisteğe bağlıHangi akış: for-you, following, latest ya da bookmarks. Varsayılan latest.for-youfollowinglatestbookmarks
tagadrestestringisteğe bağlıYalnızca bu etiketi taşıyan gönderiler. Verilmezse süzgeç yok.
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/feed?tab=following&limit=20"

Yanıt

Bir sayfa Post ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200400401429

Bildirimler

Hesabın etrafında olup bitenler, sayfa sayfa okunabilir, böylece bir program kaçırdıklarını yakalayabilir.

GET/api/v2/notifications

Kendi bildirimlerin, en yenisi önce, sayfalanabilir, böylece bir program kaçırdığını sonradan alabilir.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Okumak hiçbir şeyi okundu olarak işaretlemez; bunu POST /notifications/read yapar. Aynı gönderiyle ilgili aynı türden birkaç olay tek satırda toplanır ve more kaç tane olduğunu söyler.

Parametreler

AdTürAnlamı
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/notifications?limit=20"

Yanıt

Bir sayfa Notification ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "3f2e1d0c-9b8a-4765-8432-10fedcba9876",
      "kind": "like",
      "text": null,
      "actor": {
        "handle": "jon",
        "name": "Jon"
      },
      "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "read": false,
      "more": 2,
      "createdAt": 1758624300000,
      "updatedAt": 1758624900000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304401429

POST/api/v2/notifications/read

Bildirimlerini okundu olarak işaretlemek.

  • Yetki write
  • v2.0 sürümünden beri

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/notifications/read"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200401403429

Mesajlar

Gelen kutun ve sohbetlerin. Bir sohbetin kendine ait bir kimliği yoktur; diğer hesabın adını taşır.

GET/api/v2/conversations

Posta kutun: her sohbet için bir satır, en yenisi önce.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Parametreler

AdTürAnlamı
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/conversations?limit=20"

Yanıt

Bir sayfa Conversation ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "with": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
      "handle": "jon",
      "name": "Jon",
      "excerpt": "See you on Saturday at the market!",
      "truncated": false,
      "fromMe": true,
      "lastMessageId": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
      "unread": 0,
      "updatedAt": 1758624060000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304401429

GET/api/v2/conversations/{with}/messages

Bir sohbetin mesajları, en yenisi önce.

  • Yetki read
  • sayfalanabilir
  • ETag ile
  • v2.0 sürümünden beri

Okumak hiçbir şeyi okundu olarak işaretlemez: arka planda veri çeken bir program kimseye bir şey göstermemiştir. Bunu POST /conversations/{with}/read yapar.

Parametreler

AdTürAnlamı
withyoldastringzorunluKonuştuğun hesabın id değeri. Bir sohbetin kendine ait bir id değeri yoktur: o, karşı hesaptır, posta kutusunun with dediği değerin aynısı.
limitadresteintegeristeğe bağlıBir sayfada kaç kayıt olduğu: varsayılan 20, en çok 50.
cursoradrestestringisteğe bağlıNereden devam edileceği: önceki yanıtın next değeri. Olmadan en baştan.

Örnek istek

curl \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages?limit=20"

Yanıt

Bir sayfa Message ile yanıt verir, `items` ve `next` olarak.

Örnek
{
  "items": [
    {
      "id": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
      "text": "See you on Saturday at the market!",
      "from": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "to": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
      "read": true,
      "media": [],
      "replyTo": null,
      "createdAt": 1758624060000
    }
  ],
  "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}

Olası durumlar: 200304400401404429

POST/api/v2/conversations/{with}/messages

Bir sohbete mesaj göndermek.

  • Yetki write
  • v2.0 sürümünden beri

Uygulamadakiyle aynı kurallar geçerlidir: seni engelleyen birine yazılamaz ve karşı tarafın ayarları dikkate alınır. Yanıt o zaman nedenini söyler.

Görseller API üzerinden henüz eklenemiyor, yalnızca uygulamada.

Parametreler

AdTürAnlamı
withyoldastringzorunluKonuştuğun hesabın id değeri. Bir sohbetin kendine ait bir id değeri yoktur: o, karşı hesaptır, posta kutusunun with dediği değerin aynısı.
textgövdedestringzorunluMetnin kendisi: gönderinin, yanıtın ya da mesajın.
replyTogövdedestringisteğe bağlıBu mesajın yanıt verdiği, bu konuşmadaki önceki bir mesajın id değeri. 2.2’den beri.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"See you on Saturday at the market!"}' \
  "https://tellmelo.com/api/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200400401403404429

POST/api/v2/conversations/{with}/read

Bir sohbetin bütün mesajlarını okundu olarak işaretle.

  • Yetki write
  • v2.1 sürümünden beri

Parametreler

AdTürAnlamı
withyoldastringzorunluKonuştuğun hesabın id değeri. Bir sohbetin kendine ait bir id değeri yoktur: o, karşı hesaptır, posta kutusunun with dediği değerin aynısı.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  "https://tellmelo.com/api/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200400401403404429

İlişkiler

Beğenmek, kaydetmek, yeniden paylaşmak, takip etmek, katılmak ve engellemek: hepsi için tek yol, active ile kurulur ve geri alınır.

POST/api/v2/relations

Beğenmek, kaydetmek, paylaşmak, takip etmek, katılmak, engellemek, sessize almak, kind değerine göre.

  • Yetki write
  • v2.0 sürümünden beri

target, like, save ve repost için bir gönderi, join için bir topluluk, follow, block ve mute için bir hesaptır, her zaman id ile. active: false ilişkiyi geri alır. Bir engellemenin üzerinden kimse takip edemez, hiçbir yönde. Sessize almayı yalnızca sessize alan görür.

Parametreler

AdTürAnlamı
kindgövdedestringzorunluHangi ilişki: like, save, repost, follow, join, block ya da mute (2.2 sürümünden beri).likesaverepostfollowjoinblockmute
targetgövdedestringzorunluİlişkinin gösterdiği şey, id değeriyle: kind değerine göre bir gönderi, bir profil ya da bir topluluk.
activegövdedebooleanisteğe bağlıİlişkinin geçerli olup olmayacağı: true kurar, false geri alır.

Örnek istek

curl -X POST \
  -H "Authorization: Bearer tm_key_…" \
  -H "Content-Type: application/json" \
  -d '{"kind":"like","target":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","active":true}' \
  "https://tellmelo.com/api/v2/relations"

Yanıt

Bir Ok ile yanıt verir.

Örnek
{
  "ok": true
}

Olası durumlar: 200400401403429

Nesneler

Bir yanıtta bulunabilecek her şey, alan alan. Her alan her zaman vardır; türler JSON türleridir ve [] bir liste demektir.

Service

Kökün yanıtı: kimin yanıt verdiği ve bu anahtarın neler yapabildiği.

AlanTürAnlamı
namestringHer zaman tellmelo.
versionstringAPI’nin sürümü, örneğin 2.1.
scopestringBu anahtarın neler yapabildiği: read ya da read write.
rateLimitRateLimitBu anahtarın kotası.
docsstringBu belgelerin nerede olduğu, bu sunucuda bir yol olarak.
specstringMakinece okunabilir açıklamanın nerede olduğu.
Örnek
{
  "name": "tellmelo",
  "version": "2.6",
  "scope": "read write",
  "rateLimit": {
    "limit": 120,
    "remaining": 117
  },
  "docs": "/legal/api",
  "spec": "/api/v2/openapi.json"
}

RateLimit

Bu anahtarın içinde bulunulan dakikadaki kotası.

AlanTürAnlamı
limitintegerDakikadaki istek sayısı.
remainingintegerBu dakikada kaç tane kaldığı.
Örnek
{
  "limit": 120,
  "remaining": 117
}

Post

Bir gönderi: ister herkese açık, ister akışından, ister bir aramadan gelsin, her yerde aynı biçim.

AlanTürAnlamı
idstringGönderinin kimliği.
textstringya da nullYazıldığı haliyle metin (yalnızca anket ya da yalnızca görsellerden oluşan bir gönderide null).
kindstringGönderinin ne olduğu.
  • post — Metin, görsel ya da alıntı içeren bir gönderi.
  • poll — Anket içeren bir gönderi.
authorProfileBriefKimin yazdığı.
communityCommunityBriefya da nullYazıldığı topluluk (hiçbir topluluğun içinde değilse null).
mediaMedia[]Görselleri, sırasıyla; yoksa boş.
pollPollya da nullAnket (yoksa null).
quotesstringya da nullBu gönderinin alıntıladığı gönderinin kimliği.
continuesstringya da nullBu gönderinin ek olarak devam ettirdiği gönderinin kimliği.
countsCountsYanıtlar, beğeniler ve yeniden paylaşımlar.
pinnedbooleanYazarının profilinin en üstüne sabitlenip sabitlenmediği.
createdAtintegerNe zaman yazıldığı.
Örnek
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "text": "The bees are back in the garden 🐝 #garden",
  "kind": "poll",
  "author": {
    "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
    "handle": "mara",
    "name": "Mara 🌻",
    "verified": true,
    "accountKind": "person"
  },
  "community": {
    "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
    "name": "Urban Gardening"
  },
  "media": [
    {
      "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
    }
  ],
  "poll": {
    "options": [
      {
        "text": "Lavender",
        "votes": 12
      },
      {
        "text": "Sunflowers",
        "votes": 7
      },
      {
        "text": "Clover",
        "votes": 3
      }
    ],
    "total": 22,
    "multiple": false,
    "endsAt": 1758710400000,
    "running": true,
    "resultsVisible": true,
    "myVotes": [
      0
    ]
  },
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 4,
    "likes": 31,
    "reposts": 2
  },
  "pinned": false,
  "createdAt": 1758624000000
}

Reply

Bir gönderinin altındaki yanıt: iki alanı fazla olan bir gönderi.

Post nesnesinin her alanı, ayrıca:

AlanTürAnlamı
postIdstringBütün sohbetin bağlı olduğu gönderi.
parentIdstringya da nullBu yanıtın yanıt verdiği yanıt (doğrudan gönderiye yanıt veriyorsa null).
Örnek
{
  "id": "9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a",
  "text": "Same here, the lavender is full of them.",
  "kind": "post",
  "author": {
    "id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
    "handle": "jon",
    "name": "Jon",
    "verified": false,
    "accountKind": "person"
  },
  "community": null,
  "media": [],
  "poll": null,
  "quotes": null,
  "continues": null,
  "counts": {
    "replies": 0,
    "likes": 3,
    "reposts": 0
  },
  "pinned": false,
  "createdAt": 1758624600000,
  "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "parentId": null
}

Counts

Bir gönderinin kaç yanıtı, beğenisi ve yeniden paylaşımı olduğu.

AlanTürAnlamı
repliesintegerYanıtlar, bütün düzeyler birlikte.
likesintegerBeğeniler.
repostsintegerYeniden paylaşımlar.
Örnek
{
  "replies": 4,
  "likes": 31,
  "reposts": 2
}

Media

Bir gönderinin ya da mesajın görseli.

AlanTürAnlamı
urlstringGörselin bu sunucuya göre göreli adresi. Başlıkta anahtarla yükle.
Örnek
{
  "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
}

Poll

Bir gönderinin anketi.

AlanTürAnlamı
optionsPollOption[]Seçenekler, sırasıyla. Oy verirken option 0’dan sayılır.
totalintegerToplamda kaç oy olduğu: dağılım saklanırken bile, her zaman.
multiplebooleanBirden fazla seçenek seçilip seçilemeyeceği.
endsAtintegerya da nullAnketin ne zaman bittiği (sonu yoksa null).
runningbooleanHâlâ oy verilip verilemeyeceği.
resultsVisiblebooleanSeçenek başına oyların gösterilip gösterilmediği (bkz). votes.
myVotesinteger[]Seçtiğin seçenekler, 0’dan sayılarak.
Örnek
{
  "options": [
    {
      "text": "Lavender",
      "votes": 12
    },
    {
      "text": "Sunflowers",
      "votes": 7
    },
    {
      "text": "Clover",
      "votes": 3
    }
  ],
  "total": 22,
  "multiple": false,
  "endsAt": 1758710400000,
  "running": true,
  "resultsVisible": true,
  "myVotes": [
    0
  ]
}

PollOption

Bir anketin bir seçeneği.

AlanTürAnlamı
textstringSeçenek.
votesintegerya da nullAldığı oylar (sonuç saklandığı sürece null).
Örnek
{
  "text": "Lavender",
  "votes": 12
}

ProfileBrief

Başka nesnelerin içinde göründüğü haliyle bir profil: yazar olarak, bir aramada.

AlanTürAnlamı
idstringHesabın kimliği: /relations ve /conversations/{with} yollarının beklediği değer.
handlestring@ olmadan kısa ad. Profil adresinin parçasıdır ve emoji içeremez.
namestringGörünen ad. :name: dahil emoji içerebilir.
verifiedbooleanHesabın doğrulanıp doğrulanmadığı.
accountKindstringNe tür bir hesap olduğu.
  • person — Bir kişi.
  • business — Bir işletme.
  • association — Bir dernek.
  • automated — Bot gibi otomatik bir hesap.
Örnek
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person"
}

Profile

Açıklaması ve takipçileriyle tek başına bir profil.

ProfileBrief nesnesinin her alanı, ayrıca:

AlanTürAnlamı
aboutstringya da nullAçıklama (yoksa null).
websitestringya da nullProfilin web sitesi (yoksa null). 2.3 sürümünden beri.
websiteVerifiedbooleanWeb sitesinin rel=me ile bu profile geri bağlantı verip vermediği, son bir hafta içinde kontrol edildi. 2.3 sürümünden beri.
followersintegerKaç hesabın onu takip ettiği.
createdAtintegerHesabın ne zaman oluşturulduğu.
Örnek
{
  "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "handle": "mara",
  "name": "Mara 🌻",
  "verified": true,
  "accountKind": "person",
  "about": "Beekeeper, allotment, too many seeds. :tellmelo:",
  "website": "https://mara-imkerei.example/",
  "websiteVerified": true,
  "followers": 148,
  "createdAt": 1750848000000
}

CommunityBrief

Bir gönderinin yazıldığı topluluk.

AlanTürAnlamı
idstringTopluluğun kimliği.
namestringya da nullAdı.
Örnek
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening"
}

Community

Bu sunucunun bir topluluğu.

AlanTürAnlamı
idstringTopluluğun kimliği.
namestringAdı.
descriptionstringya da nullAçıklama (yoksa null).
tagsstring[]Ele aldığı konular.
membersintegerKaç üyesi olduğu.
joinPolicystringİçeri nasıl girildiği.
  • open — Herkes katılabilir.
  • application — Katılmak, topluluğun kabul ettiği bir başvuru gerektirir.
  • invite — Yalnızca davetle.
visibilitystringOnu kimin görebildiği. Bir anahtarla her zaman open: diğerlerine ulaşılamaz.
  • open — Herkese görünür.
Örnek
{
  "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
  "name": "Urban Gardening",
  "description": "Balconies, allotments, rooftops: whatever grows.",
  "tags": [
    "garden",
    "bees"
  ],
  "members": 312,
  "joinPolicy": "open",
  "visibility": "open"
}

Tag

Bir etiket ve onu taşıyan gönderi sayısı.

AlanTürAnlamı
tagstring# olmadan etiket.
postsintegerOnu taşıyan yakın tarihli gönderi sayısı.
Örnek
{
  "tag": "garden",
  "posts": 58
}

SearchResult

Bir aramanın bulduğu: üç liste, her biri boş olabilir, asla eksik değildir.

AlanTürAnlamı
postsPost[]Eşleşen gönderiler, en yeni önce.
profilesProfileBrief[]Eşleşen profiller, kısa ada göre.
tagsTag[]Eşleşen etiketler, en çok kullanılan önce.
Örnek
{
  "posts": [
    {
      "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
      "text": "The bees are back in the garden 🐝 #garden",
      "kind": "poll",
      "author": {
        "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
        "handle": "mara",
        "name": "Mara 🌻",
        "verified": true,
        "accountKind": "person"
      },
      "community": {
        "id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
        "name": "Urban Gardening"
      },
      "media": [
        {
          "url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918"
        }
      ],
      "poll": {
        "options": [
          {
            "text": "Lavender",
            "votes": 12
          },
          {
            "text": "Sunflowers",
            "votes": 7
          },
          {
            "text": "Clover",
            "votes": 3
          }
        ],
        "total": 22,
        "multiple": false,
        "endsAt": 1758710400000,
        "running": true,
        "resultsVisible": true,
        "myVotes": [
          0
        ]
      },
      "quotes": null,
      "continues": null,
      "counts": {
        "replies": 4,
        "likes": 31,
        "reposts": 2
      },
      "pinned": false,
      "createdAt": 1758624000000
    }
  ],
  "profiles": [
    {
      "id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
      "handle": "mara",
      "name": "Mara 🌻",
      "verified": true,
      "accountKind": "person"
    }
  ],
  "tags": [
    {
      "tag": "garden",
      "posts": 58
    }
  ]
}

Emoji

Bu sunucunun bir emojisi.

AlanTürAnlamı
namestringİki nokta üst üste arasında durduğu haliyle ad.
urlstringGörselin bu sunucuya göre göreli adresi.
Örnek
{
  "name": "tellmelo",
  "url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}

Notification

Bir bildirim. Bir satır aynı türden birkaç olayı toplayabilir.

AlanTürAnlamı
idstringBildirimin kimliği.
kindstringNe olduğu.
  • reply — Biri sana yanıt verdi.
  • like — Biri gönderini beğendi.
  • repost — Biri gönderini yeniden paylaştı.
  • follow — Biri seni takip ediyor.
  • mention — Biri senden bahsetti.
  • group_mention — Biri yönettiğin bir gruptan bahsetti; text onun adıdır.
  • message — Biri sana mesaj yazdı.
  • scheduled — Zamanlanmış bir gönderin yayımlandı.
  • reminder — Kaydedilen bir gönderi için hatırlatma zamanı geldi.
  • report — Gönderdiğin bir şikâyetin ne olduğu.
  • moderation — Hesabınla ilgili bir karar: bir uyarı, bir kısıtlama, bir itiraz.
  • team — Yalnızca sahipler, yöneticiler ve moderatörler için ekibe yeni iş: bildirimler, itirazlar, gönderilen bağlantılar, talepler, doğrulama başvuruları ve iptaller.
textstringya da nullYalnızca şikâyetlerde ve moderasyonda: ona eşlik eden metin. Aksi halde null: bir bildirimin cümlesini senin programın kurar.
actorActorKimin yaptığı.
postIdstringya da nullİlgili gönderi (hiçbir gönderiyle ilgili değilse null).
readbooleanOkundu olarak işaretlenip işaretlenmediği.
moreintegerBu satırın, adı geçen olayın ötesinde kaç olay daha temsil ettiği.
createdAtintegerİlk ne zaman olduğu.
updatedAtintegerSon kez ne zaman bir olay daha topladığı. Liste buna göre sıralanır.
Örnek
{
  "id": "3f2e1d0c-9b8a-4765-8432-10fedcba9876",
  "kind": "like",
  "text": null,
  "actor": {
    "handle": "jon",
    "name": "Jon"
  },
  "postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "read": false,
  "more": 2,
  "createdAt": 1758624300000,
  "updatedAt": 1758624900000
}

Actor

Bir bildirimi kimin tetiklediği.

AlanTürAnlamı
handlestringKısa ad.
namestringGörünen ad.
Örnek
{
  "handle": "jon",
  "name": "Jon"
}

Conversation

Gelen kutunun bir satırı.

AlanTürAnlamı
withstringDiğer hesabın kimliği: /conversations/{with}/messages yolunun beklediği değer.
handlestringOnun kısa adı.
namestringOnun görünen adı.
excerptstringya da nullSon mesajın başı (metni yoksa null).
truncatedbooleanAlıntının kısaltılıp kısaltılmadığı.
fromMebooleanSon mesajın senden olup olmadığı.
lastMessageIdstringSon mesajın kimliği.
unreadintegerOnun mesajlarından kaçını henüz okumadığın.
updatedAtintegerSon mesajın ne zaman yazıldığı.
Örnek
{
  "with": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "handle": "jon",
  "name": "Jon",
  "excerpt": "See you on Saturday at the market!",
  "truncated": false,
  "fromMe": true,
  "lastMessageId": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
  "unread": 0,
  "updatedAt": 1758624060000
}

Message

Bir sohbetteki mesaj.

AlanTürAnlamı
idstringMesajın kimliği.
textstringya da nullMetin (yalnızca görsellerden oluşan bir mesajda null).
fromstringOnu yazan hesabın kimliği.
tostringKime yazıldığı, hesabın kimliği olarak.
readbooleanAlıcının onu okuyup okumadığı.
mediaMedia[]Görselleri; yoksa boş.
replyTostringya da nullBu mesajın yanıtladığı mesajın id değeri (hiçbirini yanıtlamıyorsa null). 2.2 sürümünden beri.
createdAtintegerNe zaman gönderildiği.
Örnek
{
  "id": "7c6b5a49-3827-4165-9f0e-d1c2b3a49586",
  "text": "See you on Saturday at the market!",
  "from": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
  "to": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
  "read": true,
  "media": [],
  "replyTo": null,
  "createdAt": 1758624060000
}

Created

Bir şey oluşturan yazma işleminin yanıtı.

AlanTürAnlamı
idstringOluşturulan şeyin kimliği.
scheduledForintegerya da nullYayın zamanlandıysa ne zaman görüneceği (aksi halde null).
deleteAtintegerya da nullAyarlandıysa kendini ne zaman sileceği (aksi halde null).
Örnek
{
  "id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
  "scheduledFor": null,
  "deleteAt": null
}

Ok

Geri verecek bir şeyi olmayan yazma işleminin yanıtı.

AlanTürAnlamı
okbooleanHer zaman true.
Örnek
{
  "ok": true
}

Makinenin okuyabildiği tanım

Bu sayfanın kurulduğu tablonun aynısı /api/v2/openapi.json adresinde durur: yollar, parametreler, yetkiler ve geri dönen biçimler. Bir istemci üreteci onu okuyabilir ve API’den uzaklaşamaz, çünkü sayfa, yönlendirici ve tanım tek bir listeden gelir.

https://tellmelo.com/api/v2/openapi.json

v1’e ne oldu

v1 kaldırıldı. /api/v1/ altındaki eski yollar 410 yanıtı verir ve gövdede nereye gidileceğini söyler. Yönlendirme yok, çünkü v2 başka bir biçimde yanıt verir ve onu izleyen bir program okuyamayacağı bir 200 alırdı. O sırada henüz herkese açık hesap yoktu, dolayısıyla üzerinde programı olan kimse de yoktu; sonra kaldırmak, hiç kaldırmamak demek olurdu.

Beklediğimiz

Her yerdekiyle aynı ilkeler: taciz yok, spam yok, hakkın olmayan başkasının içeriği yok. Program hiçbir şeyi mazur göstermez: anahtarının yazdığından sen sorumlusun.

tellmelo’ya dön