إنتقل إلى المحتوى الرئيسي

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

تحمل كل مكالمة إلى واجهة برمجة تطبيقات منصة Kaleidr بيانات اعتماد واحدة. توجد ثلاثة أنواع، وتتعامل واجهة البرمجة مع كل نوع بطريقة مختلفة:

  • يعرّف المفتاح القابل للنشر مؤسستك داخل المتصفح. ولا يمكنه استدعاء واجهة البرمجة مباشرةً؛ بل يُستبدل برمز جلسة.
  • رمز الجلسة هو بيانات الاعتماد التي يستخدمها المتصفح فعليًا لاستدعاء واجهة البرمجة. وهو قصير العمر ومرتبط بمصدر موقع ويب واحد ومنتج واحد.
  • مفتاح الخادم سرّ يرسله خادمك الخلفي مباشرةً مع كل طلب.

توضح هذه الصفحة كيفية إرسال كل نوع من بيانات الاعتماد، وشكل عملية الاستبدال، وما الذي تتيحه نطاقات الصلاحية، وكيفية منح نطاق vendor، وجميع أخطاء المصادقة وأسبابها وطرق إصلاحها. لمعرفة ما يمكن فعله بكل بيانات اعتماد في حال تسربها، راجع نموذج الأمان.

أنواع بيانات الاعتماد​

بيانات الاعتمادالبادئةمكان وجودهاكيفية استخدامهاالخطة
مفتاح قابل للنشرkld_pk_live_…مصدر الصفحةيُرسل مرة واحدة إلى عملية استبدال الجلسة؛ ويُرفض في جميع نقاط النهاية الأخرىFree وPro وEnterprise
رمز الجلسةkld_sess_live_…ذاكرة المتصفحيُرسل مع كل استدعاء وقت التشغيل من الصفحة التي أُنشئ لهايُنشأ من مفتاح قابل للنشر أو خريطة منشورة
مفتاح الخادمkld_sk_live_…خادمك الخلفي فقطيُرسل مع كل استدعاء وقت التشغيل؛ ويُرفض إذا حمل الطلب ترويسة OriginPro وEnterprise
مفتاح قديمkld_live_…خادمك الخلفييعمل بوصفه بيانات اعتماد مباشرة، مثل مفتاح الخادم. وينتج عن تدويره مفتاح خادمالمفاتيح الموجودة مسبقًا فقط

تحمل المفاتيح المنشأة عبر واجهة برمجة إدارة المفاتيح مع environment: "test" القيمة test بدلًا من live (kld_pk_test_… وkld_sk_test_…). ولا يستطيع مفتاح الاختبار تحميل مربعات خرائط الأساس.

يُعرض المفتاح كاملًا مرة واحدة فقط عند إنشائه أو تدويره. لا تحتفظ Kaleidr إلا بقيمة تجزئة له، لذلك لا يمكن استرداد مفتاح مفقود؛ عليك تدويره.

إرسال بيانات الاعتماد​

أرسل بيانات الاعتماد في أيٍّ من الترويستين. تُقبل كلتاهما في جميع نقاط النهاية.

Authorization: Bearer kld_sk_live_…
X-Api-Key: kld_sk_live_…

إذا احتوى الطلب على الترويستين، تُستخدم Authorization عندما تبدأ قيمتها ببادئة Kaleidr؛ وإلا تُقرأ X-Api-Key. لا تضع مفتاح خادم في عنوان URL مطلقًا.

ما يستطيع كل نوع من بيانات الاعتماد فعله في نقطة نهاية لوقت التشغيل (أي جميع النقاط باستثناء استبدال الجلسة):

بيانات الاعتمادالنتيجة عند نقطة نهاية لوقت التشغيل
مفتاح قابل للنشر401 publishable_requires_session. استبدله بجلسة أولًا.
مفتاح خادم دون ترويسة Originيُقبل، ثم تُفحص قائمة عناوين IP المسموح بها، ونطاق الصلاحية، والمنتجات المسموح بها، والحصة، وحدّ معدل الطلبات.
مفتاح خادم مع ترويسة Origin403 server_key_in_browser. تضيف المتصفحات Origin إلى الطلبات العابرة للمواقع؛ وبهذا تتعرف واجهة البرمجة على مفتاح خادم مستخدم داخل صفحة ويب.
رمز جلسة من المصدر الذي أُنشئ لهيُقبل.
رمز جلسة مع Origin مختلف403 session_origin_mismatch.
رمز جلسة من خريطة منشورة دون Origin403 session_origin_mismatch.

