OpenDSR API

概要: この記事は、プラットフォームを使用してアプリの使用とアトリビューションを記録するために、広告主またはアプリ所有者と呼ばれることが多いAppsFlyerクライアントを使用するためのものです。アプリ所有者は、GDPR(ヨーロッパ)、CCPA(カリフォルニア)、LGPD(ブラジル)、PDPA(タイ)などの適用されるデータ保護法に準拠するために OpenDSR (Data Subject Request) API を実装することが可能です。

弊社弁護士からのコメント: ここで述べられていることは法的助言ではありません。このページの情報は、情報提供と利便性のみを目的として提供されています。GDPRやCCPA、その他の法律が適用する/しないについて正確に判断するには、法律家や専門家に相談してください。 お客様とAppsFlyer 間のプライバシー事項については、AppsFlyer Services Privacy Policyに準拠しています。本サービスのプライバシーポリシーに関するご質問、または当社のデータ保護責任者へのお問い合わせは、privacy@appsflyer.com までメールでお問い合わせください。 一般データ保護規則第27条の目的上、AppsFlyerのEU内の代表者はAppsFlyer Germany GmbH, Schönhauser Allee 180, 10119 Berlin, Germany(連絡先 privacy@appsflyer.com、+49-30-166373500)です。

プライバシーに関する規制

この記事内のプライバシー規制には、次の表示に記載されている規制が含まれています。

規制 ロゴ 説明
GDPR GDPR.png 「一般データ保護規則(General Data Protection Regulation)」は、欧州連合(EU)における個人データ保護 およびプライバシーに関するEU規制です。
CCPA CCPA.png カリフォルニア州消費者プライバシー法(California Consumer Privacy Act)
LGPD LGPD.png Lei Geral de Proteção de Dados
PDPA 6137_Privacy_Shield_Thailand-01.png Personal Data Protection Act

プライバシー規制、GDPR、CCPA、LGPD、PDPAという用語は、この記事では同じ意味で使用されています。

OpenDSR イニシアチブ

プライバシー規制の遵守に向けて、データ主体からのリクエストに対処し管理するために、AppsFlyerは mParticle、Amplitude、Braze の3社と連携して OpenDSR プロトコル (旧:OpenGDPR) を構築しました。

OpenDSR はオープンソース・フレームワークで、個人データの公平かつ透明性のある使用のために、テクノロジー企業間の連携をサポートします。データプライバシーに関するアクションを複数のシステムにて処理し、保管することで、データプライバシー対策を取ることができます。

OpenDSRイニシアチブの詳細については、こちらを参照してください

定義

DSR用語 AppsFlyer 用語 説明
データ主体(Data Subject) アプリユーザーまたはエンドユーザー データが収集されるアプリユーザー
データ管理者(Data Controller) アプリ所有者または広告主 個人データ処理の目的と手段を決定するアプリ所有者
データ処理者(Data Processor) AppsFlyerとそのパートナー データ管理者に代わって個人データの処理を行う、AppsFlyerと連携済みパートナー。

DSRの要件

DSRでは、データ主体(Data Subject)の義務と権利について詳細に定められており、アプリ所有者(Data Controller)はこれらを遵守しなければなりません。APIでは、これらの権利はリクエストタイプに変換されています。以下では、AppsFlyerがさまざまなリクエストタイプを処理する方法について詳しく説明します。

リクエストタイプ

(権利)

GDPRの定義

AppsFlyerによるリクエストの処理

アクセス

  • リクエストがあった場合、アプリユーザーはアプリ所有者が個人データを処理するかどうか、その理由と期間を知る権利があります。
  • データがAppsFlyerなどの第三者と共有された場合、アプリユーザーはこの第三者が誰なのかを知る権利があります。
  • データ主体はどんな種類のデータが処理されているのか知る権利を有します。
  • データ主体は、データに深刻な影響を生じ得るような自動処理が存在するかどうかを知る権利があります。
アプリ所有者は、アプリユーザーの処理された個人データのコピーを受信できます。

ポータビリティ

アプリユーザーは自分の個人データのすべてを、構造化され、一般的に使用され、機械によって読み取り可能な形式(CSVファイルなど)で受け取る権利を有します。

アプリ所有者はアプリユーザーの処理された個人データのコピーを受信できます。

