API - 概要

API - 接続と認証

APIキーの設定、接続テスト、エラー処理、リクエストの制限について説明します。

エンドポイント一覧

メソッドエンドポイント説明アクセス
GET/public-api/healthzサービスのヘルスチェック。公開
GET/public-api/v1/auth/check認証情報を検証し、ストアフロント、スコープ、プランの機能を返します。任意の認証済み認証情報

認証とベース URL

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

EC 設定パネルで 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ランタイムのみPOST /embed/session で返される Bearer トークン。/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 秒
WP 接続情報の交換30 リクエスト60 秒
GET /model-generator/*600 リクエスト60 秒