本記事では、Amazonのベンダー向けのAPI利用方法を説明いたします。
MarketplaceのAPIを利用している開発者は多いと思いますが、
Amazonのベンダー向けのAPIを利用する機会は少ないです。
また、開発資料も少なく、環境設定、実装などで躓いたポイントを解説します。
出品パートナーAPIとは
公式ドキュメントに記載されている通り、ベンダーがプログラムからデータにアクセスし、業務効率化をアップするための自動化のためのAPIとなります。
出品パートナーAPIは、RESTベースのAPIです。ベンダーはプログラムでデータにアクセスしやすくなり、効率性を高め、必要労働量を削減し、顧客への応答時間を短縮することで、ビジネスの自動化に役立ちます。
ベンダー向けのAPIを利用する流れ
ベンダー向けのAPIを利用する大まかな流れは下記のとおりです。
開発者登録
出品パートナーAPIアプリケーションを登録する前に、出品パートナーAPI開発者として登録する必要があります。
開発者として登録するには、ベンダーセントラルの統合メニューのAPI統合から可能です。
※開発者登録の承認は、数日かかります。そのため、余裕をもって、申請することをお勧めいたします。
出品パートナーAPIアプリケーションの登録
開発者登録の申請が完了すると、出品パートナーのアプリケーションの登録を行います。
このアプリケーションごとに、Amazonのデータにアクセスできる権限を設定します。
・ステップ1.AWSアカウントを作成する
・ステップ2.IAMユーザーを作成する
・ステップ3.IAMポリシーを作成する
・ステップ4.IAMロールを作成する
・ステップ5.IAMユーザーにAWSセキュリティトークンサービスポリシーを追加する
・ステップ6.アプリケーションを登録する
AWSアカウントは、AWS無料利用枠から利用可能です。
IAMユーザーの作成は、ドキュメント通りの手順で問題ありませんが、
最後の手順として、管理ポリシーとロールのマッピングとユーザーの割当手順が抜けています。
このマッピングができていないと、APIからのアクセスができないので、注意してください。
ステップ5の手順は、複雑な上に、すべての手順が記載されていないためので、補足しておきます。
ステップ5の補足
・ステップ5.IAMユーザーにAWSセキュリティトークンサービスポリシーを追加する。
・AWSセキュリティトークンサービス(AWS STS)ポリシーをIAMユーザーに追加すると、出品パートナーAPIへのリクエストの認証に使用できる一時的なAWSアクセスキーをリクエストできます。
これらの認証情報は、一定期間が経過すると期限切れになり、AWSリソースへのアクセスを制御するのに役立ちます。
・まだサインインしていない場合は、AWS管理コンソールにサインインし、console.aws.amazon.com/iamでIAMコンソールを開きます。
以下は、AWSの画面操作になります。
・左側のナビゲーションペインで、ユーザーをクリックし、AWS STSポリシーを追加するユーザーをクリックします。
このワークフローでは、ステップ2.IAMユーザーを作成するで作成したユーザーを選択します。
他のユースケースでは別のIAMユーザーを選択することもできます。
・アクセス許可タブで、インラインポリシーの追加をクリックします。
・ポリシーの作成ページで、サービスの選択をクリックします。
・STSサービスをクリックします。
検索ボックスにSTSと入力して、選択肢を絞り込みます。
・書き込みの横にある矢印をクリックして展開します。
・AssumeRoleを選択します。
・リソースの横にある矢印をクリックして展開し、ARN****を追加をクリックします。
・ARNを追加ダイアログボックスで、ステップ4.IAMロールを作成するのロールARNをロールのARNを指定ボックスに入力し、追加をクリックし、ポリシーの確認ボタンをクリックします。
・ポリシーの確認ページで、名前ボックスにポリシーの名前を入力します。選択した内容を確認します。続行する準備ができたら、ポリシーの作成ボタンをクリックします。
※最後の手順として、管理ポリシーとロールのマッピングとユーザーの割当手順が抜けています。
アプリケーションの認可
アプリケーションからAPIを利用するためには、ベンダーセントラルから、アプリケーションの承認が必要になります。
この承認は、APIで利用するリフレッシュトークンとなり、API実行時の署名データの生成に必要となります。
このリフレッシュトークンの有効期限は、1時間(3600秒)なので、1時間経過したら、新しくAccessTokenを取得しなおします。
クライアントの作成
公式ドキュメントでは、Javaクライアントを作成して説明されています。
本記事では、PHPクライアントで説明を進めます。
LWA認証情報の設定
上記で取得した、リフレッシュトークンを利用して、LWA認証情報を設定します。
名前 | 説明 | 必須 |
---|---|---|
clientId | LWAのクライアントID。詳細については、アプリケーション情報の記載のとおりです。 | 必須 |
clientSecret | LWAのクライアントシークレット。詳細については、アプリケーション情報の記載のとおりです。 | 必須 |
refreshToken | LWAのリフレッシュトークン。詳細については、アプリケーション情報の記載のとおりです。 | 必須 |
endpoint | LWA認証サーバーのURI。 | 必須 |
記載例
1 2 3 4 5 6 7 8 |
import com.amazon.SellingPartnerAPIAA.LWAAuthorizationCredentials; ... LWAAuthorizationCredentials lwaAuthorizationCredentials = LWAAuthorizationCredentials.builder() .clientId("myClientId") .clientSecret("myClientSecret") .refreshToken("Aztr|...") .endpoint("https://api.amazon.com/auth/o2/token") .build(); |
clientId、clientSecretについては、下記の画面部分に表示されます。
Login with Amazonアクセストークン
Java以外の言語で、APIを利用するには、下記の手順でAmazonアクセストークンをリクエストします。
このAPIのレスポンスにある、アクセストークンを利用して、各APIの呼出を行います。
名前 | 説明 | 必須 |
---|---|---|
grant_type | 要求されるアクセス許可のタイプ。refresh_tokenである必要があります。 | 必須 |
refresh_token | アプリケーションの出品用アカウントへのアクセスを認可するには、この値を取得します。アプリケーションの認可を参照してください。 | 必須 |
client_id | アプリケーションを登録するときにこの値を取得します。アプリケーション情報の表示を参照してください。 | 必須 |
client_secret | アプリケーションを登録するときにこの値を取得します。アプリケーション情報の表示を参照してください。 | 必須 |
記載例
1 2 3 |
POST /auth/o2/token HTTP/l.l Host: api.amazon.com Content-Type: application/x-www-form-urlencoded;charset=UTF-8 grant_type=refresh_token&refresh_token=Atzr\|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeX...&client_id=foodev&client_secret=Y76SDl2F |
成功レスポンスの内容
名前 | 説明 |
---|---|
access_token | アクセストークン。最大サイズ: 2048バイト。 |
token_type | 返されるトークンのタイプ。ベアラーである必要があります。 |
expires_in | アクセストークンが無効になるまでの秒数。 |
refresh_token | リクエストで送信したリフレッシュトークン。最大サイズ: 2048バイト。 |
レスポンス例
1 2 3 4 5 6 7 8 9 10 |
HTTP/l.l 200 OK Content-Type: application/json;charset UTF-8 Cache-Control: no-store Pragma: no-cache { "access_token":"Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE", "token_type":"bearer", "expires_in":3600, "refresh_token":"Atzr|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeXEXAMPLE" } |
公式ドキュメント
ベンダー向け出品パートナーAPI開発者ガイド
APIリファレンス
ベンダー向け出品パートナーAPIでは、主に下記の4つを利用するため、熟読されておくことをお勧めします。
・Selling Partner API for Retail Procurement Orders
https://github.com/amzn/selling-partner-api-docs/blob/main/references/vendor-orders-api/vendorOrders.md
・Selling Partner API for Retail Procurement Shipments
https://github.com/amzn/selling-partner-api-docs/blob/main/references/vendor-shipments-api/vendorShipments.md
・Selling Partner API for Retail Procurement Payments
https://github.com/amzn/selling-partner-api-docs/blob/main/references/vendor-invoices-api/vendorInvoices.md
・Selling Partner API for Retail Procurement Transaction Status
https://github.com/amzn/selling-partner-api-docs/blob/main/references/vendor-transaction-status-api/vendorTransactionStatus.md
まとめ
ベンダー向け出品パートナーAPIを利用するには、Amazon提供の資料をしっかりと熟読する必要があります。
また、AWSなどの知識も必要となり、APIを利用するには、それなりのスキルが必要となるでしょう。
認証、署名の手順は複雑ですが、その後のフローで利用するAPIについては、
扱いやすくなっていると感じました。
利用する機会は少ないですが、参考にしていただければと思います。