API - Overzicht

API - Verbinding en autorisatie

Stel API-sleutels in, test de verbinding en ontdek hoe je omgaat met fouten en aanvraaglimieten.

Endpointoverzicht

MethodeEndpointBeschrijvingToegang
GET/public-api/healthzStatuscontrole van de service.openbaar
GET/public-api/v1/auth/checkValideert inloggegevens en retourneert de winkel, machtigingen en planmogelijkheden.alle geauthenticeerde inloggegevens

Authenticatie en basis-URL

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

Maak API-inloggegevens aan in het paneel met e-commerce-instellingen. De Access Token wordt één keer getoond, dus sla deze direct op in de beveiligde opslag van je backend.

Bewaar de Access Key en Access Token op je server. Geauthenticeerde endpoints weigeren browserverzoeken met Origin- of Referer-headers.

Inloggegevens kunnen beperkte machtigingen hebben. Gebruik GET /auth/check om de actieve winkel, planmogelijkheden en machtigingen van de inloggegevens te controleren.

x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
ParameterVerplichtDetails
x-alter-access-keyjaOpenbare identificatie van de inloggegevens.
x-alter-access-tokenjaGeheim token dat bij de toegangssleutel hoort.
x-alter-client-fingerprintneeOptionele vaste vingerafdruk voor de begrenzing van embedsessieverzoeken.
Authorizationalleen runtimeBearer-token van POST /embed/session, gebruikt door /runtime/bootstrap.

Verbindingstest

Gebruik het authenticatiecontrole-endpoint voordat je synchronisatie of integratiefuncties in een liveomgeving inschakelt.

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

Voorbeeldverzoek (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);

Voorbeeldantwoord

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

De onderstaande helper wordt in de overige voorbeelden gebruikt. Deze gebruikt gewone fetch en werkt in Node.js 18+ of elke serverruntime die fetch ondersteunt.

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

Fouten en verzoeklimieten

De meeste controllerfouten worden omgezet in een code-antwoord. Authenticatiemiddleware en verzoekbegrenzers kunnen in plaats daarvan een error-antwoord geven.

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

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

{
  "error": "Too Many Requests"
}
TypeLimietTijdsvenster
Globaal600 verzoeken60 seconden
GET /auth/check60 verzoeken60 seconden
Bestellingen lezen/producten lezen300 verzoeken60 seconden
Bestellingen schrijven/embedsessies/runtimekoppelingen120 verzoeken60 seconden
Assets/ontwerpimports lezen180 verzoeken60 seconden
Lettertypen300 verzoeken60 seconden
WP-verbinding uitwisselen30 verzoeken60 seconden
GET /model-generator/*600 verzoeken60 seconden