API anahtarlarını yapılandırın, bağlantıyı test edin, hata yönetimini ve istek sınırlarını öğrenin.
https://alterproduct.com/public-api/v1
E-ticaret ayarları panelinde API kimlik bilgileri oluşturun. Access Token yalnızca bir kez gösterilir; hemen backend’inizin gizli bilgi deposuna kaydedin.
Access Key ve Access Token değerlerini sunucunuzda saklayın. Kimlik doğrulanan uç noktalar, Origin veya Referer başlıkları içeren tarayıcı kaynaklı çağrıları reddeder.
Kimlik bilgilerinin izinleri sınırlandırılabilir. Etkin mağazayı, plan özelliklerini ve kimlik bilgisi için döndürülen izinleri doğrulamak amacıyla GET /auth/check kullanın.
x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
| Parametre | Gerekli | Ayrıntılar |
|---|
x-alter-access-key | evet | Kimlik bilgisinin herkese açık tanımlayıcısı. |
x-alter-access-token | evet | Erişim anahtarıyla eşleştirilmiş gizli belirteç. |
x-alter-client-fingerprint | hayır | Yerleştirme oturumu hız sınırlaması için isteğe bağlı, sabit parmak izi. |
Authorization | yalnızca çalışma zamanı | POST /embed/session tarafından döndürülen ve /runtime/bootstrap tarafından kullanılan Bearer belirteci. |
Canlı entegrasyonda eşitleme veya yerleştirme özelliklerini etkinleştirmeden önce kimlik doğrulama kontrolü uç noktasını kullanın.
GET https://alterproduct.com/public-api/v1/auth/check
Örnek istek (fetch)
const response = await fetch('https://alterproduct.com/public-api/v1/auth/check', {
method: 'GET',
headers: {
'x-alter-access-key': process.env.ALTER_ACCESS_KEY,
'x-alter-access-token': process.env.ALTER_ACCESS_TOKEN
}
});
const payload = await response.json();
if (!response.ok) {
throw new Error(payload?.code || payload?.error || `Alter API ${response.status}`);
}
console.log(payload);
Örnek yanıt
{
"ok": true,
"message": "success",
"storefrontId": 12,
"userOwnerId": 34,
"credentialId": 56,
"scopes": ["orders:read", "orders:write", "products:read"],
"plan": {
"requiredPlan": "Business",
"currentPlanName": "Business",
"eligible": true,
"runtimeFlags": {
"viewer": true,
"configurator": true,
"customizer": true
},
"limits": {
"activeRuntimeBindingsLimit": 100,
"monthlyReassignmentLimit": 1000,
"monthlyEmbedTokenLimit": 50000
}
}
}
Aşağıdaki yardımcı işlev diğer örneklerde de kullanılır. Düz fetch kullanır; Node.js 18+ veya fetch sağlayan herhangi bir sunucu çalışma zamanında çalışabilir.
const ALTER_API_BASE = 'https://alterproduct.com/public-api/v1';
const authHeaders = {
'x-alter-access-key': process.env.ALTER_ACCESS_KEY,
'x-alter-access-token': process.env.ALTER_ACCESS_TOKEN
};
async function alterFetch(path, options = {}) {
const response = await fetch(`${ALTER_API_BASE}${path}`, {
...options,
headers: {
...authHeaders,
...(options.body ? { 'Content-Type': 'application/json' } : {}),
...options.headers
}
});
const payload = await response.json().catch(() => null);
if (!response.ok) {
throw new Error(payload?.code || payload?.error || `Alter API ${response.status}`);
}
return payload;
}
Denetleyici hatalarının çoğu code yanıtına normalleştirilir. Kimlik doğrulama ara katmanı ve hız sınırlayıcılar bunun yerine error yanıtı döndürebilir.
// Controller error
{
"code": "assetCatalog.invalidType"
}
// Auth middleware or rate limit
{
"error": "Unauthorized"
}
{
"error": "Too Many Requests"
}
| Tür | Sınır | Zaman aralığı |
|---|
Genel | 600 istek | 60 saniye |
GET /auth/check | 60 istek | 60 saniye |
Sipariş/ürün okuma | 300 istek | 60 saniye |
Sipariş yazma/yerleştirme oturumları/çalışma zamanı bağları | 120 istek | 60 saniye |
Varlık/tasarım içe aktarımı okuma | 180 istek | 60 saniye |
Yazı tipleri | 300 istek | 60 saniye |
WP bağlantı değişimi | 30 istek | 60 saniye |
GET /model-generator/* | 600 istek | 60 saniye |