eBayアカウント削除/閉鎖通知

マーケットプレイスユーザーアカウントの削除

概要

eBayは、eBayのシステム、およびeBay Developers Programを通じてeBay APIと統合しているサードパーティ開発者を含む、個人データを保存・表示しているすべてのeBayパートナーのシステムから、ユーザーが個人データを削除するようリクエストする手段を提供しています。

サードパーティ開発者による顧客データの削除を支援するため、eBayはプッシュ通知システムを構築しました。これにより、eBayユーザーが個人データの削除およびアカウントの閉鎖をリクエストした際に、すべてのeBay Developers Programアプリケーションに通知されます。本文書では、これらの「eBayマーケットプレイスアカウント削除/閉鎖通知」を購読、応答、および検証するためにサードパーティ開発者が行うべき手順について説明します。

本ガイドを参照し、以下の手順に従ってeBayマーケットプレイスアカウント削除/閉鎖通知の設定またはオプトアウトを行ってください。

  • 通知を受け取るための準備
  • 通知の購読
  • 通知のオプトアウト
  • 通知の受信と確認(Acknowledgement)
  • 通知の正当性の検証

さらに、本ガイドには「AsyncAPI仕様」および「よくある質問」も含まれています。

注意: eBay Developers Programを通じてeBay APIと統合しているすべての既存および新規のサードパーティ開発者は、以下のいずれかが必須となります:
1) eBayマーケットプレイスアカウント削除/閉鎖通知を購読する。
2) eBayデータを一切保存していない場合は、これらの通知の購読をオプトアウトするプロセスに従う(この場合、開発者は通知の受信免除を申請できます)。

オプトアウトの詳細については、本文書の「eBayマーケットプレイスアカウント削除/閉鎖通知のオプトアウト」セクションを参照してください。eBayユーザーが個人データの削除をリクエストしてアカウントを閉鎖した際に通知を受け取るには、Notification APIの「ビジネスユースケース」および通知トピック Marketplace Account Deletion を参照してください。

すべての開発者は、eBayマーケットプレイスアカウント削除/閉鎖通知を購読するか、オプトアウトする必要があります。この要件に従わない場合、Developer Toolsへのアクセス権の停止、および/またはすべてまたは一部のAPIへのアクセス制限が生じます。 プラットフォームに参加する新規のサードパーティ開発者は、最初の本番API呼び出しを行う前に、通知を購読するかオプトアウトする必要があります。新規開発者のアプリケーションが通知に購読されるか、オプトアウトが正常に完了すると、キーセット/App IDが有効化され、API呼び出しが可能になります。

eBayマーケットプレイスアカウント削除/閉鎖通知を受け取るための準備