تُطبّق حزمة تطوير JavaScript القاعدة نفسها قبل ذلك: ترفض Kaleidr.mount مفتاحًا يبدأ بـ kld_sk_… داخل المتصفح من دون إرسال أي طلب.

تبادل الجلسة​

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

POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions
X-Api-Key: kld_pk_live_…
Content-Type: application/json

{ "product": "chat" }

الحقل product مطلوب ويجب أن تكون قيمته إحدى chat أو editor أو viewer أو tile. يجب أن يتضمن الطلب ترويسة Origin، ويضيفها المتصفح تلقائيًا.

{
"session_token": "kld_sess_live_eyJhbGciOi…",
"expires_in": 900,
"product": "chat",
"basemap_style_id": null
}
الحقلالمعنى
session_tokenبيانات الاعتماد المستخدمة في استدعاءات وقت التشغيل. الصيغة kld_sess_{env}_{token}.
expires_inمدة الصلاحية بالثواني. تستمر الجلسة المنشأة بمفتاح 900 ثانية. اقرأ هذا الحقل ولا تثبت الرقم في الشيفرة.
productالمنتج الذي ترتبط به الجلسة.
basemap_style_idخريطة الأساس الافتراضية لمؤسستك، أو null إذا لم تُحدد واحدة.

القيود المرتبطة بالجلسة​

  • مصدر واحد. هو قيمة Origin في طلب الاستبدال. ويُرفض الاستدعاء من أي مصدر آخر.
  • منتج واحد. لا يمكن لجلسة tile استدعاء نقاط نهاية الدردشة.
  • مجموعة محدودة من نطاقات الصلاحية. تحمل الجلسة النطاق الذي يحتاج إليه منتجها فقط: ai للدردشة، وdesign للمحرر، وmaps للمربعات، ولا نطاق للعارض. تحتفظ جلسة الدردشة أيضًا بـ vendor إذا كان المفتاح يملكه وكانت خطتك تسمح به (Enterprise). ولا تحمل جلسة أي منتج آخر نطاق vendor.

التجديد​

لا يستطيع العميل طلب مدة صلاحية أطول. أجرِ الاستبدال مجددًا قبل انتهاء expires_in. تجدّد حزمة التطوير الجلسة قبل انتهاء صلاحيتها بـ90 ثانية، وعندما تصبح علامة تبويب تعمل في الخلفية مرئية وكانت صلاحية الجلسة ستنتهي خلال 90 ثانية أو انتهت بالفعل، وكل 30 ثانية بعد إخفاق التجديد. وإذا فشل الاستبدال الأول، يفشل التركيب ولا تُعاد المحاولة.

تستهلك كل عملية استبدال مع product: "tile" تحميل خريطة واحدًا من حصة مؤسستك؛ أما استبدال المنتجات الأخرى فلا تكلفة له. وللاستبدال حدّ معدل طلبات مستقل لكل مفتاح، منفصل عن استدعاءات وقت التشغيل. راجع الحصص وحدود معدل الطلبات.

ترتيب عمليات التحقق​

تتوقف عملية الاستبدال عند أول فحص يفشل:

الترتيبالفحصالإخفاق
1المفتاح صالح401 Invalid or missing API key
2حد معدل عمليات استبدال المفتاح429 rate_limited
3المفتاح قابل للنشر403 publishable_key_required
4يحتوي الطلب على ترويسة Origin403 origin_required
5المصدر موجود في قائمة المصادر المسموح بها للمفتاح، إن وُجدت403 origin_not_allowed
6لا يستبعد تقييد المفتاح هذا المنتج403 product_not_allowed
7تتضمن خطتك هذا المنتج403 tier_capability_not_allowed
8يمتلك المفتاح نطاق الصلاحية الذي يحتاج إليه المنتج403 insufficient_scope، أو tier_capability_not_allowed إذا امتلك المفتاح النطاق ولكن خطتك لم تعد تتضمنه
9بالنسبة إلى tile: يتوفر تحميل خريطة429 map_load_quota_exceeded

التجربة من الطرفية​

curl -s https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions \
-H "X-Api-Key: kld_pk_live_…" \
-H "Origin: https://www.example.com" \
-H "Content-Type: application/json" \
-d '{"product":"chat"}'

