Načítejte produkty, propojujte je s nástroji a vytvářejte bezpečné relace pro vložení nástrojů Viewer, Configurator a Customizer.
Příklady používají serverovou pomocnou funkci alterFetch a hlavičky authHeaders z průvodce připojením. API klíče uchovávejte pouze na serveru.
Připojení, autorizace a pomocná funkce alterFetch Koncové body produktů vracejí návrhy obchodu, které lze vložit jako Viewer, Configurator nebo Customizer.
Parametr Povinné Podrobnosti nameneVyhledává podle názvu produktu/návrhu. customizernetrue nebo false. offsetneVýchozí hodnota 0. Musí být >= 0. limitneVýchozí hodnota 9, maximum 50. order_byneid, name nebo created_at. directionneASC nebo DESC.
Příklad požadavku (fetch)
const params = new URLSearchParams ( {
limit : '20' ,
offset : '0' ,
name : 't-shirt' ,
customizer : 'true' ,
order_by : 'created_at' ,
direction : 'DESC'
} ) ;
const products = await alterFetch ( ` /products? ${ params . toString ( ) } ` ) ;
const product = await alterFetch ( '/products/381' ) ; Příklad odpovědi
{
"products" : {
"items" : [
{
"id" : 381 ,
"name" : "Men's T-Shirt" ,
"createdAt" : "2026-01-03T23:55:05.000Z" ,
"productId" : 4 ,
"media" : {
"img" : {
"big" : "https://alterproduct.com/public-api/v1/file/public/products/4/big.png" ,
"medium" : "https://alterproduct.com/public-api/v1/file/public/products/4/medium.png" ,
"small" : "https://alterproduct.com/public-api/v1/file/public/products/4/small.png"
} ,
"mockups" : [ ]
} ,
"storefrontProduct" : {
"id" : 89 ,
"idUserDesign" : 381 ,
"shareAccess" : "public" ,
"isCustomizer" : 1
} ,
"runtimeBindings" : [
{
"id" : 42 ,
"runtimeType" : "customizer" ,
"status" : "active" ,
"externalProductId" : "wc_123"
}
] ,
"embeddable" : {
"viewer" : true ,
"configurator" : true ,
"customizer" : true
}
}
] ,
"total" : 1
}
} Vazby běhového prostředí propojují externí produkty e-shopu s návrhy Alter Product a typy běhového prostředí. Používají je především integrace WordPress/WooCommerce a pokročilé backendy obchodů.
Parametr Povinné Podrobnosti designIdneID návrhu Alter Product patřícího obchodu. externalProductIdano pro syncID externího produktu, například ID produktu WooCommerce. runtimeTypeano pro syncviewer, configurator nebo customizer. statusnedraft, active, inactive, archived nebo legacy_active. legacyStorefrontProductIdneVolitelné ID staršího propojení. legacyBindingMetaneVolitelná metadata JSON, například manifestHash.
Příklad požadavku (fetch)
await alterFetch ( '/runtime-bindings/sync-from-wordpress' , {
method : 'POST' ,
body : JSON . stringify ( {
bindings : [
{
externalProductId : 'wc_123' ,
runtimeType : 'customizer' ,
status : 'active' ,
designId : 381 ,
legacyBindingMeta : {
manifestHash : 'a3b1...'
}
}
]
} )
} ) ;
await alterFetch ( '/runtime-bindings/42' , {
method : 'PATCH' ,
body : JSON . stringify ( {
status : 'inactive'
} )
} ) ;
await alterFetch ( '/runtime-bindings/42/activate' , { method : 'POST' } ) ;
await alterFetch ( '/runtime-bindings/42/deactivate' , { method : 'POST' } ) ; wordpress_local
await alterFetch ( '/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'
}
}
}
]
} )
} ) ; Příklad odpovědi
{
"message" : "runtimeBinding.syncCompleted" ,
"runtimeBindings" : [
{
"id" : 42 ,
"designId" : 381 ,
"externalProductId" : "wc_123" ,
"runtimeType" : "customizer" ,
"status" : "active"
}
]
} Vytvořte na svém serveru krátkodobý token vloženého nástroje, předejte jej do iframe/běhového prostředí a poté nechte prostředí zavolat bootstrap s tokenem Bearer.
Parametr Povinné Podrobnosti runtimeBindingIddoporučenéPreferovaný identifikátor aktivních vazeb běhového prostředí. toolpovinné bez runtimeBindingIddesigner | viewer | configurator | customizer | model-generator toolIdtool: model-generatorKladné číselné ID místního projektu generátoru, nikoli jeho UUID ani ID produktu WooCommerce. originanoOrigin, na kterém se vložený nástroj vykresluje, například https://yourstore.com. designIdjeden identifikátorID návrhu Alter Product. Nekombinujte s orderId. orderIdjeden identifikátorID objednávky Customizeru. Platí pouze pro customizer. cartKey + cartModeneKontext košíku pouze pro Customizer. cartMode je view nebo edit.
Příklad požadavku (fetch)
const session = await alterFetch ( '/embed/session' , {
method : 'POST' ,
headers : {
'x-alter-client-fingerprint' : '9f1b7a5e4b3c2d1f9f1b7a5e4b3c2d1f'
} ,
body : JSON . stringify ( {
runtimeBindingId : 42 ,
origin : 'https://yourstore.com'
} )
} ) ;
const bootstrapResponse = await fetch ( 'https://alterproduct.com/public-api/v1/runtime/bootstrap' , {
method : 'GET' ,
headers : {
Authorization : ` Bearer ${ session . token } `
}
} ) ;
const bootstrap = await bootstrapResponse . json ( ) ;
console . log ( { session , bootstrap } ) ; Poznámky
await alterFetch ( '/embed/session' , {
method : 'POST' ,
body : JSON . stringify ( {
tool : 'customizer' ,
origin : 'https://yourstore.com' ,
orderId : 123
} )
} ) ;
await alterFetch ( '/embed/session' , {
method : 'POST' ,
body : JSON . stringify ( {
tool : 'viewer' ,
origin : 'https://yourstore.com' ,
designId : 381
} )
} ) ; Příklad odpovědi
{
"token" : "eyJhbGciOiJIUzI1NiIsImtpZCI6IjEifQ..." ,
"expiresIn" : 900 ,
"kid" : "1" ,
"mode" : "design" ,
"runtimeBindingId" : 42 ,
"runtimeType" : "customizer"
} Runtime bootstrap
{
"runtimeBindingId" : 42 ,
"designId" : 381 ,
"productId" : "wc_123" ,
"runtimeType" : "customizer" ,
"storageMode" : "wordpress_local" ,
"manifestUrl" : "https://yourstore.com/wp-content/uploads/alter/381/manifest.json" ,
"assetBaseUrl" : "https://yourstore.com/wp-content/uploads/alter/381/" ,
"manifestHash" : "a3b1..." ,
"planCapabilities" : {
"viewer" : true ,
"configurator" : true ,
"customizer" : true
} ,
"cartKey" : null ,
"cartMode" : null ,
"orderId" : null
}