通知を購読して受信する前に、開発者はeBayからのチャレンジコードを受信するためのエンドポイントURLを準備し、そのチャレンジコードを使用してエンドポイントURLの所有権を検証する必要があります。eBayは、提供されたエンドポイントURLを開発者が所有・管理しているか、および開発者がすべての通知を受信して処理できるかを確認する必要があります。この検証プロセスは以下の通りです。

  1. 開発者が通知を購読する際(次のセクションを参照)にエンドポイントURLと検証トークン(verification token)を提供して保存すると、直ちにeBayはそのURLに対してGETリクエスト形式でチャレンジコードを送信します。このGETリクエストは次の形式を使用します: GET https://<callback_URL>?challenge_code=123challenge_code クエリパラメータの値はリクエストごとに一意となります。提供されるエンドポイントURLは 'https' プロトコルを使用する必要があり、パスに内部IPアドレスや 'localhost' を含めることはできません。
  2. この一意のチャレンジコードを受信したら、エンドポイントはチャレンジコード、検証トークン、およびエンドポイントURLをハッシュ化し、JSON形式の challengeResponse フィールドを通じて、200 OK ステータスとハッシュ値をeBayに返信するように設定されている必要があります(以下の例を参照)。このレスポンスの content-type ヘッダーは application/json に設定する必要があります。これら3つのパラメータは、challengeCode + verificationToken + endpoint の順序でハッシュ化する必要があります。この順序に従わない場合、検証は失敗します。
    {
        "challengeResponse":"*******************************************8ca38f"
    }

    エンドポイントが正式に通知を購読できるようになる前に、eBayはこの16進数文字列を検証する必要があります。challengeResponse を計算するためのNode.js、Java、Python、C#、およびPHPのコードスニペットを以下に示します。endpointverificationToken は開発者が設定した固有の値ですが、challengeCode 変数はeBayから challenge_code クエリパラメータとして送られてくるもので、ランダムに生成されリクエストごとに一意であることに留意してください。検証トークンは32〜80文字である必要があり、使用可能な文字は英数字、アンダースコア (_)、およびハイフン (-) です。その他の文字は使用できません。

    Node.js

    const hash = createHash('sha256');
    hash.update(challengeCode);
    hash.update(verificationToken);
    hash.update(endpoint);
    const responseHash = hash.digest('hex');
    console.log(new Buffer.from(responseHash).toString());

    Java

    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    digest.update(challengeCode.getBytes(StandardCharsets.UTF_8));
    digest.update(verificationToken.getBytes(StandardCharsets.UTF_8));
    byte[] bytes = digest.digest(endpoint.getBytes(StandardCharsets.UTF_8));
    System.out.println(org.apache.commons.codec.binary.Hex.encodeHexString(bytes));

    Python

    m = hashlib.sha256(challengeCode+verificationToken+endpoint);
    print(m.hexdigest());

    C#

    IncrementalHash sha256 = IncrementalHash.CreateHash(HashAlgorithmName.SHA256); 
    sha256.AppendData(Encoding.UTF8.GetBytes(challengeCode)); 
    sha256.AppendData(Encoding.UTF8.GetBytes(verificationToken)); 
    sha256.AppendData(Encoding.UTF8.GetBytes(endpoint)); 
    byte[] bytes = sha256.GetHashAndReset();
    Console.WriteLine(BitConverter.ToString(bytes).Replace("-", string.Empty).ToLower());

    PHP

    $hash = hash_init('sha256');
    
    hash_update($hash, $challengeCode);
    hash_update($hash, $verificationToken);
    hash_update($hash, $endpoint);
    
    $responseHash = hash_final($hash);
    echo $responseHash;
    重要! 実装においては、レスポンスボディを作成するためにJSONライブラリを使用することを強くお勧めします。文字列操作でJSONを作成する場合、レスポンスボディの先頭にバイトオーダーマーク(BOM)が付加されるケースが散見されます。BOMが含まれると無効なJSONとみなされ、受信サービスがパース例外を発生させるため、通知の購読試行は失敗します。

    詳細については、RFC8259のセクション8.1(文字エンコーディング)や、Unicodeウェブサイトのバイトオーダーマーク(BOM)FAQを参照してください。

  3. コードとエンドポイントをテストし、エンドポイントがeBayのチャレンジコードを処理して返信する準備ができていることを確認したら、通知の購読に進むことができます。このプロセスについては次のセクションで説明します。ユーザーはDeveloper Portalの Alerts and Notifications ページで、アラート用メールアドレス、エンドポイントURL、および検証トークンを入力します。

eBayマーケットプレイスアカウント削除/閉鎖通知の購読

すべての有効なeBay Developers Programアプリケーションは、eBayマーケットプレイスアカウント削除/閉鎖通知を購読する必要があります。開発者は、開発者アカウントに関連付けられたアプリケーションごとに、以下の手順に従ってこれらの通知を購読してください。

  1. 開発者アカウントにサインインします。
  2. Application Keys ページに移動します。
  3. App IDの隣にある Notifications リンクをクリックします。以下に示す Alerts and Notifications ページに移動します。
    account-deletion-notification
  4. Alerts and Notifications ページで、Event Notification Delivery Method セクションの下にある Marketplace Account Deletion ラジオボタンを選択します。
  5. まず、メールアドレスを入力します。メールアドレスは必須ですが、指定された通知エンドポイントURLに到達できない、または通知が適切に確認(Acknowledge)されない場合に開発者にアラートを送信する目的でのみ使用されます。メールアドレスを入力したら、隣にある Save ボタンをクリックします。
  6. 次に、通知を受信するための Notification Endpoint URLを設定します。このURLは 'https' アドレスであり、かつ開発者が所有またはアクセス可能なものである必要があります。このエンドポイントは、検証のためにeBayが即座に送信するチャレンジコードを受信して返信する準備ができている必要があります(エンドポイントの準備については前のセクションを参照)。Notification Endpoint を設定したら、次のステップに進みます。
  7. Verification token フィールドに、32〜80文字の検証トークンを入力します。使用可能な文字は英数字、アンダースコア (_)、およびハイフン (-) です。その他の文字は使用できません。この Verification token の値と Notification Endpoint URLは、開発者がそのURLを管理しているか、また通知に対して単に成功ステータスを返すだけでなく正しく処理できるかを確認するための多段階プロセスで使用されます。
  8. Notification Endpoint URLと Verification token の値を設定したら、隣にある Save ボタンをクリックします。入力値が有効であれば、Save ボタンをクリックすると検証プロセスがトリガーされ、eBayがエンドポイントにチャレンジコードを送信します。エンドポイントが正常に応答した場合、設定は保存されます。問題が発生した場合は、エンドポイントおよびチャレンジコードの処理方法についてトラブルシューティングを行ってください。