يعمل ذلك لأن Origin ترويسة عادية يمكن لأي عميل خارج المتصفح ضبطها. ولهذا توصف قائمة المصادر المسموح بها بأنها وسيلة تحكم للمتصفح وليست سرًا؛ راجع CORS والمصادر المسموح بها.

جلسات الخريطة المنشورة​

يمكن لخريطة منشورة من Studio تفعّل لوحة Kaleidr AI الخاصة بها Control Tower أو Popup Window إتاحة الدردشة لزوارها من دون مفتاح في الصفحة. وبدلًا من ذلك، تستبدل الصفحة المعرّف العام للخريطة، والميزة التي تفتحها:

POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/share-sessions
Content-Type: application/json

{ "share_id": "your-map-id", "feature": "control_tower" }
{ "session_token": "kld_sess_live_eyJhbGciOi…", "expires_in": 300, "product": "chat" }

تُستخدم هذه الجلسة للدردشة فقط، وتحمل نطاق ai، وتستمر 300 ثانية، وتُحتسب تكلفتها على مؤسسة مالك الخريطة. ولا تحمل vendor مطلقًا. يجب استخدامها من الصفحة التي طلبتها؛ ويُرفض أي استدعاء دون Origin أو مع قيمة مختلفة. حالات الرفض هي:

الحالةالرمزالسبب
403origin_requiredلا يحتوي الطلب على ترويسة Origin.
404not_foundلا توجد خريطة منشورة ولا رابط مشاركة بهذا المعرّف، أو أُلغي نشر خريطة رابط المشاركة.
403chat_disabledلا يفعّل Kaleidr AI الخاص بالخريطة الميزة المطلوبة.
403origin_not_allowedالصفحة ليست ضمن نطاقات الخريطة المسموح بها.
403owner_has_no_organizationمالك الخريطة لا ينتمي إلى مؤسسة يمكن تحميل التكلفة عليها.
403tier_capability_not_allowedخطة المالك لا تتضمن الدردشة.
429rate_limitedعدد عمليات الاستبدال لهذه الخريطة أو من هذا العنوان كبير جدًا.

توضح صفحة Kaleidr AI على خريطة منشورة كيفية الإعداد.

النطاقات​

يحمل كل مفتاح نطاقات صلاحية. وتحتاج كل مجموعة من نقاط النهاية إلى نطاق معين.

