> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# فرز DNC: المصادر وحداثة البيانات ونقطة نهاية الفحص

> هيّئ وضعية Do-Not-Call كاملة — فعّل اشتراك المنظمة، وافهم من أين تأتي مصادر المزامنة، واقرأ حقول المصدر والحداثة في نقطة نهاية الفحص، واعلم ما يعنيه تحفّظ الفشل المفتوح (fail-open) لحركة نقلك.

# فرز DNC: المصادر وحداثة البيانات ونقطة نهاية الفحص

يجيب فرز Do-Not-Call عن سؤال واحد قبل أن ترسل: **هل هذا الرقم على
قائمة تحظر الاتصال به أو تقيّده؟** تفحص Orbit قوائمك الخاصة (أعلام
جهات الاتصال، وإدخالات DNC، والكبح، والموافقة)، والقائمة على مستوى
المنصّة، وخلاصات الولايات الأمريكية الفدرالية/الولائية/TCR، وعديد
من السجلات الوطنية الدولية — والسلسلة نفسها التي يفرضها مسار الإرسال
قابلة للقراءة كواجهة API، فيمكنك إجراء فحص مسبق لقائمة باردة دون
المخاطرة بإرسال مخالف.

هذه الصفحة هي الصورة الكاملة من الطرف إلى الطرف: متى يهمّ الفرز، وكيف
تفعّله، ومن أين تأتي البيانات المزامَنة، وكيف تقرأ حقلي `source`
و`last_synced_at` في نقطة نهاية الفحص، والتحفّظ الوحيد للفشل المفتوح
(fail-open) الذي عليك إدارته. لبوّابات وقت الإرسال التي تستهلك
النتيجة، راجع [Send Gates](/compliance/send-gates).

جميع نقاط النهاية أدناه متجذّرة في
`https://api.orbit.devotel.io/api/v1/compliance`.

<Warning>
  تصف هذه الصفحة ضوابط Orbit المنصّية. **ليست نصيحة قانونية.**
  ما إذا كان رقم ما محظورًا عليك يعتمد على ولايتك القضائية وعلى
  مستلميك وعلى ما ترسله. تأكد لدى مستشار قانوني مؤهّل.
</Warning>

***

## متى يهمّ فرز DNC

تأتي التزامات DNC من أكثر من سجل واحد، وهي تتراكب:

* **سجل DNC الفدرالي الأمريكي (FTC National Registry).** مكالمات
  التسويق الهاتفي والرسائل النصية التسويقية إلى رقم مسجَّل على المستوى
  الفدرالي مقيّدة؛ والفرز مقابل السجل الفدرالي هو خط الدفاع الأساسي قبل أي
  حملة صادرة.
* **سجلات الولايات الأمريكية.** تُشغِّل عدة ولايات قوائم DNC خاصة بها
  فوق القائمة الفدرالية. قد يكون الرقم غائبًا فدراليًا لكنه مسجَّل
  في بنسلفانيا مثلاً — فالفرز الفدرالي وحده غير كامل لحركة النقل
  الأمريكية.
* **TCR Universal Opt-Out.** تلتقط قائمة الإلغاء العالمي لـ The
  Campaign Registry الأرقام التي ألغت اشتراكها في الرسائل A2P على
  مستوى السجل. إقرارها جزء من نظافة الرسائل 10DLC الأمريكية بغض
  النظر عن قائمة الكبح الخاصة بك.
* **السجلات الوطنية الدولية.** خارج الولايات المتحدة تسري قوائم وطنية
  مكافئة — UK TPS وCTPS، وسجل Do Not Call الأسترالي، وNDNC الهندي.
  هذه لكل ولاية قضائية: تفرز حملة بريطانية مقابل السجلات البريطانية،
  ولهذا تقبل نقطة نهاية الفحص مرشّح `country` (أدناه).

لا شيء من هذا يحلّ محلّ طبقة الكبح الخاصة بك — فالمستلم الذي ردّ STOP
إليك *أنت* مقيّد بغض النظر عن أي سجل وطني. تعامل سلسلة الفرز كبحك
وإلغاءات موافقتك والسجلات الوطنية كإجابة واحدة مدمجة.

***

## تفعيل مفتاح المستأجر

نقطة الفحص **مطفأة افتراضيًا** لكل منظمة. حتى تشترك — أو حتى تملك
Orbit خلاصة مزامَنة للمنصّة — تعيد نقطة النهاية
`403 DNC_SYNC_NOT_ENABLED`:

```json theme={null}
{
  "error": {
    "code": "DNC_SYNC_NOT_ENABLED",
    "message": "DNC check endpoint requires the per-org opt-in flag ...",
    "status": 403
  }
}
```

فعّلها في إعدادات امتثال منظمتك (إعداد `dnc_sync_enabled` — راجع
[خريطة الوضعية](/compliance/posture-overview) التي تسرد هذا المفتاح
وقيمته الافتراضية). تفعيل واحد يمكّن فحص الرقم الواحد والفرز الجَمعي
معًا.

<Note>
  **تتقاعد البوّابة تلقائيًا حين تتم مزامنة الخلاصات.** مفتاح المنظمة
  هو الإقرار بأنه ما دامت لا توجد خلاصة فدرالية مزامَنة، لا تفرز Orbit
  مقابل سجل FTC نيابة عنك. وحين تمتلك المنصّة لقطة فدرالية/ولائية/TCR
  (أو دولية) مزامَنة، تخدم نقطة النهاية مباشرة ولا تسري بوّابة 403 —
  وحقل `federal_feeds_synced` في كل استجابة يخبرك أي حالة أنت فيها.
  لا يتأثر إنفاذ DNC والكبح والموافقة الخاصة بك على مسار الإرسال في
  كلتا الحالتين.
</Note>

***

## من أين تأتي القائمة (توصيل الخلاصات)

تصل بيانات DNC المزامَنة من خلاصات علوية، تُحدَّث يوميًا في قائمة DNC
على مستوى المنصّة. ما يضبطه المشغّل يحدّد أي قيم `source` تراها
مُعادة من نقطة نهاية الفحص.

**هذه متغيّرات بيئة على مستوى المشغّل.** على منصّة Orbit المستضافة
(SaaS) تكون مضبوطة عنك؛ ومشغّل الـ SaaS يتحكم في أي الخلاصات حيّة.
تؤثّر فيك مباشرةً فقط إذا كنت تستضيف Orbit ذاتيًا — في تلك الحالة
اضبطها في نشرك:

* **`DEVOTEL_DNC_FEED_FILE`** — وحدة تخزين مركَّبة تحوي لقطة
  فدرالية/ولائية/TCR مشتراة. تقرأها المزامنة اليومية، وتُحلّل كل
  رقم ألغى اشتراكه، وتُدرِجه في قائمة DNC للمنصّة موسومًا بمصدره
  (`federal_dnc` أو `state_dnc:XX` أو `tcr`).
* **`DEVOTEL_DNC_FEED_URL`** — تنزيل موثَّق للقطة نفسها، بديلاً عن
  الملف المركَّب. يتقدّم الملف حين يكون كلاهما مضبوطًا.

تعمل المزامنة **مرة واحدة في اليوم بتوقيت UTC** (تنشر الخلاصات مرة في
يوم العمل؛ ويستهدف التشغيل 03:00 UTC كي يرى نافذة الإرسال الصباحية
بيانات حديثة). إعادة تشغيل اللقطة نفسها لا عملية لها سوى تحديث الطابع
الزمني — الإدراج خامل (idempotent).

**البديل: سحب TCR مباشر.** حين لا تكون ملف/URL اللقطة مضبوطًا لكن
بيانات اعتماد شريك TCR المدفوعة مضبوطة — `DEVOTEL_TCR_API_KEY`
مع `DEVOTEL_TCR_PARTNER_ID` — تسحب المزامنة اليومية سجل Universal
Opt-Out لـ TCR مباشرة من واجهة API الشريك وتُدرِجه كـ
`source: "tcr"`. يمنحك هذا فرز TCR من اشتراك TCR القائم دون CSV
خارج النطاق.

<Note>
  اللقطة نفسها التي تكتبها المزامنة اليومية إلى قائمة DNC للمنصّة
  تُحمَّل أيضًا إلى الذاكرة بواسطة الـ API عند الإقلاع، كي تستطيع
  نقطة الفحص إجابة بحث فدرالي/ولائي/TCR دون انتظار الكتابة اليومية
  التالية. تعني `federal_feeds_synced: true` في الاستجابة أن تلك
  الخلاصة في الذاكرة حيّة.
</Note>

***

## قراءة نقطة نهاية الفحص

`GET /compliance/dnc/check` تُبلِغ عمّا إذا كان رقم E.164 واحد على
أي مصدر DNC يفرضه مسار الإرسال. وهي قراءة فقط — لا تجري إرسالاً.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dnc/check?phone=%2B14155550101" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