購読に成功したら、Send Test Notification ボタンをクリックして、このURLにテスト通知を送信できます。エンドポイントURLがテスト通知を正常に受信したら、セットアップは完了です。アプリケーションは、eBayマーケットプレイスアカウント削除/閉鎖通知の受信を即座に開始します。

注意: テスト通知を送信する前に、エンドポイントURLがGETおよびPOSTメソッドの両方をサポートしていることを確認してください。

eBayマーケットプレイスアカウント削除/閉鎖通知のオプトアウト

eBayデータを一切保持していない開発者アプリケーションについては、通知をオプトアウトするオプションがあります。ただし、虚偽の情報を提供した場合、ペナルティが科されたり、アカウントが無効になったりする可能性があることに注意してください。

オプトアウトのプロセスは以下の通りです。

  1. Marketplace Account Deletion ページで、Not persisting eBay data トグルボタンをオンにします。これを行うと、以下のポップアップボックスが表示されます。
  2. ポップアップボックス内の Confirm ボタンをクリックすると、以下の画面が表示されます。
  3. 該当する Exemption reason(免除理由)ラジオボタンを選択します。必要に応じて、Additional information テキストボックスにメモを含めることもできます。
  4. Submit ボタンをクリックして、免除リクエストを完了します。成功すると以下の画面が表示されます。

すでに通知を受信していた開発者の場合、設定されたエンドポイントへの配信は停止されます。メールアドレス、エンドポイント、および検証トークンのデータは、後日通知を再度有効にしたい場合に備えてアカウントに保存されます。

免除を無効にするには、Not persisting eBay data トグルボタンをオフにします。新規ユーザー(通知を一度も購読したことがないユーザー)は、通知の受信を開始するためにエンドポイントを準備し、URLと検証トークンを提供する必要があります。以前に購読していたユーザーの場合、免除を無効にすると、通知が再びエンドポイントに送信され始めます。

eBayマーケットプレイスアカウント削除/閉鎖通知の受信と確認 (Acknowledgement)

アプリケーションが通知に登録されると、コールバックURLは、個人データの削除をリクエストした各eBayユーザーについて、HTTP POSTによるJSONベースの通知を受信し始めます。通知レスポンスのサンプルを以下に示します。

{
  "metadata": {
    "topic": "MARKETPLACE_ACCOUNT_DELETION",
    "schemaVersion": "1.0",
    "deprecated": false
  },
  "notification": {
    "notificationId": "********-****-****-****-****-****-****-******bd9a6d",
    "eventDate": "2025-09-19T20:43:59.462Z",
    "publishDate": "2025-09-19T20:43:59.679Z",
    "publishAttemptCount": 1,
    "data": {
      "username": "******ser",
      "userId": "********SJC",
      "eiasToken": "**************************************************+seQ=="
    }
  }
}

通知レスポンスペイロードのフィールドについて、以下の表で説明します。