訂正

アプリユーザーは、自分の個人データが不正確であったり虚偽がある場合に訂正をリクエストできます。アプリ所有者は、不正確または不完全なデータを消去または修正する必要があります。

  • AppsFlyerは、訂正リクエストがあった日付以前のアプリユーザーのデータ削除します。
  • その後受信したデータはAppsFlyerによって記録されます。

削除

消去の権利により、アプリ所有者はリクエストを受けてから 14 日以内に個人データを削除する必要があります。

データは削除されます。

AppsFlyer の GDPR リクエスト API

このセクションで示すように GDPR Request API を使用して、DSR コンプライアンスを実装します。

  • GDPRリクエスト:次のリクエストタイプのいずれかを実行します:アクセス、ポータビリティ、削除、訂正。
  • Status(ステータス)リクエスト:GDPRリクエストの現在のステータスを問い合わせます。
  • Discovery(確認)リクエスト サポートされるAPI バージョンとデータ形式について確認します。
  • Cancellation(キャンセル)リクエスト GDPRリクエストのステータスが pending(保留中)の場合、キャンセルします。

アプリ所有者は、アプリユーザーがリクエストを送信できるように、アプリにUIの変更を実装する必要があります。注:GDPRリクエストは1回につき1人のユーザーを対象とします。

1. GDPRリクエスト

GDPRリクエストフロー

GDPRリクエストタイプ(アクセス、ポータビリティ、削除、訂正)は、同じフローで実行されます:

  1. アプリユーザー がリクエストを提出します。
  2. アプリ所有者 がGDPRリクエストを作成し(下記参照)、AppsFlyerに送信します。
  3. AppsFlyer がリクエストを受信し、リクエストが有効な場合は "201 OK" を返します。
  4. その後48時間は、リクエストは pending(保留中) のステータスでキューに入ります。アプリユーザーはこの間はキャンセルできます。
  5. 48時間後、リクエストステイタスは in_progress(処理中)に変わります。AppsFlyerは status change(ステイタス変更) ポストバックを送信します。これ以降、リクエストをキャンセルすることはできません。
  6. 14日以内(注記参照)に、AppsFlyerはリクエストに応え、リクエストのステータスはcompleted(完了)に更新されます。AppsFlyerは ‘status change'(ステイタス変更) ポストバックを送信します。
    • 削除 または 訂正 リクエストの場合、アプリユーザーのデータは削除されます。
    • ポータビリティまたはアクセスリクエストの場合、アプリユーザーのデータはAppsFlyerの管理画面の GDPR セクション、またはリクエストAPI経由(下記参照)でアクセスできます。

    注:この14日間の期間は、48時間の保留期間が終了した後に開始されます。したがって、リクエストが満たされるまでの合計期間は、アプリ所有者がAppsFlyerに要求を送信してから16日間です。

GDPRリクエストのフォーマット

GDPRリクエストAPIは、HTTP POST経由で次のエンドポイントに送信できます。

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests

API承認には、Pull APIと同じ V2 APIトークンを使用してください。アドミンユーザーは、管理画面のAPI トークンページからトークンを取得できます
次のように、トークンをリクエストヘッダーに追加してください。 'Authorization': 'Bearer %AuthTokenV2%'

パラメーター

プロパティ名 必須 説明
subject_request_id はい UUID v4 文字列。データ管理者により、データ処理者へリクエストを送信する時に生成されます。その後、リクエストのステイタスを確認したり、更新またはキャンセルするために使用できます。
subject_request_type はい

GDPRリクエストタイプを表す文字列値。 サポートされている値:

  • erasure
  • portability
  • アクセス
  • rectification
subject_identities はい
  • リクエストをした人のアイデンティティを定義するIDオブジェクトの配列(下記参照)。
  • 各リクエストに含めることができるサブジェクトIDは1つだけです。
submitted_time はい
  • RFC 3339日時形式の文字列。データ主体が送信した元のリクエストの時間を表します。
  • UTC時間のタイムスタンプ
property_id はい

このリクエストの調査対象のモバイルアプリを表す文字列です。

  • iOS: id123456789 
  • Android: com.example, com.publishers.name 
  • Android ストア外: com.publisher.name-channel
    注: アプリ所有者は、Android Google Play の名前を使用して、ストア外のアトリビューションを記録する場合があります。その場合、管理画面に表示される通常のアプリ名を使用します。
