تخطّي إلى المحتوى
المطورون

اربط أنظمتك بـ Marcomm AI

اقرأ ملخصات الأخبار والأخبار الحرجة وطلبات الموافقة المعلقة من أنظمتك الخاصة، ووافق أو ارفض من أدوات الموافقة لديك. يتوفر API في باقة Team وما فوقها بعد مراجعة قصيرة.

البدء

  1. 1
    اطلب الوصول

    صف نظامك واختر البيانات التي تحتاجها. نراجع الطلبات المقدمة.

  2. 2
    أنشئ مفتاحًا

    بعد الموافقة، أنشئ مفتاحًا من الإعدادات، API. يظهر المفتاح مرة واحدة فقط، لذا احفظه في نظامك.

  3. 3
    أرسل طلبًا

    أرسل المفتاح في ترويسة Authorization ثم استدعِ إحدى نقاط النهاية أدناه.

مثال على طلب

curl https://app.marcomm.works/api/v1/news/digest?days=7 \
  -H "Authorization: Bearer mc_live_..."

المصادقة

أرسل مفتاحك على هيئة رمز Bearer مع كل طلب. يعمل المفتاح الشخصي باسم الشخص الذي أنشأه، فيمكنه قراءة الموافقات والبت فيها باسمه. أما مفتاح مساحة العمل فينشئه مشرف ويقتصر على القراءة. يمكن أن تنتهي صلاحية المفاتيح، وأن تُقيَّد بعناوين IP، وأن تُدوَّر: يظل المفتاح القديم يعمل 24 ساعة بعد التدوير.

النطاقات (Scopes)

يحمل المفتاح النطاقات التي تمت الموافقة عليها لتطبيقك فقط.

news
ملخص الأخبار والمقالات والوسائل الإعلامية.
crisis
الأخبار الحرجة وحوادث الأزمات.
approvals
طلبات الموافقة المعلقة، والموافقة عليها أو رفضها بمفتاح شخصي.
content
قراءة البيانات الصحفية ومقالات المدونة.

نقاط النهاية

تبدأ المسارات بـ /api/v1. تستخدم نقاط القراءة GET وتقبل معاملات استعلام. الاستجابة بصيغة JSON على الشكل {"data": ...}.

الطريقةالمسارالنطاقالوظيفة
GET/api/v1/news/digestnewsحجم التغطية والمشاعر وأبرز الوسائل الإعلامية خلال فترة.
GET/api/v1/news/articlesnewsالبحث في التغطية الإخبارية.
GET/api/v1/news/outletsnewsالوسائل الإعلامية التي تغطي شركاتك.
GET/api/v1/crisis/incidentscrisisحوادث الأزمات والمقالات الحرجة.
GET/api/v1/approvalsapprovalsالبيانات الصحفية ومقالات المدونة التي تنتظر صاحب المفتاح، وتلك التي طلب صاحب المفتاح الموافقة عليها.
GET/api/v1/press-releasescontentعرض قائمة البيانات الصحفية.
GET/api/v1/press-releases/{id}contentبيان صحفي واحد مع فقرته الافتتاحية ونصه.
GET/api/v1/blog-postscontentعرض قائمة مقالات المدونة.
GET/api/v1/blog-posts/{id}contentمقال مدونة واحد مع نصه.
POST/api/v1/approvals/press-releases/{id}approvalsالموافقة على بيان صحفي ينتظر صاحب المفتاح أو رفضه.
POST/api/v1/approvals/blog-posts/{id}approvalsالموافقة على مقال مدونة ينتظر صاحب المفتاح أو رفضه.

الموافقة والرفض

أرسل {"decision": "approve"} أو {"decision": "reject", "comment": "..."} إلى العنصر. يتطلب الرفض تعليقًا. يتبع القرار القواعد نفسها المعتمدة في التطبيق وفي Slack، ويُسجَّل باسم صاحب المفتاح. إذا احتوى النص على عبارات تتطلب تأكيدًا، فستتلقى 409 confirmation_required مع التحذيرات، ويمكنك إعادة إرسال الطلب مع "force": true.

curl -X POST https://app.marcomm.works/api/v1/approvals/press-releases/<id> \
  -H "Authorization: Bearer mc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"decision":"reject","comment":"Please fix the headline."}'

حدود المعدل

تُحدَّد الحدود لكل مساحة عمل، في الدقيقة وفي اليوم (UTC). تتضمن الاستجابات الترويسات أدناه. عند تجاوز الحد تتلقى 429 مع Retry-After. لرفع الحد، قدّم طلبًا من الإعدادات، API. يراجعه فريقنا.