تعيد الإصابة:

```json theme={null}
{
  "on_dnc": true,
  "source": "federal_dnc",
  "last_synced_at": "2026-08-26T03:00:12.441Z",
  "jurisdictions": ["US Federal DNC"],
  "federal_feeds_synced": true,
  "intl_feeds_synced": false
}
```

الرقم الصافي يعيد `"on_dnc": false` و`"source": "none"` و`jurisdictions`
فارغة.

الحقول التي تحمل الوضعية:

* **`source`** — أي مصدر أنتج أول إصابة، واحدة من `federal_dnc` أو
  `state_dnc` (سجل ولاية أمريكية) أو `tcr` (Universal Opt-Out لـ TCR)
  أو `intl_dnc` (سجل وطني دولي) أو `suppression` (طبقة الكبح الخاصة
  بك) أو `none` (ليس على أي قائمة). تسرد `jurisdictions` **كل** منشأ
  مطابق، فيظهر الرقم الموجود على السجل الفدرالي وعلى سجل ولاية معًا
  كلَيهما.
* **`last_synced_at`** — الطابع الزمني لحداثة المصدر المطابق: متى
  مُزامِنَت لقطة فدرالية/ولائية/TCR (أو الصف الذي أصابها) آخر مرة.
  تختم المزامنة اليومية صف نبضة (heartbeat) كل تشغيل، فيحمل هذا الحقل
  دائمًا إشارة «آخر مزامنة» للمصادر المدعومة بالخلاصات بدل الصمت حين
  لا يطابق صف. مصادر الكبح/الموافقة الخاصة بك لا مزامنة لها، فعند
  إصابة كبح وحدها يعكس الحقل حدث الإلغاء نفسه.
* **`federal_feeds_synced` / `intl_feeds_synced`** — ما إذا كان الـ
  API قد استوعب فعلاً لقطة فدرالية/ولائية/TCR أمريكية ولقطة سجل وطني
  دولي، على التوالي. اقرأهما في كل استجابة: فهما يفرّقان بين «الرقم
  صافٍ» وبين «الرقم صافٍ **و** فرز فدرالي ساند تلك الإجابة».

**مرشّح لكل ولاية قضائية.** أضِف `country` (ISO alpha-2) لحصر بحث
السجل الدولي في ولاية قضائية واحدة:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dnc/check?phone=%2B442071838750&country=GB" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

مع `country=GB`، لا يمكن أن تنتج مطابقة دولية إلا من السجلات
البريطانية (TPS/CTPS) — فلا تُعلَّم حملة متجهة إلى بريطانيا على سجل
دولة لا علاقة لها.

**الجَمع.** لفرز قائمة كاملة أو جمهور حملة في نداء واحد، استعمل
`POST /compliance/dnc/scrub` مع مصفوفة `phones` (حتى 500 رقم في
الطلب؛ تُزال التكرارات). تشغّل السلسلة نفسها لكل رقم وتعيد أحكامًا
لكل رقم مع عددي `on_dnc` / `clear`. وتسرى بوّابة المنظمة نفسها.

***

## كيف يستهلكها مسار الإرسال

نقطة الفحص هي **قراءة** للسلسلة نفسها التي **يفرضها** مسار الإرسال.
لا توصّل الفرز بإرسالاتك — Orbit فعلت ذلك أصلاً:

* **الرسائل (SMS / MMS / WhatsApp / …).** قبل الإرسال، يجيب مسار
  الإرسال عن «هل ألغى هذا المستلم اشتراكه؟» مقابل مصادر DNC نفسها —
  علم DNC لجهة اتصالك، وقائمة DNC الخاصة بك، وقائمة الكبح (إشارة STOP
  العابرة للقنوات)، وقائمة DNC على مستوى المنصّة (حيث تهبط الخلاصة
  الفدرالية/الولائية/TCR اليومية)، وإلغاءات الموافقة المسجَّلة.
  الإصابة تُسقِط الإرسال.
* **الصوت / المتصل (dialer).** يشغّل المتصل سلسلة الامتثال نفسها قبل
  إنشاء مكالمة — STOP العابر للقنوات، وDNC لجهة الاتصال، وDNC المنصّة،
  والموافقة — فلا يُتَّصل صوتيًا برقم ألغى اشتراكه عبر SMS. ويفشل
  مسار الإرسال **مغلقًا**: إن تعذّر إكمال فحص الامتثال نفسه، تُؤجَّل
  المكالمة بدل الاتصال.