フィールド 説明
metadata.topic 通知のトピック。
metadata.schemaVersion トピックのスキーマバージョン。
metadata.deprecated true の場合、このブール値は topicschemaVersion が非推奨であることを示します。
notification.notificationId 通知の一意の識別子。
notification.eventDate eBayユーザーがデータ削除リクエストを行った日時を示すタイムスタンプ。
notification.publishDate 現在の通知が送信された日時を示すタイムスタンプ。
notification.publishAttemptCount この特定のコールバックURLに対して通知が何回送信されたかを示す整数。
notification.data.username 公に知られているeBayユーザーID(文字列)。
注意: 米国のユーザーについては、一部の開発者はこのフィールドを通じてユーザー名データを受け取りません。代わりに、不変のユーザーIDが返されます。詳細については、「データ取り扱いコンプライアンス」を参照してください。
notification.data.userId eBayユーザーの不変の識別子(文字列)。
notification.data.eiasToken eBayユーザーのEIASトークン(文字列)。ユーザーに使用される別の識別子です。

コールバックURLは、成功したレスポンスを示すHTTPステータスコードを使用して、各通知を直ちに確認(Acknowledge)する必要があります。200 OK201 Created202 Accepted、および 204 No Content はすべて許容されます。応答しないコールバックURLについては、確認されるまでeBayはその通知を再送信します。未確認の状態が24時間続くと、そのコールバックURLはダウンしているとマークされ、eBayは開発者に対しアラートメールを送信します。開発者はメール受信から最大30日以内に問題を解決する必要があります。30日以内に解決されない場合、開発者は非準拠としてマークされます。

注意: 通知を受信し、受信確認を開始したら、開発者はユーザーデータを削除するための適切な措置を講じる必要があります。データを保持する計画がある場合は、特定の法的要件(例:税務、債権回収、マネーロンダリング防止規制)を満たす場合にのみ許可されます。削除は、最高のシステム権限を使用しても復元できない方法で行う必要があります。

eBayマーケットプレイスアカウント削除/閉鎖通知の正当性の検証

コールバックURLが通知を確認した後、開発者はその通知が実際にeBayから送信されたものであることを検証する必要があります。eBayは、各通知の正当性を検証するために以下のSDKを提供しています。

  • Event Notification SDK (Java)
  • Event Notification SDK (Node.js)
  • Event Notification SDK (.NET)
  • Event Notification SDK (PHP)
  • Event Notification SDK (Go)

これらのSDKは以下の処理を行います。

  1. 通知から署名ヘッダーをデコードして keyId を取得する。
  2. 公開鍵を取得するためにNotification APIへのキャッシュ有効化呼び出しを行う。
  3. 通知ペイロードに対して署名を検証する。
  4. 署名が検証された場合、ペイロードはトピックの処理ロジックに委譲され、HTTPステータス 200 OK が返されます。署名の検証に失敗した場合、HTTPステータス 412 Precondition Failed が返されます。

詳細については、各SDKのReadMeファイルを参照してください。

通知がeBayから送信されたものであることを手動(SDK不使用)で検証するプロセスもあります。手順は以下の通りです。

  1. Base64デコード関数を使用して、通知の x-ebay-signature レスポンスヘッダーで返された値をデコードします。
  2. このデコードされた値は、Notification API の getPublicKey URIの末尾に渡されます。
  3. getPublicKey メソッドを使用した残りの検証プロセスについては、Notification API Overview ページを参照してください。
重要! getPublicKey メソッドから取得した公開鍵の値は、一時的ですが合理的な期間(例:1時間を推奨)キャッシュする必要があります。大量の通知リクエストを受信した場合、通知ごとにこのキーをリクエストすると、API呼び出し制限を超過する可能性があるため避けてください。

AsyncAPI specification

AsyncAPI Contract

asyncapi: 2.0.0
info:
  title: eBay Notifications
  version: 1.0.0
  description: This contract defines eBay notification for event subsciptions
channels:
  MARKETPLACE_ACCOUNT_DELETION:
    subscribe:
      message:
        $ref: '#/components/messages/message'
      bindings:
        http:
          type: request
          method: POST
          headers:
            type: object
            properties:
              Content-Type:
                type: string
                enum: ['application/json']
