API - Огляд

API - Підключення й авторизація

Налаштуйте API-ключі, перевірте підключення й дізнайтеся про обробку помилок та ліміти запитів.

Огляд кінцевих точок

МетодКінцева точкаОписДоступ
GET/public-api/healthzПеревірка стану сервісу.публічний
GET/public-api/v1/auth/checkПеревіряє облікові дані й повертає магазин, права доступу та можливості тарифу.будь-які автентифіковані облікові дані

Автентифікація та базова URL-адреса

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

Створіть облікові дані API на панелі налаштувань електронної комерції. Access Token показується лише раз, тому одразу збережіть його в серверному сховищі секретів.

Зберігайте Access Key і Access Token на сервері. Кінцеві точки з автентифікацією відхиляють браузерні виклики із заголовками Origin або Referer.

Права облікових даних можна обмежувати. Використовуйте GET /auth/check, щоб перевірити активний магазин, можливості тарифу та права, повернені для цих облікових даних.

x-alter-access-key: YOUR_API_KEY
x-alter-access-token: YOUR_API_TOKEN
ПараметрОбов’язковоПодробиці
x-alter-access-keyтакПублічний ідентифікатор облікових даних.
x-alter-access-tokenтакСекретний токен у парі з ключем доступу.
x-alter-client-fingerprintніНеобов’язковий стабільний відбиток для обмеження частоти сеансів вбудовування.
Authorizationлише середовище виконанняТокен Bearer, повернений POST /embed/session, для використання в /runtime/bootstrap.

Перевірка підключення

Використайте кінцеву точку перевірки автентифікації, перш ніж увімкнути синхронізацію чи вбудовування в робочій інтеграції.

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

Приклад запиту (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);

Приклад відповіді

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

Наведена нижче допоміжна функція використовується в інших прикладах. Це звичайний fetch, який може працювати в Node.js 18+ або будь-якому серверному середовищі з підтримкою 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;
}

Помилки й обмеження частоти запитів

Більшість помилок контролерів нормалізуються у відповідь із code. Проміжні обробники автентифікації та обмеження частоти можуть натомість повертати відповідь із error.

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

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

{
  "error": "Too Many Requests"
}
ТипЛімітІнтервал
Глобальний600 запитів60 секунд
GET /auth/check60 запитів60 секунд
Читання замовлень/товарів300 запитів60 секунд
Запис замовлень/сеанси вбудовування/прив’язки середовища виконання120 запитів60 секунд
Читання ресурсів/імпортів дизайнів180 запитів60 секунд
Шрифти300 запитів60 секунд
Обмін підключення WP30 запитів60 секунд
GET /model-generator/*600 запитів60 секунд