API - Panoramica

API - Connessione e autorizzazione

Configura le chiavi API, verifica la connessione e scopri come gestire gli errori e i limiti delle richieste.

Panoramica degli endpoint

MetodoEndpointDescrizioneAccesso
GET/public-api/healthzVerifica della disponibilità del servizio.pubblico
GET/public-api/v1/auth/checkConvalida le credenziali e restituisce negozio, ambiti e funzionalità del piano.qualsiasi credenziale autenticata

Autenticazione e URL base

https://alterproduct.com/public-api/v1

Crea le credenziali API nel pannello Impostazioni e-commerce. L'Access Token viene mostrato una sola volta: salvalo subito nell'archivio dei segreti del backend.

Conserva Access Key e Access Token sul server. Gli endpoint autenticati rifiutano le chiamate provenienti dal browser che includono gli header Origin o Referer.

Le credenziali possono avere ambiti limitati. Usa GET /auth/check per verificare il negozio attivo, le funzionalità del piano e gli ambiti restituiti per la credenziale.

x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
ParametroObbligatorioDettagli
x-alter-access-keysìIdentificatore pubblico della credenziale.
x-alter-access-tokensìToken segreto associato alla chiave di accesso.
x-alter-client-fingerprintnoImpronta stabile facoltativa per limitare le richieste di sessioni di incorporamento.
Authorizationsolo runtimeToken Bearer restituito da POST /embed/session, usato da /runtime/bootstrap.

Test di connessione

Usa l'endpoint di verifica dell'autenticazione prima di attivare sincronizzazione o incorporamento in un'integrazione in produzione.

GET https://alterproduct.com/public-api/v1/auth/check

Esempio di richiesta (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);

Esempio di risposta

{
  "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
    }
  }
}

La funzione ausiliaria seguente è usata negli altri esempi. Usa fetch semplice e può essere eseguita in Node.js 18+ o in qualsiasi runtime server che offra fetch.

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;
}

Errori e limiti di richieste

La maggior parte degli errori dei controller viene normalizzata in una risposta code. Il middleware di autenticazione e i limitatori di richieste possono invece restituire una risposta error.

// Controller error
{
  "code": "assetCatalog.invalidType"
}

// Auth middleware or rate limit
{
  "error": "Unauthorized"
}

{
  "error": "Too Many Requests"
}
TipoLimiteFinestra
Globale600 richieste60 secondi
GET /auth/check60 richieste60 secondi
Lettura di ordini/prodotti300 richieste60 secondi
Scrittura di ordini/sessioni di incorporamento/associazioni runtime120 richieste60 secondi
Lettura di risorse/importazioni di design180 richieste60 secondi
Font300 richieste60 secondi
Scambio di connessione WP30 richieste60 secondi
GET /model-generator/*600 richieste60 secondi