components:
  messages:
    message:
      headers:
        type: object
        properties:
          X-EBAY-SIGNATURE:
            description: ECC message signature
            type: string
      payload:
        type: object
        properties:
          metadata:
            $ref: '#/components/schemas/MetaData'
          notification:
            $ref: '#/components/schemas/Notification'
  schemas:
    MetaData:
      type: object
      properties:
        topic:
          type: string
          description: 'Topic subscribed to.'
        schemaVersion:
          type: string
          description: 'The schema for this topic.'
        deprecated:
          type: boolean
          description: 'If this is a deprecated schema or topic.'
          default: 'false'
    
    Notification:
      type: object
      properties:
        notificationId:
          type: string
          description: 'The notification Id.'
        eventDate:
          type: string
          description: 'The event date associated with this notification in UTC.'
        publishDate:
          type: string
          description: 'The message publish date in UTC.'
        publishAttemptCount:
          type: integer
          description: 'The number of attempts made to publish this message.'
        data:
          $ref: '#/components/schemas/MarketplaceAccountDeletionData'
    MarketplaceAccountDeletionData:
      type: object
      description: 'The Account Deletion payload.'
      properties:
        username:
          type: string
          description: 'The username for the user. Effective September 26, 2025, select developers will no longer receive username data for U.S. users through this field. Instead, an immutable user ID will be returned in its place.'
        userId:
          type: string
          description: 'The immutable public userId for the user'
        eiasToken:
          type: string
          description: 'The legacy eiasToken specific to the user'

よくある質問 (FAQs)

eBayマーケットプレイスアカウント削除/閉鎖通知に関するよくある質問

このセクションでは、通知に関する一般的な質問を取り上げます。

開発者はeBayマーケットプレイスアカウント削除/閉鎖通知を購読する必要がありますか?

はい。eBayユーザーデータを使用または保存するAPI呼び出しを行っているすべてのeBay Developers Programアプリケーションは、通知を購読する必要があります。通知で指定されたeBayユーザーに関連するすべてのデータを削除することは、各開発者の責任です。

eBayマーケットプレイスアカウント削除/閉鎖通知を購読するにはどうすればよいですか?

開発者アカウント内の Alerts and Notifications ページに移動してください。詳細については、本文書の「eBayマーケットプレイスアカウント削除/閉鎖通知の購読」セクションを参照してください。

eBayマーケットプレイスアカウント削除/閉鎖通知をどのように確認(Acknowledge)すればよいですか?

HTTP POST通知に対して、成功を示すHTTPステータスコードで即座に応答するコールバックリスナーURLを設定してください。200 OK201 Created202 Accepted、または 204 No Content が許容されます。コールバックURLは 'https' プロトコルを使用する必要があります。

なぜ同じeBayマーケットプレイスアカウント削除/閉鎖通知が複数回届くのですか?

eBayは、コールバックURLによって確認されない通知を再送信します。同じ通知を複数回受信している場合、コールバックURLが通知を適切に確認していない可能性があります。

コールバックURLがeBayによってダウンとマークされたというメールを受け取りました。どうすればよいですか?

コールバックURLが通知を適切に確認していない理由を調査し、トラブルシューティングを行ってください。Alerts and Notifications ページの Send Test Notification ツールを使用してテストを実行できます。問題が解決したらeBayに連絡してください。eBayはコールバックURLを稼働中(up)としてマークし、通知の送信を再開します。

eBayマーケットプレイスアカウント削除/閉鎖通知が実際にeBayから送信されたものであることをどのように検証すればよいですか?

eBayは、各通知の正当性を検証するためのSDK(Java, Node.js, .NET, PHP, Go)を提供しています。検証方法の詳細については、本文書の「eBayマーケットプレイスアカウント削除/閉鎖通知の正当性の検証」セクションを参照してください。

1日にどれくらいの数のeBayマーケットプレイスアカウント削除/閉鎖通知が予想されますか?

日によって異なりますが、イベント駆動型であり変動が激しいことを想定しておく必要があります。

  • 頻繁なケース: 通知ゼロ
  • 稀なケース: 小規模なバースト(例:eBayが複数のアカウントを閉鎖した場合、または最近の注文量が多かった場合など)。例えば、特定の日に最大1500件の通知が発生する可能性などに備えておく必要があります。

全体的なボリュームは、開発者が抱えるeBayバイヤー数やメッセージ数、運営地域、およびプライバシー規制に応じて変化します。

トップに戻る