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

# مفاتيح API

> توثيق مفاتيح API في AgentEye.

يستخدم AgentEye مفاتيح API دقيقة الحبيبة للتحكم في الوصول إلى الخادم. كل مفتاح يحمل واحدة أو أكثر من الأذونات التي تحدد ما يمكنه فعله.

***

## الأذونات

يطبق الخادم كتالوج ثابت من الأذونات؛ كل منها يتحكم في مسارات HTTP محددة. يحمل **مفتاح المسؤول** كل منها؛ ويحمل المفتاح ذو النطاق المحدود المجموعة الجزئية التي تمنحها عند الإنشاء. يتم رفض سلاسل الأذونات غير المعروفة عند إنشاء مفتاح.

> **غير قابلة للتعيين للمفاتيح.** هناك اثنتان من الأذونات الصحيحة والمخصصة للبشر/لوحة التحكم فقط ولا يمكن منحهما لمفتاح API: `orgs:admin` (إدارة المثيل، وهي للمشغل فقط) و `keys:update`. يتم رفض طلب `POST /keys` أو `PATCH /keys/:id` الذي يحاول منح أحدهما باستخدام HTTP 422. راجع صف `keys:update` أدناه لمعرفة السبب في أن مفتاح Bearer قد ينشئ مفاتيح لكن لا يحررها أبداً.

### استقبال الأحداث والاستعلام عنها

| الأذن         | مسارات HTTP                                                                                                                          | ما تسمح به                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `events:add`  | `POST /events`                                                                                                                       | استقبال دفعات من الأحداث من جامع. الأذن الوحيدة التي يحتاجها جامع.                                                                                                                                                                                                                                                                                                                                                                                            |
| `events:read` | `GET /events`, `GET /events/latency_aggregate`, `GET /events/environments`, `GET /events/models`, `GET /sessions/:session_id/export` | الاستعلام عن الأحداث وإدراج البيئات المعروفة وإدراج معرفات النماذج المرئية في البيانات (التي تستخدمها عرض النماذج وفلاتر النموذج) وحساب التجميع الكامن للنطاق على خريطة الحرارة / نطاق النسبة المئوية وتصدير جلسة عمل كـ JSONL. تتوفر نقاط نهاية ملخص شريط الفلتر المشترك `GET /events/environments` و `GET /events/models` مع **إما** `events:read` **أو** `evaluations:read`، لذا تعيد استخدام صفحة الجلسات (البوابة `evaluations:read`) نفس ملخص كل منظمة. |

### الجلسات والتقييمات

| الأذن                 | مسارات HTTP                                                                                                                | ما تسمح به                                                                                                                   |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `evaluations:read`    | `GET /sessions`, `GET /evaluations`, `GET /evaluations/aggregate`, `GET /evaluations/environments`, `GET /evaluation-jobs` | إدراج الجلسات وقراءة نتائج التقييم وصحة التقييم المطوية المستخدمة من قبل لوحات التحكم وحالة قائمة انتظار عامل وظيفة التقييم. |
| `evaluations:trigger` | `POST /sessions/:session_id/re-evaluate`                                                                                   | ترتيب إعادة تقييم يدوية لجلسة منتهية.                                                                                        |

### لوحات التحكم

| الأذن               | مسارات HTTP                                                                                                                                                                                | ما تسمح به                                                                            |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| `dashboards:read`   | `GET /dashboards`, `GET /dashboards/:id`, `GET /dashboards/:id/tiles`                                                                                                                      | إدراج لوحات التحكم وتحميل واحدة وقراءة البلاطات الخاصة بها.                           |
| `dashboards:write`  | `POST /dashboards`, `PUT /dashboards/:id`, `POST /dashboards/:id/tiles`, `PUT /dashboards/:id/tiles/:tile_id`, `DELETE /dashboards/:id/tiles/:tile_id`, `PUT /dashboards/:id/tiles/layout` | إنشاء وتحرير لوحات التحكم وإضافة / تحرير / إزالة البلاطات وإعادة ترتيب شبكة البلاطات. |
| `dashboards:delete` | `DELETE /dashboards/:id`                                                                                                                                                                   | حذف لوحة تحكم بالكامل (يكون حذف مستوى البلاطة تحت `dashboards:write`).                |