النطاقما يتيحهمن يحتاج إليه
aiنقاط النهاية /chat/* و/retrieval/*الدردشة، وأي خادم خلفي يستدعي نقاط نهاية الدردشة أو البحث
designنقاط النهاية /design/*جلسات المحرر، وأي خادم خلفي يستدعي نقاط نهاية التصميم
mapsجلسات خرائط الأساسمنتج Tile
vendorلا يتيح أي نقطة نهاية بمفرده. بل يسمح لإجابات الدردشة باستخدام البيانات المنشورة الخاصة بمؤسستك.الدردشة، عند رفع بياناتك

يحصل المفتاح الجديد على ai وmaps وdesign ما لم تطلب غير ذلك. وفي خطة Free، يحمل المفتاح دائمًا جميع صلاحيات Free: هذه النطاقات الثلاثة بالضبط والمنتجات الأربعة (chat وeditor وviewer وtile)، مهما كان المنتج المذكور في الطلب. ولا يُمنح vendor افتراضيًا أبدًا، ولا يمكن إنشاء مفتاح يحمله إلا لمؤسسة على خطة Enterprise.

يُرفض طلب إنشاء مفتاح يذكر نطاقًا أو منتجًا لا تتيحه خطتك مع الخطأ 403 tier_capability_not_allowed. ولا يُحذف أي عنصر من الطلب بصمت دون ظهور خطأ. ويحدث ذلك عمليًا عند طلب vendor في خطتي Free أو Pro.

تُثبّت نطاقات الصلاحية عند إنشاء المفتاح. لا يمكن تعديلها لاحقًا من أي نقطة نهاية أو إعداد، ويرث المفتاح الناتج عن التدوير هذه النطاقات باستثناء ما لم تعد خطتك الحالية تسمح به. لتغيير نطاقات مفتاح، أنشئ مفتاحًا جديدًا وألغِ القديم.

يتبع تدوير المفاتيح في Free قاعدة خطة Free. يحمل المفتاح البديل الناتج عن تدوير مفتاح قابل للنشر في خطة Free جميع صلاحيات Free (ai وmaps وdesign، والمنتجات الأربعة)، مهما كانت صلاحيات المفتاح السابق. ولا يمكن تدوير مفتاح خادم أو مفتاح قديم في Free؛ إذ يُرفض الطلب مع 403 free_plan_publishable_only.

تتحدد قدرات المفتاح بالحدود الأكثر تقييدًا بين المفتاح والخطة​

يفحص كل طلب نطاقات الصلاحية والمنتجات المحفوظة في المفتاح مقارنة بما تتضمنه خطة مؤسستك اليوم. ولا يؤدي تغيير الخطة إلى تعديل المفتاح، لكنه يغيّر ما يستطيع المفتاح فعله:

  • insufficient_scope: لم يُمنح المفتاح نطاق الصلاحية أصلًا. الحل: استخدم مفتاحًا يحمل النطاق المطلوب.
  • tier_capability_not_allowed: يحمل المفتاح النطاق، لكن خطتك الحالية لا تتضمنه. الحل: غيّر الخطة.

يمثل vendor استثناءً من الحالة الثانية، لأنه لا يتيح نقطة نهاية. فلا يُرفض المفتاح الذي يحتفظ بـvendor إذا أصبحت خطته أقل من Enterprise؛ بل تنجح طلباته، لكن تُنشأ إجاباته من دون بياناتك.

يُسمح للمفتاح ذي قائمة المنتجات الفارغة باستخدام كل منتج تتضمنه خطتك. أما المفتاح الذي لا يحمل أي نطاق صلاحية فيُرفض في جميع نقاط النهاية.

منتج مسموح به لكل مفتاح​

يقيّد allowed_products المفتاح ببعض المنتجات chat وeditor وviewer وtile. ويُطبَّق هذا القيد على جميع أنواع المفاتيح عند موضع استخدامها:

المفتاحموضع التحقق من القيدالرفض
مفتاح قابل للنشرعند استبدال الجلسة، مقارنةً بقيمة product المطلوبة403 product_not_allowed
مفتاح خادم أو مفتاح قديمعند كل طلب لوقت التشغيل، مقارنةً بالمنتج الذي تنتمي إليه نقطة النهاية403 product_not_allowed

تنتمي كل مجموعة من نقاط النهاية إلى المنتج الذي تحتاج نطاق صلاحيته:

نقاط النهايةالنطاقالمنتج الذي يجب أن يسمح به المفتاح المقيّد
/chat/*، /retrieval/*aichat
/design/*designeditor

لذلك يُرفض مفتاح خادم أُنشئ مع "allowed_products": ["tile"] عند استدعاء /chat/control/stream بالخطأ 403 product_not_allowed رغم أنه يحمل نطاق ai. ولا يستطيع مفتاح خادم مقيّد بـviewer وحده استدعاء أي نقطة نهاية لوقت التشغيل، لأن الخريطة المنشورة لا تحتاج إلى مفتاح. اترك القائمة فارغة عندما تريد للمفتاح الوصول إلى جميع نقاط النهاية التي تسمح بها نطاقاته.

لا يُعاد فحص رمز الجلسة هنا؛ فقد ارتبط بمنتج واحد عند استبداله.

FreeProEnterprise
مفاتيح قابلة للنشرنعمنعمنعم
مفاتيح الخادملانعمنعم
ai، maps، designنعمنعمنعم
vendorلالانعم

تضيف خطة Pro مفاتيح الخادم وحدًا أعلى لعدد المفاتيح النشطة مقارنة بما توفره Free. يوجد جدول الخطط الكامل في الحصول على مفتاح API.

النطاق vendor​

لا يتيح vendor أي نقطة نهاية، بل يحدد ما إذا كانت إجابة دردشة تستخدم هذا المفتاح تستطيع الاعتماد على البيانات المنشورة الخاصة بمؤسستك إلى جانب المعرفة العامة لدى Kaleidr. توضح صفحة بياناتك: نظرة عامة المسار الكامل من رفع البيانات إلى الإجابة.

من يمكنه استخدامه:

  • لا يمكن لخطتي Free وPro حمل vendor. ويُرفض طلب إنشاء مفتاح به مع 403 tier_capability_not_allowed سواء أُرسل vendor_acknowledged أم لا. ولن يُنشأ مفتاح.
  • يمكن لخطة Enterprise إنشاء مفاتيح تحمل vendor.

يتعلق نطاق الصلاحية بقراءة البيانات عبر مفتاح. أما رفع البيانات فهو إذن منفصل يمتلكه مالك المؤسسة أو مسؤولها، وليس أي مفتاح؛ وهو متاح لخطة Enterprise فقط أيضًا: لا تستطيع مؤسسات Free وPro رفع بيانات الأعمال. والملفات التي يضيفها مستخدم سجّل دخوله إلى خريطة في Kaleidr Studio هي ميزة أخرى متاحة لجميع الخطط، ولا يقرأها أي نطاق صلاحية؛ راجع مجموعات البيانات على الخريطة.

لا يمكن منح vendor من صفحة مفاتيح API. أنشئ المفتاح عبر واجهة برمجة إدارة المفاتيح:

curl -s https://api.kaleidr.com/shared-api/api-keys \
-H "Authorization: Bearer $KALEIDR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "store-locator-chat",
"key_type": "publishable",
"scopes": ["ai", "vendor"],
"vendor_acknowledged": true,
"allowed_origins": ["https://www.example.com"]
}'

الحقل vendor_acknowledged: true مطلوب لمفتاح قابل للنشر يحمل vendor. وبدونه يفشل الطلب مع 422 vendor_scope_requires_acknowledgement. يوجد هذا الحقل لأن المفتاح القابل للنشر يظهر في مصدر صفحة عامة؛ ولذلك يستطيع أي زائر للصفحة قراءة البيانات التي يمكن للمفتاح الوصول إليها. أما مفتاح الخادم فلا يحتاج إلى إقرار.

قبل إضافة vendor إلى مفتاح قابل للنشر:

  • استخدم مفتاحًا واحدًا لكل موقع ويب. لا تمنح vendor إلا للموقع الذي يحتاج إلى الإجابة اعتمادًا على بياناتك.
  • اعتبر جميع بياناتك المنشورة متاحة للعامة في ذلك الموقع. ولا تنشر أسعار التكلفة أو الأسعار غير المعلنة أو أي معلومات لا ترغب في عرضها على الصفحة.
  • تذكّر أن الجلسات الجارية لا تكتسب النطاق الجديد. فالمفتاح المنشأ مع vendor يمنحه فقط للجلسات التي تُستبدل بعد ذلك.

لسحب vendor، ألغِ المفتاح وأنشئ بديلًا من دونه. يسري الإلغاء اعتبارًا من الطلب التالي، بما في ذلك الجلسات التي سبق إصدارها.

عندما تغادر المؤسسة خطة Enterprise​

لا يؤدي الانتقال من Enterprise إلى Pro أو Free إلى تعديل مفاتيحك أو التسبب في فشلها:

العنصرما يحدث بعد الانتقال
مفتاح يحمل vendorيستمر في العمل لجميع الاستخدامات الأخرى. لكن إجاباته لا تعتمد بعد الآن على بياناتك. ولا يوجد خطأ أو حالة أو حقل يبيّن ذلك.
جلسات المتصفح الصادرة قبل الانتقالتُنهى. ويعيد طلبها التالي 401، ثم تحصل حزمة التطوير على جلسة جديدة لا تحمل vendor.
تدوير مفتاح يحمل vendorفي Pro: ينجح مع 201. ويحمل البديل نطاقات الصلاحية نفسها من دون vendor، مع بقاء قائمة المنتجات كما هي. في Free: يحمل بديل المفتاح القابل للنشر ai وmaps وdesign والمنتجات الأربعة، مهما كانت صلاحيات القديم؛ ويُرفض تدوير مفتاح الخادم أو المفتاح القديم مع 403 free_plan_publishable_only.
إنشاء مفتاح يحمل vendorيُرفض مع 403 tier_capability_not_allowed.
إصدارات بياناتكيمكن للمالكين والمسؤولين الاستمرار في سرد الإصدارات وإلغاء نشرها وحذفها في أي خطة عبر واجهة برمجة الرفع. وفي Free وPro، يُرفض الرفع والنشر مع 403 vendor_data_not_on_plan.

عند العودة إلى Enterprise، يستعيد المفتاح الذي لا يزال يحتفظ بـvendor إمكانية الوصول إلى البيانات. أما المفتاح البديل الذي دُوِّر في الخطة الأدنى فلا يستعيد هذا النطاق؛ أنشئ مفتاحًا جديدًا.

تقييد مفتاح​

التقييدينطبق علىيُضبط من صفحة مفاتيح APIيُضبط عبر واجهة برمجة إدارة المفاتيحالرفض
المصادر المسموح بهاالمفاتيح القابلة للنشرنعمنعم (allowed_origins)403 origin_not_allowed عند الاستبدال
المنتجات المسموح بهاأي مفتاحلانعم (allowed_products)403 product_not_allowed: عند الاستبدال للمفتاح القابل للنشر، وعند كل طلب وقت تشغيل لمفتاح الخادم أو المفتاح القديم. راجع حدود المنتجات.
قائمة عناوين IP المسموح بهامفاتيح الخادم والمفاتيح القديمةلانعم (allowed_ips)403 ip_not_allowed
الحد الشهريأي مفتاحلانعم (monthly_cap_tokens)429 quota_exceeded
انتهاء الصلاحيةأي مفتاحلانعم (expires_at)401 بعد التاريخ المحدد
نطاقات الصلاحيةأي مفتاحلاعند الإنشاء فقط (scopes)403 insufficient_scope

المصادر المسموح بها. حتى 100 إدخال، كل منها بالصيغة scheme://host[:port] من دون مسار. وتعني القائمة الفارغة في المفتاح القابل للنشر السماح بأي مصدر. التفاصيل وحالات الإخفاق موضحة في CORS والمصادر المسموح بها.

قائمة عناوين IP المسموح بها. حتى 100 عنوان IP أو كتلة CIDR. تُرفض الكتلة التي تطابق كل العناوين (/0)؛ اترك القائمة فارغة للسماح «بأي عنوان». وإذا كان للمفتاح قائمة وتعذّر تحديد عنوان الجهة المتصلة، يُرفض الطلب.

الحد الشهري. سقف لما يستطيع هذا المفتاح وحده استهلاكه من أرصدة الذكاء الاصطناعي لمؤسستك خلال فترة فوترة. راجع الحصص وحدود معدل الطلبات.

ما يسري على جلسة صادرة بالفعل​

تعيد الجلسة قراءة مفتاحها الأصلي عند كل طلب، لذلك يسري سحب الوصول سريعًا. أما إضافة الوصول فتتطلب عملية استبدال جديدة.

التغيير في المفتاح أو الحسابأثره على جلسة سبق إصدارها
إلغاء المفتاح أو تدويره دون فترة سماح401 عند طلبها التالي.
إزالة مصدر الجلسة من مصادر المفتاح المسموح بها401 عند طلبها التالي.
إزالة منتج الجلسة من منتجات المفتاح المسموح بها401 عند طلبها التالي.
خفض مستوى الخطةتحصل الجلسات الصادرة قبل الخفض على 401. أما الجلسات المستبدلة بعده فتحصل على 403 tier_capability_not_allowed للميزات التي لم تعد الخطة تتضمنها.
إضافة حد شهري أو خفضهيُطبّق عند الطلب التالي.
إزالة الحد الشهرييُطبّق اعتبارًا من الاستبدال التالي.
ترقية الخطةتُطبّق اعتبارًا من الاستبدال التالي.

لأن مدة الجلسة بالدقائق، فإن عبارة «اعتبارًا من الاستبدال التالي» تعني انتظارًا قصيرًا. ويلتقط تجديد حزمة التطوير التغيير من دون تعديل الشيفرة.

واجهة برمجة تطبيقات إدارة المفاتيح​

تتيح صفحة مفاتيح API في kaleidr.com/api-keys ضبط اسم المفتاح ونوعه ومصادره المسموح بها. ويُضبط كل ما تبقى في هذه الصفحة عبر واجهة البرمجة نفسها التي تستخدمها تلك الصفحة.

  • عنوان URL الأساسي: https://api.kaleidr.com/shared-api/api-keys
  • المصادقة: Authorization: Bearer مع رمز وصول لحساب Kaleidr مسجّل الدخول ويكون صاحبه مالكًا أو مسؤولًا في المؤسسة. لا يُقبل مفتاح المنصة هنا. ولا توجد حاليًا بيانات اعتماد منفصلة طويلة الأجل لإدارة المفاتيح.
  • المؤسسة: إذا لم تذكر مؤسسة، تُستخدم مؤسستك الأساسية. لتحديد مؤسسة أخرى، أرسل org_id في متن JSON عند إنشاء المفتاح، وبصفته معامل الاستعلام ?org_id= في جميع المسارات الأخرى. يُتجاهل معامل الاستعلام org_id في مسار الإنشاء.
الطريقة والمسارالغرضالنجاح
POST /إنشاء مفتاح201، كائن المفتاح مع plaintext_key
GET /سرد المفاتيح النشطة، الأحدث أولًا200
GET /{id}/events?limit=1..200أحداث التدقيق الخاصة بالمفتاح200
PATCH /{id}تغيير القيود200، كائن المفتاح
POST /{id}/rotateاستبدال المفتاح201، المفتاح الجديد مع plaintext_key
POST /{id}/revokeإلغاء المفتاح200، كائن المفتاح

لا يوجد مسار للحذف؛ ألغِ المفتاح لإيقاف استخدامه.

الحقول المقبولة عند إنشاء مفتاح:

الحقلالنوعالقيمة الافتراضيةملاحظات
nameسلسلة نصية من 1 إلى 200 حرفمطلوب
org_idUUIDمؤسستك الأساسيةالمؤسسة التي يُنشأ فيها المفتاح. يُرسل في متن الطلب؛ ويُتجاهل معامل الاستعلام في هذا المسار.
key_type"publishable" أو "server""publishable"تُرفض القيمة "server" في Free مع 403 free_plan_publishable_only.
environment"live" أو "test""live"
scopesمصفوفة سلاسل نصية["ai", "maps", "design"]من ai وmaps وdesign وvendor. أي قيمة أخرى تؤدي إلى 422 unknown_scope. والنطاق الذي لا تسمح به خطتك (vendor دون Enterprise) يؤدي إلى 403 tier_capability_not_allowed.
allowed_originsمصفوفة سلاسل نصية حتى 100[]تعني القائمة الفارغة السماح بأي مصدر للمفتاح القابل للنشر.
allowed_productsمصفوفة سلاسل نصية[]من chat وeditor وviewer وtile. تعني القائمة الفارغة جميع المنتجات. أي قيمة أخرى تؤدي إلى 422 unknown_product. يُطبّق على المفاتيح القابلة للنشر ومفاتيح الخادم والمفاتيح القديمة؛ راجع حدود المنتجات.
allowed_ipsمصفوفة سلاسل نصية حتى 100[]عناوين IP أو كتل CIDR.
monthly_cap_tokensعدد صحيح لا يقل عن 0لا يوجدالقيمة 1 أو أكثر تفرض حدًا على المفتاح. وتعني 0 أو null عدم وجود حد.
expires_atتاريخ ووقت في المستقبللا يوجد
vendor_acknowledgedقيمة منطقيةfalseمطلوب لمفتاح قابل للنشر يحمل vendor (Enterprise).

يقبل PATCH الحقول name وallowed_origins وallowed_products وallowed_ips وmonthly_cap_tokens وexpires_at. أرسل الحقول التي تريد تغييرها فقط؛ وتمسح قيمة null الصريحة الحقل. ولا يقبل scopes.

يقبل rotate القيمة { "grace_hours": 0 } من 0 إلى 8760. ويرث المفتاح البديل نطاقات صلاحية المفتاح القديم، باستثناء أي نطاق لم تعد خطتك الحالية تسمح به. وفي Free، يحمل البديل دائمًا كل صلاحيات Free، ولا يمكن تدوير مفتاح خادم أو مفتاح قديم (403 free_plan_publishable_only). وعند اختيار 0، يتوقف المفتاح القديم وجلساته فورًا. أما مع فترة سماح، فيظل المفتاح القديم يعمل حتى نهايتها، ويظل محسوبًا ضمن حد المفاتيح النشطة لخطتك، ولا يمكن تدويره مرة ثانية. تستخدم صفحة مفاتيح API فترة سماح مدتها 24 ساعة.

أخطاء هذه المسارات مدرجة في الأخطاء: إدارة المفاتيح.

أخطاء المصادقة​

تعني 401 أن واجهة البرمجة لا تقبل بيانات الاعتماد إطلاقًا. وتعني 403 أنها تعرف هويتك لكنها ترفض الطلب. وتأتي جميعها بالصيغة {"detail": "<code>"}.

في المتصفح، لا تحمل الاستجابة للطلب المرفوض بسبب بيانات الاعتماد أو المصدر ترويسة CORS، لذا ترى الصفحة خطأ CORS بدل متن الاستجابة. أما الرفض اللاحق بسبب النطاق أو الخطة، فيمكن قراءته، وتُبلغ حزمة التطوير عن kaleidr session exchange failed (403). في الحالتين، افتح الطلب في علامة التبويب Network بأدوات المتصفح لقراءة الرمز. راجع CORS والمصادر المسموح بها.

الحالةالرمزالسببالحل
401Invalid or missing API keyعدم إرسال بيانات اعتماد؛ أو مفتاح غير معروف أو ملغى أو منتهي الصلاحية؛ أو جلسة منتهية؛ أو جلسة أُلغي مفتاحها أو فقد مصدرها أو منتجها، أو صَدرت قبل خفض الخطة؛ أو مؤسسة معلّقة أو من دون خطة.تحقّق من قيمة المفتاح وحالته في صفحة مفاتيح API. وبالنسبة إلى الجلسة، أجرِ الاستبدال مجددًا.
401publishable_requires_sessionأُرسل مفتاح قابل للنشر إلى نقطة نهاية لوقت التشغيل.استبدله بجلسة، أو أرسل الاستدعاء من خادم خلفي باستخدام مفتاح خادم.
403publishable_key_requiredاستُدعيت عملية استبدال الجلسة بمفتاح خادم أو مفتاح قديم.استخدم مفتاحًا يبدأ بـ kld_pk_… عند الاستبدال.
403origin_requiredعملية استبدال جلسة بلا ترويسة Origin.أرسل الاستدعاء من صفحة متصفح.
403origin_not_allowedمصدر الصفحة غير موجود في مصادر المفتاح المسموح بها، أو ليس ضمن النطاقات المسموح بها للخريطة المنشورة.أضف المصدر المطابق تمامًا إلى المفتاح، أو النطاق إلى الخريطة.
403product_not_allowedالمنتجات المسموح بها للمفتاح لا تتضمن هذا المنتج: قيمة product المطلوبة عند الاستبدال، أو المنتج الذي تنتمي إليه نقطة النهاية عند استخدام مفتاح خادم أو مفتاح قديم.غيّر allowed_products أو استخدم مفتاحًا آخر.
403insufficient_scopeأُنشئ المفتاح دون النطاق الذي تحتاج إليه نقطة النهاية أو المنتج.استخدم مفتاحًا يحمل النطاق؛ فلا يمكن تعديل النطاقات.
403tier_capability_not_allowedيحمل المفتاح النطاق أو المنتج لكن خطتك الحالية لا تتضمنه.غيّر الخطة في kaleidr.com/billing.
403server_key_in_browserأُرسل مفتاح خادم مع ترويسة Origin.انقل الاستدعاء إلى خادمك الخلفي. وإذا كان المفتاح ظاهرًا في مصدر الصفحة، فدوّره.
403session_origin_mismatchاستُخدم رمز جلسة من مصدر مختلف عن الذي أُنشئ له، أو استُخدمت جلسة خريطة منشورة دون Origin.استبدل الجلسة من الصفحة التي ستستخدمها.
403ip_not_allowedاستُخدم مفتاح خادم أو مفتاح قديم مع قائمة عناوين IP مسموح بها من عنوان خارجها.أرسل الاستدعاء من عنوان مسموح، أو غيّر allowed_ips.
403chat_disabledاستبدال خريطة منشورة: لا يفعّل Kaleidr AI الخاص بالخريطة الميزة المطلوبة.فعّل Control Tower أو Popup Window في لوحة Kaleidr AI الخاصة بالخريطة في Studio.
403owner_has_no_organizationاستبدال خريطة منشورة: لا ينتمي مالك الخريطة إلى مؤسسة.يجب على المالك إنشاء مؤسسة أو الانضمام إليها.
404not_foundاستبدال خريطة منشورة: لا توجد خريطة منشورة ولا رابط مشاركة بهذا المعرّف.تحقّق من المعرّف ومن نشر الخريطة.

توجد القائمة الكاملة، بما في ذلك استجابات 429 و5xx، في الأخطاء.

موضوعات ذات صلة​