開発者ガイドの概要

Amazon Ads APIの概要

ブランドセーフティ開発者ガイド

スポンサーディスプレイ広告のブランドセーフティAPI は、米国、カナダ、英国、ドイツ、スペイン、フランス、イタリア、オランダ、ブラジル、メキシコ、アラブ首長国連邦のAmazonブランド登録に登録されているお取引会社様と出品者様がご利用可能です。スポンサーディスプレイ広告では、サードパーティのサイトやモバイルアプリのオンサイトとオフサイトで広告を掲載できます。ブランドセーフティ機能を使用することで、ブランド保護に向けて広告の配信場所を細かく制御し、ブランドに合わないサードパーティサイトへの広告の配信をブロックできます。スポンサーディスプレイ広告キャンペーンで、広告を表示させたくないドメインやモバイルアプリの一覧をアップロードすることができます。この機能は広告主様のレベルで提供されるので、各広告主様がAmazon外での広告の表示場所を管理できるようになります。

Amazon Adsでは、グローバルなブランドセーフティポリシーとして、センシティブなコンテンツ、商品、サービスを含むウェブページやアプリに皆様の広告が表示されないようにする多様な対策を講じています。

具体的には、当社は次のコンテンツカテゴリーの広告を許可しません。

Amazonのリストは、これらのカテゴリーのコンテンツを除外するために、独立したブランドセーフティプロバイダーによって継続的に更新されています。ほかにも、Amazonの制限対象商品に関する規約およびコミュニティガイドラインに従って、許可されない商品や、追加の要件が適用される商品があります。制限対象商品に関する規約で許可されている商品であっても、広告を表示しない商品もあります。たとえば、アダルト関連商品やセンシティブな歴史的記念品などが挙げられます。

Amazonのブランドセーフティによって上記のカテゴリーが保護されるため、ブランドセーフティリストを作成するときに、考えられるすべてのWebサイトを列挙する必要はありません。ブランドやその他のビジネス上の理由と一致しないサイトをリストに含める必要があります。

広告主様ごとに1つのブランドセーフティリストを設定します。ブランドセーフティリストには、リクエストごとに10,000件ずつ項目をアップロードできます。項目としては、Webサイトまたはモバイルアプリケーションを指定できます。

拒否リストの作成と管理に使用できる主なAPIは/sd/brandSafety/denyです。これには以下の操作が含まれます。

  1. 項目を取得する: GET /sd/brandSafety/deny
  2. リストに項目を追加する: POST /sd/brandSafety/deny
  3. リストを削除する: DELETE /sd/brandSafety/deny

POST操作とDELETE操作は非同期ですが、GET操作は同期的です。

現時点では、リストの更新はサポートされていません。リストの項目を変更または削除する必要がある場合は、リストを削除してから再びアップロードする必要があります。リストのローカルコピーがない場合は、GET /sd/brandSafety/denyエンドポイントを使用してリストをダウンロードできます。

上記の操作を実行すると、リクエストが処理されたことの確認応答としてRequestIdが返されます。

{
 "requestId": "<string>"
}

その後、GET /sd/brandSafety/:requestId/status APIを使用してrequestIdを渡すことで、APIのステータスを取得できます。このAPIからCOMPLETEDが返されたら、操作は終了しています。ただし、このAPIでは実際の操作の結果は通知されません。

{
 "status": "COMPLETED",
 "statusDetails": "some details"
}

実際の操作の結果を取得するには、GET /sd/brandSafety/:requestId/results APIを使用する必要があります。リストを削除する場合、この操作は使用できません。削除したリストの検証方法の詳細については、後程、このドキュメントの中で説明します。個々のドメインエントリを調べて、特定のドメインが正常に更新されたかどうかを確認できます。

{
 "results": [
  {
   "status": "SUCCESS",
   "details": "<string>",
   "domainId": "<long>",
   "name": "<string>"
  },
  {
   "status": "SUCCESS",
   "details": "<string>",
   "domainId": "<long>",
   "name": "<string>"
  }
 ]
}

ブランドセーフティリストの作成

以下を拒否するブランドセーフティリストを作成できます。

index.htmlなどの個々のWebページをブロックすることはできません。www.example.com/someURIなどのように、ウェブページが含まれていないウェブサイトの場合、通常、実際のリンクはwww.example.com/someURI/index.htmlであると見なされます。

ウェブサイトの形式はexample.comまたは example.netです。こちらのドメインの命名規則に従う必要があります。また、ASCII文字のみ使用可能となります。このリストは、ASCII文字セット以外の文字表現をサポートしていません。

ブランドセーフティリストは、リクエストに次のペイロードを含めることにより、POST /sd/brandSafety/deny操作を使用して作成されます。

{
    "domains": [
        {
            "name": "example.com",
            "type": "WEBSITE"
        },
        {
            "name": "com.example.myapp",
            "type": "APP"
        },
        {
            "name": "1234567890",
            "type": "APP"
        }
    ]
}

APIを使用すると、最大10,000件のエントリをリストに追加できます。10,000件を超えて送信する必要がある場合は、別のリクエストで項目を送信する必要があります。

手順

前提条件

