概要:概要:この記事は、アプリの使用状況と計測を記録するためにプラットフォームを使用しているAppsFlyerのクライアント(広告主、またはアプリ所有者)を対象としています。アプリ所有者は、GDPR(ヨーロッパ)、CCPA(カリフォルニア)、LGPD(ブラジル)、PDPA(タイ)、およびPIPA(韓国)などの適用されるデータ保護法に準拠するために、OpenDSR(データ主体リクエスト)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リクエスト GDPRリクエスト:次のリクエストタイプのいずれかを実行します:アクセス、ポータビリティ、削除、訂正。
- 2. Status(ステータス)リクエストGDPRリクエストの現在の状況を照会する。
- 4. Discovery(確認)リクエスト サポートされているAPIバージョンとデータフォーマットについて問い合わせる。
- キャンセル 保留中の段階でGDPRリクエストをキャンセルする。
アプリ所有者は、アプリユーザーがリクエストを送信できるように、アプリに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経由(下記参照)でアクセスできます。
注:この10日間の期間は、アプリ所有者がリクエストを提出したときに始まります。48時間後、リクエストのステータスは「進行中」に変更され、さらに8日以内に完了します。合計で10日です。
GDPRリクエストのフォーマット
GDPRリクエストAPIは、HTTP POST経由で次のエンドポイントに送信できます。
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests
API承認には、Pull APIと同じ V2 APIトークンを使用してください。アドミンユーザーは、管理画面のAPI トークンページからトークンを取得できます 。リクエストヘッダーにトークンを次のように追加してください:
パラメーター
プロパティ名 | 必須 | 説明 |
---|---|---|
subject_request_id | はい | UUID v4 文字列。データ管理者により、データ処理者へリクエストを送信する時に生成されます。その後、リクエストのステイタスを確認したり、更新またはキャンセルするために使用できます。 |
subject_request_type | はい | GDPRリクエストタイプを表す文字列値。 サポートされている値:
|
subject_identities | はい |
|
submitted_time | はい |
|
property_id | はい |
このリクエストの調査対象のモバイルアプリを表す文字列です。 例:
|
api_version | いいえ | バージョン文字列。目的とするGDPRリクエストAPIのバージョンを表します。 |
status_callback_urls | いいえ、ただし推奨 |
|
platform |
いいえ | 価値はサポートされているDSRプラットフォームの1つです。android , ios , web , windowsphone
|
はい |
CTV、PCまたはコンソールプラットフォームリクエストの場合は、以下のいずれかのプラットフォームを含めます: |
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" ] }'
プラットフォームに対する削除リクエストの例:
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 ' {"requester": "test@email.com", "subject_request_id":"valid-uuid4-string", "subject_request_type":"erasure", "submitted_time":"2020-07-05T10:00:00Z", "subject_identities":[ { "identity_type":"appsflyer_id", "identity_value":"valid-appsflyer-id-string", "identity_format":"raw" } ], "api_version":"0.1", "property_id":"app-id", "platform": "roku", "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 = { "Content-Type": "application/json", "Accept": "application/json", "Authorization: Bearer": "" } body = { "subject_request_id": "", "subject_request_type": "erasure", "submitted_time": "2018-10-02T15:00:00Z", "platform": "android", "subject_identities": [ { "identity_type": "android_advertising_id", "identity_value": "", "identity_format": "raw" } ], "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: { Accept: 'application/json', 'Content-Type': 'application/json', 'Authorization: Bearer': '' }, body: { subject_request_id: '', subject_request_type: 'erasure', submitted_time: '2018-10-02T15:00:00Z', platform: 'android', subject_identities: [ { identity_type: 'android_advertising_id', identity_value: '', identity_format: 'raw' } ], 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. 2. Status(ステータス)リクエスト
subject_request_id
subject_request_idsubject_request_idを指定すると、送信済みの各GDPRリクエストのステータスを後で問い合わせることができます。次の4種類のステータスがサポートされています。
- pending(保留中) - 有効なリクエストが受信され、キューに保存されています。
- in_progress(処理中) - リクエストは現在処理中です。
- completed(完了) - リクエストは完了しています。
- canceled(キャンセル) - リクエストはキャンセルされました。
Statusリクエストのフォーマット
StatusリクエストはHTTP GET経由で次のエンドポイントに送信できます。
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
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= { "controller_id":"example controller id at the processor", "expected_completion_time":"2018-11-01T15:00:01Z", "status_callback_url":"https://examplecontroller.com/opengdpr_callbacks", "Subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798", "Request_status":"pending" }
ポストバックの検証
受信ポストバックの信頼性を検証する:
- コールバックを許可するすべてのプロセッサドメインの許可リストを作成します。
-
ヘッダー値があなたの許可リストにある場合は、証明書を取得してください。
- 証明書のURLは、レスポンスボディ内の値です。
- アプリスフライヤーのエンドポイントから、V2 APIトークンをベアラートークンとして認証ヘッダーに使用して、証明書を直接取得することもできます。
-
ライブラリを使用して証明書を検証し、証明書で次の項目を確認します:
- 信頼された機関によって発行されている
- ヘッダー値に提供された同じ文字列に発行されます。
- 有効期限が切れていない
- 証明書が有効であることを確認したら、それを使用して、ローリクエストボディに対する X-OpenDSR-Signatureヘッダーを検証します。AppsFlyerは、署名アルゴリズムとしてSHA256 RSAを使用しています。
-
ステータスヘッダーで応答を取得してください:
- 検証が成功した場合。
-
401 Unauthorized
401 Unauthorized - 署名の検証に失敗した場合、またはプロセッサドメインが許可リストにない場合
3.3. Report(レポート)リクエスト
Accessリクエストや Portabilityリクエストが完了したら、次のエンドポイントにHTTP GET経由でレポートをダウンロードできます。
https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]
生成されたレポートは、完了から14日間利用可能です。
4. 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. 5. Cancellation(キャンセル)リクエスト
GDPRリクエストは、その内容に基づいてキャンセルすることが可能ですが、保留中の段階でのみ可能です。
HTTP DELETEを送信するには:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
Cancellationレスポンス
GDPRのCancellationリクエストを受信すると、AppsFlyerはステータスコード202のHTTPレスポンスをその他のパラメーターと一緒に返します。
Cancellationリクエストを実行後、AppsFlyerはcanceled(キャンセル済み)のステータスでポストバックを送信します。
6. 6. GDPRリクエストのテストAPI
このAPIは、AppsFlyerのGDPRリクエストAPIをテストします。
仕組み
テストAPIは次のように動作します。
1.1. GDPRリクエストが受け付けられると、リクエストはすぐに "Pending"(保留中)ステータスになります。テストのため、ステータスは30秒ごとに変わります。
2.GDPRリクエストにstatusポストバックのエンドポイントが指定されている場合、リクエストの直後に最初のポストバック(Pending)が送信され、続いて30秒間隔で2つのstatusポストバック(in_progress、completed)が送信されます。
GDPRリクエストのテストエンドポイント:POST
https://hq1.appsflyer.com/api/gdpr/v1/stub
Statusリクエストのテストエンドポイント:GET
https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId
Discoveryリクエストのテストエンドポイント:GET
https://hq1.appsflyer.com/api/gdpr/v1/stub/discovery
Cancellationリクエストのテストエンドポイント:削除
https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId
証明書テストエンドポイント:GETGET
https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate
アクセス / ポータビリティレポートテストエンドポイント: GETGET
https://hq1.appsflyer.com/api/gdpr/v1/stub/download/:requestId
注意
- 有効なV2 APIトークンをリクエストヘッダーに次のように挿入する必要があります:
- ”property_id” プロパティでは、アプリIDはアカウント所有者(広告主)のアプリである必要があります(APIトークンに基づく)。
7. リクエストのログ
管理者ユーザーは、ログダッシュボードで送信された GDPRリクエストにアクセスできます。
完了したaccessおよびportabilityリクエストについては、この管理画面からレポートをダウンロードすることもできます。
Logs(ログ)管理画面へのアクセス:
- 上部のバーから、アカウントメニュー(Eメールアドレスのドロップダウン) > メニュー項目を開きます。
- 次のウィンドウが開きます。:
8.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 |
特性と制限
- OpenDSR API レート制限:1分につき350リクエストこの制限を超えるとエラーが発生し、リクエストを再送信する必要があります。このレート制限内に留まることで、1日あたり最大504,000件のリクエストが可能になります。
- 60日以上前のリクエストステータスの確認:「リクエストが見つかりません」が返されます。