### الاستعلامات المحفوظة (منشئ SQL)

| الأذن            | مسارات HTTP                                               | ما تسمح به                                                                                                           |
| ---------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `queries:read`   | `GET /queries`, `GET /queries/:id`, `GET /queries/schema` | إدراج الاستعلامات المحفوظة وتحميل واحد ومراجعة مخطط ClickHouse للقراءة فقط الذي يستهدفه المنشئ.                      |
| `queries:write`  | `POST /queries`, `PUT /queries/:id`                       | إنشاء وتحرير الاستعلامات المحفوظة. لا تزال SQL موجهة عبر نفس دور القراءة فقط وعمليات `sql_guard` كطلب `queries:run`. |
| `queries:delete` | `DELETE /queries/:id`                                     | حذف استعلام محفوظ.                                                                                                   |
| `queries:run`    | `POST /queries/run`                                       | تنفيذ SQL محفوظ أو مرتجل ضد دور القراءة فقط المستخدم من قبل المنشئ.                                                  |

### مساعد AI

| الأذن       | مسارات HTTP                                                                                                                                                                                           | ما تسمح به                                                                                                                                                                                  |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `agent:use` | `GET /agent/conversations`, `POST /agent/conversations`, `GET /agent/conversations/:id`, `PATCH /agent/conversations/:id`, `DELETE /agent/conversations/:id`, `PUT /agent/conversations/:id/messages` | الحديث مع مساعد لوحة التحكم AI وإدارة محادثاتك الخاصة (الخاصة). مطلوب على **المستخدم** لرؤية رصيف المساعد؛ مفتاح المساعد نفسه هو `dashboard-assistant` ويتم تثبيته بشكل منفصل (انظر أدناه). |

### مفاتيح API

| الأذن             | مسارات HTTP                 | ما تسمح به                                                                                                                                   |
| ----------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `keys:create`     | `POST /keys`                | إنشاء مفتاح API ذو نطاق جديد. **لا** تمنح تحرير أذونات مفتاح موجود (هذا هو `keys:update`).                                                   |
| `keys:read`       | `GET /keys`                 | إدراج المفاتيح الموجودة. لا يتم إرجاع الأسرار من قبل نقطة النهاية هذه.                                                                       |
| `keys:update`     | `PATCH /keys/:id`           | تحرير أذونات مفتاح موجود. أذن **مخصصة للبشر/لوحة التحكم فقط**؛ لا يمكن تعيينها لمفتاح API (قد ينشئ مفتاح Bearer مفاتيح لكن لا يحررها أبداً). |
| `keys:disable`    | `POST /keys/:id/disable`    | إلغاء مفتاح. لا يمكن إلغاء المفاتيح المحمية (`admin`, `dashboard-assistant`)؛ قم بتدويرها عبر متغير البيئة + إعادة تشغيل.                    |
| `keys:regenerate` | `POST /keys/:id/regenerate` | تدوير سر المفتاح. لا يمكن إعادة توليد المفاتيح المحمية عبر هذا المسار.                                                                       |

### مستخدمو لوحة التحكم

| الأذن          | مسارات HTTP                                   | ما تسمح به                                                                                                                                         |
| -------------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `users:create` | `POST /users`, `GET /users/defaults`          | دعوة مستخدم جديد لوحة تحكم (مشكلة بريد إلكتروني + دخول OTP) وقراءة مجموعة الأذن الافتراضية التي يديرها لوحة التحكم والمستخدمة لتثبيت نموذج الدعوة. |
| `users:read`   | `GET /users`, `GET /users/:id`                | إدراج المستخدمين وتحميل سجل مستخدم واحد.                                                                                                           |
| `users:update` | `PUT /users/:id`                              | تحرير أذونات المستخدم. تُرسل التحديثات بريداً إلكترونياً لتغيير الأذن للمستخدم المتأثر وتسري مفعولها في طلبهم التالي؛ لا يلزم إعادة دخول.          |
| `users:delete` | `DELETE /users/:id`, `POST /users/:id/enable` | تعطيل مستخدم (يلغي جلساته فوراً) وإعادة تمكين مستخدم معطل مسبقاً.                                                                                  |

