ई-कॉमर्स सेटिंग पैनल में API क्रेडेंशियल बनाएँ। Access Token केवल एक बार दिखता है, इसलिए उसे तुरंत बैकएंड के सीक्रेट स्टोरेज में रखें।
Access Key और Access Token अपने सर्वर पर रखें। प्रमाणीकरण वाले एंडपॉइंट ब्राउज़र से आने वाली ऐसी कॉल अस्वीकार करते हैं जिनमें Origin या Referer हेडर हों।
क्रेडेंशियल के अनुमति-क्षेत्र सीमित किए जा सकते हैं। सक्रिय स्टोरफ़्रंट, योजना की क्षमताएँ और क्रेडेंशियल के अनुमति-क्षेत्र जाँचने के लिए GET /auth/check इस्तेमाल करें।
नीचे की तालिका backend-public-api/app.js में दर्ज सार्वजनिक रूट दिखाती है। पाथ में बाहरी एकीकरण द्वारा इस्तेमाल किया जाने वाला सार्वजनिक प्रॉक्सी प्रीफ़िक्स शामिल है।
विधि
एंडपॉइंट
विवरण
ऐक्सेस
GET
/public-api/healthz
सेवा की हेल्थ जाँच।
सार्वजनिक
GET
/public-api/v1/auth/check
क्रेडेंशियल सत्यापित करके स्टोरफ़्रंट, अनुमति-क्षेत्र और योजना की क्षमताएँ लौटाता है।
कोई भी प्रमाणित क्रेडेंशियल
GET
/public-api/v1/customer-orders
पेजिनेशन और फ़िल्टर वाली ग्राहक ऑर्डर सूची लौटाता है।
orders:read
GET
/public-api/v1/customer-orders/:id
कॉन्फ़िगर किए गए उत्पाद आइटम के साथ एक ग्राहक ऑर्डर लौटाता है।
orders:read
POST
/public-api/v1/customer-orders/batch
ID से अधिकतम 100 ऑर्डर लौटाता है।
orders:read
PATCH
/public-api/v1/customer-orders/:id/status
ऑर्डर की स्थिति अपडेट करता है।
orders:write
PATCH
/public-api/v1/customer-orders/:orderId/quantity
ऑर्डर के चुने हुए विवरणों की मात्रा अपडेट करता है।
ग्राहक ऑर्डर एंडपॉइंट से बाहरी स्टोर कॉन्फ़िगर किए गए आइटम पढ़ सकता है, मात्रा बदल सकता है, ऑर्डर को पूर्ति स्थितियों में आगे बढ़ा सकता है और छोड़े गए ऑर्डर हटा सकता है।
पैरामीटर
आवश्यक
विवरण
name
नहीं
डिज़ाइन नाम और संख्यात्मक ऑर्डर ID से खोजता है।
category_id
नहीं
उत्पाद श्रेणी ID से फ़िल्टर करता है।
order_status
नहीं
स्वीकृत ऑर्डर स्थितियों में से एक।
offset
नहीं
डिफ़ॉल्ट 0। मान >= 0 होना चाहिए।
limit
नहीं
इस कंट्रोलर के लिए डिफ़ॉल्ट 9, अधिकतम 50।
order_by
नहीं
id, created_at या design_name।
direction
नहीं
ASC या DESC।
उदाहरण अनुरोध (fetch)
const params =newURLSearchParams({limit:'20',offset:'0',order_status:'shopping_cart',order_by:'created_at',direction:'DESC'});const orders =awaitalterFetch(`/customer-orders?${params.toString()}`);const order =awaitalterFetch('/customer-orders/123');const batch =awaitalterFetch('/customer-orders/batch',{method:'POST',body:JSON.stringify({customerOrderIds:[123,124,125]})});
स्वीकार्य मान
स्थिति
विवरण
shopping_cart
कार्ट चरण; ग्राहक अभी भी कॉन्फ़िगरेशन संपादित कर सकता है।
editable
ऑर्डर ग्राहक के लिए संपादन योग्य रहता है।
paid
ऑर्डर का भुगतान हो चुका है और वह पूर्ति के लिए तैयार है।
जनरेटर आयात एंडपॉइंट सर्वरों के बीच केवल पढ़ने के अनुरोध स्वीकार करते हैं। इनके लिए सामान्य API हेडर, embed:session:create अनुमति और सक्रिय प्लान ज़रूरी हैं। आयात का प्राधिकरण संपादक सत्र जारी नहीं करता और उसकी मासिक सीमा का उपयोग नहीं करता। संपादक खोलने पर अन्य एम्बेड किए गए टूल वाला साझा monthlyEmbedTokenLimit काउंटर इस्तेमाल होता है।
जनरेटर वाले मॉडल खोजें और आयात करें
जनरेटर वाले उपलब्ध मॉडल सूचीबद्ध करने के लिए /model-generator/models का उपयोग करें। generator विवरण में projectId, revision, configurationId, templateRevision, productId और productModel3dId निश्चित रहते हैं। ठीक वही स्रोत संशोधन पाने के लिए उसके importPath का उपयोग करें। उत्पाद संसाधन मैनिफ़ेस्ट में generators और हर मॉडल का generator विवरण भी मिलता है। टेम्पलेट को कॉन्फ़िगरेशन और संशोधन के आधार पर अलग से आयात किया जा सकता है।
कैटलॉग फ़िल्टर
एंडपॉइंट
विवरण
/model-generator/models
मॉडल सूची: name या q, categoryId, scope में all, own या global, limit में 1–50 और offset।
/model-generator/catalog
टेम्पलेट कैटलॉग: generatorType, productId, audience, q, templateKey, configurationId, limit और offset।
/model-generator/projects
प्रोजेक्ट सूची: configurationId, q, scope में all, own या global, limit और offset। सार्वजनिक प्रॉक्सी scope को डिफ़ॉल्ट रूप से all रखता है।
/model-generator/image-libraries/:kind/assets
टेक्सचर/बैकग्राउंड लाइब्रेरी: kind का मान texture या background होता है; q, category और mapType उपलब्ध संसाधनों को फ़िल्टर करते हैं।
प्रोजेक्ट आयात में document, revision, template और files मैनिफ़ेस्ट होता है। हर फ़ाइल /v1/model-generator/ के अंतर्गत एक path देती है; Alter Product से डाउनलोड करते समय उसके आगे /public-api जोड़ें। ज़रूरी फ़ाइलें अपने स्टोरेज में कॉपी करें और स्रोत संदर्भों की जगह स्थानीय संदर्भ रखें। मैनिकिन और टेक्सचर लाइब्रेरी उनके कैटलॉग एंडपॉइंट से आयात करें। public-files केवल अनुमत संसाधन पथों तक सीमित है और टेम्पलेट को कॉन्फ़िगरेशन/संशोधन की पहुँच जाँच में सफल होना चाहिए।
उदाहरण अनुरोध (fetch)
// Server-side: uses the alterFetch helper and authHeaders defined above.const catalog =awaitalterFetch('/model-generator/models?'+newURLSearchParams({scope:'all',limit:'24',offset:'0'}));const selected = catalog.items[0];if(!selected?.generator)thrownewError('Select an available generator model');const importPath = selected.generator.importPath;if(!importPath.startsWith('/v1/model-generator/projects/')){thrownewError('Invalid generator import path');}const bundle =awaitalterFetch(importPath.slice('/v1'.length));for(const file of bundle.files){if(!file.path.startsWith('/v1/model-generator/')){thrownewError('Invalid generator file path');}const response =awaitfetch('https://alterproduct.com/public-api'+ file.path,{headers: authHeaders,redirect:'error'});if(!response.ok)thrownewError(`File download failed: ${response.status}`);const bytes =newUint8Array(await response.arrayBuffer());// Persist bytes in your local storage; record the mapping from// file.sourceHref / file.href to the resulting local file reference.}// Persist bundle.document, bundle.template and revision metadata locally.// Import the related product asset and its textures/mockups as needed:const product =awaitalterFetch('/assets/products/'+ selected.generator.productId);const mannequins =awaitalterFetch('/model-generator/mannequins');console.log({ product, mannequins });
संपादक सत्र और स्थानीय स्टोरेज
संपादक सत्र बनाते समय tool: model-generator, स्थानीय जनरेटर प्रोजेक्ट की पहचान करने वाला धनात्मक संख्यात्मक toolId और अनुमत स्टोर origin दें। toolId प्रोजेक्ट का UUID या WooCommerce उत्पाद ID नहीं है। इस टूल के लिए designId, orderId, runtimeBindingId या कार्ट फ़ील्ड न भेजें। जनरेटर प्रोजेक्ट का UUID अलग पहचानकर्ता है। लौटाया गया token iframe हैंडशेक से भेजें; रनटाइम बूटस्ट्रैप storageMode: wordpress_local के साथ जनरेटर संदर्भ लौटाता है।
// Server-side, after authorizing the merchant's access to this local project.const localProjectId =42;// Local generator project ID, not its UUID or WC product ID.const session =awaitalterFetch('/embed/session',{method:'POST',body:JSON.stringify({tool:'model-generator',toolId: localProjectId,origin:'https://yourstore.com'})});// The iframe receives session.token through ALTER_CUSTOMIZER_SESSION_READY.// Do not put API credentials or the token in the iframe URL.const bootstrapResponse =awaitfetch('https://alterproduct.com/public-api/v1/runtime/bootstrap',{headers:{Authorization:`Bearer ${session.token}`}});if(!bootstrapResponse.ok)thrownewError('Generator bootstrap failed');const context =await bootstrapResponse.json();console.log(context);
// Host page: WordPress returns a numeric toolId and a UUID in id.const url =newURL('https://alterproduct.com/app/model-generator');url.search=newURLSearchParams({embedded:'1',lng:'en',parentOrigin:window.location.origin,toolId:String(localProject.toolId),serverProjectId: localProject.id}).toString();// Optional: serverProjectRevision pins an existing saved revision.iframe.src= url.toString();// Install the authenticated handshake and storage bridge described below.// Setting iframe.src alone does not authorize the editor or provide storage.
WordPress ब्रिज में इस्तेमाल होने वाले iframe संदेश
WordPress प्लगइन स्टोरेज ब्रिज चलाता है और व्यवस्थापक या WooCommerce प्रबंधक की अनुमतियाँ जाँचता है। यह iframe के origin, स्रोत विंडो, nonce, अनुरोध ID और अनुमत प्रोजेक्ट पथों की पुष्टि करता है। ब्रिज स्थानीय पढ़ने और लिखने के अनुरोध /wp-json/alter-wc/v1/model-generator को भेजता है। API क्रेडेंशियल सर्वर पर रहते हैं। अपने इंटीग्रेशन में इसी तरह का प्रमाणित स्टोरेज प्रबंधन लागू करना ज़रूरी है; सार्वजनिक जनरेटर API प्रोजेक्ट को Alter Product में नहीं सहेजता।
प्रकार
विवरण
ALTER_CHILD_HELLO / ALTER_PARENT_ACK
चाइल्ड iframe nonce के साथ हैंडशेक शुरू करता है; पैरेंट उसी nonce की पुष्टि करता है।
चाइल्ड iframe model-generator संपादन सत्र माँगता है; पैरेंट अधिकृत टोकन लौटाता है।
ALTER_MODEL_GENERATOR_REQUEST
चाइल्ड iframe requestId, nonce और request भेजता है, जिसमें method, path, data और responseType होते हैं।
ALTER_MODEL_GENERATOR_RESPONSE
पैरेंट उसी requestId और nonce के साथ status, data, headers तथा कोई error होने पर उसे लौटाता है।
// Messages after ALTER_CHILD_HELLO / ALTER_PARENT_ACK agree on the nonce.// Iframe -> parent:const sessionRequest ={type:'ALTER_CUSTOMIZER_INIT_SESSION',nonce: handshakeNonce,payload:{tool:'model-generator',alterProductId: localProject.toolId,mode:'edit'}};// Parent -> iframe, after the server authorizes the merchant and issues a token:const sessionReady ={type:'ALTER_CUSTOMIZER_SESSION_READY',nonce: handshakeNonce,token: session.token,tool:'model-generator',cartKey:`model-generator:${localProject.id}`,mode:'edit',localSession:false,adminSession:true};// Send only to the validated iframe's exact origin and source window.// An authorized token and successful bootstrap are still required.
सहेजने के अनुरोध में expectedRevision, templateRevision, document और आउटपुट फ़ाइलों के संदर्भ भेजे जाते हैं। इससे अपरिवर्तनीय संशोधन बनता है; पुराना expectedRevision भेजने पर HTTP 409 मिलता है। WordPress मेटाडेटा अपने डेटाबेस में और फ़ाइलें uploads डायरेक्टरी में रखता है। JSON को संक्षिप्त किया जाता है और gzip से तभी संपीड़ित किया जाता है जब आकार घटता हो।
// Example message from the iframe; savedSnapshot and artifact IDs come// from the generator. The host checks origin/source/nonce/project permissions.const message ={type:'ALTER_MODEL_GENERATOR_REQUEST',requestId: crypto.randomUUID(),nonce: handshakeNonce,request:{method:'POST',path:`/pattern-generator/projects/${projectUuid}/revisions`,data:{expectedRevision: loadedRevision,name: projectName, templateRevision,document: savedSnapshot,references:{artifactIds: savedArtifactIds }},responseType:'json'}};
डिज़ाइन में सहेजा हुआ मॉडल इस्तेमाल करें क्रिया पूरे सहेजे गए संशोधन को जुड़े हुए डिज़ाइन में प्रकाशित करती है। ग्राहक इसे मौजूदा Customizer, Configurator या Viewer में सामान्य उत्पाद बाइंडिंग और सदस्यता जाँच के साथ देखते हैं। जनरेटर संपादक विक्रेता का टूल बना रहता है। ऑर्डर लिंक सहेजे गए प्रोजेक्ट/संशोधन को बनाए रखते हैं, इसलिए बाद के बदलाव पुराने ऑर्डर को चुपचाप नहीं बदलते।
एसेट कैटलॉग उत्पाद के स्रोत एसेट, पृष्ठभूमि, परिवेश, ग्राफ़िक लाइब्रेरी आइटम, डिज़ाइन टेम्पलेट और मॉकअप एसेट उपलब्ध कराता है। सूची एंडपॉइंट हल्के विवरण लौटाते हैं; विस्तृत एंडपॉइंट में फ़ाइल मैनिफ़ेस्ट होते हैं।
प्रकार
विवरण
products
मूल उत्पाद एसेट, प्रीव्यू, 3D मॉडल तथा सामग्री और टेक्सचर विवरण।
backgrounds
व्यूअर की स्थिर पृष्ठभूमियाँ।
environments
परिवेश मैप और प्रीव्यू चित्र।
image_library
ग्राफ़िक लाइब्रेरी एसेट, जिनमें स्टोरफ़्रंट-विशिष्ट ग्राफ़िक्स भी शामिल हैं।
design_templates
डिज़ाइन टेम्पलेट प्रीव्यू और लेयर फ़ाइल संदर्भ। product_id फ़िल्टर समर्थित है।
mockups
मॉकअप जनरेटर एसेट, पृष्ठभूमि और ओवरले मैप। product_id फ़िल्टर समर्थित है।
सार्वजनिक प्रीव्यू फ़ाइलें सीधे ब्राउज़र में इस्तेमाल की जा सकती हैं। सुरक्षित फ़ाइलों के लिए हस्ताक्षरित URL या files:read अनुमति वाला API क्रेडेंशियल चाहिए। फ़ॉन्ट और मुद्रा एंडपॉइंट सार्वजनिक रूप से पढ़े जा सकते हैं।
रनटाइम बाइंडिंग बाहरी कॉमर्स उत्पादों को Alter Product डिज़ाइन और रनटाइम प्रकारों से जोड़ती हैं। इनका उपयोग मुख्यतः WordPress/WooCommerce एकीकरण और उन्नत स्टोरफ़्रंट बैकएंड करते हैं।
पैरामीटर
आवश्यक
विवरण
designId
नहीं
स्टोरफ़्रंट के स्वामित्व वाले Alter Product डिज़ाइन की ID।
externalProductId
सिंक के लिए हाँ
बाहरी उत्पाद ID, जैसे WooCommerce उत्पाद ID।
runtimeType
सिंक के लिए हाँ
viewer, configurator या customizer।
status
नहीं
draft, active, inactive, archived या legacy_active।
awaitalterFetch('/runtime-bindings/sync-from-wordpress',{method:'POST',body:JSON.stringify({bindings:[{externalProductId:'wc_123',runtimeType:'viewer',status:'active',externalDesign:{externalDesignKey:'wp-design-381',productId:4,title:'WooCommerce local design',manifestUrl:'https://yourstore.com/wp-content/uploads/alter/381/manifest.json',assetBaseUrl:'https://yourstore.com/wp-content/uploads/alter/381/',manifestHash:'a3b1...',sourceMeta:{pluginVersion:'1.2.0'}}}]})});
WordPress कनेक्ट एक्सचेंज एंडपॉइंट एक बार उपयोग होने वाला हैंडऑफ़ कोड लेता है और प्लगइन को API क्रेडेंशियल लौटाता है। यह सामान्य क्रेडेंशियल बनाने वाला एंडपॉइंट नहीं है।