المحتويات أريد أن … اختر ما تنويه؛ ستجد أدناه الخطوات اللازمة له فقط. المرجع الكامل يأتي بعد ذلك.
أبني روبوتًا أربط تطبيقي أتيح تسجيل الدخول بـ tellmelo على موقعي أضمّن صور GIF ومقاطع فيديوأنشئ الروبوت في إحدى مجموعاتك، من قائمة المجموعة في «الروبوتات ← روبوتاتي»، مع صورة واسم و@اسم. لا ترى رمزه إلا مرة واحدة. شارك رابط «إضافة روبوت» الخاص به أو قدّمه لدليل الروبوتات، حيث يظهر بعد مراجعة الفريق؛ ومن يحق له إدارة الأدوار في مجموعة يقبله بالصلاحيات التي يوافق عليها. استقبل ما يحدث في مجموعاته كتدفق (GET /v2/events/stream) أو على عنوانك، واكتب عبر POST /v2/channels/{id}/messages. المزيد في الروبوتات . سجّل الأوامر (PUT /v2/me/commands) وأجب ببطاقات وأزرار؛ ويشغّل الروبوت الموسيقى بمقعد في قناة صوتية (POST /v2/channels/{id}/voice). نظرة عامة يتيح v2 لبرامجك الخاصة التحدث إلى tellmelo: مفتاح لكل طلب، وJSON في الرد، وكل القوائم تُقسَّم إلى صفحات بالطريقة نفسها. تسري القواعد نفسها كما في التطبيق.
كل مسار يبدأ بـhttps://api.tellmelo.com/v2. الطلبات والردود بصيغة JSON بترميز UTF-8. أسماء الحقول والرموز والقيم إنجليزية وتبقى إنجليزية. يعمل المفتاح بصفته حسابك: ما لا تراه في التطبيق لا يستطيع قراءته أيضًا. https://api.tellmelo.com/v2بداية سريعة أنشئ مفتاحًا في «قسم المطورين ← API» وانسخه. يُعرض مرة واحدة فقط. استدعِ الجذر به. يُظهر الرد الإصدار وحقوق المفتاح والطلبات المتبقية في هذه الدقيقة. كل المسارات تعمل بالطريقة نفسها: المفتاح في الترويسة، وJSON في الرد، وitems وnext للقوائم. curl -H "Authorization: Bearer tm_key_…" https://api.tellmelo.com/v2{
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}التالي: /me لملفك الشخصي، و/posts للمنشورات العامة، و/feed لخلاصتك.
جرّبه اختر مهمة، واملأ الحقول، وانسخ الطلب أو أرسله من هنا. الكتابة تطلب التأكيد أولًا. تقرأ الشيفرة المفتاح من TELLMELO_KEY.
المهمة GET / GET /posts GET /posts/{id} POST /posts DELETE /posts/{id} GET /me/scheduled POST /posts/{id}/schedule POST /posts/{id}/edit GET /posts/{id}/reply-settings PUT /posts/{id}/reply-settings POST /posts/{id}/coauthor DELETE /posts/{id}/coauthor POST /posts/{id}/pin GET /posts/{id}/replies POST /posts/{id}/replies POST /replies/{id}/edit DELETE /replies/{id} POST /replies/{id}/like POST /replies/{id}/vote POST /replies/{id}/pick GET /posts/{id}/replies/waiting POST /replies/{id}/decide GET /posts/{id}/replies/planned PUT /me/planned-replies/{id} POST /me/planned-replies/{id}/send DELETE /me/planned-replies/{id} POST /posts/{id}/vote GET /profiles/{handle} GET /profiles/{handle}/posts GET /profiles/{handle}/events POST /me/events PUT /me/events/{id} DELETE /me/events/{id} GET /me/events/{id}/signups POST /events/{id}/signup GET /communities GET /communities/{id} GET /communities/{id}/posts GET /communities/{id}/members GET /communities/{id}/roles GET /communities/{id}/bell GET /invites/{code} PUT /roles/{id}/self GET /communities/{id}/emojis PUT /communities/{id}/bell POST /invites/{code}/join GET /communities/{id}/bots GET /communities/{id}/channels GET /channels/{id}/messages POST /channels/{id}/messages POST /channels/{id}/read DELETE /channel-messages/{id} GET /communities/{id}/voice POST /communities/{id}/emojis DELETE /communities/{id}/emojis/{name} POST /communities/{id}/roles PUT /roles/{id} DELETE /roles/{id} PUT /communities/{id}/roles/order PUT /roles/{id}/members/{member} POST /communities/{id}/channels PUT /channels/{id} DELETE /channels/{id} PUT /communities/{id}/channels/order PUT /communities/{id}/channels/shape GET /channels/{id}/overrides PUT /channels/{id}/overrides/{role} POST /communities/{id}/categories PUT /categories/{id} DELETE /categories/{id} PUT /communities/{id}/feed GET /communities/{id}/invites POST /communities/{id}/invites DELETE /invites/{code} POST /channel-messages/{id}/remove POST /communities/{id}/posts/{post}/remove DELETE /communities/{id}/members/{member} PUT /communities/{id}/members/{member}/timeout DELETE /communities/{id}/members/{member}/timeout GET /communities/{id}/bans PUT /communities/{id}/bans/{member} DELETE /communities/{id}/bans/{member} GET /communities/{id}/log POST /communities PUT /communities/{id} GET /events GET /events/stream GET /me/commands PUT /me/commands POST /interactions/{id}/reply POST /channels/{id}/voice GET /tags GET /search GET /emojis GET /media GET /media/mine GET /media/{id} POST /media/uploads POST /media/{id} DELETE /media/{id} GET /me GET /feed POST /me/pictures PUT /me/profile GET /me/emojis POST /me/emojis/pictures POST /me/emojis DELETE /me/emojis/{name} PUT /me/emojis/sharing GET /me/webhooks POST /me/webhooks DELETE /me/webhooks/{id} POST /me/webhooks/{id}/test GET /notifications POST /notifications/read GET /conversations GET /conversations/{with}/messages POST /conversations/{with}/messages POST /conversations/{with}/read DELETE /conversations/{with}/messages/{id} POST /conversations/{with}/planned GET /me/planned-messages POST /me/planned-messages/{id}/send DELETE /me/planned-messages/{id} POST /relations GET /profiles/{handle}/followers GET /profiles/{handle}/following GET /me/relations GET /me/collections POST /me/collections PUT /me/collections/{id} DELETE /me/collections/{id} GET /me/collections/{id}/posts POST /me/collections/{id}/posts GET /partner/quota GET /partner/gifts POST /partner/gifts GET /gift-drops POST /gift-drops read إصدار API واسم هذا الخادم.
curl \
-H "Authorization: Bearer $TELLMELO_KEY" \
"https://api.tellmelo.com/v2"مفتاحك حتى 10 مفاتيح لكل حساب، لكل منها اسم وصلاحيات خاصة وتاريخ انتهاء إن شئت. يبدأ المفتاح بـ tm_key_ ويُعرض مرة واحدة فقط. فقدته؟ جدّده، فتتوقف القيمة القديمة عن العمل.
تنشئه في «قسم المطورين ← API». ويُرسل في ترويسة الطلب:
curl -H "Authorization: Bearer tm_key_…" \
https://api.tellmelo.com/v2/postsأو، إن كان ذلك أسهل، في ترويسة خاصة به:
curl -H "X-Tellmelo-Key: tm_key_…" https://api.tellmelo.com/v2ليس في عنوان URL: سينتهي به الأمر في السجلات وسجل المتصفح.
المفتاح نفسه يحمّل الصور: كل url يشير إلى /api/media؛ أرسل المفتاح في الترويسة هناك أيضًا.
curl -H "Authorization: Bearer tm_key_…" \
-o picture.webp "https://api.tellmelo.com/media?id=…"ما يمكن للمفتاح فعله يستطيع المفتاح القراءة دائمًا، وإن سمحت له أيضًا الكتابة والإهداء ورفع الوسائط وإدارة المجموعات. يذكر كل مسار أدناه ما يحتاجه:
read : القراءة. المنشورات العامة والملفات الشخصية والمجموعات والوسوم، إضافة إلى خلاصتك وإشعاراتك ورسائلك وقنوات مجموعاتك.write : التصرف. النشر والرد والتصويت وإرسال الرسائل والكتابة في دردشة مجموعة والمتابعة والانضمام والحظر وتعليم الإشعارات كمقروءة.gifts : الإهداء. من حصة شريك إلى عضو، وهدايا تحت منشور جديد. حق مستقل، كي لا يستطيع مفتاح مخصص للنشر أن يهدي شيئًا أبدًا.media : مكتبة الوسائط الخاصة بك. رفع صور GIF ومقاطع الفيديو وتعديلها ومشاركتها وإزالتها. إذن مستقل، لأن عمليات الرفع تستهلك نقاط الفيديو في الحساب. للعثور على GIF ومقاطع فيديو مشتركة يكفي read .groups : إدارة المجموعات. الأدوار والقنوات والفئات وروابط الدعوة وقناة الخلاصة والإزالة والكتم والطرد والحظر، بقدر ما يحق لحسابك في المجموعة. صلاحية مستقلة، حتى لا يغيّر مفتاح للنشر أبدًا من يحق له ماذا في مجموعة.ما لا يستطيعه أي مفتاح لا يصل أي مفتاح إلى كلمة المرور أو البريد الإلكتروني أو نوع الحساب أو المكان أو الدور أو الحذف أو الجلسات أو أجهزة الإشعارات أو المفاتيح الأخرى، ولا إلى الإدارة أو قيادة المجموعات. ما تحميه كلمة المرور لا يستطيعه أي مفتاح.
البوتات البوت حساب مستقل من نوع bot للمجموعات: بلا كلمة مرور ولا بريد، يديره برنامجك بمفتاحه الخاص. يستخدم الواجهة البرمجية نفسها كأي حساب ويستطيع في المجموعات كل ما يسمح به دوره هناك.
في إحدى مجموعاتك افتح قائمة المجموعة، ثم في «الروبوتات ← روبوتاتي» أنشئ روبوتًا بصورة وغلاف واسم واسم مستخدم ووصف. يظهر الرمز مرة واحدة فقط، وله الصلاحيات read وwrite وmedia وgroups. شارك رابط الروبوت أو قدّمه لدليل الروبوتات؛ يظهر هناك بمجرد أن يراجعه الفريق. من يحق له إدارة الأدوار في مجموعة يختار الصلاحيات؛ ينضم الروبوت ويحصل على دور خاص به. يرسل برنامجك الرمز كـ Authorization: Bearer …، ويقرأ أحداث مجموعاته كتدفق، ويعمل بالمسارات في الروبوتات والقنوات والمجموعات . روبوت صغير يقرأ الأحداث كتدفق ويرد على الأمر /ping بـ pong لمن سأل فقط:
// Node 18 or newer: reads the events of the bot's groups as they happen and answers /ping.
const BASE = 'https://api.tellmelo.com/v2';
const KEY = process.env.TELLMELO_BOT_TOKEN;
const call = (method, path, body) =>
fetch(BASE + path, {
method,
headers: { Authorization: 'Bearer ' + KEY, 'Content-Type': 'application/json' },
body: body && JSON.stringify(body),
}).then((r) => r.json());
await call('PUT', '/me/commands', { commands: [{ name: 'ping', description: 'Answers pong' }] });
let last = '';
for (;;) {
// The stream closes after ten minutes; Last-Event-ID goes on where it stopped.
const res = await fetch(BASE + '/events/stream', {
headers: { Authorization: 'Bearer ' + KEY, ...(last && { 'Last-Event-ID': last }) },
});
const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();
let buffer = '';
for (;;) {
const { value, done } = await reader.read();
if (done) break;
buffer += value;
let end;
while ((end = buffer.indexOf('
')) >= 0) {
const data = buffer.slice(0, end).split('
').find((l) => l.startsWith('data: '));
buffer = buffer.slice(end + 2);
if (!data) continue;
const event = JSON.parse(data.slice(6));
last = event.id;
if (event.type === 'command' && event.data.command === 'ping')
await call('POST', '/interactions/' + event.data.interaction + '/reply', { text: 'pong', private: true });
}
}
}الروبوت نفسه بلغة Python، يجلب الأحداث صفحة بعد صفحة:
# Python 3 with requests: the same bot, reading the events page by page.
import os, time, requests
BASE = 'https://api.tellmelo.com/v2'
H = {'Authorization': 'Bearer ' + os.environ['TELLMELO_BOT_TOKEN']}
requests.put(BASE + '/me/commands', headers=H,
json={'commands': [{'name': 'ping', 'description': 'Answers pong'}]})
since = '0'
while True:
page = requests.get(BASE + '/events', headers=H, params={'since': since}).json()
for event in page['items']:
if event['type'] == 'command' and event['data']['command'] == 'ping':
requests.post(f"{BASE}/interactions/{event['data']['interaction']}/reply",
headers=H, json={'text': 'pong'})
since = page['next'] or since
time.sleep(2)ما يحق للروبوت فعله في مجموعة يحدده دوره فيها، لا الرمز. يحمل الدور اسمه؛ تغيّر المجموعة صلاحياته في الأدوار ضمن إعدادات المجموعة، وتزيل الروبوت من قائمة المجموعة في «الروبوتات ← في هذه المجموعة». حتى 5 روبوتات لكل حساب؛ ولكل مجموعة بقدر ما تسمح مزاياها. يكتب الروبوت 30 رسالة في الدقيقة لكل مجموعة على الأكثر، ولا يظهر في البحث، ولا يكتب إلا لمن كتب إليه أولًا. تسري الحدود . تصل الأحداث أيضًا إلى عنوان HTTPS خاص بك (موقّعة مثل الويب هوكس، مع إعادة المحاولة). وإضافة إلى ذلك: أوامر (PUT /v2/me/commands) بردود للجميع أو لمن سأل فقط، وبطاقات وأزرار في الرسائل، وموسيقى في القنوات الصوتية (POST /v2/channels/{id}/voice): كلها في الروبوتات . الصفحات كل قائمة تقبل limit وcursor وتردّ بـitems وnext. أعد next بوصفه cursor لتحصل على الصفحة التالية؛ وعندما يكون next فارغًا تكون قد انتهيت. المؤشر معتم: لا تحلّله ولا تنشئه بنفسك.
{ "items": [ … ], "next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx" }
curl -H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20&cursor=MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"دون limit تحصل على 20 إدخالًا، و50 كحد أقصى. بعض القوائم لا تُقسَّم إلى صفحات؛ قيمة next فيها دائمًا null.
الجديد فقط كل رد يحمل ETag. أعِده في المرة القادمة بوصفه If-None-Match: إن لم يتغير شيء تحصل على 304 دون محتوى.
ETag: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc"
If-None-Match: W/"3Qk1mJ7fQe2Yb0sVxT9aL4pNdRc" → 304الاستثناءات: ليس لـ/feed قيمة ETag لأن ترتيبه يتغير باستمرار، وعمليات الكتابة لا تردّ أبدًا بـ304.
الحدود يمكن للمفتاح إجراء 120 طلبًا في الدقيقة، و600 مع اشتراك «منظمة»، ما لم تحدد الإدارة غير ذلك. فوق ذلك تحصل على 429 ولا يُنفَّذ شيء. انتظر دقيقة وأرسل الطلب مجددًا.
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1758624060تُحتسب عمليات الكتابة أيضًا ضمن حدود التطبيق، مثل عدد المنشورات في بضع دقائق. وهذا أيضًا يردّ بـ429 مع rate_limited.
عندما لا ينجح شيء تأتي الأخطاء بصيغة JSON: رمز إنجليزي ثابت في error لبرنامجك وجملة في message للبشر، مع رمز الحالة المناسب. قارن الرمز فقط؛ فالجملة قد تتغير.
{ "error": "rate_limited",
"message": "Too many requests. Try again in a minute.",
"limit": 120 }بعض الأخطاء تحمل حقلًا إضافيًا: docs مع 401 بسبب غياب المفتاح، وlimit مع 429.
الحالة الرمز المعنى 400bad_requestلا يمكن قراءة الطلب، أو ينقص حقل مطلوب، أو القيمة غير مسموحة. 401key_missingلا يوجد مفتاح في الترويسة. 401key_invalidالمفتاح غير صالح: خطأ في الكتابة، أو استُبدل، أو الحساب محظور. 401unauthorizedرُفض بوصفه غير مسجّل الدخول، لسبب غير المفتاح. 403scope_missingينقص المفتاح الحق المطلوب، وغالبًا write. 403account_data_lockedبيانات الحساب مثل كلمة المرور أو البريد الإلكتروني أو الحذف خارج نطاق المفاتيح. 403forbiddenلا يجوز لحسابك فعل ذلك، مثلًا بسبب حق مسحوب أو حظر. 403timed_outكتمٌ يمنع حسابك الآن من الكتابة في هذه المجموعة. 404unknown_pathلا يوجد مسار كهذا، أو ليس بهذه الطريقة. 404not_foundغير موجود، أو لا يجوز لك رؤيته. 409conflictيتعارض مع ما هو موجود بالفعل، مثل اسم مأخوذ. 409feed_offقناة الخلاصة في هذه المجموعة متوقفة. 413too_largeكبير جدًا على هذا الخادم. 422unprocessableمقروء، لكنه غير ممكن بهذا الشكل. 429rate_limitedطلبات كثيرة جدًا. لم يحدث شيء؛ انتظر وحاول مجددًا. 500internal_errorحدث خطأ ما على الخادم.
الإصدارات الإصدار موجود في المسار. ما دام مكتوبًا v2 تبقى المسارات والحقول كما هي؛ تُضاف أشياء جديدة فقط.
الإضافات ترفع الرقم الثاني. كل مسار يذكر منذ متى يوجد.
انتهى https://api.tellmelo.com/v1/: المسارات القديمة تردّ بـ410 وتذكر الطريق الجديد في المحتوى.
نقاط النهاية كل المسارات بنظرة واحدة، ثم كل واحد مع مثال.
المدخل الطلب الأول لكل برنامج: هل يعمل المفتاح، وماذا يجوز له أن يفعل؟
GET /v2إصدار API واسم هذا الخادم.
دون شرطة مائلة في النهاية: https://api.tellmelo.com/v2/ يُعيد التوجيه إلى https://api.tellmelo.com/v2 بـ308، وليس كل برنامج يتبع ذلك.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2"الرد يردّ بـService واحد.
مثال {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}الحالات الممكنة: 200304401429
المنشورات قراءة المنشورات العامة ونشر منشوراتك وإزالتها مجددًا.
GET /v2/postsالمنشورات العامة، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 في المسارات العامة تكون counts.likes وcounts.reposts دائمًا 0 وpinned هي false.
منشورات المجموعات ليست هنا بل في /communities/{id}/posts.
المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts?limit=20"الرد يردّ بصفحة من Post ، بوصفها `items` و`next`.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304401429
GET /v2/posts/{id}منشور واحد، بحسب id.
في المسارات العامة تكون counts.likes وcounts.reposts دائمًا 0 وpinned هي false.
منشورات المجموعات ليست هنا بل في /communities/{id}/posts.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"الرد يردّ بـPost واحد.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}الحالات الممكنة: 200304400401404429
POST /v2/postsنشر منشور.
يحتاج المنشور إلى نص أو استطلاع. الطول وخيارات الاستطلاع والوتيرة يحددها الخادم؛ وما زاد على ذلك يعطيك 400 أو 429.
أرفق صورًا أو GIF أو فيديو باستخدام media. الـ GIF أو الفيديو يأتي وحده. يمكنك استخدام GIF ومقاطع الفيديو التي شاركها الآخرون على tellmelo.
المنشور للأصدقاء المقربين أو مع مؤلف مشارك يُنشر فورًا، لا في مجموعة ولا مجدولًا. لا يمكن الجمع بينهما.
المعاملات الاسم النوع المعنى textفي المحتوى stringاختياري نص المنشور أو الرد أو الرسالة. communityفي المحتوى stringاختياري id المجموعة التي يذهب المنشور إلى قناة الخلاصة فيها؛ يجب أن تكون مشغّلة وأن يكون لديك الإذن. دونه يكون المنشور خارج أي مجموعة.quotesفي المحتوى stringاختياري id المنشور الذي يقتبسه هذا المنشور.pollفي المحتوى string[]اختياري خيارات الإجابة كقائمة نصوص. mediaفي المحتوى string[]اختياري معرّفات صور مرفوعة في التطبيق، أو GIF أو فيديو من مكتبة الوسائط (منذ 2.14). audienceفي المحتوى stringاختياري من يرى المنشور: everyone كل من يحق له، close أصدقاؤك المقربون فقط.everyoneclose coauthorفي المحتوى stringاختياري id حساب تدعوه للمشاركة في التأليف. يجب أن تتابعا بعضكما.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"The bees are back in the garden 🐝 #garden","audience":"everyone"}' \
"https://api.tellmelo.com/v2/posts"الرد يردّ بـCreated واحد.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}الحالات الممكنة: 200400401403429
DELETE /v2/posts/{id}إزالة أحد منشوراتك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/me/scheduledمنشوراتك التي لم تُنشر بعد، وما تنتظره.
الحق read مع ETag منذ v2.12 مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/scheduled"الرد يردّ بصفحة من ScheduledPost ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "Market day tomorrow – see you at the bee stand! #garden",
"communityId": null,
"publishAt": 1758710400000,
"deleteAt": null,
"waitingFor": "time",
"createdAt": 1758624000000
}
],
"next": null
}الحالات الممكنة: 200304401429
POST /v2/posts/{id}/scheduleتغيير موعد نشر منشور مجدول، أو موعد حذف منشور لنفسه.
منشوراتك أنت فقط. وما دامت هدايا المنشور غير مدفوعة فلا يمكن جدولته.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.publishAtفي المحتوى integerاختياري موعد نشر المنشور المجدول، بالمللي ثانية منذ 1970. deleteAtفي المحتوى integerاختياري موعد حذف المنشور لنفسه، بالمللي ثانية منذ 1970.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/schedule"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/posts/{id}/editتعديل نص أحد منشوراتك.
فقط ضمن مدة التعديل التي يمنحها اشتراكك. ولا يمكن تعديل المنشورات المجدولة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.textفي المحتوى stringمطلوب نص المنشور أو الرد أو الرسالة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"The bees are back in the garden 🐝🌻 #garden"}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/edit"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/posts/{id}/reply-settingsمن يمكنه الرد على منشورك، وهل تنتظر الردود الموافقة، والوضع البطيء.
الحق read مع ETag منذ v2.19 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"الرد يردّ بـReplySettings واحد.
مثال {
"audience": "following",
"approval": false,
"slow": "auto"
}الحالات الممكنة: 200304400401404429
PUT /v2/posts/{id}/reply-settingsتغيير إعدادات الرد لمنشورك. ما لا تذكره يبقى كما هو.
منشوراتك أنت فقط.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.audienceفي المحتوى stringاختياري من يمكنه الرد: الجميع، الحسابات التي تتابعها، المذكورون أو لا أحد.allfollowingmentionednobody approvalفي المحتوى booleanاختياري هل تظهر الردود فقط بعد موافقتك. slowفي المحتوى stringاختياري الوضع البطيء: auto يعمل تلقائيًا عند وصول ردود كثيرة، on دائمًا، off أبدًا.autoonoff
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"audience":"following","approval":false,"slow":"auto"}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/reply-settings"الرد يردّ بـReplySettings واحد.
مثال {
"audience": "following",
"approval": false,
"slow": "auto"
}الحالات الممكنة: 200400401403404429
POST /v2/posts/{id}/coauthorقبول دعوة المشاركة في التأليف أو رفضها.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.acceptفي المحتوى booleanمطلوب true يقبل الدعوة، false يرفضها.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"accept":true}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/posts/{id}/coauthorالانسحاب بصفتك مؤلفًا مشاركًا، أو إزالة المؤلف المشارك من المنشور بصفتك كاتبه.
للمؤلف المشارك ولكاتب المنشور.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/coauthor"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/posts/{id}/pinتثبيت منشورك في أعلى ملفك الشخصي أو إلغاء تثبيته.
منشوراتك الظاهرة فقط. يعتمد عدد ما يمكن تثبيته على اشتراكك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.activeفي المحتوى booleanمطلوب true يثبت المنشور، false يلغي تثبيته.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/pin"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الردود الردود تحت منشور، كقائمة مع parentId.
GET /v2/posts/{id}/repliesالردود على منشور، دون الحسابات المحظورة.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 القائمة مسطّحة وبترتيب الكتابة؛ وparentId يحوّلها إلى شجرة. تحتوي الصفحة دائمًا سلاسل كاملة. تُستبعد ردود الحسابات المحظورة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies?limit=20"الرد يردّ بصفحة من Reply ، بوصفها `items` و`next`.
مثال {
"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,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
POST /v2/posts/{id}/repliesالرد على منشور.
في الوضع البطيء، رد واحد لكل شخص كل 10 دقائق، وإلا 429. المؤلف والحسابات التي يتابعها مستثنون.
مع media صورة واحدة أو GIF أو فيديو على الأكثر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.textفي المحتوى stringمطلوب نص المنشور أو الرد أو الرسالة. parentIdفي المحتوى stringاختياري id الرد الذي يجيب عنه هذا الرد. دونه مباشرة إلى المنشور.mediaفي المحتوى string[]اختياري معرّفات صور مرفوعة في التطبيق، أو GIF أو فيديو من مكتبة الوسائط (منذ 2.14). publishAtفي المحتوى integerاختياري متى يُنشر الرد، بالميلي ثانية منذ 1970. بدونه يُنشر فورًا.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Same here, the lavender is full of them."}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies"الرد يردّ بـCreated واحد.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}الحالات الممكنة: 200400401403404429
POST /v2/replies/{id}/editتعديل نص أحد ردودك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد. textفي المحتوى stringمطلوب نص المنشور أو الرد أو الرسالة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Same here, the lavender and the clover are full of them."}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/edit"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/replies/{id}إزالة أحد ردودك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/replies/{id}/likeصوّت إيجابيًا على رد (الإعجاب تصويت إيجابي منذ صار التصويت على الردود) أو اسحب التصويت؛ يبقى التصويت السلبي.
قديم منذ 2.19: استخدم POST /replies/{id}/vote. يبقى هذا المسار حاليًا.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد. activeفي المحتوى booleanمطلوب true يضبط العلاقة، وfalse يزيلها.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/like"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/replies/{id}/voteالتصويت لرد بالإيجاب أو بالسلب، أو سحب صوتك. يجيب بصوتك والنتيجة بعده.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد. voteفي المحتوى stringمطلوب up تصويت بالإيجاب، down بالسلب، none يسحب صوتك.updownnone
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"vote":"up"}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/vote"الرد يردّ بـReplyVote واحد.
مثال {
"vote": "up",
"score": 12
}الحالات الممكنة: 200400401403404429
POST /v2/replies/{id}/pickإبراز رد تحت منشورك على أنه الأفضل، أو إلغاء الإبراز.
تحت منشوراتك فقط، ولردود مباشرة على المنشور فقط. الإبراز الجديد يحل محل القديم.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد. activeفي المحتوى booleanمطلوب true يبرز الرد، false يلغي الإبراز.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/pick"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/posts/{id}/replies/waitingالردود التي تنتظر الموافقة تحت منشور: كلها تحت منشورك، وإلا فردودك أنت فقط.
الحق read مع ETag منذ v2.19 يحدد الكاتب في إعدادات الرد ما إذا كانت الردود تنتظر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/waiting"الرد يردّ بصفحة من Reply ، بوصفها `items` و`next`.
مثال {
"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,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}
],
"next": null
}الحالات الممكنة: 200304400401404429
POST /v2/replies/{id}/decideالموافقة على رد منتظر تحت منشورك أو رفضه. الرد المرفوض يُحذف.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب معرّف الرد. approveفي المحتوى booleanمطلوب true يوافق على الرد، false يرفضه.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"approve":true}' \
"https://api.tellmelo.com/v2/replies/9e4b1c7d-2a3f-4d5e-8b6c-0f1e2d3c4b5a/decide"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/posts/{id}/replies/plannedردودك المجدولة لوقت لاحق تحت منشور.
الحق read مع ETag منذ v2.19 تتم الجدولة بـpublishAt عند الرد. 20 ردًا مجدولًا كحد أقصى في الوقت نفسه.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/replies/planned"الرد يردّ بصفحة من PlannedReply ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}الحالات الممكنة: 200304400401404429
PUT /v2/me/planned-replies/{id}تغيير نص رد مجدول أو وقته. الرد الذي فشل ينتظر من جديد.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الرد المجدول.textفي المحتوى stringاختياري نص المنشور أو الرد أو الرسالة. publishAtفي المحتوى integerاختياري متى يُنشر الرد، بالميلي ثانية منذ 1970. بدونه يُنشر فورًا.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"See you there!","publishAt":1758700000000}' \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/me/planned-replies/{id}/sendإرسال رد مجدول فورًا.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الرد المجدول.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/me/planned-replies/{id}حذف رد مجدول.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الرد المجدول.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-replies/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الاستطلاعات الاستطلاع منشور قيمة poll فيه مضبوطة. وللتصويت مسار خاص.
POST /v2/posts/{id}/voteالمشاركة في استطلاع.
الأصوات لكل خيار تكون null حتى تصوّت أو ينتهي الاستطلاع. total موجود دائمًا.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id منشور.optionفي المحتوى integerمطلوب أي خيار، العدّ من 0. في الاختيار المتعدد استدعِ مرة لكل خيار. retractفي المحتوى booleanاختياري true يسحب الصوت.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"option":0}' \
"https://api.tellmelo.com/v2/posts/5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1/vote"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الملفات الشخصية الملفات الشخصية العامة بحسب اسمها المختصر، وما نشرته.
GET /v2/profiles/{handle}ملف شخصي، بحسب اسمه المختصر.
المعاملات الاسم النوع المعنى handleفي المسار stringمطلوب الاسم المختصر لملف شخصي، بأحرف كبيرة أو صغيرة، لا فرق.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara"الرد يردّ بـProfile واحد.
مثال {
"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
}الحالات الممكنة: 200304400401404429
GET /v2/profiles/{handle}/postsالمنشورات العامة لملف شخصي واحد، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 في المسارات العامة تكون counts.likes وcounts.reposts دائمًا 0 وpinned هي false.
منشورات المجموعات ليست هنا بل في /communities/{id}/posts.
المعاملات الاسم النوع المعنى handleفي المسار stringمطلوب الاسم المختصر لملف شخصي، بأحرف كبيرة أو صغيرة، لا فرق. limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/posts?limit=20"الرد يردّ بصفحة من Post ، بوصفها `items` و`next`.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
GET /v2/profiles/{handle}/eventsالفعاليات القادمة لملف شخصي، الأقرب أولًا.
الحق read مع ETag منذ v2.19 فقط ما دام اشتراك الملف يشمل الفعاليات. لا شيء بين حسابات حظرت بعضها.
المعاملات الاسم النوع المعنى handleفي المسار stringمطلوب الاسم المختصر لملف شخصي، بأحرف كبيرة أو صغيرة، لا فرق.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/events"الرد يردّ بصفحة من Event ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
"title": "Seed swap",
"startsAt": 1758883200000,
"endsAt": 1758890400000,
"place": "Community garden",
"description": "Bring seeds, take seeds.",
"signups": {
"count": 14,
"going": true
}
}
],
"next": null
}الحالات الممكنة: 200304400401404429
POST /v2/me/eventsإنشاء فعالية. يجيب بـid الخاص بها.
يحتاج اشتراكًا يشمل الفعاليات، وإلا 403. عدد الفعاليات القادمة يعتمد على الاشتراك.
المعاملات الاسم النوع المعنى titleفي المحتوى stringمطلوب العنوان. startsAtفي المحتوى integerمطلوب البداية، بالميلي ثانية منذ 1970. endsAtفي المحتوى integerاختياري النهاية، بالميلي ثانية منذ 1970. اختيارية. placeفي المحتوى stringاختياري مكان انعقادها. descriptionفي المحتوى stringاختياري وصف. signupsفي المحتوى booleanاختياري هل يمكن التسجيل. يحتاج اشتراكًا يشمل التسجيل. capacityفي المحتوى integerاختياري أقصى عدد يمكنه التسجيل. بدونه لا حد.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
"https://api.tellmelo.com/v2/me/events"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403429
PUT /v2/me/events/{id}تغيير إحدى فعالياتك. تُضبط كل الحقول من جديد.
الفعالية التي بدأت تحتفظ ببدايتها.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الفعالية.titleفي المحتوى stringمطلوب العنوان. startsAtفي المحتوى integerمطلوب البداية، بالميلي ثانية منذ 1970. endsAtفي المحتوى integerاختياري النهاية، بالميلي ثانية منذ 1970. اختيارية. placeفي المحتوى stringاختياري مكان انعقادها. descriptionفي المحتوى stringاختياري وصف. signupsفي المحتوى booleanاختياري هل يمكن التسجيل. يحتاج اشتراكًا يشمل التسجيل. capacityفي المحتوى integerاختياري أقصى عدد يمكنه التسجيل. بدونه لا حد.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"title":"Seed swap","startsAt":1758700000000,"place":"Community garden","signups":true,"capacity":30}' \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
DELETE /v2/me/events/{id}حذف إحدى فعالياتك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الفعالية.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/me/events/{id}/signupsمن سجّل في إحدى فعالياتك.
الحق read مع ETag منذ v2.19 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الفعالية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signups"الرد يردّ بصفحة من EventSignup ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}
],
"next": null
}الحالات الممكنة: 200304400401404429
POST /v2/events/{id}/signupالتسجيل في فعالية أو إلغاء التسجيل.
فقط في الفعاليات التي فيها تسجيل، لا في فعالياتك. إذا اكتملت، 409.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الفعالية.goingفي المحتوى booleanمطلوب true يسجلك، false يلغي تسجيلك.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"going":true}' \
"https://api.tellmelo.com/v2/events/2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b/signup"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
المجموعات المجموعات المفتوحة ومجموعاتك، ومنشوراتها وأعضاؤها وأدوارها وروابط الدعوة إليها.
GET /v2/communitiesالمجموعات المفتوحة في هذا الخادم؛ ومع mine=true مجموعات حسابك.
مرتّبة حسب عدد الأعضاء وغير مقسّمة إلى صفحات؛ next دائمًا null.
المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. mineفي الاستعلام booleanاختياري true لمجموعات حسابك، ومنها الداخلية والمخفية، مرتبة بالاسم.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities?limit=20"الرد يردّ بصفحة من Community ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"handle": "urbangardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open",
"feedChannel": true,
"sparks": 24,
"perks": [
"tint",
"welcome"
],
"membership": {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}
}
],
"next": null
}الحالات الممكنة: 200304401429
GET /v2/communities/{id}مجموعة واحدة، بحسب id.
المجموعات الداخلية والمخفية فقط إن كان حسابك عضوًا فيها.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"الرد يردّ بـCommunity واحد.
مثال {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"handle": "urbangardening",
"description": "Balconies, allotments, rooftops: whatever grows.",
"tags": [
"garden",
"bees"
],
"members": 312,
"joinPolicy": "open",
"visibility": "open",
"feedChannel": true,
"sparks": 24,
"perks": [
"tint",
"welcome"
],
"membership": {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}
}الحالات الممكنة: 200304400401404429
GET /v2/communities/{id}/postsمنشورات قناة الخلاصة في مجموعة، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 في المسارات العامة تكون counts.likes وcounts.reposts دائمًا 0 وpinned هي false.
إن كانت قناة الخلاصة متوقفة يجيب المسار بـ409 وfeed_off.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts?limit=20"الرد يردّ بصفحة من Post ، بوصفها `items` و`next`.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
GET /v2/communities/{id}/membersأعضاء المجموعة مع أدوارهم.
الحق read مع ETag منذ v2.15 القيادة أولًا ثم حسب أعلى دور؛ 300 على الأكثر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members"الرد يردّ بصفحة من GroupMember ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false,
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"mutedUntil": null
}
],
"next": null
}الحالات الممكنة: 200304400401404429
GET /v2/communities/{id}/rolesأدوار المجموعة، الأعلى أولًا و@everyone أخيرًا.
الحق read مع ETag منذ v2.15 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"الرد يردّ بصفحة من Role ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"name": "Gardeners",
"everyone": false,
"color": "green",
"permissions": [
"attach",
"invite",
"send",
"view"
],
"members": 24,
"editable": true,
"selfable": false
}
],
"next": null
}الحالات الممكنة: 200304400401404429
GET /v2/communities/{id}/bellأي الإشعارات ترسلها إليك مجموعة.
الحق read مع ETag منذ v2.15 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"الرد يردّ بـBell واحد.
مثال {
"level": "important"
}الحالات الممكنة: 200304400401404429
GET /v2/invites/{code}المجموعة خلف رابط دعوة، قبل الانضمام.
الحق read مع ETag منذ v2.15 المعاملات الاسم النوع المعنى codeفي المسار stringمطلوب رمز رابط الدعوة، نهاية عنوانه.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"الرد يردّ بـInvitePreview واحد.
مثال {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}الحالات الممكنة: 200304400401404429
PUT /v2/roles/{id}/selfأخذ دور قابل للاختيار الذاتي أو تركه.
فقط الأدوار التي تعرضها القيادة للاختيار الذاتي (selfable)، وفقط لحسابك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id دور.activeفي المحتوى booleanاختياري false يسحب الدور؛ وإلا يُمنح.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/self"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/emojisإيموجي المجموعة الخاصة بها.
الحق read مع ETag منذ v2.20 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"الرد يردّ بصفحة من GroupEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}الحالات الممكنة: 200304400401404429
PUT /v2/communities/{id}/bellتحديد الإشعارات التي ترسلها إليك مجموعة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.levelفي المحتوى stringمطلوب أي الإشعارات تصل.allimportantoff
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"level":"important"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bell"الرد يردّ بـBell واحد.
مثال {
"level": "important"
}الحالات الممكنة: 200400401403404429
POST /v2/invites/{code}/joinالانضمام إلى مجموعة برابط دعوة.
المعاملات الاسم النوع المعنى codeفي المسار stringمطلوب رمز رابط الدعوة، نهاية عنوانه. rulesفي المحتوى booleanاختياري true إن كنت تقبل قواعد المجموعة؛ مطلوب إن كانت لها قواعد.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa/join"الرد يردّ بـJoined واحد.
مثال {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/botsبوتات مجموعة مع ما يسمح به دورها.
الحق read مع ETag منذ v2.19 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bots"الرد يردّ بصفحة من GroupBot ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}
],
"next": null
}الحالات الممكنة: 200304400401404429
القنوات قنوات مجموعاتك ودردشتها: القراءة والكتابة والتعليم كمقروء.
GET /v2/communities/{id}/channelsقنوات المجموعة التي تراها، بترتيبها.
الحق read مع ETag منذ v2.15 قناة الخلاصة (kind: feed) لا تظهر هنا إلا وهي مشغّلة؛ ومنشوراتها عبر /communities/{id}/posts.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"الرد يردّ بصفحة من Channel ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"kind": "chat",
"name": "harvest",
"topic": "What came in this week",
"category": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
},
"unread": 3,
"permissions": [
"view",
"send"
],
"symbol": {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}
}
],
"next": null
}الحالات الممكنة: 200304400401404429
GET /v2/channels/{id}/messagesرسائل قناة دردشة، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.15 حتى 50 رسالة في الصفحة. لا تظهر رسائل الحسابات التي حظرتها أو التي حظرتك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية. threadفي الاستعلام stringاختياري الرسالة التي تُقرأ سلسلتها: هي وردودها بدل الدردشة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"الرد يردّ بصفحة من ChannelMessage ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "@jon the first tomatoes are ripe 🍅",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
"roleColor": "green",
"threadOf": null,
"threadCount": 3,
"card": null,
"buttons": [],
"createdAt": 1758631200000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
POST /v2/channels/{id}/messagesكتابة رسالة في قناة دردشة.
@الاسم ينبّه عضوًا، و@everyone مع الإذن ينبّه الجميع، ست مرات في الساعة على الأكثر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.textفي المحتوى stringاختياري نص المنشور أو الرد أو الرسالة. replyToفي المحتوى stringاختياري id الرسالة في القناة نفسها التي ترد عليها.mediaفي المحتوى string[]اختياري معرّفات صور مرفوعة في التطبيق، أو GIF أو فيديو من مكتبة الوسائط (منذ 2.14). threadفي المحتوى stringاختياري رسالة الدردشة التي يُرد في سلسلتها؛ بدونها تذهب الرسالة إلى الدردشة. cardفي المحتوى objectاختياري بطاقة { title, text, color, fields: [{ name, value }] }، 10 حقول على الأكثر. buttonsفي المحتوى object[]اختياري حتى 5 أزرار، لكل منها { id, label, style } حيث style هو primary أو secondary أو danger. يصل الضغط كحدث interaction.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Who has seeds to swap?"}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/messages"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
POST /v2/channels/{id}/readتعليم قناة دردشة كمقروءة حتى وقت معيّن.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.atفي المحتوى integerمطلوب حتى متى قُرئت، بالمللي ثانية، وغالبًا createdAt لأحدث رسالة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/read"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/channel-messages/{id}حذف رسالة لك في قناة دردشة.
رسائلك فقط؛ رسائل الآخرين تزيلها القيادة بإذن groups .
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id رسالة في قناة دردشة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/voiceمن الموجود الآن في القنوات الصوتية لمجموعة، لكل قناة.
الحق read مع ETag منذ v2.19 القنوات التي يحق لك رؤيتها فقط. دون خادم وسائط تكون القائمة فارغة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/voice"الرد يردّ بصفحة من VoiceRoom ، بوصفها `items` و`next`.
مثال {
"items": [
{
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"people": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": false,
"deaf": false,
"camera": false,
"screen": true
}
]
}
],
"next": null
}الحالات الممكنة: 200304400401404429
إدارة المجموعات ما تستطيعه إعدادات المجموعة في التطبيق، بإذن groups . ما يحق لحسابك تقرره المجموعة كما في التطبيق: القيادة والأدوار وترتيبها.
POST /v2/communities/{id}/emojisإضافة إيموجي إلى المجموعة.
فقط من يحق له إدارة قنوات المجموعة. تُرفع الصورة كإيموجي خاص بك (POST /me/emojis/pictures)؛ ولا يُمنح الاسم إلا مرة واحدة بين كل الإيموجي.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المحتوى stringمطلوب الاسم الذي تكتب به الرمز، بصيغة :الاسم:. pictureفي المحتوى stringمطلوب id من POST /me/emojis/pictures.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"seedling","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis"الرد يردّ بصفحة من GroupEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}الحالات الممكنة: 200400401403404429
DELETE /v2/communities/{id}/emojis/{name}إزالة إيموجي من المجموعة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المسار stringمطلوب اسم الرمز التعبيري، بلا نقطتين.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/emojis/seedling"الرد يردّ بصفحة من GroupEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}
],
"next": null
}الحالات الممكنة: 200400401403404429
POST /v2/communities/{id}/rolesإنشاء دور.
الأدوار التي تحت أعلى دور لديك فقط، والصلاحيات التي لديك أنت فقط؛ والقيادة فوق الجميع.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المحتوى stringاختياري اسم الدور؛ يحتفظ @everyone باسمه. colorفي المحتوى stringاختياري اللون؛ فارغ لعدم وجود لون.indigovioletroseambergreenteal permissionsفي المحتوى string[]اختياري الصلاحيات: view، send، attach، post_feed، invite، mention_everyone، moderate، timeout_members، kick_members، ban_members، manage_channels، manage_roles. selfableفي المحتوى booleanاختياري true: يأخذ الأعضاء الدور بأنفسهم. فقط للأدوار التي لا تسمح بأكثر من المشاركة (view, send, attach, voice_connect, voice_speak, voice_video).
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
PUT /v2/roles/{id}تغيير اسم الدور ولونه وصلاحياته.
يستبدل الاسم واللون والصلاحيات؛ ما تتركه يصبح فارغًا.
الأدوار التي تحت أعلى دور لديك فقط، والصلاحيات التي لديك أنت فقط؛ والقيادة فوق الجميع.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id دور.nameفي المحتوى stringاختياري اسم الدور؛ يحتفظ @everyone باسمه. colorفي المحتوى stringاختياري اللون؛ فارغ لعدم وجود لون.indigovioletroseambergreenteal permissionsفي المحتوى string[]اختياري الصلاحيات: view، send، attach، post_feed، invite، mention_everyone، moderate، timeout_members، kick_members، ban_members، manage_channels، manage_roles. selfableفي المحتوى booleanاختياري true: يأخذ الأعضاء الدور بأنفسهم. فقط للأدوار التي لا تسمح بأكثر من المشاركة (view, send, attach, voice_connect, voice_speak, voice_video).
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Gardeners","permissions":["view","send","invite"],"selfable":false}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
DELETE /v2/roles/{id}حذف دور.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id دور.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/communities/{id}/roles/orderتحديد ترتيب الأدوار.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.rolesفي المحتوى string[]مطلوب معرّفات id لكل الأدوار التي تحت أعلى دور لديك، الأعلى أولًا؛ وللقيادة كل الأدوار ما عدا @everyone.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/roles/order"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/roles/{id}/members/{member}منح عضو دورًا أو سحبه منه.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id دور.memberفي المسار stringمطلوب id حساب عضو.activeفي المحتوى booleanاختياري false يسحب الدور؛ وإلا يُمنح.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"active":true}' \
"https://api.tellmelo.com/v2/roles/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/communities/{id}/channelsإنشاء قناة دردشة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المحتوى stringاختياري الاسم دون #؛ فارغ للاسم الذي يعطيه التطبيق في كل لغة. topicفي المحتوى stringاختياري الموضوع الظاهر فوق القناة. categoryفي المحتوى stringاختياري id الفئة التي تدخلها القناة؛ فارغ لعدم وجود فئة.emojiفي المحتوى stringاختياري رمز تعبيري كرمز. iconفي المحتوى stringاختياري رمز من مجموعة التطبيق باسمه.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageفي المحتوى stringاختياري معرّف صورة رفعتها عبر /media/emoji. colorفي المحتوى stringاختياري لون الخانة.brandindigovioletroseambergreentealred shapeفي المحتوى stringاختياري شكل الخانة؛ دائرة إن لم يُحدد.circlesquaretrianglediamondhexagonoctagonshieldstar
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
PUT /v2/channels/{id}تغيير اسم القناة وموضوعها وفئتها.
يستبدل الاسم والموضوع والفئة؛ ما تتركه يصبح فارغًا.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.nameفي المحتوى stringاختياري الاسم دون #؛ فارغ للاسم الذي يعطيه التطبيق في كل لغة. topicفي المحتوى stringاختياري الموضوع الظاهر فوق القناة. categoryفي المحتوى stringاختياري id الفئة التي تدخلها القناة؛ فارغ لعدم وجود فئة.emojiفي المحتوى stringاختياري رمز تعبيري كرمز. iconفي المحتوى stringاختياري رمز من مجموعة التطبيق باسمه.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageفي المحتوى stringاختياري معرّف صورة رفعتها عبر /media/emoji. colorفي المحتوى stringاختياري لون الخانة.brandindigovioletroseambergreentealred shapeفي المحتوى stringاختياري شكل الخانة؛ دائرة إن لم يُحدد.circlesquaretrianglediamondhexagonoctagonshieldstar
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"harvest","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
DELETE /v2/channels/{id}حذف قناة دردشة مع رسائلها.
لا يمكن حذف قناة الخلاصة، بل إيقافها فقط.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/communities/{id}/channels/orderتحديد ترتيب الفئات وقنوات الدردشة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.categoriesفي المحتوى string[]مطلوب id كل فئات المجموعة بالترتيب الجديد.channelsفي المحتوى string[]مطلوب id كل قنوات الدردشة في المجموعة بالترتيب الجديد.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/order"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/communities/{id}/channels/shapeتحديد شكل جميع رموز قنوات المجموعة.
لقيادة المجموعة فقط.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.shapeفي المحتوى stringاختياري شكل جميع رموز المجموعة؛ إن حُذف فلكل قناة شكلها.circlesquaretrianglediamondhexagonoctagonshieldstar
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/channels/shape"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/channels/{id}/overridesما يحق للأدوار في قناة بخلاف المجموعة.
الحق groups مع ETag منذ v2.15 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides"الرد يردّ بصفحة من ChannelOverride ، بوصفها `items` و`next`.
مثال {
"items": [
{
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}
],
"next": null
}الحالات الممكنة: 200304400401403404429
PUT /v2/channels/{id}/overrides/{role}تحديد ما يحق لدور في قناة بخلاف المجموعة.
ليس للأدوار المساوية لأعلى دور لديك أو الأعلى منه.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.roleفي المسار stringمطلوب id دور.allowفي المحتوى string[]اختياري ما يحق للدور هنا إضافةً: في الدردشة view وsend وattach وmention_everyone وmoderate، وفي قناة الخلاصة view وpost_feed. denyفي المحتوى string[]اختياري ما لا يحق للدور هنا، من الصلاحيات نفسها. القائمتان الفارغتان تلغيان الاختلاف.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"allow":["view"],"deny":["send"]}' \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/overrides/4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/communities/{id}/categoriesإنشاء فئة للقنوات.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المحتوى stringمطلوب اسم الفئة. emojiفي المحتوى stringاختياري رمز تعبيري كرمز. iconفي المحتوى stringاختياري رمز من مجموعة التطبيق باسمه.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageفي المحتوى stringاختياري معرّف صورة رفعتها عبر /media/emoji. colorفي المحتوى stringاختياري لون الخانة.brandindigovioletroseambergreentealred
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/categories"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
PUT /v2/categories/{id}إعادة تسمية فئة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id فئة.nameفي المحتوى stringمطلوب اسم الفئة. emojiفي المحتوى stringاختياري رمز تعبيري كرمز. iconفي المحتوى stringاختياري رمز من مجموعة التطبيق باسمه.homehashmegaphonevolumemessagehelpinfobellcalendarbookbookmarkpinshieldstarheartsparklesflamezaptrophygiftrocketlightbulbcodewrenchbriefcasegraduationpalettecamerafilmmusicgamepaddumbbellleafflowerpawsunmooncloudglobemapcoffeepizzasmile imageفي المحتوى stringاختياري معرّف صورة رفعتها عبر /media/emoji. colorفي المحتوى stringاختياري لون الخانة.brandindigovioletroseambergreentealred
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Garden","emoji":"🌻","color":"amber"}' \
"https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
DELETE /v2/categories/{id}حذف فئة.
تبقى قنواتها، دون فئة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id فئة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/categories/9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/communities/{id}/feedتشغيل قناة الخلاصة في مجموعة أو إيقافها.
عند إيقافها تبقى المنشورات محفوظة لكن لا يراها إلا كتّابها.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.onفي المحتوى booleanمطلوب true يشغّل قناة الخلاصة، وfalse يوقفها.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/feed"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/invitesروابط الدعوة إلى مجموعة التي ما زالت صالحة.
الحق groups مع ETag منذ v2.15 ترى القيادة الجميع، وغيرها روابطه فقط.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"الرد يردّ بصفحة من InviteLink ، بوصفها `items` و`next`.
مثال {
"items": [
{
"code": "k7Qm2xPa",
"url": "https://tellmelo.com/groups?join=k7Qm2xPa",
"createdBy": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"createdAt": 1758624000000,
"expiresAt": 1759228800000,
"uses": 3,
"maxUses": 10
}
],
"next": null
}الحالات الممكنة: 200304400401403404429
POST /v2/communities/{id}/invitesإنشاء رابط دعوة.
لا يصلح الرابط إلا ما دمت تستطيع الدعوة، ويزول بمغادرتك.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.daysفي المحتوى integerاختياري عدد الأيام التي يصلح فيها الرابط؛ دونه حتى يُسحب.1730 usesفي المحتوى integerاختياري عدد مرات استخدام الرابط؛ دونه بلا حد.151025100
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"days":7,"uses":10}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/invites"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
DELETE /v2/invites/{code}سحب رابط دعوة.
المعاملات الاسم النوع المعنى codeفي المسار stringمطلوب رمز رابط الدعوة، نهاية عنوانه.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/invites/k7Qm2xPa"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/channel-messages/{id}/removeإزالة رسالة عضو آخر من قناة.
يُسجَّل في سجل المجموعة، و60 في الساعة على الأكثر، كما في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id رسالة في قناة دردشة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channel-messages/61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8/remove"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/communities/{id}/posts/{post}/removeإزالة منشور من مجموعة.
يُسجَّل في سجل المجموعة، و60 في الساعة على الأكثر، كما في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.postفي المسار stringمطلوب id منشور.reasonفي المحتوى stringمطلوب السبب الذي يقرؤه العضو.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/posts/post/remove"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/communities/{id}/members/{member}طرد عضو من مجموعة.
منذ 2.16 هو طرد: يستطيع العضو العودة. من يجب أن يبقى خارجًا يُحظر.
فقط مع الصلاحية المناسبة وفقط مع أعضاء أدنى من أعلى دور لديك؛ القيادة المشاركة فقط كمؤسس.
يُسجَّل في سجل المجموعة، و60 في الساعة على الأكثر، كما في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.memberفي المسار stringمطلوب id حساب عضو.reasonفي المحتوى stringمطلوب السبب الذي يقرؤه العضو.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
PUT /v2/communities/{id}/members/{member}/timeoutكتم عضو.
الكتم الجديد يحل محل الكتم الجاري. المغادرة ثم الانضمام مجددًا لا تنهيه.
فقط مع الصلاحية المناسبة وفقط مع أعضاء أدنى من أعلى دور لديك؛ القيادة المشاركة فقط كمؤسس.
يُسجَّل في سجل المجموعة، و60 في الساعة على الأكثر، كما في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.memberفي المسار stringمطلوب id حساب عضو.secondsفي المحتوى integerمطلوب المدة بالثواني.60300600360086400604800 reasonفي المحتوى stringاختياري سبب يقرأه العضو؛ اختياري.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"seconds":600}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"الرد يردّ بـUntil واحد.
مثال {
"until": 1758624600000
}الحالات الممكنة: 200400401403404429
DELETE /v2/communities/{id}/members/{member}/timeoutرفع الكتم.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.memberفي المسار stringمطلوب id حساب عضو.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/members/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d/timeout"الرد يردّ بـUntil واحد.
مثال {
"until": 1758624600000
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/bansحالات الحظر السارية في مجموعة.
الحق groups مع ETag منذ v2.16 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans"الرد يردّ بصفحة من Ban ، بوصفها `items` و`next`.
مثال {
"items": [
{
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}
],
"next": null
}الحالات الممكنة: 200304400401403404429
PUT /v2/communities/{id}/bans/{member}حظر عضو.
بدون days يستمر الحظر حتى يُرفع.
فقط مع الصلاحية المناسبة وفقط مع أعضاء أدنى من أعلى دور لديك؛ القيادة المشاركة فقط كمؤسس.
يُسجَّل في سجل المجموعة، و60 في الساعة على الأكثر، كما في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.memberفي المسار stringمطلوب id حساب عضو.daysفي المحتوى integerاختياري المدة بالأيام؛ اتركه فارغًا لحظر بلا نهاية.1730 reasonفي المحتوى stringمطلوب السبب الذي يقرؤه العضو.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"days":7,"reason":"Advertising for another site, despite rule 2."}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"الرد يردّ بـUntil واحد.
مثال {
"until": 1758624600000
}الحالات الممكنة: 200400401403404429
DELETE /v2/communities/{id}/bans/{member}رفع حظر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.memberفي المسار stringمطلوب id حساب عضو.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/bans/d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/communities/{id}/logسجل القيادة: من أزال ماذا ولماذا.
الحق groups مع ETag منذ v2.15 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60/log"الرد يردّ بصفحة من LogEntry ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
"action": "message_removed",
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"reason": "",
"by": "Mara 🌻",
"createdAt": 1758710400000
}
],
"next": null
}الحالات الممكنة: 200304400401403404429
POST /v2/communitiesتأسيس مجموعة. يجيب بـid الخاص بها؛ وأنت مؤسسها.
يحتاج إذن groups. دون تحديد تكون المجموعة internal والانضمام حر؛ والمخفية بدعوة فقط. يقرر المشغّل ما إذا كان الأعضاء يستطيعون تأسيس مجموعات.
المعاملات الاسم النوع المعنى nameفي المحتوى stringمطلوب الاسم، 60 حرفًا كحد أقصى. descriptionفي المحتوى stringاختياري الوصف، 240 حرفًا كحد أقصى. handleفي المحتوى stringاختياري المعرّف للإشارات @# والرابط: من 3 إلى 30 حرفًا صغيرًا أو رقمًا أو _. tagsفي المحتوى string[]اختياري حتى 5 #وسوم عن موضوع المجموعة. joinPolicyفي المحتوى stringاختياري طريقة الانضمام: open بحرية، application بطلب، invite بدعوة فقط.openapplicationinvite visibilityفي المحتوى stringاختياري من يرى المجموعة: open الجميع، internal محتواها للأعضاء فقط، hidden للأعضاء فقط تمامًا.openinternalhidden
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
"https://api.tellmelo.com/v2/communities"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403429
PUT /v2/communities/{id}تغيير مجموعة تقودها. ما لا تذكره يبقى كما هو.
يحتاج إذن groups وقيادة المجموعة. القيادة والحل ومزايا الشرارات تبقى في التطبيق.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id مجموعة.nameفي المحتوى stringاختياري الاسم، 60 حرفًا كحد أقصى. descriptionفي المحتوى stringاختياري الوصف، 240 حرفًا كحد أقصى. handleفي المحتوى stringاختياري المعرّف للإشارات @# والرابط: من 3 إلى 30 حرفًا صغيرًا أو رقمًا أو _. tagsفي المحتوى string[]اختياري حتى 5 #وسوم عن موضوع المجموعة. joinPolicyفي المحتوى stringاختياري طريقة الانضمام: open بحرية، application بطلب، invite بدعوة فقط.openapplicationinvite visibilityفي المحتوى stringاختياري من يرى المجموعة: open الجميع، internal محتواها للأعضاء فقط، hidden للأعضاء فقط تمامًا.openinternalhidden imageفي المحتوى stringاختياري id صورة مرفوعة (POST /me/pictures) لتكون صورة المجموعة. الفراغ يزيلها.bannerفي المحتوى stringاختياري id صورة مرفوعة لتكون غلاف المجموعة. الفراغ يزيله.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Seed swap","handle":"seedswap","tags":["garden","seeds"],"joinPolicy":"open","visibility":"open"}' \
"https://api.tellmelo.com/v2/communities/c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الروبوتات ما يحدث في مجموعات الروبوت، فوريًا: كتدفق، أو صفحة بعد صفحة، أو مُسلَّمًا إلى عنوان.
GET /v2/eventsأحداث مجموعات الروبوت منذ حدث ما، صفحة بعد صفحة.
فقط برمز روبوت. أحداث القناة فقط إذا كان يحق للروبوت رؤيتها.
تُحفظ الأحداث يومًا واحدًا. next هو رقم الأخير، كـ since للصفحة التالية.
المعاملات الاسم النوع المعنى sinceفي الاستعلام stringاختياري رقم آخر حدث لدى الروبوت. بدونه يبدأ التدفق الآن والقائمة من الأقدم.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events?since=0"الرد يردّ بصفحة من BotEvent ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}
],
"next": null
}الحالات الممكنة: 200401429
GET /v2/events/streamأحداث مجموعات الروبوت فور وقوعها (server-sent events).
الحق read مع ETag منذ v2.20 يبقى الاتصال مفتوحًا ويُغلق بعد عشر دقائق؛ يعيد العميل الاتصال ويرسل Last-Event-ID.
فقط برمز روبوت. أحداث القناة فقط إذا كان يحق للروبوت رؤيتها.
المعاملات الاسم النوع المعنى sinceفي الاستعلام stringاختياري رقم آخر حدث لدى الروبوت. بدونه يبدأ التدفق الآن والقائمة من الأقدم.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/events/stream?since=0"الرد يردّ بـBotEvent واحد.
مثال {
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}الحالات الممكنة: 200304401429
GET /v2/me/commandsأوامر الروبوت.
الحق read مع ETag منذ v2.20 فقط برمز روبوت. أحداث القناة فقط إذا كان يحق للروبوت رؤيتها.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/commands"الرد يردّ بصفحة من BotCommand ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}الحالات الممكنة: 200304401429
PUT /v2/me/commandsتحديد أوامر الروبوت، جميعها دفعة واحدة.
يستبدل جميع الأوامر؛ والقائمة الفارغة تزيلها. في الدردشات التي يحق للروبوت رؤيتها يقترحها حقل الإدخال بعد «/».
المعاملات الاسم النوع المعنى commandsفي المحتوى object[]مطلوب حتى 25 أمرًا، لكل منها { name, description }.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"commands":[{"name":"dice","description":"Rolls a die"}]}' \
"https://api.tellmelo.com/v2/me/commands"الرد يردّ بصفحة من BotCommand ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "dice",
"description": "Rolls a die"
}
],
"next": null
}الحالات الممكنة: 200400401403429
POST /v2/interactions/{id}/replyالرد على أمر أو زر.
خلال 15 دقيقة من حدث command أو interaction؛ مع private لا يرى الرد إلا من استخدم الأمر أو الزر.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب المعرّف من الحدث (data.interaction). textفي المحتوى stringاختياري نص المنشور أو الرد أو الرسالة. privateفي المحتوى booleanاختياري true: لا يرى الرد إلا من استخدم الأمر أو الزر، لمدة يوم.cardفي المحتوى objectاختياري بطاقة { title, text, color, fields: [{ name, value }] }، 10 حقول على الأكثر. buttonsفي المحتوى object[]اختياري حتى 5 أزرار، لكل منها { id, label, style } حيث style هو primary أو secondary أو danger. يصل الضغط كحدث interaction.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"You rolled a 4.","private":true}' \
"https://api.tellmelo.com/v2/interactions/9b8c7d6e-5f4a-4b3c-8d2e-1f0a9b8c7d6e/reply"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
POST /v2/channels/{id}/voiceأخذ مقعد في قناة صوتية لتشغيل موسيقى أو صوت.
فقط برمز روبوت، وبقدر ما يسمح به دوره في القناة. يتصل البرنامج عبر SDK من LiveKit ويرسل صوته كميكروفون؛ ويضبط كل شخص مستوى صوته بنفسه.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id قناة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/channels/0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a/voice"الرد يردّ بـVoiceSeat واحد.
مثال {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}الحالات الممكنة: 200400401403404429
استكشاف الرائج والبحث والرموز التعبيرية الخاصة بالخادم.
GET /v2/tagsالوسوم الرائجة حاليًا.
10 وسوم رائجة كحد أقصى بحسب النقاط: كل استخدام يُحتسب 1 وينخفض إلى النصف كل 3 أيام، والحساب الواحد يُحتسب 3 كحد أقصى في اليوم. posts هي النقاط مقرّبة. limit يقصّر القائمة فقط. الوسوم التي يبرزها الفريق قد تكون أعلى.
المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/tags?limit=10"الرد يردّ بصفحة من Tag ، بوصفها `items` و`next`.
مثال {
"items": [
{
"tag": "garden",
"posts": 58
}
],
"next": null
}الحالات الممكنة: 200304401429
GET /v2/searchبحث في المنشورات والأسماء والأسماء المختصرة والوسوم.
يبحث في المحتوى العام فقط: المنشورات خارج المجموعات والملفات الشخصية والوسوم. يسري limit على كل نوع.
المعاملات الاسم النوع المعنى qفي الاستعلام stringمطلوب الكلمات المبحوث عنها. typeفي الاستعلام stringاختياري أي نوع من النتائج. دونه كل الأنواع.allpostsprofilestags limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/search?q=garden&type=posts"الرد يردّ بـSearchResult واحد.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"profiles": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"tags": [
{
"tag": "garden",
"posts": 58
}
]
}الحالات الممكنة: 200304400401429
GET /v2/emojisالرموز التعبيرية الخاصة بالخادم، مع عناوين صورها.
يظهر الرمز التعبيري في النصوص بصيغة :name:. استبدله بالصورة من هذه القائمة؛ الأسماء غير المعروفة تبقى نصًا.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/emojis"الرد يردّ بصفحة من Emoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}
],
"next": null
}الحالات الممكنة: 200304401429
حسابك ملفك الشخصي وخلاصتك ورموزك التعبيرية الخاصة وخطافات الويب لديك.
GET /v2/meملفك الشخصي، مع id الذي تتوقعه المسارات الأخرى.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me"الرد يردّ بـProfile واحد.
مثال {
"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
}الحالات الممكنة: 200304401429
GET /v2/feedخلاصتك، كما يجمعها التطبيق.
الحق read مقسَّم إلى صفحات منذ v2.0 بلا ETag لأن الترتيب يتغير باستمرار. القائمة التي بدأتها تبقى كما هي حتى نهايتها.
المعاملات الاسم النوع المعنى tabفي الاستعلام stringاختياري أي خلاصة: for-you أو following أو latest أو bookmarks. latest افتراضيًا.for-youfollowinglatestbookmarks tagفي الاستعلام stringاختياري فقط المنشورات عن هذا الوسم: المكتوبة به أو التي تعرّف عليه الخادم فيها. دونه بلا تصفية. limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/feed?tab=following&limit=20"الرد يردّ بصفحة من Post ، بوصفها `items` و`next`.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200400401429
POST /v2/me/picturesرفع صورة بصيغة بايتات. يجيب بـid وurl؛ ثم تستخدم id كصورة ملف شخصي أو غلاف أو في منشور.
PNG أو JPEG أو WebP أو GIF، يُعرف من أول البايتات؛ ويُحفظ من جديد بلا بيانات وصفية. الصورة غير المستخدمة في أي مكان تُحذف لاحقًا.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @picture.png \
"https://api.tellmelo.com/v2/me/pictures"الرد يردّ بـPicture واحد.
مثال {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}الحالات الممكنة: 200401403429
PUT /v2/me/profileتغيير ملفك الشخصي: الاسم والنبذة وصورة الملف والغلاف ولون الملف. ما لا تذكره يبقى كما هو.
يحتاج إذن profile. اسمك @ يبقى في التطبيق: فهو أيضًا اسم الدخول.
المعاملات الاسم النوع المعنى nameفي المحتوى stringاختياري الاسم المعروض، 60 حرفًا كحد أقصى. aboutفي المحتوى stringاختياري نص «نبذة عنك». avatarفي المحتوى stringاختياري id صورة مرفوعة لتكون صورة الملف. الفراغ يزيلها.bannerفي المحتوى stringاختياري id صورة مرفوعة لتكون الغلاف. الفراغ يزيله.colorفي المحتوى stringاختياري لون الملف الشخصي، مع اشتراك. null يزيله.indigovioletrosecoralamberlimegreentealskyslatesandnight
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Mara 🌻","about":"Gardening in the city.","avatar":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/me/profile"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403429
GET /v2/me/emojisرموزك التعبيرية الخاصة.
الحق read مع ETag منذ v2.19 مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis"الرد يردّ بصفحة من OwnEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}الحالات الممكنة: 200304401429
POST /v2/me/emojis/picturesرفع صورة رمز تعبيري خاص بك بصيغة بايتات.
الرموز المتحركة تحتاج اشتراكًا. إذا كانت الصورة كبيرة جدًا بعد التحويل تُرفض.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @picture.png \
"https://api.tellmelo.com/v2/me/emojis/pictures"الرد يردّ بـEmojiPicture واحد.
مثال {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}الحالات الممكنة: 200401403429
POST /v2/me/emojisإنشاء رمز تعبيري خاص. يجيب بكل رموزك.
عدد الرموز التي يمكنك إنشاؤها يعتمد على اشتراكك.
المعاملات الاسم النوع المعنى nameفي المحتوى stringمطلوب الاسم الذي تكتب به الرمز، بصيغة :الاسم:. pictureفي المحتوى stringمطلوب id من POST /me/emojis/pictures.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"sunflower","picture":"8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"}' \
"https://api.tellmelo.com/v2/me/emojis"الرد يردّ بصفحة من OwnEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}الحالات الممكنة: 200400401403429
DELETE /v2/me/emojis/{name}إزالة رمز تعبيري خاص. يجيب بالباقي.
المعاملات الاسم النوع المعنى nameفي المسار stringمطلوب اسم الرمز التعبيري، بلا نقطتين.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/emojis/sunflower"الرد يردّ بصفحة من OwnEmoji ، بوصفها `items` و`next`.
مثال {
"items": [
{
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}
],
"next": null
}الحالات الممكنة: 200400401403404429
PUT /v2/me/emojis/sharingتحديد ما إذا كان متابعوك يستطيعون استخدام رموزك في نصوصهم.
المعاملات الاسم النوع المعنى sharedفي المحتوى booleanمطلوب true يشارك رموزك مع متابعيك، false لا.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"shared":true}' \
"https://api.tellmelo.com/v2/me/emojis/sharing"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403429
GET /v2/me/webhooksخطافات الويب لديك وحالتها.
الحق webhooks مع ETag منذ v2.19 يحتاج إذن webhooks. تأتي خطافات الويب مع اشتراك المؤسسات أو للشركاء.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks"الرد يردّ بصفحة من Webhook ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"url": "https://example.org/tellmelo-hook",
"kinds": [
"reply",
"mention"
],
"active": true,
"lastStatus": 200,
"lastAt": 1758624000000,
"failures": 0
}
],
"next": null
}الحالات الممكنة: 200304401403429
POST /v2/me/webhooksإنشاء خطاف ويب. يجيب بـid والسر الخاص بالتوقيعات، هذه المرة فقط.
كل تسليم موقّع بالسر (X-Tellmelo-Signature). احتفظ به؛ لن يظهر مرة أخرى.
المعاملات الاسم النوع المعنى urlفي المحتوى stringمطلوب عنوان HTTPS خارج الشبكات المحلية، بلا بيانات دخول. kindsفي المحتوى string[]مطلوب ما يُبلَّغ به الخطاف. الأنواع المتاحة لك تعتمد على اشتراكك وشراكتك.replymentiongroup_mentionfollowlikerepostmessagequota_changedquota_giftdrop_claimeddrop_empty
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.org/tellmelo-hook","kinds":["reply","mention"]}' \
"https://api.tellmelo.com/v2/me/webhooks"الرد يردّ بـWebhookCreated واحد.
مثال {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}الحالات الممكنة: 200400401403429
DELETE /v2/me/webhooks/{id}حذف خطاف ويب.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id خطاف الويب.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/me/webhooks/{id}/testإرسال تجربة إلى خطاف ويب.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id خطاف الويب.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/webhooks/1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b/test"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الإشعارات ما حدث حول حسابك، صفحة بعد صفحة.
GET /v2/notificationsإشعاراتك، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 القراءة لا تعلّم شيئًا كمقروء؛ POST /notifications/read يفعل ذلك. الأحداث من النوع نفسه على المنشور نفسه تتشارك سطرًا واحدًا؛ وmore يذكر عددها.
المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications?limit=20"الرد يردّ بصفحة من Notification ، بوصفها `items` و`next`.
مثال {
"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"
}الحالات الممكنة: 200304401429
POST /v2/notifications/readتعليم إشعاراتك كمقروءة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/notifications/read"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200401403429
الرسائل صندوق رسائلك ومحادثاتك. تُسمّى المحادثة باسم الحساب الآخر.
GET /v2/conversationsصندوق رسائلك: سطر لكل محادثة، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations?limit=20"الرد يردّ بصفحة من Conversation ، بوصفها `items` و`next`.
مثال {
"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"
}الحالات الممكنة: 200304401429
GET /v2/conversations/{with}/messagesرسائل محادثة واحدة، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.0 القراءة لا تعلّم شيئًا كمقروء؛ POST /conversations/{with}/read يفعل ذلك.
المعاملات الاسم النوع المعنى withفي المسار stringمطلوب id الحساب الآخر. ليس للمحادثة id خاص بها.limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages?limit=20"الرد يردّ بصفحة من Message ، بوصفها `items` و`next`.
مثال {
"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"
}الحالات الممكنة: 200304400401404429
POST /v2/conversations/{with}/messagesإرسال رسالة في محادثة.
تسري قواعد التطبيق: من حظرك لا يمكن الوصول إليه، وإعدادات الطرف الآخر تُحتسب.
لا يمكن إرفاق الصور وملفات GIF والفيديو بالرسائل عبر API، بل في التطبيق فقط.
المعاملات الاسم النوع المعنى withفي المسار stringمطلوب id الحساب الآخر. ليس للمحادثة id خاص بها.textفي المحتوى stringمطلوب نص المنشور أو الرد أو الرسالة. replyToفي المحتوى stringاختياري id رسالة سابقة في هذه المحادثة تجيب عنها هذه الرسالة. منذ 2.2.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"See you on Saturday at the market!"}' \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/conversations/{with}/readتعليم كل رسائل محادثة كمقروءة.
المعاملات الاسم النوع المعنى withفي المسار stringمطلوب id الحساب الآخر. ليس للمحادثة id خاص بها.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/read"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/conversations/{with}/messages/{id}حذف إحدى رسائلك.
رسائلك أنت فقط، وفي أول 24 ساعة بعد الإرسال فقط.
المعاملات الاسم النوع المعنى withفي المسار stringمطلوب id الحساب الآخر. ليس للمحادثة id خاص بها.idفي المسار stringمطلوب معرّف الرسالة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/messages/7c6b5a49-3827-4165-9f0e-d1c2b3a49586"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
POST /v2/conversations/{with}/plannedجدولة رسالة لوقت لاحق. يجيب بـid الرسالة المجدولة.
يحتاج اشتراكًا يشمل الرسائل المجدولة، وإلا 403. مع التشفير من طرف إلى طرف لدى الطرفين يعمل في التطبيق فقط.
المعاملات الاسم النوع المعنى withفي المسار stringمطلوب id الحساب الآخر. ليس للمحادثة id خاص بها.textفي المحتوى stringمطلوب نص المنشور أو الرد أو الرسالة. sendAtفي المحتوى integerمطلوب متى تُرسل الرسالة، بالميلي ثانية منذ 1970.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Happy birthday! 🎂","sendAt":1758700000000}' \
"https://api.tellmelo.com/v2/conversations/a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05/planned"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403404429
GET /v2/me/planned-messagesرسائلك التي لم تُرسل بعد، مرتبة حسب الوقت.
الحق read مع ETag منذ v2.19 المعاملات الاسم النوع المعنى withفي الاستعلام stringاختياري الرسائل الموجهة إلى هذا الحساب فقط (id الخاص به).
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages"الرد يردّ بصفحة من PlannedMessage ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}
],
"next": null
}الحالات الممكنة: 200304401429
POST /v2/me/planned-messages/{id}/sendإرسال رسالة مجدولة محجوزة أو فاشلة الآن.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الرسالة المجدولة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9/send"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/me/planned-messages/{id}حذف رسالة مجدولة قبل إرسالها.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id الرسالة المجدولة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/planned-messages/3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
العلاقات إعجاب، حفظ، إعادة نشر، متابعة، انضمام، حظر: مسار واحد، يُضبط ويُزال بـactive. ومنذ 2.19 القوائم أيضًا: المتابِعون والمتابَعون وحظرك وكتمك أنت.
POST /v2/relationsإعجاب، حفظ، إعادة نشر، متابعة، انضمام، حظر، كتم، بحسب kind.
target منشور مع like وsave وrepost، ومجموعة مع join، وحساب مع follow وblock وmute. active: false يزيل العلاقة.
المعاملات الاسم النوع المعنى kindفي المحتوى stringمطلوب أي علاقة: like أو save أو repost أو follow أو join أو block أو mute (منذ 2.2).likesaverepostfollowjoinblockmute targetفي المحتوى stringمطلوب id المنشور أو الملف الشخصي أو المجموعة، بحسب kind.activeفي المحتوى booleanاختياري true يضبط العلاقة، وfalse يزيلها.
مثال على الطلب 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://api.tellmelo.com/v2/relations"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403429
GET /v2/profiles/{handle}/followersمن يتابع ملفًا شخصيًا، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.19 المعاملات الاسم النوع المعنى handleفي المسار stringمطلوب الاسم المختصر لملف شخصي، بأحرف كبيرة أو صغيرة، لا فرق. limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/followers?limit=20"الرد يردّ بصفحة من ProfileBrief ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
GET /v2/profiles/{handle}/followingمن يتابعه ملف شخصي، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.19 المعاملات الاسم النوع المعنى handleفي المسار stringمطلوب الاسم المختصر لملف شخصي، بأحرف كبيرة أو صغيرة، لا فرق. limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/profiles/mara/following?limit=20"الرد يردّ بصفحة من ProfileBrief ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401404429
GET /v2/me/relationsمن حظرته أو كتمته أو حظرته من الرسائل فقط، الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.19 قوائمك أنت فقط. الضبط والإزالة عبر POST /relations.
المعاملات الاسم النوع المعنى kindفي الاستعلام stringمطلوب block المحظورون، mute المكتومون، dm_block المحظورون من الرسائل فقط.blockmutedm_blocklimitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/relations?kind=mute&limit=20"الرد يردّ بصفحة من ProfileBrief ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304400401429
المجموعات المحفوظة رتّب المنشورات المحفوظة في مجموعات خاصة بك. يمكن أن يكون المنشور في عدة مجموعات؛ وإذا أُخرج من مجموعة يبقى محفوظًا.
GET /v2/me/collectionsمجموعاتك مع عدد منشوراتها.
الحق read مع ETag منذ v2.19 مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections"الرد يردّ بصفحة من Collection ، بوصفها `items` و`next`.
مثال {
"items": [
{
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}
],
"next": null
}الحالات الممكنة: 200304401429
POST /v2/me/collectionsإنشاء مجموعة. يجيب بـid الخاص بها.
عدد المجموعات التي يمكنك إنشاؤها يعتمد على اشتراكك.
المعاملات الاسم النوع المعنى nameفي المحتوى stringمطلوب الاسم، 40 حرفًا كحد أقصى. فريد لكل حساب دون تمييز حالة الأحرف.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Recipes"}' \
"https://api.tellmelo.com/v2/me/collections"الرد يردّ بـMade واحد.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}الحالات الممكنة: 200400401403429
PUT /v2/me/collections/{id}إعادة تسمية مجموعة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id المجموعة.nameفي المحتوى stringمطلوب الاسم، 40 حرفًا كحد أقصى. فريد لكل حساب دون تمييز حالة الأحرف.
مثال على الطلب curl -X PUT \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"name":"Baking"}' \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
DELETE /v2/me/collections/{id}حذف مجموعة.
تبقى المنشورات التي فيها محفوظة.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id المجموعة.
مثال على الطلب curl -X DELETE \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
GET /v2/me/collections/{id}/postsمنشورات مجموعة، كما في تبويب المحفوظات.
الحق read مقسَّم إلى صفحات منذ v2.19 المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id المجموعة.limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts?limit=20"الرد يردّ بصفحة من Post ، بوصفها `items` و`next`.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200400401404429
POST /v2/me/collections/{id}/postsوضع منشور في مجموعة أو إخراجه منها.
وضع المنشور يحفظه أيضًا. المنشورات الظاهرة فقط.
المعاملات الاسم النوع المعنى idفي المسار stringمطلوب id المجموعة.postفي المحتوى stringمطلوب id المنشور.insideفي المحتوى booleanاختياري true يضع المنشور (افتراضيًا)، false يخرجه.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"post":"5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1","inside":true}' \
"https://api.tellmelo.com/v2/me/collections/6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718/posts"الرد يردّ بـOk واحد.
مثال {
"ok": true
}الحالات الممكنة: 200400401403404429
الهدايا قراءة حصة الشريك والإهداء منها، ووضع هدايا تحت المنشورات ومتابعتها. أما الحصول على الهدايا فيبقى للناس داخل التطبيق.
GET /v2/partner/quotaما تبقى في حصتك للإهداء.
الحق read مع ETag منذ v2.12 للشركاء الذين لديهم حصة فقط؛ والبقية يتلقون 403.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/quota"الرد يردّ بـQuota واحد.
مثال {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}الحالات الممكنة: 200304401429
GET /v2/partner/giftsما أهديته من حصتك، ولمن ومتى – الأحدث أولًا.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.12 للشركاء الذين لديهم حصة فقط؛ والبقية يتلقون 403.
المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/partner/gifts?limit=20"الرد يردّ بصفحة من QuotaGift ، بوصفها `items` و`next`.
مثال {
"items": [
{
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304401429
POST /v2/partner/giftsإهداء أشهر اشتراك أو شرارات من حصتك إلى عضو.
للشركاء الذين لديهم حصة فقط؛ والبقية يتلقون 403.
كما في التطبيق، يرى العضو ممن جاءت الهدية. 60 هدية في الساعة كحد أقصى.
المعاملات الاسم النوع المعنى handleفي المحتوى stringمطلوب @اسم العضو الذي تهديه، مع @ أو بدونها. itemفي المحتوى stringمطلوب plan لأشهر الاشتراك، وsparks للشرارات، وshop لمظهر من رصيدك (منذ 2.13).plansparksshopquantityفي المحتوى integerاختياري الكمية: حتى 12 شهرًا أو 35 شرارة لكل هدية. itemIdفي المحتوى stringاختياري لـshop: معرّف المظهر كما يسمّيه looks في الحصة. قطعة واحدة لكل هدية؛ ولا ينطبق quantity حينها.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"handle":"jon","item":"plan","quantity":3,"itemId":"frame-gold"}' \
"https://api.tellmelo.com/v2/partner/gifts"الرد يردّ بـQuota واحد.
مثال {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}الحالات الممكنة: 200400401403429
GET /v2/gift-dropsهداياك تحت المنشورات: كم مكانًا ما زال متاحًا وكيف دُفع ثمنها.
الحق read مقسَّم إلى صفحات مع ETag منذ v2.12 المعاملات الاسم النوع المعنى limitفي الاستعلام integerاختياري عدد الإدخالات في الصفحة: 20 افتراضيًا، 50 كحد أقصى. cursorفي الاستعلام stringاختياري قيمة next من الإجابة السابقة. دونها من البداية.
مثال على الطلب curl \
-H "Authorization: Bearer tm_key_…" \
"https://api.tellmelo.com/v2/gift-drops?limit=20"الرد يردّ بصفحة من OwnGiftDrop ، بوصفها `items` و`next`.
مثال {
"items": [
{
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": false,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota",
"createdAt": 1758624000000
}
],
"next": "MTc1ODYyNDAwMDAwMDo1ZjBjMmE5ZS04ZDQx"
}الحالات الممكنة: 200304401429
POST /v2/gift-dropsنشر منشور فيه هدايا يحصل عليها الآخرون.
مجانًا للمالك ولأعضاء الفريق الذين لديهم هذا الحق، وإلا فمن حصتك. وما يحتاج إلى دفع يُرفض بالرمز 422 – فالدفع لا يتم إلا في التطبيق.
الحصول على الهدايا لا يتم إلا في التطبيق، كي لا يستولي برنامج على كل الأماكن. وعدد الأماكن المتاحة يظهر في giftDrop الخاص بالمنشور.
المعاملات الاسم النوع المعنى textفي المحتوى stringاختياري نص المنشور أو الرد أو الرسالة. communityفي المحتوى stringاختياري id المجموعة التي يذهب المنشور إلى قناة الخلاصة فيها؛ يجب أن تكون مشغّلة وأن يكون لديك الإذن. دونه يكون المنشور خارج أي مجموعة.itemفي المحتوى stringمطلوب plan لأشهر الاشتراك، وsparks للشرارات.plansparksquantityفي المحتوى integerمطلوب ما يحويه كل مكان: حتى 12 شهرًا أو 35 شرارة. placesفي المحتوى integerمطلوب لكم شخص، حتى 10000. audienceفي المحتوى stringاختياري من يمكنه الحصول عليها: all الجميع، وfollowers متابِعوك فقط، وgroup أعضاء المجموعة فقط (مع community فقط).allfollowersgroup newAccountsفي المحتوى booleanاختياري true يسمح أيضًا للحسابات التي عمرها أقل من 7 أيام. وبدونه تبقى مستبعدة.
مثال على الطلب curl -X POST \
-H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"text":"Ten times three months of Supporter – first come, first served! 🎁","item":"plan","quantity":3,"places":10,"audience":"all","newAccounts":false}' \
"https://api.tellmelo.com/v2/gift-drops"الرد يردّ بـDropCreated واحد.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}الحالات الممكنة: 200400401403429
الكائنات كل الكائنات، حقلًا حقلًا. [] تعني قائمة.
Serviceرد الجذر: من يردّ، وما يمكن لهذا المفتاح فعله.
الحقل النوع المعنى namestringدائمًا tellmelo. versionstringإصدار API، مثل 2.1. scopestringما يمكن لهذا المفتاح فعله: read أو read write. rateLimitRateLimitرصيد هذا المفتاح. docsstringمكان هذا التوثيق، كمسار على هذا الخادم. specstringمكان الوصف المقروء آليًا.
مثال {
"name": "tellmelo",
"version": "2.20",
"scope": "read write",
"rateLimit": {
"limit": 120,
"remaining": 117
},
"docs": "/developers/docs",
"spec": "/api/v2/openapi.json"
}RateLimitرصيد هذا المفتاح في الدقيقة الحالية.
الحقل النوع المعنى limitintegerالطلبات في الدقيقة. remainingintegerكم بقي في هذه الدقيقة.
مثال {
"limit": 120,
"remaining": 117
}Postمنشور، بالشكل نفسه في كل مكان.
الحقل النوع المعنى idstringمعرّف المنشور. textstringأو null النص كما كُتب (null لمنشور هو استطلاع فقط أو صور فقط). kindstringما هو المنشور.post — منشور بنص أو صور أو اقتباس.poll — منشور باستطلاع. authorProfileBriefمن كتبه. communityCommunityBriefأو null المجموعة التي كُتب فيها (null خارج كل المجموعات). mediaMedia[]صوره بالترتيب؛ فارغة إن لم توجد. pollPollأو null الاستطلاع (null إن لم يوجد). quotesstringأو null معرّف المنشور الذي يقتبسه هذا المنشور. continuesstringأو null معرّف المنشور الذي يتابعه هذا المنشور، كإضافة. countsCountsالردود والإعجابات وإعادات النشر. pinnedbooleanهل هو مثبّت أعلى ملف مؤلفه الشخصي. giftDropGiftDropأو null الهدايا المتاحة تحت المنشور (null إن لم توجد). createdAtintegerمتى كُتب.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}Replyرد تحت منشور: منشور بحقلين إضافيين.
كل حقول Post ، وإضافة إلى ذلك:
الحقل النوع المعنى postIdstringالمنشور الذي تتعلق به المحادثة كلها. parentIdstringأو null الرد الذي يجيب عنه هذا الرد (null إن كان يجيب عن المنشور مباشرة).
مثال {
"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,
"giftDrop": null,
"createdAt": 1758624600000,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"parentId": null
}ReplyVoteصوتك على رد ونتيجته.
الحقل النوع المعنى votestringصوتك.up — بالإيجاب.down — بالسلب.none — بلا صوت. scoreintegerالأصوات الإيجابية ناقص السلبية، وقد تكون تحت الصفر.
مثال {
"vote": "up",
"score": 12
}PlannedReplyرد لك مجدول لوقت لاحق.
الحقل النوع المعنى idstringid الرد المجدول.parentIdstringأو null الرد الذي سيجيب عليه (null إذا كان على المنشور مباشرة). textstringالنص. publishAtintegerمتى يُنشر. statestringحالته.waiting — ينتظر موعده.failed — تعذر إرساله، مثلًا لأن المنشور لم يعد موجودًا.
مثال {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"parentId": null,
"text": "Count me in for Saturday!",
"publishAt": 1758710400000,
"state": "waiting"
}ReplySettingsإعدادات الرد لأحد منشوراتك.
الحقل النوع المعنى audiencestringمن يمكنه الرد.all — الجميع.following — الحسابات التي تتابعها.mentioned — المذكورون في المنشور.nobody — لا أحد سواك. approvalbooleanهل تنتظر الردود موافقتك. slowstringالوضع البطيء.auto — يعمل تلقائيًا عند وصول ردود كثيرة.on — مفعل دائمًا.off — متوقف.
مثال {
"audience": "following",
"approval": false,
"slow": "auto"
}Countsكم ردًا وإعجابًا وإعادة نشر لمنشور ما.
الحقل النوع المعنى repliesintegerالردود، كل المستويات معًا. likesintegerالإعجابات. repostsintegerإعادات النشر.
مثال {
"replies": 4,
"likes": 31,
"reposts": 2
}Pollاستطلاع منشور.
الحقل النوع المعنى optionsPollOption[]الإجابات بالترتيب. option في التصويت يُعد من 0. totalintegerكل الأصوات معًا، موجود دائمًا. multiplebooleanهل يمكن اختيار أكثر من إجابة. endsAtintegerأو null متى ينتهي الاستطلاع (null إن كان بلا نهاية). runningbooleanهل لا يزال التصويت ممكنًا. resultsVisiblebooleanهل تُعرض الأصوات لكل إجابة (انظر votes). myVotesinteger[]الإجابات التي اخترتها، العدّ من 0.
مثال {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
}PollOptionإجابة واحدة في استطلاع.
الحقل النوع المعنى textstringالإجابة. votesintegerأو null أصواتها (null ما دامت النتائج محجوبة).
مثال {
"text": "Lavender",
"votes": 12
}ProfileBriefملف شخصي كما يظهر داخل كائنات أخرى: كمؤلف أو في بحث.
الحقل النوع المعنى idstringمعرّف الحساب: ما يتوقعه /relations و/conversations/{with}. handlestringالاسم المختصر، دون @، مكتوبًا كما اختاره العضو. namestringالاسم الظاهر. قد يحتوي رموزًا تعبيرية، بما فيها :name:. verifiedbooleanهل الحساب موثَّق. accountKindstringنوع الحساب.person — شخص.business — منشأة تجارية.association — نادٍ أو جمعية.automated — حساب آلي، مثل بوت.bot — بوت للمجموعات يديره برنامج بمفتاحه الخاص (منذ 2.18).
مثال {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}Profileملف شخصي بذاته، مع وصفه ومتابعيه.
كل حقول ProfileBrief ، وإضافة إلى ذلك:
الحقل النوع المعنى aboutstringأو null الوصف (null إن لم يوجد). websitestringأو null موقع الملف الشخصي (null إن لم يوجد). منذ 2.3. websiteVerifiedbooleanهل يرتبط الموقع بهذا الملف الشخصي عبر rel=me، يُتحقق منه أسبوعيًا. منذ 2.3. followersintegerكم حسابًا يتابعه. createdAtintegerأو null متى أُنشئ الحساب (null ما دام العضو يخفي تاريخ الانضمام؛ منذ 2.9).
مثال {
"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
}Membershipما هو حسابك في المجموعة وما يحق له.
الحقل النوع المعنى leaderstringأو null هل أسست المجموعة أو تشارك في قيادتها؛ وإلا null.founder — المؤسس.manager — مشارك في القيادة. rolesstring[]id أدوارك، الأعلى أولًا.permissionsstring[]ما يحق لك في المجموعة. mutedUntilintegerأو null حتى متى يكتمك الكتم هنا؛ null إن لم يوجد.
مثال {
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"permissions": [
"attach",
"invite",
"send",
"view"
],
"mutedUntil": null
}Personعضو، باختصار.
الحقل النوع المعنى idstringid الحساب.handlestringاسم المستخدم دون @. namestringالاسم المعروض. botbooleanهل الحساب بوت (منذ 2.18).
مثال {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
}Channelقناة في مجموعة.
الحقل النوع المعنى idstringالـid. kindstringنوع القناة.feed — قناة الخلاصة، التي تظهر منشوراتها أيضًا في الخلاصة العامة.chat — دردشة.voice — قناة صوتية؛ التحدث داخل التطبيق فقط.hub — مركز المجموعة: صفحتها التي تعرّف بها. موجود دائمًا، بلا رسائل. namestringأو null الاسم دون #؛ null للاسم الذي يعطيه التطبيق في كل لغة. topicstringالموضوع؛ فارغ إن لم يوجد. categoryChannelCategoryأو null الفئة؛ null إن لم توجد. unreadintegerعدد رسائل الآخرين التي لم تقرأها بعد، حتى 100. permissionsstring[]ما يحق لك في هذه القناة. symbolChannelSymbolرمزها؛ والشكل هو شكل المجموعة إن حدّدت واحدًا.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"kind": "chat",
"name": "harvest",
"topic": "What came in this week",
"category": {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
},
"unread": 3,
"permissions": [
"view",
"send"
],
"symbol": {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}
}ChannelCategoryالفئة التي تقع تحتها القناة.
الحقل النوع المعنى idstringالـid. namestringالاسم. symbolChannelSymbolرمزها.
مثال {
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Garden",
"symbol": {
"emoji": null,
"icon": null,
"image": null,
"color": null,
"shape": null
}
}ChannelSymbolرمز قناة أو فئة: واحد على الأكثر من الرمز التعبيري والرمز والصورة، وإلا علامة نوعها.
الحقل النوع المعنى emojistringأو null الرمز التعبيري؛ null إن لم يوجد. iconstringأو null اسم الرمز من مجموعة التطبيق؛ null إن لم يوجد. imagestringأو null عنوان الصورة الخاصة؛ null إن لم توجد. colorstringأو null لون الخانة؛ null للون نوعها. shapestringأو null شكل الخانة؛ null للدائرة.
مثال {
"emoji": "🌻",
"icon": null,
"image": null,
"color": "amber",
"shape": "circle"
}ChannelMessageرسالة في قناة دردشة.
الحقل النوع المعنى idstringالـid. textstringأو null النص (null لرسالة من صور أو صوت فقط). authorPersonمن كتبها. mediaMedia[]صورها ورسائلها الصوتية؛ فارغ إن لم توجد. replyTostringأو null id الرسالة التي ترد عليها؛ null إن لم توجد.roleColorstringأو null لون أعلى دور للكاتب له لون؛ null إن لم يوجد. threadOfstringأو null الرسالة التي ترد هذه في سلسلتها؛ null في الدردشة. threadCountintegerكم ردًا في سلسلة هذه الرسالة. cardobjectأو null بطاقة الروبوت: title وtext وcolor وfields؛ وإلا null. buttonsobject[]أزرار الروبوت: لكل منها id وlabel وstyle. createdAtintegerمتى كُتبت.
مثال {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "@jon the first tomatoes are ripe 🍅",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": [
{
"url": "/api/media?id=b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"replyTo": "72b3c4d5-e6f7-4081-92a3-b4c5d6e7f809",
"roleColor": "green",
"threadOf": null,
"threadCount": 3,
"card": null,
"buttons": [],
"createdAt": 1758631200000
}Roleدور في مجموعة.
الحقل النوع المعنى idstringالـid. namestringأو null الاسم؛ null لـ@everyone. everyonebooleanهل هو @everyone، دور جميع الأعضاء. colorstringأو null اللون: indigo أو violet أو rose أو amber أو green أو teal؛ null دون لون. permissionsstring[]صلاحياته. membersintegerكم يملكه؛ لـ@everyone جميع الأعضاء. editablebooleanهل يحق لحسابك تغييره. selfablebooleanهل يأخذ الأعضاء الدور ويتركونه بأنفسهم.
مثال {
"id": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"name": "Gardeners",
"everyone": false,
"color": "green",
"permissions": [
"attach",
"invite",
"send",
"view"
],
"members": 24,
"editable": true,
"selfable": false
}GroupMemberعضو في مجموعة مع أدواره.
كل حقول Person ، وإضافة إلى ذلك:
الحقل النوع المعنى leaderstringأو null هل أسس العضو المجموعة أو يشارك في قيادتها؛ وإلا null.founder — المؤسس.manager — مشارك في القيادة. rolesstring[]id أدواره، الأعلى أولًا.mutedUntilintegerأو null حتى متى العضو مكتوم، إن كان حسابك يستطيع الكتم؛ وإلا null.
مثال {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false,
"leader": null,
"roles": [
"4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8"
],
"mutedUntil": null
}ChannelOverrideما يحق لدور في قناة بخلاف المجموعة.
الحقل النوع المعنى rolestringid الدور.allowstring[]ما يحق له هنا إضافةً. denystring[]ما لا يحق له هنا.
مثال {
"role": "4e5f6a7b-8c9d-4e0f-a1b2-c3d4e5f6a7b8",
"allow": [
"send"
],
"deny": []
}Bellجرس المجموعة.
الحقل النوع المعنى levelstringأي الإشعارات تصل.all — كل منشور جديد في قناة الخلاصة، إضافة إلى @everyone.important — منشورات القيادة في قناة الخلاصة، إضافة إلى @everyone.off — لا شيء، إلا إذا ذُكرت بـ@الاسم.
مثال {
"level": "important"
}InviteLinkرابط دعوة إلى مجموعة.
الحقل النوع المعنى codestringالرمز. urlstringالعنوان للمشاركة. createdByPersonأو null من أنشأه؛ null إن حُذف الحساب. createdAtintegerمتى أُنشئ. expiresAtintegerأو null حتى متى يصلح؛ null دون نهاية. usesintegerكم مرة استُخدم. maxUsesintegerأو null كم مرة يمكن استخدامه؛ null بلا حد.
مثال {
"code": "k7Qm2xPa",
"url": "https://tellmelo.com/groups?join=k7Qm2xPa",
"createdBy": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"createdAt": 1758624000000,
"expiresAt": 1759228800000,
"uses": 3,
"maxUses": 10
}InvitePreviewإلى أين يقود رابط الدعوة.
الحقل النوع المعنى communityInviteGroupالمجموعة. memberbooleanهل حسابك عضو بالفعل.
مثال {
"community": {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
},
"member": false
}InviteGroupالمجموعة خلف رابط الدعوة.
الحقل النوع المعنى idstringالـid. namestringالاسم. membersintegerعدد أعضائها. rulesstring[]قواعدها التي تُقبل عند الانضمام؛ فارغ إن لم توجد.
مثال {
"id": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"name": "Urban Gardening",
"members": 312,
"rules": [
"Be kind.",
"No advertising."
]
}Joinedالانضمام برابط دعوة.
الحقل النوع المعنى communitystringid المجموعة.
مثال {
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60"
}LogEntryمدخل في سجل القيادة.
الحقل النوع المعنى idstringالـid. actionstringما الذي حدث.post_removed — منشور.member_removed — عضو أُزيل قبل 2.16 (خارجًا لمدة 90 يومًا).message_removed — رسالة في قناة دردشة.member_kicked — طرد.member_banned — حظر.member_unbanned — حظر مرفوع.member_timed_out — كتم.timeout_lifted — كتم مرفوع.voice_muted — كُتم في قناة صوتية.voice_removed — فُصل عن قناة صوتية.bot_added — أُضيف بوت إلى المجموعة (منذ 2.18).bot_removed — أُزيل بوت من المجموعة (منذ 2.18). memberPersonمن تعلّق به الأمر. reasonstringالسبب؛ فارغ للرسائل وعندما لم يُعطَ سبب. bystringأو null اسم من فعل ذلك؛ null إذا حُذف الحساب. createdAtintegerمتى.
مثال {
"id": "8f7e6d5c-4b3a-4291-8f7e-6d5c4b3a2918",
"action": "message_removed",
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"reason": "",
"by": "Mara 🌻",
"createdAt": 1758710400000
}Banحظر من مجموعة.
الحقل النوع المعنى memberPersonمن المحظور. untilintegerأو null حتى متى؛ null حتى يُرفع. createdAtintegerأو null منذ متى؛ null لحالات الحظر قبل 2.16. bystringأو null اسم من حظر؛ null إن كان غير معروف.
مثال {
"member": {
"id": "d4c3b2a1-6e5f-4a7b-9c8d-1e2f3a4b5c6d",
"handle": "jon",
"name": "Jon",
"bot": false
},
"until": 1759228800000,
"createdAt": 1758624000000,
"by": "Mara 🌻"
}Untilمتى ينتهي الكتم أو الحظر.
الحقل النوع المعنى untilintegerأو null الوقت؛ null لحظر بلا نهاية أو كتم مرفوع.
مثال {
"until": 1758624600000
}Tagوسم وعدد المنشورات التي تحمله.
الحقل النوع المعنى tagstringالوسم، دون #. postsintegerكم منشورًا حديثًا يحمله.
مثال {
"tag": "garden",
"posts": 58
}SearchResultثلاث قوائم، قد تكون فارغة.
الحقل النوع المعنى postsPost[]المنشورات المطابقة، الأحدث أولًا. profilesProfileBrief[]الملفات الشخصية المطابقة، بحسب الاسم المختصر. tagsTag[]الوسوم المطابقة، الأكثر استخدامًا أولًا.
مثال {
"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",
"kind": "image",
"poster": null,
"ai": "without"
}
],
"poll": {
"options": [
{
"text": "Lavender",
"votes": 12
},
{
"text": "Sunflowers",
"votes": 7
},
{
"text": "Clover",
"votes": 3
}
],
"total": 22,
"multiple": false,
"endsAt": null,
"running": true,
"resultsVisible": true,
"myVotes": [
0
]
},
"quotes": null,
"continues": null,
"counts": {
"replies": 4,
"likes": 31,
"reposts": 2
},
"pinned": false,
"giftDrop": {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
},
"createdAt": 1758624000000
}
],
"profiles": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"verified": true,
"accountKind": "person"
}
],
"tags": [
{
"tag": "garden",
"posts": 58
}
]
}Emojiرمز تعبيري لهذا الخادم.
الحقل النوع المعنى namestringالاسم، كما يقع بين النقطتين. urlstringعنوان الصورة، نسبةً إلى هذا الخادم.
مثال {
"name": "tellmelo",
"url": "/api/media?id=e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
}Notificationإشعار. يمكن للسطر الواحد أن يجمع عدة أحداث من النوع نفسه.
الحقل النوع المعنى idstringمعرّف الإشعار. kindstringما الذي حدث.reply — ردّ عليك أحدهم.like — أُعجب أحدهم بمنشورك.reply_like — يصوّت أحدهم إيجابيًا على ردّك.duel — أحدهم يتحدّاك في مبارزة المنشورات، أو لُعب تحدّيك.reply_pick — يُبرز صاحب المنشور ردّك.repost — أعاد أحدهم نشر منشورك.follow — يتابعك أحدهم.mention — أشار إليك أحدهم.group_mention — أشار أحدهم إلى مجموعة تقودها؛ text هو اسمها.channel_mention — أشار إليك أحد في قناة دردشة في إحدى مجموعاتك، بما في ذلك @everyone؛ العضو هو actor، والجملة تذكر القناة والمجموعة، لا الرسالة أبدًا.message — أرسل إليك أحدهم رسالة.scheduled — نُشر أحد منشوراتك المجدولة.video — منشور لك كان ينتظر الفيديو نُشر أو عاد مسودة.reminder — حان موعد تذكير عن منشور محفوظ.report — ما آل إليه بلاغ أرسلته.moderation — قرار بشأن حسابك: تحذير أو تقييد أو اعتراض.team — عمل جديد للفريق (للمالكين والمديرين والمشرفين فقط).reward — مكافأة الدعوة على وشك الانتهاء أو انتهت.gift — هدية من الفريق: اشتراك، أو شرارات لك أو لمجموعة تقودها.present — هدية من عضو: شرارات أو مدة اشتراك؛ العضو هو actor.spark — تنتهي شرارات قريبًا، أو لم تعد شرارات مجموعة تقودها تكفي مزاياها.loyalty — عن إيقاع الوفاء: يُحتسب أسبوع نشط أو ينقصه يوم، أو مكافأة جديدة أو توشك على الزوال.impact — كيف كانت منشوراتك خلال اثنتي عشرة ساعة بعد يوم، في إشعار واحد.discovery — دعوة إلى برنامج «مُكتشَف»، أو أن مكانًا فيه يبدأ أو ينتهي.group_post — منشور جديد في مجموعة يرنّ جرسها لذلك.group_moderation — أزالت قيادة مجموعة أحد منشوراتك، أو أزالتك من المجموعة.group — أمر قام به عضو معك في مجموعة: دعاك، أو قبلك أو رفضك، أو جعلك مشرفًا مشاركًا، أو سلّمك المجموعة أو حلّها، أو تقدّم بطلب للانضمام إلى مجموعتك؛ العضو هو actor، واسم المجموعة يأتي في نهاية الجملة.coauthor — دعاك أحدهم كمؤلف مشارك في منشور.partner — تذكير من برنامج الشركاء، أو انتهاء شارة الشريك.news — مقالة جديدة في منطقة تتابعها.pick — أحد منشوراتك مرشّح لمنشور الأسبوع أو منشور العام، أو فاز.advent — باب جديد من تقويم زمن المجيء مفتوح، أو فُتح باب، أو لا يزال باب اليوم ينتظر.team_message — رسالة كتبها فريق tellmelo لأعضاء مختارين.challenge — بدأ تحدٍّ جديد للأسبوع.nudge — مرة واحدة: منشور لم يردّ عليه أحد بعد، أو التحدي الجاري.signin — يسأل كمبيوتر إن كنت تسجّل الدخول عليه الآن. textstringأو null للبلاغات والإشراف فقط: النص المتعلق، وإلا null. actorActorمن فعل ذلك. postIdstringأو null المنشور المعني (null إن لم يتعلق بأي منشور). readbooleanهل عُلّم كمقروء. moreintegerكم حدثًا آخر يمثله هذا السطر، فوق الحدث المذكور. createdAtintegerمتى حدث أول مرة. updatedAtintegerمتى جمع حدثًا آخر آخر مرة. القائمة مرتّبة بحسبه.
مثال {
"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من أطلق الإشعار.
الحقل النوع المعنى handlestringالاسم المختصر. namestringالاسم الظاهر.
مثال {
"handle": "jon",
"name": "Jon"
}Conversationسطر واحد من صندوق رسائلك.
الحقل النوع المعنى withstringمعرّف الحساب الآخر: ما يتوقعه /conversations/{with}/messages. handlestringاسمه المختصر. namestringاسمه الظاهر. excerptstringأو null بداية آخر رسالة (null إن لم يكن فيها نص). truncatedbooleanهل قُصّ المقتطف. fromMebooleanهل آخر رسالة منك. lastMessageIdstringمعرّف آخر رسالة. unreadintegerكم من رسائله لم تقرأها بعد. updatedAtintegerمتى كُتبت آخر رسالة.
مثال {
"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رسالة في محادثة.
الحقل النوع المعنى idstringمعرّف الرسالة. textstringأو null النص (null لرسالة هي صور فقط). fromstringمعرّف الحساب الذي كتبها. tostringمعرّف الحساب الذي كُتبت إليه. readbooleanهل قرأها المستلم. mediaMedia[]صورها؛ فارغة إن لم توجد. replyTostringأو null id الرسالة التي تجيب عنها هذه الرسالة (null إن لم تجب عن أي رسالة). منذ 2.2.createdAtintegerمتى أُرسلت.
مثال {
"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
}PlannedMessageرسالة لك مجدولة لوقت لاحق.
الحقل النوع المعنى idstringid الرسالة المجدولة.tostringid الحساب المستلم.textstringأو null النص، وnull مع التشفير من طرف إلى طرف. sendAtintegerمتى تُرسل. statestringحالتها.waiting — تنتظر موعدها.held — محجوزة لأن الاشتراك انتهى. يمكنك إرسالها بنفسك أو حذفها.failed — تعذر إرسالها.
مثال {
"id": "3b2a1c0d-9e8f-4a7b-b6c5-d4e3f2a1b0c9",
"to": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"text": "Happy birthday! 🎂",
"sendAt": 1758710400000,
"state": "waiting"
}ScheduledPostمنشور لك لم يُنشر بعد.
الحقل النوع المعنى idstringمعرّف المنشور. textstringأو null النص. communityIdstringأو null المجموعة التي يُنشر فيها (null خارج المجموعات). publishAtintegerأو null موعد نشره (null ما دام ينتظر شيئًا آخر). deleteAtintegerأو null موعد حذفه لنفسه (null: أبدًا). waitingForstringما ينتظره.time — موعده.review — الموافقة على نص كُتب للمراجعة.check — فحص الإشراف الآلي.payment — دفع ثمن هداياه. createdAtintegerمتى كُتب.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"text": "Market day tomorrow – see you at the bee stand! #garden",
"communityId": null,
"publishAt": 1758710400000,
"deleteAt": null,
"waitingFor": "time",
"createdAt": 1758624000000
}Collectionمجموعة من المنشورات المحفوظة.
الحقل النوع المعنى idstringid المجموعة.namestringاسمها. countintegerعدد المنشورات فيها.
مثال {
"id": "6d5c4b3a-2918-4e7f-a1b2-c3d4e5f60718",
"name": "Recipes",
"count": 12
}Eventفعالية قادمة لملف شخصي.
الحقل النوع المعنى idstringid الفعالية.titlestringالعنوان. startsAtintegerالبداية. endsAtintegerأو null النهاية، وnull بلا نهاية. placestringأو null المكان. descriptionstringأو null الوصف. signupsEventSignupsأو null التسجيلات، وnull بلا تسجيل.
مثال {
"id": "2a3b4c5d-6e7f-4809-9a1b-2c3d4e5f6a7b",
"title": "Seed swap",
"startsAt": 1758883200000,
"endsAt": 1758890400000,
"place": "Community garden",
"description": "Bring seeds, take seeds.",
"signups": {
"count": 14,
"going": true
}
}EventSignupsعدد المسجلين.
الحقل النوع المعنى countintegerعدد التسجيلات. goingbooleanهل أنت مسجل.
مثال {
"count": 14,
"going": true
}EventSignupشخص سجّل في إحدى فعالياتك.
الحقل النوع المعنى idstringid الحساب.handlestringاسم المستخدم. namestringالاسم المعروض. atintegerوقت التسجيل.
مثال {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"at": 1758624000000
}Pictureصورة مرفوعة.
الحقل النوع المعنى idstringid الصورة.urlstringأين يمكن رؤيتها.
مثال {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9"
}EmojiPictureالصورة المرفوعة لرمز تعبيري.
الحقل النوع المعنى idstringid الصورة.urlstringأين يمكن رؤيتها. animatedbooleanهل هي متحركة.
مثال {
"id": "8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}OwnEmojiأحد رموزك التعبيرية الخاصة.
الحقل النوع المعنى namestringاسمه. urlstringصورته. animatedbooleanهل هو متحرك. restingbooleanمتوقف لأن الاشتراك يسمح الآن برموز أقل: يبقى لكنه غير قابل للاستخدام.
مثال {
"name": "sunflower",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false,
"resting": false
}GroupEmojiإيموجي لمجموعة.
الحقل النوع المعنى namestringاسمه. urlstringصورته. animatedbooleanهل هو متحرك.
مثال {
"name": "seedling",
"url": "/api/media?id=8c7b6a59-4837-4261-9f5e-d4c3b2a1f0e9",
"animated": false
}BotEventحدث في إحدى مجموعات الروبوت.
الحقل النوع المعنى idstringرقمه، تصاعديًا؛ به تتم المتابعة (since، Last-Event-ID). typestringما الذي حدث.message.created — كُتبت رسالة.message.deleted — حُذفت رسالة.member.joined — انضم شخص ما.member.left — غادر شخص ما أو أُزيل.voice.joined — انضم شخص ما إلى قناة صوتية.command — استخدم شخص ما أمرًا من أوامر الروبوت.interaction — ضغط شخص ما زرًا في رسالة الروبوت. communitystringالمجموعة. channelstringأو null القناة؛ null للمجموعة كلها. createdAtintegerمتى حدث. dataobjectما يتعلق به حسب النوع: message أو member (مع reason) أو command أو interaction.
مثال {
"id": "4711",
"type": "message.created",
"community": "c81d4e2a-0f3b-4a6c-9e57-1d2b3c4a5f60",
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"createdAt": 1758634800000,
"data": {
"message": {
"id": "61a2b3c4-d5e6-4f70-8192-a3b4c5d6e7f8",
"text": "/dice 6",
"author": {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"bot": false
},
"media": 0,
"replyTo": null,
"threadOf": null,
"createdAt": 1758634800000
}
}
}BotCommandأمر من أوامر روبوت.
الحقل النوع المعنى namestringاسمه، دون «/». descriptionstringما يفعله.
مثال {
"name": "dice",
"description": "Rolls a die"
}VoiceSeatمقعد في قناة صوتية.
الحقل النوع المعنى urlstringعنوان خادم الوسائط (LiveKit). tokenstringرمز هذه القناة، صالح لبضع دقائق. iceServersobject[]خوادم STUN وTURN للاتصال. speakbooleanهل يحق للروبوت إرسال الصوت هناك. videobooleanهل يحق للروبوت إرسال الفيديو هناك.
مثال {
"url": "wss://voice.example.org",
"token": "eyJhbGciOiJIUzI1NiJ9…",
"iceServers": [
{
"urls": [
"stun:turn.example.org:3478"
]
}
],
"speak": true,
"video": false
}Webhookأحد خطافات الويب لديك.
الحقل النوع المعنى idstringid خطاف الويب.urlstringعنوانه. kindsstring[]ما يُبلَّغ به. activebooleanهل يستقبل التسليمات. بعد إخفاقات كثيرة متتالية يُعطَّل. lastStatusintegerأو null حالة HTTP لآخر تسليم. lastAtintegerأو null وقت آخر تسليم. failuresintegerالإخفاقات المتتالية.
مثال {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"url": "https://example.org/tellmelo-hook",
"kinds": [
"reply",
"mention"
],
"active": true,
"lastStatus": 200,
"lastAt": 1758624000000,
"failures": 0
}WebhookCreatedخطاف ويب جديد مع سره.
الحقل النوع المعنى idstringid خطاف الويب.secretstringالسر الخاص بالتوقيعات، هذه المرة فقط.
مثال {
"id": "1f2e3d4c-5b6a-4798-8a7b-6c5d4e3f2a1b",
"secret": "whsec_3f9a…"
}GroupBotبوت مجموعة.
الحقل النوع المعنى idstringid حساب البوت.handlestringمعرّفه. namestringاسمه. descriptionstringما يفعله، بكلمات مالكه. permissionsstring[]ما يسمح به دوره في المجموعة.
مثال {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "gardenbot",
"name": "Garden bot",
"description": "Reminds the group of watering days.",
"permissions": [
"send",
"view"
]
}VoiceRoomقناة صوتية مع من فيها.
الحقل النوع المعنى channelstringid القناة.peopleVoicePerson[]من فيها الآن.
مثال {
"channel": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
"people": [
{
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": false,
"deaf": false,
"camera": false,
"screen": true
}
]
}VoicePersonشخص في قناة صوتية.
الحقل النوع المعنى idstringid الحساب.handlestringالمعرّف. namestringالاسم المعروض. mutedbooleanهل الميكروفون مغلق. deafbooleanهل لا يسمع شيئًا (باختياره). camerabooleanهل الكاميرا مفتوحة. screenbooleanهل يشارك الشاشة.
مثال {
"id": "a3e1f7c2-54b9-4d0e-8f16-7b2c9d4e1a05",
"handle": "mara",
"name": "Mara 🌻",
"muted": true,
"deaf": false,
"camera": false,
"screen": false
}GiftDropهدايا تحت منشور – دون أسماء من حصلوا عليها أبدًا.
الحقل النوع المعنى itemstringما يحويه المكان.plan — أشهر اشتراك (داعم).sparks — شرارات. quantityintegerكم يحوي كل مكان: أشهر أو شرارات. placesintegerعدد الأماكن الكلي. leftintegerكم مكانًا ما زال متاحًا. audiencestringمن يمكنه الحصول عليها.all — الجميع.followers — متابِعو من يوزّع فقط.group — أعضاء مجموعة المنشور فقط. newAccountsbooleanهل يمكن للحسابات التي عمرها أقل من 7 أيام الحصول عليها أيضًا. statusstringالحالة.awaiting_payment — بانتظار الدفع؛ لم يُنشر المنشور بعد.open — ما زالت هناك أماكن متاحة.closed — انتهى: أُخذ كل شيء أو استُرد المبلغ أو حُذف المنشور. claimedbooleanهل لديك مكان بالفعل (دائمًا false في المسارات العامة).
مثال {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": true
}OwnGiftDropهداياك تحت منشور، مع المنشور وطريقة الدفع.
كل حقول GiftDrop ، وإضافة إلى ذلك:
الحقل النوع المعنى postIdstringالمنشور الذي تقع تحته. fundingstringكيف دُفع ثمنها.free — مجانًا.quota — من الحصة.payment — مدفوع. createdAtintegerمتى أُنشئت.
مثال {
"item": "plan",
"quantity": 3,
"places": 10,
"left": 4,
"audience": "followers",
"newAccounts": false,
"status": "open",
"claimed": false,
"postId": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota",
"createdAt": 1758624000000
}Quotaما تحويه الحصة.
الحقل النوع المعنى monthsintegerأشهر الاشتراك المتبقية للإهداء. sparksintegerالشرارات المتبقية للإهداء. looksQuotaLook[]المظاهر المتبقية في الرصيد للإهداء (منذ 2.13).
مثال {
"months": 120,
"sparks": 500,
"looks": [
{
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}
]
}QuotaLookمظهر في رصيد شريك، مع القطع المتبقية (منذ 2.13).
الحقل النوع المعنى idstringمعرّف المظهر؛ عند الإهداء مرّره في itemId. namestringاسم المظهر. kindstringنوع المظهر.frame — إطار الصورة الشخصية.background — تأثير الغلاف.card — بطاقة الملف الشخصي. quantityintegerكم قطعة بقيت.
مثال {
"id": "frame-gold",
"name": "Goldring",
"kind": "frame",
"quantity": 25
}QuotaGiftهدية من الحصة.
الحقل النوع المعنى itemstringما أُهدي.plan — أشهر اشتراك (داعم).sparks — شرارات.shop — مظهر من الرصيد (منذ 2.13). quantityintegerالكمية. itemIdstringأو null المظهر المُهدى عندما تكون قيمة item هي shop؛ وإلا null. recipientActorلمن. createdAtintegerمتى.
مثال {
"item": "plan",
"quantity": 3,
"itemId": null,
"recipient": {
"handle": "jon",
"name": "Jon"
},
"createdAt": 1758627600000
}Embedالعناوين للمواقع الأخرى. تعمل بدون مفتاح.
الحقل النوع المعنى pagestringالمشغّل لـ <iframe>. filestringملف MP4 لمشغّلك الخاص. posterstringصورة المعاينة. codestringرمز التضمين الجاهز.
مثال {
"page": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918",
"file": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/file",
"poster": "https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918/poster",
"code": "<iframe src=\"https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918\" width=\"480\" height=\"300\" title=\"Happy bees\" style=\"border:0;max-width:100%\" loading=\"lazy\" allowfullscreen></iframe>"
}UploadStartedعملية رفع بدأت.
الحقل النوع المعنى uploadstringمعرّف عملية الرفع هذه. pieceintegerأقصى حجم للجزء، بالبايت.
مثال {
"upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b",
"piece": 4194304
}UploadPieceجزء وصل.
الحقل النوع المعنى receivedintegerعدد البايتات التي وصلت. itemMediaItemأو null بعد الجزء الأخير، الـ GIF أو الفيديو الجديد، وإلا null.
مثال {
"received": 4194304,
"item": null
}Createdرد عملية كتابة أنشأت شيئًا.
الحقل النوع المعنى idstringمعرّف ما أُنشئ. scheduledForintegerأو null متى يظهر، إن كان النشر مجدولًا (وإلا null). deleteAtintegerأو null متى يحذف نفسه، إن ضُبط ذلك (وإلا null).
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"scheduledFor": null,
"deleteAt": null
}DropCreatedالرد عند إنشاء منشور فيه هدايا.
الحقل النوع المعنى idstringمعرّف المنشور الجديد. fundingstringكيف دُفع ثمن الهدايا.free — مجانًا.quota — من الحصة.
مثال {
"id": "5f0c2a9e-8d41-4b7a-9c3e-2e61d0f4a7b1",
"funding": "quota"
}Madeما أُنشئ أو تغيّر للتو.
الحقل النوع المعنى idstringالـid؛ ولرابط الدعوة رمزه.
مثال {
"id": "0d9c8b7a-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
}Okرد عملية كتابة ليس لديها ما تعيده.
الحقل النوع المعنى okbooleanدائمًا true.
مثال {
"ok": true
}الوصف المقروء آليًا الجدول الذي تقوم عليه هذه الصفحة متاح بصيغة OpenAPI على https://api.tellmelo.com/v2/openapi.json.
https://api.tellmelo.com/v2/openapi.jsonصور GIF ومقاطع الفيديو على مواقع أخرى ما يشاركه العضو ويسمح به على مواقع أخرى أيضًا يمكن لأي موقع عرضه: البحث مع anywhere=true يجده، وembed الخاص به يحتوي على العناوين. إذا سحبه العضو، يختفي من هناك خلال دقائق.
الرفع على أجزاء ابدأ أولًا، ثم أرسل الملف على أجزاء. قسّم الملف الأكبر إلى أجزاء من piece بايت، مع offset عند موضع كل جزء. بعد الجزء الأخير يصلك الـ GIF أو الفيديو الجاهز.
curl -X POST -H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/json" \
-d '{"kind":"gif","size":2400000,"name":"Happy bees","shared":true,"anywhere":true}' \
"https://api.tellmelo.com/v2/media/uploads"
→ { "upload": "e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b", "piece": 4194304 }
curl -X PUT -H "Authorization: Bearer tm_key_…" \
-H "Content-Type: application/octet-stream" \
--data-binary @bees.gif \
"https://api.tellmelo.com/v2/media/uploads/e7c1a2b3-4d5e-4f60-8a9b-0c1d2e3f4a5b?offset=0"
→ { "received": 2400000, "item": { "id": "…", "embed": { … } } }التضمين يعرض المشغّل الـ GIF بشكل متكرر أو الفيديو مع أدوات التحكم، وتحته الاسم ومن شاركه. ضع الرمز من embed.code في الصفحة:
<iframe src="https://tellmelo.com/media-embed/b2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918" width="480" height="300" title="Happy bees" style="border:0;max-width:100%" loading="lazy" allowfullscreen></iframe>المنتديات والبرامج التي تدعم oEmbed تجلب الرمز بنفسها عندما تعطيها عنوان المشغّل:
https://tellmelo.com/api/oembed?url=https%3A%2F%2Ftellmelo.com%2Fmedia-embed%2Fb2d7e9f1-3c4a-4e8b-a1f0-6d5c4b3a2918مكان المفتاح على خادمك، وليس أبدًا في كود صفحة ويب. ابحث وارفع عبر خادمك؛ العناوين في embed لا تحتاج إلى مفتاح.
أداة اختيار GIF لموقعك باستخدام مفتاح موقع (قسم المطورين ← أداة اختيار GIF لموقعك ) يحصل موقعك على بحث جاهز: سطران في الصفحة، ونقرة على الزر تفتحه. المفتاح عام ولا يعمل إلا على العناوين التي تدخلها له. لا تعرض أداة الاختيار إلا ما سمح به الأعضاء على مواقع أخرى.
<script src="https://tellmelo.com/picker.js" data-key="tmsk_…" defer></script>
<button type="button" data-tellmelo-picker>GIF</button>عند الاختيار، يُطلق الزر الحدث tellmelo:pick مع العنصر المختار: code لتضمينه، وfile وposter وname وauthor. ومع data-target="#field" يُدرج code مباشرة في حقل نصي، ومع data-kind="video" يبحث عن مقاطع الفيديو. إذا ضمّنت الملف بنفسك، فاعرض اسم الشخص الذي شاركه.
document.addEventListener('tellmelo:pick', (event) => {
const { code, file, name, author } = event.detail;
});تسجيل الدخول عبر tellmelo تتيح مواقع أخرى للأعضاء تسجيل الدخول بحساباتهم في tellmelo عبر OpenID Connect (رمز التفويض مع PKCE). ولا يتلقى الموقع إلا اسم المستخدم والبريد الإلكتروني المؤكَّد ومعرّفًا خاصًا به لكل عضو (sub).
تطلب تطبيقًا ضمن «قسم المطورين → تسجيل الدخول عبر tellmelo». يراجع الفريق كل تطبيق؛ وبعدها ترى هناك معرّف العميل، وتنشئ للتطبيقات التي لها خادم سرّ العميل الذي يُعرض مرة واحدة.
كل ما تحتاجه المكتبة موجود في مستند الاكتشاف:
https://tellmelo.com/.well-known/openid-configurationأرسل العضو إلى /oauth/authorize مع response_type=code وclient_id وredirect_uri (كما سُجّل تمامًا) وscope=openid profile email وstate وnonce وcode_challenge مع code_challenge_method=S256. استبدل الرمز خلال دقيقة لدى /oauth/token: grant_type=authorization_code وcode وredirect_uri وcode_verifier؛ وترسل التطبيقات التي لها خادم السرّ أيضًا، بمصادقة Basic أو في النموذج. يحتوي رمز الهوية (RS256، والمفاتيح لدى /oauth/jwks) على sub، ومع profile أيضًا preferred_username، ومع email أيضًا email وemail_verified. ورمز الوصول صالح 10 دقائق ولا يقرأ إلا /oauth/userinfo. https://tellmelo.com/oauth/authorize?response_type=code&client_id=tm_…
&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=openid%20profile%20email
&state=…&nonce=…&code_challenge=…&code_challenge_method=S256
curl -u "tm_…:tms_…" https://tellmelo.com/oauth/token \
-d grant_type=authorization_code -d code=… \
-d redirect_uri=https://example.com/callback -d code_verifier=…{
"iss": "https://example.social",
"sub": "Xq3vR0b8yJm1cW4tZ2kPn6sLd9fHa7gE5uTo0iBeVxY",
"aud": "tm_5f2c9e1a7b3d4c6e8f0a1b2c",
"iat": 1760432400,
"exp": 1760433000,
"nonce": "n-0S6_WzA2Mj",
"at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
"preferred_username": "anna",
"email": "anna@example.com",
"email_verified": true
}لا توجد رموز تحديث: يسجّل tellmelo الدخول ولا يمنح وصولًا دائمًا. وإن أزال عضو الموقع أو علّق الفريق التطبيق، يجيب /oauth/userinfo فورًا بـ 401. يفحص prompt=none دون صفحة، ويسأل prompt=consent من جديد.
ما نتوقعه تسري القواعد نفسها كما في كل مكان: لا تحرّش، ولا رسائل مزعجة، ولا محتوى لا تملك حقوقه. أنت مسؤول عمّا ينشره مفتاحك.
لا تعرض GIF ومقاطع فيديو الآخرين على موقعك إلا إذا كان لديها embed، عبر هذه العناوين ومع اسم الشخص الذي شاركها. إذا لم يعد شيء متاحًا، توقّف عن عرضه. لا تنسخ الملفات إلى مجموعة خاصة بك.