هذه الأذونات تدعم صفحة **المستخدمون** في لوحة التحكم، حيث يتم عرض النطاقات الممنوحة لكل عضو كرقائق:

<img src="https://mintcdn.com/exosphere/RgxYS1UZshqb4m7m/agenteye/images/users.png?fit=max&auto=format&n=RgxYS1UZshqb4m7m&q=85&s=00099f45dd3d40bd7e31b337a678bfed" alt="صفحة المستخدمون: بطاقة واحدة لكل مستخدم لوحة تحكم مع بريدهم الإلكتروني والأذونات الممنوحة والتحكم في التحرير/التعطيل" width="2880" height="1800" data-path="agenteye/images/users.png" />

### الإعدادات التشغيلية

| الأذن            | مسارات HTTP                                                                                                                   | ما تسمح به                                                                                                                                    |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `settings:read`  | `GET /settings`, `GET /settings/schema`, `GET /settings/model-context-windows`, `GET /settings/model-context-windows/resolve` | عرض الإعدادات التشغيلية التي يديرها لوحة التحكم وبيانات وصفية؛ إدراج تجاوزات نافذة سياق لكل نموذج؛ وحل النافذة الفعالة لنموذج.                |
| `settings:write` | `PUT /settings/:key`, `PUT /settings/model-context-windows`, `DELETE /settings/model-context-windows`                         | تحرير الإعدادات التشغيلية وإضافة أو تغيير أو إزالة تجاوزات نافذة السياق لكل نموذج. التغييرات تؤثر على الأحداث الجديدة دون إعادة تشغيل الخادم. |

<img src="https://mintcdn.com/exosphere/RgxYS1UZshqb4m7m/agenteye/images/settings.png?fit=max&auto=format&n=RgxYS1UZshqb4m7m&q=85&s=8f921347d02fb47acc4cdbc88a6fa8bd" alt="صفحة الإعدادات: إعدادات تشغيلية تديرها لوحة التحكم مثل عمليات تسجيل الدخول المسموح بها وعمر الجلسة/OTP وقابلة للتحرير دون إعادة تشغيل" width="2880" height="1800" data-path="agenteye/images/settings.png" />

### التنبيهات والحوادث

| الأذن             | مسارات HTTP                                                                                                                                                                                                                                | ما تسمح به                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------- |
| `alerts:read`     | `GET /alerts`, `GET /alerts/:id`                                                                                                                                                                                                           | عرض تعاريف التنبيهات المكونة.                     |
| `alerts:write`    | `POST /alerts`, `PUT /alerts/:id`, `DELETE /alerts/:id`, `POST /alerts/:id/test`                                                                                                                                                           | إنشاء وتحرير وحذف واختبار إطلاق تعاريف التنبيهات. |
| `incidents:read`  | `GET /alerts/incidents`, `GET /alerts/incidents/:iid`, `GET /alerts/incidents/:iid/comments`, `GET /alerts/incidents/:iid/subscribers`                                                                                                     | عرض الحوادث ومسار الفحص الخاص بها.                |
| `incidents:write` | `POST /alerts/:id/incidents`                                                                                                                                                                                                               | فتح حادثة يدوياً ضد تنبيه موجود.                  |
| `incidents:ack`   | `POST /alerts/incidents/:iid/ack`, `POST /alerts/incidents/:iid/assign`, `POST /alerts/incidents/:iid/resolve`, `POST /alerts/incidents/:iid/comments`, `POST /alerts/incidents/:iid/subscribe`, `POST /alerts/incidents/:iid/unsubscribe` | الاعتراف بالحوادث وتعيينها وحلها والتعليق عليها.  |

### التدقيق

