# نطاق المفتاح

## قيد المشروع

يحصر حقل المشروع (Project) مفتاح API في مشروع معيّن:

* **أي (Any)** — يصل المفتاح إلى كل مشاريع الحساب
* **مشروع معيّن** — يعمل المفتاح مع بيانات المشروع المحدد فقط

يتصرف القيد بشكل مختلف حسب الطريقة. في طرق القوائم يعمل كمرشِّح: تنجح الاستجابة لكنها لا تحتوي إلا بيانات المشروع. وفي الطرق التي تخاطب فاتورة أو محفظة بعينها، يرفض الخادم طلب كائن من مشروع آخر بالرد `Restricted project`.

| الطريقة                | مفتاح مقيَّد بمشروع                                                         |
| ---------------------- | --------------------------------------------------------------------------- |
| `billing/balances`     | بيانات على مستوى الحساب؛ لا ينطبق القيد                          |
| `billing/history`      | عمليات المشروع إضافة إلى العمليات على مستوى الحساب — الإيداعات والمكافآت |
| `billing/tariffs`      | التعرفة والدوران لمشروع المفتاح فقط                            |
| `invoices/list`        | النتائج لمشروع المفتاح فقط                                          |
| `payments/list`        | النتائج لمشروع المفتاح فقط                                          |
| `statistics/invoices`  | تُحسب لمشروع المفتاح فقط                                       |
| `statistics/payments`  | تُحسب على فواتير مشروع المفتاح فقط                               |
| `invoices/create`      | يجب أن يطابق `projectId` في الطلب مشروعَ المفتاح                     |
| `invoices/cancel`      | فاتورة مشروع آخر غير قابلة للوصول                                   |
| `invoices/bindPayment` | فاتورة مشروع آخر غير قابلة للوصول                                   |

## قيد النطاق

يحدد النطاق طرق API التي يستطيع المفتاح استخدامها. وهو حقل إلزامي متعدد الاختيار.

يرفض الخادم استدعاء طريقة خارج نطاق المفتاح بالرد `Restricted scope`.

## اجتماع القيود

يعمل قيدا المشروع والنطاق معًا. مثلًا، إذا كان المفتاح محصورًا في طرق الفواتير ومربوطًا بمشروع معيّن:

* لا تتاح إلا طرق الفواتير
* لا تشمل البيانات إلا المشروع المحدد
* يرفض الخادم طلبات الدفعات والإحصاءات
* يرفض الخادم طلبات بيانات المشاريع الأخرى
