API - Visão geral

API - Conexão e autorização

Configure as chaves de API, teste a conexão e conheça o tratamento de erros e os limites de requisições.

Visão geral dos endpoints

MétodoEndpointDescriçãoAcesso
GET/public-api/healthzVerificação de disponibilidade do serviço.público
GET/public-api/v1/auth/checkValida as credenciais e retorna a loja, os escopos e os recursos do plano.qualquer credencial autenticada

Autenticação e URL base

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

Crie credenciais de API no painel de configurações de e-commerce. O Access Token é exibido uma única vez; por isso, salve-o imediatamente no armazenamento de segredos do seu backend.

Mantenha a Access Key e o Access Token no seu servidor. Os endpoints autenticados rejeitam chamadas originadas no navegador que incluam os cabeçalhos Origin ou Referer.

As credenciais podem ter escopos limitados. Use GET /auth/check para verificar a loja ativa, os recursos do plano e os escopos retornados para a credencial.

x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
ParâmetroObrigatórioDetalhes
x-alter-access-keysimIdentificador público da credencial.
x-alter-access-tokensimToken secreto associado à chave de acesso.
x-alter-client-fingerprintnãoIdentificador estável opcional para limitar solicitações de sessões de incorporação.
Authorizationsomente runtimeToken Bearer retornado por POST /embed/session, usado por /runtime/bootstrap.

Teste de conexão

Use o endpoint de verificação de autenticação antes de habilitar a sincronização ou os recursos de incorporação em uma integração em produção.

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

Exemplo de solicitação (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);

Exemplo de resposta

{
  "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 função auxiliar abaixo é usada nos demais exemplos. Ela usa fetch simples e pode ser executada no Node.js 18+ ou em qualquer ambiente de servidor que ofereça 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;
}

Erros e limites de solicitações

A maioria dos erros dos controladores é normalizada para uma resposta code. O middleware de autenticação e os limitadores de solicitações podem retornar uma resposta error.

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

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

{
  "error": "Too Many Requests"
}
TipoLimiteJanela
Global600 solicitações60 segundos
GET /auth/check60 solicitações60 segundos
Leitura de pedidos/produtos300 solicitações60 segundos
Gravação de pedidos/sessões de incorporação/associações de runtime120 solicitações60 segundos
Leitura de recursos/importações de designs180 solicitações60 segundos
Fontes300 solicitações60 segundos
Troca de conexão do WP30 solicitações60 segundos
GET /model-generator/*600 solicitações60 segundos