| الأذن          | مسارات HTTP                                                                                                          | ما تسمح به                                                                                                     |
| -------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `audits:read`  | `GET /audits`, `GET /audits/:id`, `GET /audits/:id/runs`, `GET /audits/findings`, `GET /audits/findings/:fid`        | عرض تعاريف التدقيق والسجل والنتائج.                                                                            |
| `audits:write` | `POST /audits`, `PUT /audits/:id`, `DELETE /audits/:id`, `POST /audits/:id/run`, `POST /audits/findings/:fid/status` | إنشاء وتحرير وحذف وتشغيل التدقيقات؛ فحص النتائج (الاعتراف / كتم الصوت / الرفض / الحل / إعادة الفتح / التعيين). |

> عندما تم شحن التدقيقات، تم توسيع مستقبلي المنح الحاليين على نفس أشكال الأدوار مثل التنبيهات: حصل كل مستخدم ومجموعة أذن تحتفظ بـ `alerts:read` على `audits:read`، وحصل كل حامل `alerts:write` على `audits:write`. **لم** يتم توسيع مفاتيح API الموجودة — امنح `audits:*` لمفتاح بشكل صريح إذا كان يحتاج إلى سطح التدقيق.

> يتم تحليل منح الرموز `alerts:ack` الموروثة كـ `incidents:ack` بحيث يحتفظ الأطباء بالدوام بالوصول دون إعادة تشغيل. لا يمكن تعيين الرمز من محرر المستخدم لوحة التحكم؛ تقدم المصفوفة `incidents:ack` بدلاً من ذلك.

> نقطة نهاية منتقي المستقبِل `GET /alerts/recipients` (التي تدرج رسائل البريد الإلكتروني للأعضاء التي يمكن لمحرر التنبيهات إخطارهم) متاحة لحامل **إما** `alerts:read` **أو** `alerts:write`، حيث يمكن لمحرري التنبيهات ملء المنتقي دون منح `users:read`.

> عارض لوحات التحكم يحتاج إلى **كل من** `dashboards:read` (لتحميل العروض المحفوظة) و `evaluations:read` (يتم حساب مقاييس الصحة من بيانات التقييم). امنح `dashboards:write` لتمكين المستخدم من إنشاء أو تحرير لوحات التحكم، و `dashboards:delete` لإزالتها.

> `/health` و `/auth/*` (طلب OTP وتحقق OTP وفحص الجلسة وتسجيل الخروج) غير موثقة بالتصميم؛ إنها تدفق تسجيل الدخول وفحص الحيوية. `GET /access-granters` يتطلب مفتاح صحيح لكن بدون أذن محددة، بحيث يمكن لأي مستخدم مسجل دخول أن يرى أي من المسؤولين يمكن الاتصال بهم بشأن تغييرات الوصول.

***

## مجموعات الأذونات

تسمح لك مجموعات الأذونات بتطبيق دور مسمى بدلاً من اختيار الرموز الفردية يدوياً في كل مرة. بدلاً من تحديد اثني عشر أذن واحد تلو الآخر لكل مستخدم لوحة تحكم أو مفتاح API جديد، تختار مجموعة، وكل شخص معين لها يحمل منحة متسقة وقابلة للمراجعة. يؤدي تحرير مجموعة مخصصة إلى إعادة تطبيق المنحة الجديدة على كل مستخدم معين لها بالفعل، لذا فإن تغيير الدور هو تحرير واحد بدلاً من تمسح كل عضو.

يتم تثبيت كل منظمة بثلاث مجموعات مدمجة:

| مجموعة      | الأذونات                                                                                                                                                         | المقصود ل                                                                                                                             |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `read-only` | `events:read`, `keys:read`, `users:read`, `evaluations:read`, `dashboards:read`, `queries:read`, `settings:read`, `alerts:read`, `audits:read`, `incidents:read` | الوصول للعرض فقط عبر كل سطح تشغيلي.                                                                                                   |
| `standard`  | كل شيء في `read-only`، بالإضافة إلى `evaluations:trigger`, `queries:run`, `incidents:ack`, `agent:use`                                                           | القراءة فقط بالإضافة إلى إجراءات الطبيب بالدوام اليومية: تشغيل الاستعلامات وإعادة تقييم الجلسات والاعتراف بالحوادث واستخدام مساعد AI. |
| `admin`     | كل أذن قابلة للتعيين                                                                                                                                             | التحكم الكامل بالمنظمة.                                                                                                               |

