GDPR リクエストをサポートするための Singular API の使用方法をご覧ください。
データ主体からのリクエストがより広範な同意アーキテクチャにどのように位置づけられるか、そして消去(erasure)がトラッキングの停止と同じではない理由については、Consent Management with the Singular SDK: A Decision Framework を参照してください。
消去はオプトアウトではありません。
この API は、Singular が特定の識別子について収集したユーザーレベルのデータを削除します。ユーザーのデバイス上の SDK が今後のイベントを送信するのを停止することはありません。消去を要求し、かつトラッキングも停止すべきユーザーの場合、API リクエストの送信に加えて、アプリで stopAllTracking() を呼び出す(または SDK の初期化を制御する)必要があります。両方を同じユーザーフローで処理してください。
GDPRエンドポイント
| エンドポイント | メソッド | URL | 説明 |
| Discovery | GET | https://gdpr.singular.net/gdpr/discovery | SingularがGDPR APIを通じて処理できる、現在サポートされているすべてのリクエストタイプを返します。 |
| Requests | POST | https://gdpr.singular.net/gdpr/requests | このエンドポイントを使用して、要求されたデータ主体のデバイス ID を指定しながら HTTP POST リクエストで送信された新しい GDPR リクエストを送信します。 |
| Status | GET | https://gdpr.singular.net/gdpr/requests/request_id | リクエストIDによって識別される、以前に送信されたリクエストの現在のステータスを返します。 |
| Cancellation | DELETE | https://gdpr.singular.net/gdpr/requests/request_id | 以前のリクエストをキャンセルするには、このエンドポイントを使用します。これは、リクエストが "pending "ステータスにある限り可能です。 |
ディスカバリー・エンドポイント
| GET | https://gdpr.singular.net/api/gdpr/discovery |
使用法
OpenGDPR Discovery エンドポイントは、Singular が GDPR API を通じて処理できる、現在サポートされているすべてのリクエストタイプを返します。
サンプルクエリ
import requests
response = requests.get("https://gdpr.singular.net/api/gdpr/discovery")
print(response.text)
サンプル出力
{
"api_version": "0.1.4",
"supported_identities": [
{"identity_format": "raw","identity_type": "android_advertising_id"},
{"identity_format": "raw","identity_type": "android_id"},
{"identity_format": "raw","identity_type": "ios_advertising_id"},
{"identity_format": "raw","identity_type": "ios_vendor_id"},
{"identity_format": "raw","identity_type": "user_id"}
],
"supported_subject_request_types": [
"erasure",
"access"
]
}
リクエストエンドポイント
| POST | https://gdpr.singular.net/api/gdpr/requests |
使用法
OpenGDPR Requests エンドポイントは、リクエストされたデータ主体のデバイス ID を指定しながら HTTP POST リクエストで送信された新しい GDPR リクエストを処理します。
完了までの時間: 消去リクエストは、送信から最大 30 日以内に完了します。レスポンスには expected_completion_time が返されます。これを使用して GDPR 第 12 条の対応期限を設定してください。
サポートされるリクエスト
OpenGDPR Requests エンドポイントは、異なる GDPR の権利に対応する、以下のタイプのリクエストをサポートしています:
- `erasure` - GDPRの第17条「消去する権利」の一部として、データ消去に対するユーザリクエストをサポートします。
- `access` - GDPRの第15条「アクセスする権利」の一環として、データへのアクセスに関するユーザーリクエストをサポートします。
サポートされるID
OpenGDPR Requestsエンドポイントは、以下のタイプのIDをサポートしています:
- `android_advertising_id` - GAIDまたはAIFAとしても知られるGoogle Advertising IDを提供することによって行われるリクエスト
- `android_id` - ANDI とも呼ばれる Android ID を提供するリクエスト
- `ios_advertising_id` - iOS の広告 ID である IDFA を提供して行うリクエスト
- `ios_vendor_id` - ベンダー用の iOS ID である IDFV を指定したリクエスト
- `user_id` - カスタムユーザIDを指定したリクエスト
ゼロ値の IDFA はエラーなく無視されます。
limit-ad-tracking が有効なデバイス、または ATT AuthorizationStatus が denied のデバイスでは、IDFA はゼロ値になります("00000000-0000-0000-0000-000000000000")。ゼロ値の IDFA をキーとするリクエストは無視され、API はエラーを返しません。これらのユーザーについては、代わりに `ios_vendor_id`(IDFV)を送信してください。この失敗は通知されないため、DSR パイプラインは ATT を拒否した iOS ユーザーの IDFV を保持して送信する必要があります。
サンプルクエリ
import requests
url = "https://gdpr.singular.net/api/gdpr/requests"
payload = {
"subject_request_id": "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
"subject_request_type": "access",
"submitted_time": "2018-05-25T10:00:00Z",
"subject_identities": [
{
"identity_type": "android_advertising_id",
"identity_value": "38400000-8cf0-11bd-b23e-10b96e40000d",
"identity_format": "raw"
}
],
"property_id": "Android:com.myapp.xyz",
}
headers = {
"content-type": "application/json",
"Authorization": "[API_KEY]"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
クエリパラメータ
| パラメータ | 形式 | 説明 | 例 |
| subject_request_id | String | UUIDv4 文字列 | |
| subject_request_type | String | OpenGDPR Request のタイプを表す文字列。Singularは現在、以下の値をサポートしています:"消去"、"ポータビリティ"、"アクセス" | |
| subject_identities | Array | リクエストを満たす各Device IDのタイプ、値、フォーマットを記述したIDオブジェクトのリスト。リクエストには最大100個のデバイスIDを含めることができます。 |
|
| submitted_time | データ対象者による最初のリクエストの時刻を表すRFC 3339の日付文字列。 | 2010-05-25T10:00:00Z | |
| property_id | String | 関連するアプリを指定するための[プラットフォーム]:[ロングネーム]のペア。 | iOS:com.myapp.xyz |
サンプル出力
{
"controller_id":"example_controller_id",
"received_time":"2018-05-25T10:00:01Z",
"expected_completion_time": "2018-06-24T10:00:01Z",
"encoded_request":"<BASE64 ENCODED REQUEST>",
"subject_request_id":"1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
"results_url": "https://url-to-results-in-json-format",
"api_version": "0.1.4"
}
削除の範囲
消去は、Singular が該当する識別子について保持しているユーザーレベルのレコード(ログおよびアトリビューションの詳細)を削除します。集計されたデータ(例: コホートの集計値)は、集計後はデバイス単位で特定できないため、消去の影響を受けません。この違いを自社のプライバシー文書に記載してください。
ステータス・エンドポイント
| GET | https://gdpr.singular.net/api/gdpr/requests/<REQUEST_ID> |
使用法
リクエストIDによって識別される、以前に送信されたリクエストの現在のステータスを返します。
サンプルクエリ
import requests
url = "https://gdpr.singular.net/api/gdpr/requests/"
subject_request_id = "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2"
headers = {"Authorization": "<API KEY>"}
response = requests.get(url+subject_request_id, headers=headers)
print(response.text)
サンプル出力
{
"controller_id": "example_controller_id",
"request_status": "completed",
"expected_completion_time": "2018-06-24T10:00:01Z",
"subject_request_id": "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
"api_version": "0.1.4"
}
キャンセルエンドポイント
| DELETE | https://gdpr.singular.net/gdpr/requests/<REQUEST_ID> |
使用法
以前のリクエストをキャンセルするには、このエンドポイントを使用します。これは、リクエストが "pending" ステータスにある限り可能です。
サンプルクエリ
import requests
url = "https://gdpr.singular.net/api/gdpr/requests/"
subject_request_id = "1c8b23f4-12eb-4fe8-af1c-0f72807dfec2"
headers = {"Authorization": "<API KEY>"}
response = requests.delete(url+subject_request_id, headers=headers)
print(response.text)
サンプル出力
{
"controller_id":"example_controller_id",
"subject_request_id":"1c8b23f4-12eb-4fe8-af1c-0f72807dfec2",
"received_time":"2018-05-25T10:00:01Z",
"api_version":"0.1"
}