SocialHub.AI

الامتثال والموافقة API مباشر

اقرأ بيان خصوصية/امتثال الأعضاء المنشور لفريقك، وتحقق من موافقة كل عضو على إصدار مُدار v2 REST API. يمكن لمتجرك الإلكتروني أو تطبيقك أو مستودع بياناتك أو نظامك الإداري جلب البيان الحالي، واستعراض سجل إصداراته، والتأكد من الإصدار الذي وافق عليه العضو تحديدًا - باستخدام مفاتيح مُحددة النطاق ومُدققة. اقرأ بيان خصوصية/امتثال الأعضاء المنشور لفريقك، وتحقق من موافقة كل عضو عليه على حدة، باستخدام مفاتيح مُدققة ومُحددة النطاق.

المصادقة والنطاقات

جميع نقاط النهاية موجودة على المضيف Flash API وتُصادق باستخدام مفتاح API من جانب الخادم (Bearer). يُستمد الفريق دائمًا من المفتاح - ولا يُرسل أبدًا في الطلب. نطاقان للقراءة فقط يُقيدان الوصول:

  • privacy:read - البيان: الإصدار الحالي، السجل، وإصدار مُحدد.
  • consent:read — سجلات موافقة العضو (الإصدار، النطاقات، الحالة، الوقت).
# Every call uses a server-side API key (Bearer). teamId is derived from the key,
# never sent in the request. Two read scopes:
#   privacy:read  → the statement (current / history / a version)
#   consent:read  → a member's consent records
curl https://flash.socialhub.ai/api/v2/privacy/current \
  -H "Authorization: Bearer fl_live_your_key_here"

اقرأ البيان.

النسخ المنشورة والمؤرشفة فقط - لا تُعرض المسودات أبدًا، ويتم تنقيح المحتوى (إزالة علامات المراجعة الداخلية) قبل مغادرته API. المجموعات الموحدة

GET https://flash.socialhub.ai/api/v2/privacy/current          # scope: privacy:read

# 200 — the current published statement (sanitized), or { "data": null } if none published.
{
  "data": {
    "id": "pol_…",
    "version": "v3",
    "versionSeq": 3,
    "status": "published",
    "locale": "en",
    "changeType": "material",
    "changeSummary": "Updated data-retention section",
    "effectiveAt": "2026-02-01T00:00:00.000Z",
    "contentHash": "…sha256…",
    "content": { "sections": [ { "key": "intro", "title": "…", "body": "…" } ] }
  }
}
GET https://flash.socialhub.ai/api/v2/privacy/policies         # scope: privacy:read

# 200 — version history, newest first (metadata only; published & archived — never drafts).
{
  "data": [
    { "id": "pol_3", "version": "v3", "versionSeq": 3, "status": "published",
      "changeType": "material", "effectiveAt": "2026-02-01T00:00:00.000Z", "contentHash": "…" },
    { "id": "pol_2", "version": "v2", "versionSeq": 2, "status": "archived",
      "changeType": "minor", "effectiveAt": "2026-01-01T00:00:00.000Z", "contentHash": "…" }
  ],
  "total": 2
}

GET https://flash.socialhub.ai/api/v2/privacy/policies/{id}    # one version, full sanitized content (404 for a draft id)

التحقق من الموافقة

تأكد بدقة من إصدار البيان ونطاقاته التي وافق عليها العضو. تُعد السجلات أدلةً تُضاف فقط، وتبقى حتى بعد حذف العضو لها؛ يُعيد API ما تحتاجه للتحقق - دون عنوان IP الخام أو وكيل المستخدم (تقليل معلومات التعريف الشخصية).

GET https://flash.socialhub.ai/api/v2/members/{id}/consents   # scope: consent:read

# 200 — the member's consent records, newest first. The evidence to VERIFY consent:
# which statement version + scopes, the method, status and time. No raw IP / user-agent.
{
  "data": [
    {
      "id": "con_…",
      "scopes": ["privacy_policy", "marketing_email"],
      "method": "register",
      "status": "active",                 // active | legacy_unverified | withdrawn
      "policyVersion": "v3",
      "policyVersionSeq": 3,
      "policyContentHash": "…sha256…",
      "consentedAt": "2026-02-02T10:30:00.000Z"
    }
  ]
}
# A member of another team (or unknown) → 404. No consents yet → { "data": [] }.

الضمانات

معزولة عن المستأجرين

teamId يأتي من API المفتاح؛ يتم حل معرف فريق آخر إلى 404. يتم تحديد معدل نقاط النهاية لكل مفتاح.

لا يتم تسريب المسودات أبدًا

يتم تقديم النسخ المنشورة/المؤرشفة فقط، بعد تنقيحها - بينما تبقى المسودات قيد التطوير والعلامات الداخلية. يتم تقديم النسخ المنشورة/المؤرشفة فقط، بعد تنقيحها - تبقى المسودات قيد التطوير والعلامات الداخلية.

الموافقة مرتبطة بالصياغة

يحمل كل سجل رقم الإصدار number ورمز تجزئة للمحتوى، لذا فإن "v3" تعني دائمًا نفس الكلمات.

الحد الأدنى افتراضيًا

سجلات الموافقة لا تتضمن عنوان IP الخام أو وكيل المستخدم — تحصل على دليل التحقق، وليس بيانات المراقبة.

مرجع قابل للقراءة آليًا: نقاط النهاية موجودة في مواصفات OpenAPI الإصدار 2 على https://flash.socialhub.ai/api/v2/openapi.json (الوسم Privacy).

ما وراء الموافقة: اشتراكات المواضيع، تُفرض عند الإرسال.

الموافقة هي البوابة القانونية؛ أما الاشتراكات في المواضيع فهي خيار العضو الأكثر دقة. أيّالتسويق الذي يرغبون به. من قسم الخصوصية في البوابة، يمكن للعضو إيقاف مواضيع محددة - ترويجية، ونشرات إخبارية، وبرامج ولاء، وإعلانات منتجات - مع الاحتفاظ بالبقية. إنه نموذج إلغاء الاشتراك (لا يوجد سجل = مشترك)، ويتم تطبيقه من جانب الخادم: كل حملة تحمل موضوعًا، وتقوم بوابة الإرسال بحجب الرسالة عندما يقوم العضو بإيقاف تشغيل هذا الموضوع - إلى جانب الحد الأقصى لتكرار سياسة الاتصال وساعات الهدوء. لا تتأثر الرسائل المتعلقة بالمعاملات أبدًا. يدير الأعضاء ذلك بأنفسهم؛ تقرأ البوابة وتكتبها عبر نقطة نهاية جلسة المستهلك (/api/member/topic-subscriptions), لذلك لا يوجد مسؤول API الأمر يتعلق بالمفتاح.