المجموعات الثلاث المدمجة **غير قابلة للتغيير**؛ أسماؤها تعني دائماً نفس الشيء، لذلك من الآمن الإشارة إلى `read-only` و `standard` و `admin` في السياسة والتوجيه. يمكن للمشغل إنشاء **مجموعات مخصصة** إضافية لنمذجة الأدوار الخاصة بمنظمتك (على سبيل المثال، دور "مؤلف لوحة التحكم" أو دور "جامع فقط").

يتم عرض المجموعات لوحة التحكم وإدارتها عبر API في `GET /permission-sets` (الإدراج، البوابة من `users:read`) و `POST /permission-sets` / `PUT /permission-sets/:name` / `DELETE /permission-sets/:name` (إنشاء وتحرير وحذف مجموعة مخصصة، البوابة `settings:write`). يتم رفض حذف أو تحرير مجموعة مدمجة.

عضوية المجموعة هي ما يدعم ميزتين أخريين:

* **`DEFAULT_USER_PERMISSIONS`** (المنحة المحددة مسبقاً عندما يفتح المسؤول **+ مستخدم جديد**) تفترض المجموعة `standard`. انظر [النشر](/ar/agenteye/deployment).
* **علم `--set`** على `agenteye-orgctl` (إدارة عضو المشغل) يبدأ عضو من مجموعة مسماة، والتي يمكنك بعد ذلك ضبطها بـ `--add` / `--remove`. انظر [إدارة المستأجرين](/ar/agenteye/tenant-management).

> عندما تتضمن مجموعة أذن غير قابلة للتعيين للمفاتيح (على سبيل المثال مجموعة مخصصة تحمل `keys:update`)، يؤدي تثبيت المفتاح من تلك المجموعة إلى إسقاط الرموز غير القابلة للتعيين؛ سيرفع الخادم خلاف ذلك المفتاح باستخدام HTTP 422. مستخدمو لوحة التحكم لا يخضعون لهذا القيد.

***

## مفتاح المسؤول التمهيدي

مفتاح المسؤول هو بيانات اعتماد جذر واحدة تسمح للمشغل بإحضار الوصول من لا شيء: به يمكنك سك كل مفتاح مضبوط آخر ودعوة مستخدمي لوحة التحكم الأوائل وتكوين المثيل قبل وجود أي مفتاح آخر. إنه المفتاح الوحيد الذي لا تنشئه عبر واجهة برمجة تطبيقات المفاتيح؛ يتم توفيره من البيئة بحيث يمكن الوصول إلى الخادم في الإقلاع الأول.

عيّن متغير البيئة `ADMIN_KEY` على الخادم. عند كل بدء تشغيل يقوم الخادم بتحديث أو إدراج هذه القيمة كمفتاح مسؤول بجميع الأذونات.

للتدوير: غيّر `ADMIN_KEY` إلى سر جديد وأعد تشغيل الخادم.

***

## تحديد نطاق المنظمة

**يتم إنشاء المنظمات وإدارتها بواسطة مشغل خارج النطاق، وليس عبر واجهة برمجة تطبيقات المفاتيح هذه.** يتم إجراء دورة حياة الكيان والعضو (الإنشاء / إعادة التسمية / الحذف / التطهير لمنظمة؛ إضافة / تحديث / إزالة عضو) باستخدام **`agenteye-orgctl`** CLI التي تعمل داخل حاوية الخادم؛ لا توجد واجهة برمجية HTTP أو زر لوحة تحكم لها. انظر [إدارة المستأجرين](/ar/agenteye/tenant-management). ما **لم يتغير**: **لا تزال مفاتيح API لكل منظمة مضبوطة في لوحة التحكم (أو عبر واجهة برمجة تطبيقات المفاتيح هذه)** بواسطة أعضاء المنظمة.