فوظيفة نقطة النهاية إذن الفحص المسبق لا الإنفاذ: اسألها (أو الفرز
الجَمعي) عن قائمة باردة **قبل** الحملة لإزالة الأرقام التي كانت
البوّابة ستحظرها على أي حال — ولإظهارها لسجلاتك الخاصة.

***

## تحفّظ الفشل المفتوح (fail-open)

نقطة القراءة **فاشلة مفتوحة عند طبقة المصدر**: إن تعذّر الاستعلام عن
مصدر DNC واحد، يتابع الفحص إلى غيره ويعيد أفضل إجابة يمكنه. النتيجة
الملموسة التي عليك فهمها:

> **ما دامت لا خلاصة فدرالية مزامَنة، فالرقم الموجود على سجل FTC
> الفدرالي وحدَه يقرأ صافيًا** (`on_dnc: false`).

لذلك تُبوَّب نقطة النهاية حتى تشترك، ولذلك يرافق `federal_feeds_synced`
كل استجابة. ويترتب على ذلك حكمان تشغيليان:

1. **لا تَعُدّ النتيجة الصافية ملاذًا آمنًا فدراليًا ما لم تكن
   `federal_feeds_synced: true`.** حكم الصفاء مع
   `federal_feeds_synced: false` يعني فقط أن قوائمك الخاصة والكبح
   والموافقة وقائمة المنصّة لم تُعلِّم الرقم.
2. **البوّابة الصارمة هي مسار الإرسال.** مسار القراءة فاشل مفتوحًا
   (fail-open) تصميمًا؛ ومسار الإرسال ليس كذلك. لا يتحوّل سلبي كاذب
   من استعلام مسبق أبدًا إلى إرسال — فسلسلة وقت الإرسال تعيد فحص
   المصادر نفسها وتحظر ما تجده.

على SaaS لـ Orbit، عُدّ `federal_feeds_synced: false` بمعنى «لا فرز
فدرالي يسند هذه الإجابة بعد» ووازِن ذلك فيما إذا كنت تعتمد على الفحص
المسبق لحملة أمريكية. المستضيفون ذاتيًا يغلقون الفجوة بضبط خلاصة
(أعلاه).

***

## التحقق قبل الحملة

افحص مسبقًا جمهور حملة بالفرز الجَمعي، ثم تصرّف على الأحكام:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/compliance/dnc/scrub" \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phones": ["+14155550101", "+442071838750", "+14155550101"],
    "country": "GB"
  }'
```

```json theme={null}
{
  "results": [
    { "phone": "+14155550101", "on_dnc": true, "source": "federal_dnc", "jurisdictions": ["US Federal DNC"] },
    { "phone": "+442071838750", "on_dnc": false, "source": "none", "jurisdictions": [] }
  ],
  "summary": { "total": 2, "on_dnc": 1, "clear": 1, "duplicates_removed": 1 },
  "federal_feeds_synced": true,
  "intl_feeds_synced": false
}
```

أزِل أرقام `on_dnc: true` من الجمهور قبل الإرسال. افحص
`federal_feeds_synced` / `intl_feeds_synced` في الاستجابة نفسها لتعرف
أي السجلات ساندت الأحكام فعلاً، وافحص `last_synced_at` لكل نتيجة
للتأكد من حداثة البيانات. لقائمة أكبر، صفّحها في حُزم من 500 رقم.

***

راجع أيضًا:

* [Send Gates](/compliance/send-gates) — بوّابات ساعات الهدوء / DNC /
  RND / RMD في وقت الإرسال والإيقاف الطارئ.
* [بوّابة TCPA المعروف بالتقاضي](/compliance/tcpa-known-litigator) —
  فحص منشأ المستلم الذي يُكمِل فرز DNC لمخاطر TCPA الأمريكية.
* [الفرز المسبق الجَمعي لـ DNC](/guides/dnc-preflight-scrub) — سير
  عمل الحملة حول الفرز الجَمعي: التبويب والتقطيع وتوجيه الأرقام
  المعلَّمة.
* [قوائم إلغاء الاشتراك والكبح](/compliance/opt-out-suppression) —
  كيف تهبط STOP المستلم على طبقة الكبح التي تقرأها سلسلة DNC.
* [وضعية امتثال مستأجرك](/compliance/posture-overview) — خريطة
  المفاتيح، بما فيها صف `dnc_sync_enabled` لهذه الصفحة.