api_version いいえ バージョン文字列。目的とするGDPRリクエストAPIのバージョンを表します。
status_callback_urls いいえ、ただし推奨
  • リクエストのステータス変更に続いて送信されるステータスコールバックのエンドポイントを最大3つまで指定した配列
  • HTTPエンドポイントのみサポートされています。
  • 無効なURLは拒否されます。
platform いいえ

値はサポートされているDSRプラットフォームのいずれかです:``'smartcast', 'tizen', 'web', 'webos', 'roku', 'web', 'playstation', 'vidaa', 'steam', 'quest', 'battlenet', 'ios', 'android', 'windowsphone'`

Subject_identities オブジェクト

オブジェクトタイプ 必須 説明
identity_type はい
  • 文字列フォーマットの IDタイプ:
    • ios_advertising_id
    • android_advertising_id
    • fire_advertising_id
    • microsoft_advertising_id
    • appsflyer_id
  • 例: android_advertising_id
identity_value はい
  • フォーマット:文字列
  • 例: "a7551968-d5d6-44b2-9831-815ac9017798"
identity_format はい
  • identity_value をエンコードするために使用されるメソッド: raw のみがサポートされています。
  • 例: "raw"

例:GDPR の削除リクエスト

curl --location --request POST 'https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer %AuthTokenv2% \ --data-raw '{ "subject_request_id":"f4e5a271-f25e-4107-b681-************", "subject_request_type":"erasure", "submitted_time":"2020-07-05T10:00:00Z", "platform": "android", "subject_identities":[ { "identity_type":"android_advertising_id", "identity_value":"55*****-****-****-************", "identity_format":"raw" } ], "api_version":"0.1", "property_id":"com.*********.*******.********", "status_callback_urls":[ "https://examplecontroller.com/opengdpr_callbacks" ] }'

GDPR 削除リクエストコードの例

JavaPythonNode.jsC#
/* 
using the okhttp package install from maven
https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
 */
import okhttp3.*;
import java.io.IOException;

public class GdprSendRequest {
 public static void main(String[] args){

  OkHttpClient client = new OkHttpClient();
  RequestBody body = RequestBody.create(null, "" +
  "{\r\n\"subject_request_id\": \"\"," +
  "\r\n\"subject_request_type\": \"erasure\"," +
  "\r\n\"platform\": \"android\"," +
  "\r\n\"submitted_time\": \"2018-11-02T15:00:00Z\"," +
  "\r\n\"subject_identities\": [\r\n" +
  "{\r\n\"identity_type\": \"android_advertising_id\"," +
  "\r\n\"identity_value\": \"\"," +
  "\r\n\"identity_format\": \"raw\"\r\n}" +
   "\r\n]," +
   "\r\n\"property_id\": \"com.example.application\"}");

  Request request = new Request.Builder()
  .url("https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/opendsr_requests")
  .post(body)
.addHeader("Content-Type", "application/json")
  .addHeader("Accept", "application/json")
  .addHeader("Authorization: Bearer", "")
  .build();

  try {
   Response response = client.newCall(request).execute();
   System.out.println(response.code());
   System.out.println(response.body().string());
   System.exit(0);
  } catch (IOException e) {
   e.printStackTrace();
   System.exit(1);
  }
  }
}

2. Status(ステータス)リクエスト

 subject_request_idを指定すると、送信済みの各GDPRリクエストのステータスを後で問い合わせることができます。次の4種類のステータスがサポートされています。

  1. pending(保留中) - 有効なリクエストが受信され、キューに保存されています。
  2. in_progress(処理中) - リクエストは現在処理中です。
  3. completed(完了) - リクエストは完了しています。
  4. canceled(キャンセル) - リクエストはキャンセルされました。

Statusリクエストのフォーマット

StatusリクエストはHTTP GET経由で次のエンドポイントに送信できます。

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/

Statusレスポンスの例

HTTP/1.1 200 OK
Content-Type: application/json
X-OpenGDPR-Processor Domain: example processor.com
X-OpenGDPR-Signature:
kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=
{
 "controller_id":"example_controller_id",
 "expected_completion_time":"2018-11-01T15:00:01Z",
 "subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
 "request_status":"pending",
}

Statusポストバック

上記の GDPRリクエストフローのように、GDPRリクエストのステータスが pending(保留中)から in_progress(処理中)、completed(完了)の順に変化するとき、AppsFlyerは status_callback_urls プロパティで指定された、リクエスト中のエンドポイントにGDPRポストバックを送信します。

Statusポストバックの例:

POST /opengdpr_callbacks HTTP/1.1
Host: examplecontroller.com
Content-Type: application/json
X-OpenGDPR-Processor Domain: gdpr.appsflyer.com
X-OpenGDPR-Signature: kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=

{0}application/json
X-OpenGDPR-Processor Domain: gdpr.appsflyer.com
X-OpenGDPR-Signature: kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=

{0}

ポストバックの検証

受信ポストバックの信頼性を検証する

  1. コールバックを許可するすべてのプロセッサドメインの許可リストを作成します。
  2. X-OpenDSR-Processor-Domain のヘッダー値が許可リストにある場合は、証明書を取得します。
    • 証明書のURLは、/discoveryレスポンスボディの processor_certificate の値です。
    • 認証ヘッダーのベアラートークンとして V2 API トークンを使用して、AppsFlyer エンドポイントから直接証明書を取得することもできます。 GET https://hq1.appsflyer.com/api/gdpr/v1/certificate
  3. ライブラリを使用して証明書を検証し、証明書で次の項目を確認します:
    1. 信頼された機関によって発行されている
    2. ヘッダー値で指定された X-OpenDSR-Processor-Domain のと同じ文字列に対して発行されている
    3. 有効期限が切れていない
  4. 証明書が有効であることを確認したら、それを使用して、ローリクエストボディに対する X-OpenDSR-Signatureヘッダーを検証します。AppsFlyerは、署名アルゴリズムとしてSHA256 RSAを使用しています。
  5. ステータスヘッダーで応答を取得してください:
    1. 202 Accepted - 検証が成功した場合
    2. 401 Unauthorized - 署名の検証に失敗した場合、またはプロセッサドメインが許可リストにない場合

3. Report(レポート)リクエスト

Accessリクエスト Portabilityリクエストが完了したら、次のエンドポイントにHTTP GET経由でレポートをダウンロードできます。

https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]

生成されたレポートは、完了から14日間利用可能です。

4. ディスカバリーリクエスト処理

AppsFlyerでサポートされているフォーマットを確認するには、HTTP GET経由で次のエンドポイントにDiscoveryリクエストを送信します。

https://hq1.appsflyer.com/api/gdpr/v1/discovery

Discoveryレスポンスの例

HTTP/1.1 200 OK
Content-Type: application/json
{
 "api_version": "0.1",
 "supported_identities": [
 {
  "identity_type": "android_advertising_id",
  "identity_format": "raw"
 },
 ],
 "supported_subject_request_types": [
 "erasure", "access", "portability", "rectification"
 ],
 "processor_certificate": "https://exampleprocessor.com/cert.pem"
}

5. Cancellation(キャンセル)リクエスト

GDPRリクエストは subject_request_idに基づいてキャンセルできます。ただし、ステータスがpending (保留中)の場合のみです。 

subject_request_id と一緒に HTTP DELETE を送信する方法:

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/

Cancellationレスポンス

GDPRのCancellation(キャンセル)リクエストを受信すると、AppsFlyerはステータスコード202のHTTPレスポンスをその他のパラメーターと一緒に返します。

Cancellationリクエストを実行後、AppsFlyerはcanceled(キャンセル済み)のステータスでポストバックを送信します。

6. GDPRリクエストのテストAPI

このAPIは、AppsFlyerのGDPRリクエストAPIをテストします。 

仕組み

テストAPIは次のように動作します。

1. GDPRリクエストが受け付けられると、リクエストはすぐに "Pending"(保留中)ステータスになります。テストのため、ステータスは30秒ごとに変わります。

GDPRリクエストにstatusポストバックのエンドポイントが指定されている場合、リクエストの直後に最初のポストバック(Pending)が送信され、続いて30秒間隔で2つのstatusポストバック(in_progress、completed)が送信されます。

GDPRリクエストテストエンドポイント: POST

https://hq1.appsflyer.com/api/gdpr/v1/stub

ステータスリクエストテストエンドポイント: GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

ディスカバリーリクエストテストエンドポイント: GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/discovery

キャンセルリクエストテストエンドポイント:DELETE

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

証明書テストエンドポイント:GET

https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate

アクセス / ポータビリティレポートテストエンドポイント: GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/download/:requestId

 注記

  • 有効な V2 APIトークンは、次のようにリクエストヘッダーに挿入する必要があります:
    'Authorization': 'Bearer %AuthTokenV2%'
  • ”property_id” プロパティでは、アプリIDはアカウント所有者(広告主)のアプリである必要があります(APIトークンに基づく)。

7. リクエストのログ

管理者ユーザーは、ログダッシュボードで送信された GDPRリクエストにアクセスできます。

完了したaccessおよびportabilityリクエストについては、この管理画面からレポートをダウンロードすることもできます。

Logs(ログ)管理画面へのアクセス:

  1. メイン管理画面に移動し、ユーザー名をクリックします。
  2. Logs(ログ)をクリックすると、次の画面が開きます。

GDPR_Table.png

8. GDPR API のリターンコードとエラーメッセージ

このセクションでは、GDPR API の HTTPリターンコードとエラーメッセージについて詳しく説明します。

GDPR API リターンコード

リターンコード 説明
201 作成されました
202 キャンセルリクエストを受信しました
400

Bad request。本文には、次の表に示すエラーコードとメッセージが含まれています。

HTTPリターンコード 400 - bad request

リターンコード400のメッセージには、エラーコードとメッセージを含む JSON が含まれています。

{{ "error": { "code":400, "af_gdpr_code": "%AF error code%", "message":"%error message text%" } }}

リターンコード400 bad request のメッセージ

エラーコード

エラーの説明(メッセージ)

e111 Rate limit exceeded(レート上限を超えました)
e211 Unable to cancel request with invalid status(ステイタスが無効なためリクエストをキャンセルできません)
e212 Request not permitted(リクエストは許可されていません。)Erasure is in progress for the identifier(このIDの削除が処理中です)
e213 Request already exists(リクエストが既に存在しています)
e214 Request not found(リクエストが見つかりません)
e311 Invalid request content-type(リクエストのcontent-typeが無効です)
e312 Invalid API version(APIバージョンが無効です)
e313 Invalid subject_request_id( subject_request_id が無効です)
e314 Invalid submitted_time format( submitted_time format が無効です)
e315 Invalid status_callback_url length( status_callback_url の長さが無効です)
e316 Invalid status_callback_url format( status_callback_url の形式が無効です)
e317 Invalid app_id format( app_id の形式が無効です)
e318 Invalid identity_type( identity_type が無効です)
e319 Application platform does not match identity types(アプリのプラットフォームがIDタイプと一致しません)
e320 Invalid identity_type( identity_type が無効です)
e321 LAT users are not supported via api(LATユーザーはAPIでサポートされていません)
e322 Invalid subject_request_type( subject_request_type が無効です)
e323 Invalid subject_identities format( subject_identities の形式が無効です)
e324 Invalid subject_identities length( subject_identities の長さが無効です)
e325 Invalid subject_identities value( subject_identities の値が無効です)
e411 AppID is incorrect or does not belong to your account(AppIDが正しくないかアカウントに属していません)
e412 No permissions to cancel erasure request(削除リクエストをキャンセルする権限がありません)
e413 No permissions to view request(リクエストを表示する権利がありません)
e511 内部で問題が発生しました。60分経ってから再度お試しください。問題が続くようでしたら、AppsFlyerサポートにお問い合わせください。support@AppsFlyer.com 

特性と制限

  • レート制限:アカウントレベルで 2分ごとに80件(1時間2,400件、および1日57,600件のリクエストに相当)です。この上限を超えたリクエストは失敗します。
  • リクエスト(消去リクエストを含む)を行ったチームメンバーのみが、UI でリクエストを表示できます。
  • UI には、ランダムに選択された最大 200 個のリクエストが表示されます。
  • 60日以上前のリクエストステータスの確認:「リクエストが見つかりません」が返されます。