في النشر متعدد المنظمات، كل مفتاح ينشئه عضو المنظمة (عبر واجهة برمجة تطبيقات المفاتيح هذه أو صفحة **المفاتيح** لوحة التحكم) ينتمي إلى **منظمة واحدة** ويمكنه فقط قراءة أو كتابة بيانات تلك المنظمة؛ يتم وضع علامة على المنظمة على المفتاح عند الإنشاء وفرضه على كل طلب. المفتاحان التمهيديان هما الاستثناء الوحيد: مفتاح `admin` (المثبت من `ADMIN_KEY`) ومفتاح `dashboard-assistant` (المثبت من `AGENT_API_KEY`) هما **نطاق المثيل** (لا يحملان أي منظمة). تتوثق حاوية لوحة التحكم باستخدام مفتاح `admin` بحيث يمكنها توكيل طلبات لكل منظمة نيابة عن الأعضاء المسجلي الدخول. لا تحتاج عمليات النشر أحادية المستأجر إلى التفكير في هذا؛ تنتمي جميع المفاتيح إلى المنظمة `default` المدمجة.

***

## إنشاء المفاتيح

استخدم مفتاح المسؤول (أو أي مفتاح بأذن `keys:create`) لإنشاء مفاتيح مضبوطة إضافية.

### مفتاح جامع (استقبال فقط)

```bash theme={null}
curl -s -X POST http://your-server:8080/keys \
  -H "Authorization: Bearer $ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "prod-collector",
    "key": "your-collector-secret",
    "permissions": ["events:add"]
  }'
```

### مفتاح لوحة التحكم (قراءة فقط)

```bash theme={null}
curl -s -X POST http://your-server:8080/keys \
  -H "Authorization: Bearer $ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "dashboard",
    "key": "your-dashboard-secret",
    "permissions": ["events:read", "keys:read"]
  }'
```

