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

نظرة عامة على API

صُممت واجهة ZTXBAS العامة لتكون صغيرة عمدًا: عشرة مسارات عبر أربعة موارد، جميعها تحت /v1/*، بالإضافة إلى مسارين دون مصادقة لفحص الصحة واكتشاف المفاتيح.

مواصفات قابلة للقراءة الآلية​

المواصفات المرجعية الرسمية في ملف openapi.yaml بالمستودع. وهي OpenAPI 3.1 ويمكن التحقق منها عبر Swagger Editor وStoplight وأدوات توليد الشيفرة المعروفة.

المسارات باختصار​

الفعلالمسارالغرض
POST/v1/usersتسجيل مستخدم وإرسال بريد الإعداد
GET/v1/usersعرض المستخدمين في المستأجر
DELETE/v1/usersإلغاء تسجيل مستخدم، والبريد في جسم الطلب
POST/v1/originsتسجيل أصل
GET/v1/originsعرض الأصول المسجلة
DELETE/v1/origins/{id}حذف أصل
POST/v1/auth/challengeإنشاء تحدٍ وإرساله إلى الهاتف
GET/v1/auth/status/{challenge_id}الاستعلام عن نتيجة التحدي
GET/.well-known/jwks.jsonالمفاتيح العامة للتحقق من JWT
GET/healthفحص حياة الخدمة، دون مصادقة

كل ما يقع تحت /v1/* يتطلب توقيع HMAC-SHA256؛ انظر توقيع HMAC للاطلاع على الصيغة الموحّدة. وتتولى SDK ذلك نيابةً عنك.

المصادقة​

أربعة رؤوس لكل طلب تحت /v1/*:

X-Application-ID: app_...
X-Timestamp: 1704067200
X-Nonce: 32-hex-chars
X-Signature: hex(HMAC-SHA256(secret, canonical))

الرؤوس المفقودة أو غير الصالحة تؤدي إلى 401 UNAUTHORIZED مع رمز error محدد يبين الفحص الذي فشل.

صيغة الأخطاء​

تشترك جميع استجابات 4xx/5xx في بنية JSON نفسها:

{ "error": "UNREGISTERED_ORIGIN", "message": "origin not registered for this application" }
  • error قابل للمعالجة آليًا ومستقر؛ استخدمه في منطق الإعادة أو التفرع.
  • message نص موجّه للبشر وقد يتغير؛ لا تعتمد على تحليله برمجيًا.

رموز شائعة:

الرمزالسبب
MISSING_AUTHغياب أحد رؤوس HMAC الأربعة
INVALID_SIGNATUREفشل التحقق من HMAC
INVALID_TIMESTAMPالطابع الزمني سالب أو ليس عددًا صحيحًا
TIMESTAMP_EXPIREDالطابع الزمني خارج ±300 ثانية من ساعة الخادم
INVALID_APPLICATIONقيمة X-Application-ID غير معروفة
BODY_TOO_LARGEجسم الطلب يتجاوز 8 KiB
DUPLICATE_EMAILمحاولة تسجيل مستخدم موجود بالفعل
UNREGISTERED_ORIGINلم يُسجّل أصل التحدي أولًا عبر POST إلى /v1/origins
USER_NOT_FOUNDتحدٍ أو إلغاء تسجيل لمستخدم غير معروف
ENROLLMENT_FAILEDتعذر على الخادم إرسال رسالة التسجيل

حدود معدل الطلبات​

لا يفرض ZTXBAS نفسه حاليًا حدود معدل الطلبات. استخدم وكيلًا عكسيًا (nginx أو Caddy أو Cloudflare) إذا احتجت حدودًا لكل مستأجر؛ يغطي دليل تقوية الأمان أساسًا موصى به.