X-RateLimit-Limit
عدد الطلبات المسموح بها في الدقيقة.
X-RateLimit-Remaining
عدد الطلبات المتبقية في الدقيقة الحالية.
X-RateLimit-Reset
وقت Unix الذي تُعاد فيه نافذة الدقيقة.
X-RateLimit-Day-Limit
عدد الطلبات المسموح بها في اليوم.
X-RateLimit-Day-Remaining
عدد الطلبات المتبقية اليوم.
Retry-After
عدد الثواني التي يجب انتظارها قبل المحاولة مجددًا. يظهر مع 429 فقط.

الأخطاء

تعيد الأخطاء JSON على الشكل {"error": {"code": ..., "message": ...}}.

الرمزالحالةالمعنى
invalid_key401المفتاح مفقود أو بصيغة غير صحيحة أو تم إبطاله.
expired401انتهت صلاحية المفتاح. أنشئ مفتاحًا أو دوّره.
ip_denied403المفتاح مقيّد بعناوين IP أخرى.
plan_required403مساحة العمل ليست على باقة Team أو أعلى.
access_required403لم تتم الموافقة على الوصول إلى API لمساحة العمل هذه.
suspended403الوصول إلى API لمساحة العمل هذه معلّق.
scope_denied403لا يملك المفتاح النطاق الذي تحتاجه نقطة النهاية هذه.
personal_key_required403المفتاح الشخصي وحده يمكنه الموافقة أو الرفض.
denied403دور صاحب المفتاح لا يسمح بذلك.
unknown_endpoint404نقطة النهاية هذه غير موجودة.
comment_required400سبب الرفض مطلوب.
confirmation_required409التحذيرات تحتاج إلى تأكيد. أعد الإرسال مع ضبط force على true.
rate_limited429تم تجاوز الحد في الدقيقة.
daily_limit429تم بلوغ الحد اليومي.

Webhooks

يمكن أيضًا دفع التنبيهات وطلبات الموافقة والموجز الصباحي إلى نظامك. أضف وجهة من الإعدادات، API، Webhooks. كل طلب بصيغة JSON ويحتوي على الحقول event (alert أو approval أو briefing) وworkspace وtitle وtext وurl وdata وsentAt. يحمل طلب الموافقة data.kind (press_release أو blog أو event) وdata.id، ويمكنك استخدامهما للقراءة والبت عبر API.

الطلبات موقّعة. احسب HMAC-SHA256 لجسم الطلب الخام باستخدام سر التوقيع لديك وقارنه بترويسة X-Marcomm-Signature التي تأتي بالصيغة sha256=<hex>. ارفض الطلبات التي لا تتطابق.

التحقق من Webhook في Node.js

import { createHmac, timingSafeEqual } from 'node:crypto';

export function isFromMarcomm(rawBody: string, signature: string, secret: string) {
  const expected = 'sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex');
  const a = Buffer.from(expected);
  const b = Buffer.from(signature);
  return a.length === b.length && timingSafeEqual(a, b);
}

أدلة الربط

الموافقة من نظام الموافقات لديك

  1. أضف وجهة Webhook عامة وفعّل طلبات الموافقة.
  2. عند وصول Webhook موافقة، تحقق من التوقيع واقرأ data.kind وdata.id.
  3. اعرض الطلب في نظام الموافقات لديك. اقرأ النص عند الحاجة عبر GET press-releases/{id} أو blog-posts/{id}.
  4. أرسل القرار بالمفتاح الشخصي للشخص صاحب القرار. أما الفعاليات وإرسال البريد فيُبَتّ فيها داخل التطبيق عبر الرابط في الرسالة.

تغذية لوحتك بملخص الأخبار

  1. أنشئ مفتاح مساحة عمل بنطاقي news وcrisis.
  2. استدعِ news/digest وفق جدول، مثلًا كل صباح.
  3. استدعِ crisis/incidents بوتيرة أعلى إذا أردت تنبيهات خاصة بك. راقب ترويسات X-RateLimit لتبقى ضمن حدودك.

التنبيهات في محادثتك

  1. لـ Teams وGoogle Chat، أنشئ عنوان URL لـ Webhook الغرفة وأضفه وجهةً من الإعدادات، API، Webhooks.
  2. لـ JANDI وDooray! وChatwork، اربطها من الإعدادات، التكاملات.
  3. اختر ما تستقبله كل وجهة من التنبيهات وطلبات الموافقة والموجز الصباحي، ثم أرسل رسالة اختبار.

هل أنت مستعد للربط؟

يقدّم مالك مساحة العمل أو أحد مشرفيها الطلب من الإعدادات، API. سنخطرك بالبريد الإلكتروني وداخل التطبيق عند اكتمال المراجعة.

فتح إعدادات API