概要: この記事は、プラットフォームを使用してアプリの使用とアトリビューションを記録するために、広告主またはアプリ所有者と呼ばれることが多い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 | 「一般データ保護規則(General Data Protection Regulation)」は、欧州連合(EU)における個人データ保護 およびプライバシーに関するEU規制です。 | |
CCPA | カリフォルニア州消費者プライバシー法(California Consumer Privacy Act) | |
LGPD | Lei Geral de Proteção de Dados | |
PDPA | 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によるリクエストの処理 |
---|---|---|
アクセス |
|
アプリ所有者は、アプリユーザーの処理された個人データのコピーを受信できます。 |
ポータビリティ |
アプリユーザーは自分の個人データのすべてを、構造化され、一般的に使用され、機械によって読み取り可能な形式(CSVファイルなど)で受け取る権利を有します。 |
アプリ所有者はアプリユーザーの処理された個人データのコピーを受信できます。 |
訂正 |
アプリユーザーは、自分の個人データが不正確であったり虚偽がある場合に訂正をリクエストできます。アプリ所有者は、不正確または不完全なデータを消去または修正する必要があります。 |
|
削除 |
消去の権利により、アプリ所有者はリクエストを受けてから 14 日以内に個人データを削除する必要があります。 |
データは削除されます。 |
AppsFlyer の GDPR リクエスト API
このセクションで示すように GDPR Request API を使用して、DSR コンプライアンスを実装します。
- GDPRリクエスト:次のリクエストタイプのいずれかを実行します:アクセス、ポータビリティ、削除、訂正。
- Status(ステータス)リクエスト:GDPRリクエストの現在のステータスを問い合わせます。
- Discovery(確認)リクエスト: サポートされるAPI バージョンとデータ形式について確認します。
- Cancellation(キャンセル)リクエスト: GDPRリクエストのステータスが pending(保留中)の場合、キャンセルします。
アプリ所有者は、アプリユーザーがリクエストを送信できるように、アプリにUIの変更を実装する必要があります。注:GDPRリクエストは1回につき1人のユーザーを対象とします。
1. GDPRリクエスト
GDPRリクエストフロー
GDPRリクエストタイプ(アクセス、ポータビリティ、削除、訂正)は、同じフローで実行されます:
- アプリユーザー がリクエストを提出します。
- アプリ所有者 がGDPRリクエストを作成し(下記参照)、AppsFlyerに送信します。
- AppsFlyer がリクエストを受信し、リクエストが有効な場合は "201 OK" を返します。
- その後48時間は、リクエストは pending(保留中) のステータスでキューに入ります。アプリユーザーはこの間はキャンセルできます。
- 48時間後、リクエストステイタスは in_progress(処理中)に変わります。AppsFlyerは status change(ステイタス変更) ポストバックを送信します。これ以降、リクエストをキャンセルすることはできません。
- 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リクエストタイプを表す文字列値。 サポートされている値:
|
subject_identities | はい |
|
submitted_time | はい |
|
property_id | はい |
このリクエストの調査対象のモバイルアプリを表す文字列です。 例:
|
api_version | いいえ | バージョン文字列。目的とするGDPRリクエストAPIのバージョンを表します。 |
status_callback_urls | いいえ、ただし推奨 |
|
platform | いいえ |
値はサポートされているDSRプラットフォームのいずれかです:``'smartcast', 'tizen', 'web', 'webos', 'roku', 'web', 'playstation', 'vidaa', 'steam', 'quest', 'battlenet', 'ios', 'android', 'windowsphone'` |
Subject_identities オブジェクト
オブジェクトタイプ | 必須 | 説明 |
---|---|---|
identity_type | はい |
|
identity_value | はい |
|
identity_format | はい |
|
例: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 削除リクエストコードの例
/*
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);
}
}
}
""" using the requests python package,
install using pip install requests """
import requests
import json
headers = {0}
body = {
"subject_request_id": "",
"subject_request_type": "erasure",
"submitted_time": "2018-10-02T15:00:00Z",
"platform": "android",
"subject_identities": [
{1}
],
"property_id": "com.example.application"
}
body = json.dumps(body)
res = requests.request("POST",
"https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests",
headers=headers, data=body, params=params)
print(res.text)
/* using the request npm package,
install using npm install request */
var request = require("request");
var options = { method: 'POST',
url: 'https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests',
headers:
{0},
body:
{ subject_request_id: '',
subject_request_type: 'erasure',
submitted_time: '2018-10-02T15:00:00Z',
platform: 'android',
subject_identities:
[ {1} ],
property_id: 'com.example.application'
},
json: true };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
using System;
using RestSharp;
namespace CS
{
class Gdpr
{
static void Main(string[] args)
{
var url = "https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests";
var client = new RestClient(url);
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("Authorization: Bearer", "")
var body = "{\r\n\"subject_request_id\": \"\"," +
"\r\n \"subject_request_type\": \"erasure\"," +
"\r\n \"submitted_time\": \"2018-11-02T15:00:00Z\"," +
"\r\n \"platform\": \"android\"," +
"\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.AddParameter("undefined", body,ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
// handle response by reading response.StatusCode
Console.WriteLine(response.Content);
}
}
2. Status(ステータス)リクエスト
subject_request_id
を指定すると、送信済みの各GDPRリクエストのステータスを後で問い合わせることができます。次の4種類のステータスがサポートされています。
- pending(保留中) - 有効なリクエストが受信され、キューに保存されています。
- in_progress(処理中) - リクエストは現在処理中です。
- completed(完了) - リクエストは完了しています。
- 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}
ポストバックの検証
受信ポストバックの信頼性を検証する:
- コールバックを許可するすべてのプロセッサドメインの許可リストを作成します。
-
X-OpenDSR-Processor-Domain
のヘッダー値が許可リストにある場合は、証明書を取得します。- 証明書のURLは、
/discovery
レスポンスボディのprocessor_certificate
の値です。 - 認証ヘッダーのベアラートークンとして V2 API トークンを使用して、AppsFlyer エンドポイントから直接証明書を取得することもできます。
GET https://hq1.appsflyer.com/api/gdpr/v1/certificate
- 証明書のURLは、
-
ライブラリを使用して証明書を検証し、証明書で次の項目を確認します:
- 信頼された機関によって発行されている
- ヘッダー値で指定された
X-OpenDSR-Processor-Domain
のと同じ文字列に対して発行されている - 有効期限が切れていない
- 証明書が有効であることを確認したら、それを使用して、ローリクエストボディに対する
X-OpenDSR-Signature
ヘッダーを検証します。AppsFlyerは、署名アルゴリズムとしてSHA256 RSAを使用しています。 -
ステータスヘッダーで応答を取得してください:
202 Accepted
- 検証が成功した場合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(ログ)管理画面へのアクセス:
- メイン管理画面に移動し、ユーザー名をクリックします。
- Logs(ログ)をクリックすると、次の画面が開きます。
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日以上前のリクエストステータスの確認:「リクエストが見つかりません」が返されます。