メインコンテンツへスキップ

ステップバイステップ実装

1

サービスリクエストを作成

アイテムが認証の準備ができたら、サービスリクエストを作成します。これにより、選択したアイテムカテゴリの具体的な画像要件が提供されます。API リファレンス: POST /api/v2/sr必須ヘッダー:
const headers = {
  'Authorization': 'Bearer leo_xxxxxxxxx',      // API キー
  'Content-Type': 'application/json'
};
リクエストデータ:
  • サービス UUID:パートナーサービス識別子
  • アイテムタクソノミー:タクソノミーマッピングからのカテゴリ、タイプ、ブランド UUID
  • 外部 ID(オプション):相関用の内部アイテム識別子
const response = await fetch('https://api.legitmark.com/api/v2/sr', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    service: 'service-uuid',
    external_id: 'your-internal-ref-123',
    item: {
      category: 'category-uuid',
      type: 'type-uuid',
      brand: 'brand-uuid',
    }
  })
});
依存関係:
2

画像要件を取得

アイテムカテゴリに必要な具体的な画像面を取得します。これにより、どの写真を撮影する必要があるかがわかります。API リファレンス: GET /api/v2/sr/{sr_uuid} クエリパラメータ付きrequirements=truesides=true でサービスリクエストを取得して、完全な画像要件を取得します:
const response = await fetch(
  `https://api.legitmark.com/api/v2/sr/${srUuid}?requirements=true&sides=true&item=true`,
  { headers }
);
const { sr } = await response.json();

// sr.requirements にはサイドグループと必須/オプションサイドが含まれます
for (const group of sr.requirements.side_groups) {
  for (const side of group.sides) {
    console.log(`${side.name}: ${side.required ? '必須' : 'オプション'}`);
  }
}
レスポンスデータ:
  • サイドグループ - グループ別に整理された画像要件
  • 必須サイド - 認証に必須の画像
  • オプションサイド - 認証を強化する追加画像
  • テンプレート画像 - 各必須角度のビジュアルガイド
画像要件:
  • 形式: JPG/JPEG/PNG
  • サイズ: 最小 600 x 600 ピクセル
  • ファイルサイズ: 画像あたり最大 5 MB
  • 品質: 鮮明で、十分な照明、ピントが合った画像
3

画像をアップロード

Legitmark のセキュア CDN システムを使用して画像をアップロードします。各必須サイドごとに、署名付き URL を取得して S3 に直接アップロードします。API リファレンス: メディア管理エンドポイントアップロードプロセス:
  1. アップロード URL を取得、クエリパラメータ付き:sr(サービスリクエスト UUID)と side(ファイル拡張子付きサイド UUID)
  2. 直接アップロード署名付き S3 URL に PUT リクエストとバイナリデータで
// ステップ 1:署名付きアップロード URL を取得
const intentResponse = await fetch(
  `https://media.legitmark.com/intent?sr=${srUuid}&side=${sideUuid}.jpg`,
  { headers }
);
const { url: presignedUrl } = await intentResponse.json();

// ステップ 2:署名付き URL にバイナリ画像データをアップロード
await fetch(presignedUrl, {
  method: 'PUT',
  body: imageFile,
  headers: { 'Content-Type': 'image/jpeg' }
});
4

進捗を確認

提出前にすべての必須画像がアップロードされていることを確認します。sides=true でサービスリクエストを取得して、アップロード済みの必須およびオプション画像の数を含む現在の進捗を取得します:
const response = await fetch(
  `https://api.legitmark.com/api/v2/sr/${srUuid}?sides=true`,
  { headers }
);
const { sr } = await response.json();

const progress = sr.sides.progress;
console.log(`アップロード済み: ${progress.current_required}/${progress.total_required}`);
console.log(`提出準備完了: ${progress.met}`);
進捗レスポンス:
{
  "current_required": 2,
  "total_required": 2,
  "current_optional": 1,
  "total_optional": 3,
  "met": true
}
mettrue の場合、すべての必須画像がアップロードされ、サービスリクエストを提出できます。
5

認証のために提出

進捗要件が満たされたら、サービスリクエストを専門家認証に提出します。API リファレンス: POST /api/v2/sr/{sr_uuid}/submit
const response = await fetch(
  `https://api.legitmark.com/api/v2/sr/${srUuid}/submit`,
  { method: 'POST', headers }
);
const { sr } = await response.json();
console.log(`提出完了! 状態: ${sr.state.primary}/${sr.state.supplement}`);
提出後のプロセス:
  1. 品質管理レビュー:画像とデータの検証
  2. 認証レビュー:専門家による認証
  3. 結果通知:各段階での Webhook 更新(ステータスを参照)

実装パターン

エラー処理

async function createServiceRequest(itemData) {
  try {
    const response = await fetch('/api/v2/sr', {
      method: 'POST',
      headers,
      body: JSON.stringify(itemData)
    });

    if (!response.ok) {
      const error = await response.json();
      throw new Error(`サービスリクエスト失敗: ${error.message}`);
    }

    return await response.json();
  } catch (error) {
    console.error('サービスリクエストの作成に失敗:', error);
    // 再試行ロジックまたはユーザー通知を実装
  }
}

進捗追跡

class AuthenticationProgress {
  constructor(srUuid) {
    this.srUuid = srUuid;
    this.steps = {
      created: false,
      requirements_fetched: false,
      images_uploaded: false,
      validated: false,
      finalized: false
    };
  }

  async checkProgress() {
    const response = await fetch(`/api/side-groups/progress?sr_id=${this.srUuid}`, {
      headers
    });
    const data = await response.json();
    
    this.steps.validated = data.progress.met;
    return this.steps;
  }
}

ベストプラクティス

販売前の最適化

  • 頻繁に使用されるカテゴリの画像要件をキャッシュ
  • 保存前にクライアント側で画像を検証
  • 品質基準を維持しながら画像を圧縮
  • アイテムが販売されるまで画像をローカルに保存

アップロードの最適化

  • 複数画像には並列アップロードを使用
  • 失敗したアップロードには再試行ロジックを実装
  • ユーザーにアップロード進捗を表示
  • 続行前にアップロード完了を確認

次のステップ

ワークフロー実装が完了したら:
  1. 設定 Webhooks - Webhook 通知とステータス更新処理
  2. サンプルアイテムでエンドツーエンドのワークフローをテスト
  3. 認証処理と成功率を監視