ابنِ فوق ملاحظات
اجتماعاتك أنت.
ثلاثة مداخل واعتماد واحد: واجهة REST للملاحظات والمجلدات، وخطافات ويب موقَّعة لأحداث الملاحظات والمهام، وخادم MCP تتحدث إليه أدوات الذكاء الاصطناعي مباشرة.
مفتاح واحد يُنشأ من الإعدادات.
ينشئ مسؤول مساحة العمل مفتاحًا من الإعدادات، ثم التكاملات، ثم خطافات الويب الصادرة. يظهر المفتاح مرة واحدة فقط عند الإنشاء ولا يُحفظ منه سوى بصمة مشفّرة، فالنسخة الضائعة لا تُستعاد. أرسله كرمز حامل أو داخل ترويسة X-API-Key.
curl https://api.reline.so/api/zapier/me \
-H "Authorization: Bearer rlk_your_key_here"
# X-API-Key: rlk_your_key_here works tooإلى أين يصل المفتاح
يعمل المفتاح نيابةً عن المسؤول الذي أنشأه، وداخل مساحة العمل تلك وحدها. تمر كل قراءة وكتابة عبر فحوص الصلاحيات نفسها التي يخضع لها ذلك الشخص في التطبيق، فلا يبلغ المفتاح ملاحظة خاصة ما كان صاحبه ليفتحها أصلًا.
إبطال مفتاح
يوقف الإبطال المفتاح من الطلب التالي مباشرة، ويحذف كل اشتراكات خطافات الويب التي أنشأها، فتتوقف الجهات المستقبِلة عن تلقي الأحداث في اللحظة نفسها بلا مهلة سماح.
ست نقاط نهاية للملاحظات والمجلدات.
الاستجابات بصيغة JSON. أما الإخفاقات فتعود برمز حالة من فئة 4xx وحقل يصف ما الذي حدث.
| الطريقة | نقطة النهاية | الوظيفة |
|---|---|---|
| GET | /api/zapier/me | يحوّل المفتاح إلى مساحة عمل ومستخدم. استخدمه للتحقق من صحة اعتماد ما. |
| GET | /api/zapier/notes | الملاحظات الحديثة التي يمكنك رؤيتها، الأحدث أولًا. حدّدها بمجلد واحد عبر folderId. |
| POST | /api/zapier/notes | ينشئ ملاحظة، ويمكن وضعها داخل مجلد تملك صلاحية التحرير فيه. |
| GET | /api/zapier/folders | المجلدات التي يمكنك رؤيتها. مرّر level=edit لتقتصر على ما يمكنك الكتابة فيه. |
| POST | /api/zapier/subscribe | يسجّل اشتراك خطاف ويب لحدث واحد، ويمكن حصره في مجلد بعينه. |
| DELETE | /api/zapier/subscribe | يزيل اشتراكًا بالمعرّف الذي عاد عند إنشائه. |
curl -X POST https://api.reline.so/api/zapier/notes \
-H "Authorization: Bearer rlk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"title":"Kickoff call","description":"Agenda + owners"}'
# 201 -> { "id": "...", "title": "Kickoff call", "url": "https://..." }كائن الملاحظة
الشكل نفسه يعود من نقطة نهاية الملاحظات ويصل داخل حمولة كل خطاف ويب، فما تربطه مرة واحدة ينطبق في كل مكان. أما حقول الملخّص والمهام فترافق الأحداث التي تحملها.
{
"id": "j57...",
"noteId": "j57...",
"title": "Kickoff call",
"url": "https://app.reline.so/acme/notes/j57...",
"folderId": "k21..." | null,
"folderName": "Clients" | null,
"isArchived": false,
"createdAt": 1788302403777,
"updatedAt": 1788302911204
}ستة أحداث، موقَّعة عند الخروج.
اشترك من الإعدادات أو عبر الواجهة البرمجية. كل تسليم هو طلب POST يحمل حدثًا واحدًا. احصر الاشتراك في مجلد لتضييق ما يوقظه.
الأحداث
- أُنشئت ملاحظة، سواء بفعل شخص أو من التقويم أو عبر الواجهة البرمجية.
- اكتمل توليد ملخّص. أما تحريره لاحقًا فلا يعيد إطلاق الحدث.
- انتقلت ملاحظة إلى المهملات. الملاحظة المقصودة وحدها، لا سلسلة كاملة.
- عادت ملاحظة من المهملات.
- استُخرجت مهام من ملاحظة، وتصل دفعةً واحدة تحمل القائمة الكاملة الحالية.
- أنجز أحدهم مهمة ووضع علامة عليها.
التسليم
ترافق المتنَ ثلاث ترويسات: اسم الحدث، ومعرّف تسليم فريد، والتوقيع.
POST https://your-endpoint.example.com
X-Reline-Event: note.summarized
X-Reline-Delivery: 9f3c...
X-Reline-Signature: t=1788302403,v1=6b8a...
{
"id": "9f3c...",
"event": "note.summarized",
"occurredAt": 1788302403777,
"workspace": { "id": "w1...", "slug": "acme", "name": "Acme" },
"data": { "noteId": "j57...", "summary": "# Kickoff\n..." }
}التحقق من تسليم
التوقيع هو HMAC-SHA256 يُحسب على الطابع الزمني والمتن الخام موصولين بنقطة، بمفتاح التوقيع السري الذي ظهر عند إنشاء الاشتراك. احسبه على البايتات كما وصلتك قبل أي تحليل لـ JSON، وقارن في زمن ثابت.
import crypto from 'node:crypto'
// `raw` is the request body as received — verify BEFORE JSON.parse.
function verify(raw: string, header: string, secret: string): boolean {
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')))
const expected = crypto
.createHmac('sha256', secret)
.update(`${parts.t}.${raw}`)
.digest('hex')
if (typeof parts.v1 !== 'string' || parts.v1.length !== expected.length) return false
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1))
}حين يتعطل المستقبِل
تُعاد محاولة التسليم، والاشتراك الذي يواصل الإخفاق يُطفأ تلقائيًا بدل إعادة المحاولة بلا نهاية. وتظهر آخر حالة وآخر خطأ لكل خطاف في الإعدادات.
وجّه أداة ذكاء اصطناعي إلى مساحة عملك.
يتحدث الخادم ببروتوكول Model Context Protocol فوق HTTP، لذا يعمل في claude.ai وChatGPT وClaude Code وCursor وأي عميل آخر يدعم البروتوكول. سجّل الدخول عبر OAuth، أو أرسل مفتاح مساحة العمل نفسه كرمز حامل.
claude mcp add --transport http reline https://mcp.reline.so/mcp
# or authenticate a plain HTTP client with the same workspace key:
# Authorization: Bearer rlk_your_key_hereالأدوات التي تقسّم النتائج إلى صفحات تعيد مؤشرًا. الصفحة القصيرة لا تعني النهاية، النهاية يدل عليها المؤشر الفارغ وحده.
القراءة
- search
- fetch
- get_note
- get_transcript
- list_notes
- count_notes
- list_meetings
- list_recent_meetings
- list_folders
- list_people
- list_calendar_events
- list_action_items
- list_workspaces
- get_workspace_info
الكتابة
- create_note
- append_to_note
- update_note
- create_folder
- complete_action_item
الأرقام التي يجدر معرفتها.
120 طلبًا في الدقيقة
تُحسب لكل مفتاح ضمن نافذة ثابتة مدتها دقيقة. وتجاوزها يعيد رمز 429 حتى تتقدم النافذة.
10 مفاتيح فعّالة لكل مساحة عمل
المفاتيح المُبطلة لا تُحسب. أنشئ مفتاحًا لكل تكامل حتى تتمكن من سحبها واحدًا تلو الآخر.
للمسؤولين وحدهم
يتطلب إنشاء المفاتيح وإبطالها دور المسؤول. أما الأعضاء فيمكنهم استخدام تكامل مبني على مفتاح، دون أن ينشئوا واحدًا.
مساحة عمل واحدة لكل مفتاح
لا يعبر المفتاح إلى مساحة عمل أخرى أبدًا. والعمل عبر عدة مساحات يستلزم مفتاحًا لكل واحدة.
أتبني شيئًا فوق هذا؟
أخبرنا بما توصّله وبما ينقصك. هذه الواجهة تتوسع حيث يضغط الناس عليها فعلًا.