عندما تنشئ مفتاح عبر واجهة برمجة التطبيقات HTTP، توفر قيمة `key` بنفسك؛ اختر سراً قوياً وخزنه بأمان. (تعمل لوحة التحكم بطريقة أخرى: فهي تُنشئ سراً قوياً لك وتعرضه مرة واحدة عند الإنشاء؛ انظر [إدارة المفاتيح في لوحة التحكم](#key-management-in-the-dashboard).) يؤكد الرد أنه تم إنشاء المفتاح:

```json theme={null}
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "prod-collector",
  "permissions": ["events:add"],
  "created_at": "2026-04-01T12:00:00Z"
}
```

***

## إدراج المفاتيح

```bash theme={null}
curl -s http://your-server:8080/keys \
  -H "Authorization: Bearer $ADMIN_KEY"
```

لا يتم إرجاع أسرار المفاتيح في استجابات الإدراج، فقط المعرفات والأسماء والأذونات.

***

## تعطيل مفتاح

يؤدي التعطيل إلى إلغاء الوصول فوراً دون حذف سجل المفتاح.

```bash theme={null}
curl -s -X POST http://your-server:8080/keys/<id>/disable \
  -H "Authorization: Bearer $ADMIN_KEY"
```

***

## إعادة توليد مفتاح

يُنشئ سراً جديداً لمفتاح موجود. يتم إبطال السر القديم فوراً.

```bash theme={null}
curl -s -X POST http://your-server:8080/keys/<id>/regenerate \
  -H "Authorization: Bearer $ADMIN_KEY"
```

تتضمن الاستجابة السر الجديد بصيغة نصية عادية، **معروض مرة واحدة فقط**.

***

## إدارة المفاتيح في لوحة التحكم

توفر صفحة **المفاتيح** في لوحة التحكم واجهة مستخدم لجميع العمليات أعلاه. تحتاج إلى مفتاح بأذن `keys:read` لعرض القائمة، و `keys:create` / `keys:update` / `keys:disable` / `keys:regenerate` لإجراءات الإنشاء / التحرير / التعطيل / إعادة التوليد على التوالي. يختلف تحرير أذونات المفتاح (`keys:update`) عن إنشاء واحد (`keys:create`)، بحيث يمكنك منح المشغل القدرة على سك المفاتيح دون القدرة على إعادة نطاق الأذونات الموجودة، أو العكس. يغطي مفتاح المسؤول كل هذه.

عندما تنشئ مفتاح من لوحة التحكم لا توفر السر؛ تُنشئ لوحة التحكم سراً قوياً لك وتعرضه **مرة واحدة** عند الإنشاء. انسخه فوراً وخزنه بأمان؛ لا يتم عرضه أبداً مرة أخرى، تماماً كما هو الحال مع إعادة التوليد. يمكنك بالفعل اختيار أذونات المفتاح مباشرة، أو تثبيتها من مجموعة أذن (انظر أدناه).

<img src="https://mintcdn.com/exosphere/RgxYS1UZshqb4m7m/agenteye/images/api-keys.png?fit=max&auto=format&n=RgxYS1UZshqb4m7m&q=85&s=f7588fd64f57fed85e26162c16ce048a" alt="صفحة مفاتيح API: بطاقة واحدة لكل مفتاح تظهر اسمه والأذونات الممنوحة ووقت الإنشاء، مع إجراءات إعادة التوليد والتعطيل؛ تم وضع علامة على المفاتيح المحمية مثل admin" width="2880" height="1800" data-path="agenteye/images/api-keys.png" />

***

## تخطيط المفاتيح الموصى به

| مفتاح                                                            | الأذونات                                                                                                                 | يستخدمه                                                                                         |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| `admin` (التمهيد عبر متغير البيئة `ADMIN_KEY`)                   | الكل                                                                                                                     | العمليات/الإعداد وحاوية لوحة التحكم (يتوثق مع `ADMIN_KEY` ويوكل طلبات المستخدم مع فحوصات الأذن) |
| مفتاح جامع لكل مضيف                                              | `events:add`                                                                                                             | جامع على كل جهاز عامل                                                                           |
| `dashboard-assistant` (التمهيد عبر متغير البيئة `AGENT_API_KEY`) | `events:read`, `evaluations:read`, `dashboards:read`, `dashboards:write`, `queries:read`, `queries:write`, `queries:run` | حاوية مساعد AI، مثبتة تلقائياً، **محمية**؛ لا يمكن تحريرها عبر واجهة برمجة التطبيقات            |
| مفتاح قياس مساعد اختياري                                         | `events:add`                                                                                                             | أداة قياس المساعد الذاتية، إذا تم تمكينها                                                       |

> **مفتاح المساعد.** يتم **تثبيت مفتاح المساعد تلقائياً** من قبل الخادم من متغير البيئة `AGENT_API_KEY` (نفس السر الذي يعرضه الوكيل كـ `AGENTEYE_API_KEY`)؛ لا توجد خطوة سك مفتاح يدوية ولا يشارك مفتاح المسؤول. أذوناته ثابتة في كود المصدر بحيث لا يمكن توسيع النطاق بسوء الإعدادات: قراءة عبر الأحداث / التقييمات / لوحات التحكم، بالإضافة إلى كتابة لوحات التحكم وقراءة / كتابة / تشغيل الاستعلامات لتدفق تأليف "اطلب من AI كتابة استعلام". لا تزال كل SQL تمر عبر نفس دور القراءة فقط وفحوصات `sql_guard` كاستعلام مكتوب من قبل المستخدم، لذا يوسع هذا سطح **التأليف**، وليس سطح البيانات؛ تبقى العمليات المخربة (`queries:delete`, `dashboards:delete`) عن قصد خارج مفتاح المساعد. مثل مفتاح `admin`، إنها **محمية**: لا يمكن تعطيلها أو إعادة توليدها عبر واجهة برمجة تطبيقات المفاتيح، فقط تدويرها بتغيير `AGENT_API_KEY` وإعادة تشغيل. يحتاج مستخدمو لوحة التحكم **أيضاً** إلى أذن `agent:use` لرؤية واستخدام المساعد. إذا قمت بتمكين القياس الذاتي، امنح المساعد مفتاح `events:add`-only منفصل.