このセクションでは、APIリクエストを実行してブランドセーフティリストを管理します。事前設定されたリクエストを含むPostmanコレクションが提供されています。リクエストを実行すると、その後のリクエストで使用できるように、レスポンス情報が変数としてキャプチャされます。これらのリクエストを実行する前に、OAuth Refresh Tokenリクエストを使用してリフレッシュトークンを取得するか、Postmanスクリプトに手動でリフレッシュトークンを追加する必要があります。

環境のセットアップの詳細については、こちらをご覧ください。

例1: ドメイン/モバイルアプリをブランドセーフティリストに追加する

POST /sd/brandSafety/deny操作を使用して、ブランドセーフティリストに項目を追加します。

CSVファイル形式の既存のドメインリストをJSONに変換する必要がある場合、形式変換に即時使用できる無料ツールが複数あります。

{
    "domains": [
        {
            "name": "foo.com",
            "type": "WEBSITE"
        },
        {
            "name": "api.example.com",
            "type": "WEBSITE"
        },
        {
            "name": "com.example.app",
            "type": "APP"
        },
        {
            "name": "1234567890",
            "type": "APP"
        }
    ]
}

レスポンスでは以下が返されます。

{
    "requestId": "a2fd14cb81c72cb32ac071e13b105f14"
}

すぐにGET /sd/brandSafety/:requestId/status操作でステータスを確認すると、次のような内容が表示される場合があります。

{
    "status": "IN_PROGRESS",
    "statusDetails": "Your request is still in progress.Please check again later."
}

数分後にリクエストを再試行すると(リストのサイズによって異なります)、次のように表示されます。

{
    "status": "COMPLETED",
    "statusDetails": "Your request has been completed.For POST requests, you can check your request results at /sd/brandSafety/a2fd14cb81c72cb32ac071e13b105f14/results to check the status of each domain in the request.For DELETE requests you can call GET /sd/brandSafety/deny to verify that your Brand Safety Deny List is now empty."
}

requestIdの詳しいレスポンスを調べるには、 GET /sd/brandSafety/:requestId/results操作を使用します。

{
    "results": [
        {
            "status": "SUCCESS",
            "details": "Domain successfully added",
            "domainId": 5750546536593170213,
            "name": "foo.com"
        },
        {
            "status": "SUCCESS",
            "details": "Domain successfully added",
            "domainId": 6337651429473114930,
            "name": "api.example.com"
        },
        {
            "status": "SUCCESS",
            "details": "Domain successfully added",
            "domainId": 8394201756681458405,
            "name": "com.example.app"
        },
        {
            "status": "SUCCESS",
            "details": "Domain successfully added",
            "domainId": 8662947689235204460,
            "name": "1234567890"
        }
    ]
}

ドメインリスト全体を確認する場合: GET /sd/brandSafety/deny

{
    "domains": [
        {
            "domainId": 5750546536593170213,
            "name": "foo",
            "type": "WEBSITE",
            "state": "ENABLED",
            "createdAt": "2021-04-27T18:48:20.253Z",
            "lastModified": "2021-04-27T18:48:20.253Z"
        },
        {
            "domainId": 6337651429473114930,
            "name": "api.example.com",
            "type": "WEBSITE",
            "state": "ENABLED",
            "createdAt": "2021-04-27T18:48:20.253Z",
            "lastModified": "2021-04-27T18:48:20.253Z"
        },
        {
            "domainId": 8394201756681458405,
            "name": "com.example.app",
            "type": "APP",
            "state": "ENABLED",
            "createdAt": "2021-04-27T18:48:20.253Z",
            "lastModified": "2021-04-27T18:48:20.253Z"
        },
        {
            "domainId": 8662947689235204460,
            "name": "1234567890",
            "type": "APP",
            "state": "ENABLED",
            "createdAt": "2021-04-27T18:48:20.253Z",
            "lastModified": "2021-04-27T18:48:20.253Z"
        }
    ]
}

例2: ブランドセーフティリストを削除する

ブランドセーフティリストを削除する場合は、DELETE /sd/brandSafety/deny操作を呼び出します。

レスポンスでは以下が返されます。

{
    "requestId": "011686d6c372870e46e598894b7ce832"
}

数分後にGET /sd/brandSafety/:requestId/status操作を使用してステータスを確認すると(リストのサイズによって異なります)、次のように表示されます。

{
    "status": "COMPLETED",
    "statusDetails": "Your request has been completed.For POST requests, you can check your request results at /sd/brandSafety/a2fd14cb81c72cb32ac071e13b105f14/results to check the status of each domain in the request.For DELETE requests you can call GET /sd/brandSafety/deny to verify that your Brand Safety Deny List is now empty."
}

操作: DELETE操作には、GET /sd/brandSafety/:requestId/resultsは使用できません。ただし、GET /sd/brandSafety/deny操作を呼び出して、ドメインリストが空であることを確認することはできます。

{
    "domains": []
}

例3: ブランドセーフティリストを更新する

リストの項目を更新する必要がある場合は、DELETE /sd/brandSafety/deny操作を使用してリストを削除してから、POST /sd/brandSafety/deny操作を使用して項目を作成する必要があります。 「例2」の手順に沿って削除のうえ、「例1」の手順に沿ってブランドセーフティリストの項目を作成します。

付録

ユーザーがブランドセーフティ拒否リストを変更するときには、リクエストが非同期で処理され、requestIdがユーザーに渡されます。リクエストが送信されてから最大90日間の間、このrequestIdを使用することで、リクエストのステータスを確認できます。