واجهة برمجية (API) عامة للقراءة تعطي برنامجك حزم فانيو ومشاهدها وتراخيصها بصيغة JSON، وتتيح التحقق من مفتاح الترخيص وتنزيل المشاهد المدفوعة. وصفها الكامل بمعيار OpenAPI 3.1 على العنوان https://fanio.net/v1/openapi.json
قبل أن تبدأ
- القراءة لا تحتاج إلى مفتاح.
- لكل عنوان شبكة حد لعدد الطلبات. إذا تجاوزته جاء الرد برمز الحالة 429 والرمز
rate_limited. - لكل مشهد معرف ثابت بالشكل
fanio:<pack>/<scene>، حيثpackاسم الحزمة في الرابط وsceneاسم المشهد. - الردود بصيغة JSON، والخطأ يأتي بالشكل
{"error": {"code": "...", "detail": "..."}}. - روابط الصفحات في الردود تشير إلى الصفحات الإنجليزية تحت
/en/، والصفحة العربية هي المسار نفسه تحت/ar/.
القراءة
GET /v1/packs: كل الحزم مع مشاهدها وأسعارهاGET /v1/packs/{pack}: حزمة واحدةGET /v1/scenes/{pack}/{scene}: مشهد واحد، مع عنوانه ونصه البديل ووسومه بالعربية والإنجليزية، وعبارة ذكر المصدر، وترخيصه، وروابطهGET /v1/scenes/{pack}/{scene}.svg: ملف SVG للمشهد المجاني. المشهد المدفوع يرد بالرمز 402 وlicence_requiredمع رابط الشراءGET /v1/scenes/{pack}/{scene}.png: معاينة PNG بقياس 480 بكسل لأي مشهد، مجانيا كان أو مدفوعاGET /v1/scenes/{pack}/{scene}/provenance: سجل المنشأ، أي كيف صنع المشهدGET /v1/search?q=قراءة: البحث بكلمات عربية أو إنجليزية. يدعمlimitمن 1 إلى 50 وoffsetللصفحات. يمكن تكرارpackأوcharacterأوstyleأوactivityأوsettingأوseasonلاختيار عدة قيم من التصنيف نفسه. وتدعم التصفيةfree=trueأوfree=false، والترتيبsort=titleمعlang=ar. يتضمن الرد العدد الكليtotalوأعداد التصنيفاتfacets. يطلبsmart=trueترتيب Jev الاختياري للصفحة الأولى عند تفعيله على الخادم، مع الرجوع إلى الترتيب المحلي عند التعذرGET /v1/licences: كل مستويات الترخيصGET /v1/licences/{tier}: مستوى ترخيص واحد، والقيمةtierإحدى ثلاث:freeأوstandardأوextendedGET /v1/health: حالة الخدمةGET /v1/openapi.json: وصف OpenAPI الكامل
المسار غير الموجود يرد بالرمز 404 وnot_found، والمدخل غير الصالح يرد بالرمز 400 وinvalid_input.
المشاهد المدفوعة
تنزيل مشهد مدفوع يحتاج إلى مفتاح الترخيص الذي حصل عليه المشتري. الطلبان الآتيان يرسلان جسما بصيغة JSON مع الترويسة content-type: application/json، وحجم الجسم حتى 4096 بايت.
POST /v1/licences/verifyبالجسم{"key": "fanio_lk_..."}يرد بالحزمة المرخصة ومستوى الترخيص:{"valid": true, "pack": "...", "tier": "..."}. المفتاح غير الصحيح يرد بالرمز 404.POST /v1/licences/downloadبالجسم{"key": "...", "scene": "fanio:<pack>/<scene>"}يرد برابط تنزيلurlصالح خمس دقائق، وتظهر المدة في الحقلexpiresInبالثواني. المشهد من حزمة لا يشملها المفتاح يرد بالرمز 403 وnot_entitled.
حفظ مفتاح الترخيص
مفتاح الترخيص يعمل عمل كلمة المرور: من يحمله يستطيع التنزيل. احفظه في الخادم، ولا تضعه في شيفرة تعمل في المتصفح. إظهار المفتاح مرة أخرى في صفحة الطلب يصدر مفتاحا جديدا ويلغي المفتاح القديم.
