سواء كنت تطلق متجراّ إلكترونياً غنياً بالميزات، تطور تجربة افتراضية، أو تبني محرك ذكاء اصطناعي قابل للتوسع، فإن البنية المصممة للمطورين لدينا تسهل عليك عملية الدمج، التخصيص، والنشر لأدوات الذكاء الاصطناعي والواقع المعزز داخل بنيتك الرقمية.
نوفر لك حلولاً مرنة ومقسمة إلى وحدات يمكن ربطها مباشرة ببنيتك التحتية، دون الحاجة إلى مجهود كبير.
واجهات RESTful API و Webhooks
حزم SDK جاهزة للويب والموبايل
كود نظيف وموثق بشكل احترافي
دعم تقني كامل وأدلة تكامل شاملة
منصتنا مصممة لتتناسب مع بيئتك. نعمل بسلاسة عبر جميع الأطر وأنظمة إدارة المحتوى من شوبيفاي وماجنتو إلى الأنظمة المخصصة.
لا تعتمد على واجهات أمامية معينة
جاهزة للهيكلة الرأسية (Headless)
خيارات سهلة للإضافات في أنظمة CMS والمتاجر الإلكترونية
1
4
خادمك يوقّع client_assertion بمفتاحك الخاص ES256 ويرسله إلى /api/token، فيستلم access_token قصير العمر (5 دقائق). تُمرّر هذا الرمز إلى واجهتك الأمامية، التي تُلصقه على وسم <script> الخاص بالـ SDK كـ ?sessionToken=…. يقرأ الـ SDK هذا الرمز من عنوان السكربت ويرفقه كـ Authorization: Bearer لكل طلب نوڤاجيتس.
احفظها على الخادم فقط
آمن للإرسال إلى المتصفح
أعد جلب رمز جديد من خادمك قبل انتهاء الخمس دقائق. لا تُرسل المفتاح الخاص ولا client_assertion إلى المتصفح أبداً.
التثبيت
# Requires bash, curl, jq.# Pre-sign client_assertion with one of the language tabs below.
التنفيذ
CLIENT_ASSERTION="$(node ./scripts/sign-client-assertion.js)"curl -sS -X POST https://api.novagates.com/api/token \-H 'Content-Type: application/json' \-d "{\"client_assertion\": \"${CLIENT_ASSERTION}\",\"client_assertion_type\": \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\"}" | jq -r .access_token
POST /api/token — مخطط الطلب والاستجابة
النقطة الوحيدة التي يستدعيها خادمك مباشرةً. كل ما عداها يستدعيه الـ SDK نيابةً عنك باستخدام sessionToken الذي حقنته في وسم <script>.
الطلب
POST · application/json أو application/x-www-form-urlencoded
client_assertion (مطلوب) — JWT موقّع بـ ES256، الترويسة تحوي jwk عام، الحمولة iss=sub=apiKey مع jti فريد.client_assertion_type (مطلوب) — ثابت: urn:ietf:params:oauth:client-assertion-type:jwt-bearerdpop_jkt (اختياري) — بصمة base64url بطول 42–44 حرفاً لمفتاح متصفح مؤقت لربط الرمز به.الاستجابة
200 OK · application/json
access_token — JWT موقّع بـ HS256؛ المطالبات: sub=apiKey، cnf.jkt=البصمة المربوطة، iss=novagates، jti فريد.token_type — "Bearer"expires_in — 300 (5 دقائق)أخطاء: 400 لمدخلات غير صالحة، 401 إذا لم يطابق jkt الترويسة بصمة apiKey المخزّنة أو تم استخدام jti سابقاً.
تتم تهيئة الـ SDK ببساطة عبر تضمين sessionToken في وسم <script>. واجهتك الأمامية تجلب الرمز من خادمك (الذي يستدعي /api/token)، ثم تحقن وسم سكربت الـ SDK مع ?sessionToken=… و?module=…، ويبدأ الـ SDK تلقائياً ويُرفق هذا الرمز كـ Bearer لكل طلب نوڤاجيتس.
تدفق التهيئة
التنفيذ
<!doctype html><html lang="en"><head><meta charset="utf-8" /><title>Novagates Virtual Try-On</title></head><body><div id="novagates-root"></div><script>(async function bootNovagates() {// 1. Mint a short-lived sessionToken on YOUR backend.const res = await fetch("/api/sdk-token", { credentials: "include" });if (!res.ok) throw new Error("Failed to fetch SDK session token");const { sessionToken } = await res.json();// 2. Inject the SDK loader with sessionToken + module on the URL.const params = new URLSearchParams({sessionToken: sessionToken,module: "virtual-try-on",});const script = document.createElement("script");script.src ="https://cdn.novagates.com/sdk/novagates-sdk.js?" + params.toString();script.async = true;script.onload = function () {// 3. Init once the loader has registered the global.window.Novagates.init({rootId: "novagates-root",productsSource: "/api/products.json",immediate: true,});};document.body.appendChild(script);})();// 4. Listen for product events emitted by the SDK.window.addEventListener("sdk:addToCart", function (e) {console.log("[novagates] add to cart", e.detail);// forward to your cart, analytics, etc.});</script></body></html>
بالنسبة لمتاجر WordPress / WooCommerce و Magento و Shopify و OpenCart — قمنا بشحن الإضافة بالكامل. تتولّى توقيع client_assertion، وتبادل الرموز عبر /api/token، وتدوير sessionToken، وتزامن الكتالوج تلقائياً. تعليمات التنزيل والتثبيت متوفرة داخل لوحة التحكم الخاصة بك.
يستهلك الـ SDK كتالوج JSON يطابق هذا المخطط. يتم تحديد ميزات التجربة الافتراضية وتحليل الجلد والعرض ثلاثي الأبعاد بناءً على حقل `technologies`، بينما توجّه `product_types` و `category` تجربة المستخدم.
simple
SKU واحد، مجموعة سمات واحدة
configurable
SKU أب يكشف متغيرات (درجات/أحجام)
variable
متغيرات بأسعار مستقلة
// GET /api/products → Product[]//// Three product shapes, distinguished by `type_id`:// "simple" — single SKU, single set of attributes// "configurable" — parent SKU exposes child variants (size/shade swatches)// "variable" — parent SKU with priced variants (e.g. fragrance volumes)//// Every product family below extends this base. Required vs null fields// depend on the family — see the next tabs.interface Product {/* identity */id: number;uid: string;sku: string; // unique merchant SKUtype_id: "simple" | "configurable" | "variable";name: string;brand: string | null;manufacturer: string | null;country_of_manufacture: string | null;made_in: string | null;/* taxonomy */category: string; // e.g. "Women > Makeup > Face > Foundation"product_types: string; // see family tabsproduct_type_id: string; // your CMS taxonomy id/* commerce */url_key: string;url_path: string;price: { regularPrice: { amount: { currency: string; value: number } } };/* media */image: { url: string };swatch_image: { url: string };thumbnail: { url: string };small_image?: { url: string };/* try-on / 3D pipeline switch */is_product_try_on: 0 | 1;is_product_skin_improvement: 0 | 1;asset_url: string | null; // PNG texture, .glb, or null per familytechnologies: string; // pipe-separated; activates SDK modules/* configurable / variable parents */variants?: Array<{ product: Product }>;}
نوڤاجيتس ليست مجرد منصة بل شريك تقني حقيقي.
ندعم المطورين في كل خطوة، من خلال جلسات مع الخبراء، مستودعات كود مشتركة، ومجتمع تقني متنامٍ.