Краткий обзор. Эта статья предназначена для клиентов AppsFlyer (рекламодателей или владельцев приложений), которые используют платформу AppsFlyer для регистрации данных об использовании приложения и атрибуции. Владельцы приложений применяют API OpenDSR (API запроса субъекта данных) для соблюдения законов о защите данных, таких как GDPR (Европа), CCPA (Калифорния), LGPD (Бразилия), PDPA (Тайланд).
Примечание юриста: Информация в данном руководстве не может считаться рекомендациями юриста. Информация предоставляется только для ознакомления. Вам необходимо обратиться к юристам и другим профессиональным консультантам, чтобы определить, насколько и как именно к вам применимы GDPR, CCPA и любые другие законы о защите данных. Уровень конфиденциальности ваших данных в AppsFlyer определяется Политикой конфиденциальности AppsFlyer. По любым вопросам, касающимся настоящей Политики конфиденциальности, или для связи с нашим специалистом по защите данных отправьте нам письмо по адресу: privacy@appsflyer.com. Для соблюдения статьи 27 Общего регламента по защите данных (GDPR) представителем AppsFlyer в ЕС является AppsFlyer Germany GmbH, адрес Schönhauser Allee 180, 10119 Берлин, Германия (контактные данные privacy@appsflyer.com; +49-30-166373500).
Законы о защите данных
В данной статье под законами о защите данных понимаются законы, перечисленные в таблице ниже.
Закон | Логотип | Описание |
---|---|---|
GDPR | General Data Protection Regulation (GDPR) — общий регламент ЕС по защите данных; это регламент Европейского союза по правилам обработки персональных данных граждан ЕС. | |
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, инициировала протокол OpenDSR (ранее известный как OpenGDPR).
OpenDSR — это унифицированная среда с открытой структурой, обеспечивающая сотрудничество между компаниями-разработчиками для обеспечения справедливого и прозрачного использования данных клиентов. Эта инициатива позволяет разработчикам без труда реализовывать меры по защите данных клиентов в разных системах при их обработке и хранении.
Подробнее об инициативе OpenDSR.
Определения
Термин DSR | Термин AppsFlyer | Описание |
---|---|---|
Субъект данных | Пользователь приложения или конечный пользователь | Пользователь приложения, о ком собираются данные |
Контролер данных | Владелец приложения или рекламодатель | Владелец приложения определяет цели и способы обработки персональных данных. |
Обработчик данных | AppsFlyer и его партнеры | AppsFlyer и его партнеры, которые обрабатывают персональные данные по поручению контролера данных. |
Требования DSR
В DSR изложены обязательные права субъекта данных, которые должен соблюдать контролер данных. В целях использования АPI эти права превращаются в запросы различных типов. Ниже показано, как AppsFlyer обрабатывает различные типы запросов.
Тип запроса (право) |
Определение в GDPR |
Обработка запроса в AppsFlyer |
---|---|---|
Доступ к данным |
|
Владельцы приложения получают копию обработанных персональных данных пользователя приложения. |
Переносимость данных |
Все персональные данные должны предоставляться пользователю приложения в структурированном, общепринятом и машиночитаемом формате, например в виде СSV-файла. |
Владельцы приложения получают копию обработанных персональных данных пользователя приложения. |
Исправление данных |
Позволяет пользователям приложения вносить исправления в свои данные в случае их неточности или недостоверности. Владельцы приложения обязаны удалить или исправить неточные или неполные данные. |
|
Удаление данных |
Право на удаление данных обязывает владельцев приложения удалить персональные данные пользователя в течение 14 дней с момента получения запроса. |
Данные удалены. |
API AppsFlyer для запросов GDPR
Используйте API для запросов GDPR, как описано в этом разделе, чтобы соблюдать DSR.
- Запрос GDPR: выполнение запроса одного из вышеперечисленных типов: "доступ к данным", "переносимость данных", "удаление данных" или "исправление данных".
- Запрос состояния — получение информации о текущем состоянии запроса GDPR.
- Запрос на обнаружение — получение информации о поддерживаемой версии API и формате данных.
- Отмена: Отмените запрос GDPR на этапе pending (в ожидании).
Владельцы приложений обязаны внести изменения в графический интерфейс приложения, чтобы пользователи приложения имели возможность отправлять такие запросы. Обратите внимание, что запросы GDPR рассматриваются по отдельным пользователям.
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-часового периода ожидания. Таким образом, общий срок выполнения запроса составляет 16 дней с момента подачи запроса в AppsFlyer владельцем приложения
Формат запроса GDPR
В API GDPR для отправки запросов используется HTTP-команда POST в конечную точку:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests
Для авторизации API используйте тот же токен API V2, что и для Pull API. Пользователь-администратор может получить токен со страницы токена API на дэшборде Добавьте токен в заголовок запроса следующим образом: 'Authorization': 'Bearer %AuthTokenV2%'.
Параметры
Имя свойства | Обязательно/Не обязательно | Описание |
---|---|---|
subject_request_id | Да | Строка UUID v4. Создается контролером при отправке запроса обработчику. Затем ее можно использоваться для проверки состояния, обновления или отмены запроса. |
subject_request_type | Да |
Строковое значение, определяющее тип запроса GDPR. Допустимые значения:
|
subject_identities | Да |
|
submitted_time | Да |
|
property_id | Да |
Строка, определяющая мобильное приложение, к которому относится этот запрос Пример:
|
api_version | Нет | Строка версии, определяющая нужную версию API запросов GDPR. |
status_callback_urls | Нет, но рекомендуется |
|
platform |
Нет |
Значение — одна из поддерживаемых DSR-платформ: |
Да |
Для запроса платформы CTV, ПК или консоли включите любую из приведенных ниже платформ: |
Объекты Subject_identities
Тип объекта | Обязательно/Не обязательно | Описание |
---|---|---|
identity_type | Да |
|
identity_value | Да |
|
identity_format | Да |
|
Пример запроса GDPR на удаление данных
Пример запроса на удаление данных для платформ android
, ios
, web
, windowsphone
:
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"
]
}'
Пример запроса на удаление данных для платформ CTV
, ПК
и консоли
:
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. Запрос состояния
Для каждого отправленного запроса GDPR можно впоследствии отправить запрос о его состоянии, указав параметр subject_request_id
. Возможны четыре варианта состояния:
- pending (Ожидание) — получен правильный запрос, который в данное время находится в очереди.
- in_progress (Выполняется) — запрос в данное время находится в обработке.
- completed (Выполнен) — запрос выполнен.
- cancelled (Отменен) — запрос отменен.
Формат запроса состояния
Для отправки запросов состояния используется HTTP-команда GET в следующую конечную точку:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
Пример ответа на запрос состояния
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",
}
Постбэки состояния
Как описано выше в разделе Процедура выполнения запросов GDPR, при изменении состояния запроса GDPR с pending на in_progress и completed AppsFlyer отправляет постбэк GDPR в запрашивающие конечные точки, которые указаны в свойстве status_callback_urls.
Пример постбэка о статусе:
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"
}
Проверка постбэка
Для проверки подлинности входящих постбэков:
- Создайте список всех доменов процессора, которым вы разрешаете выполнять обратные вызовы.
-
Если значение заголовка
X-OpenGDPR-Processor-Domain
находится в вашем разрешенном списке, получите сертификат.- URL сертификата — это значение
processor_certificate
в теле ответа/discovery
. - Вы также можете получить сертификат непосредственно от конечной точки AppsFlyer, используя токен API V2 в качестве токена предъявителя в заголовке авторизации:
GET https://hq1.appsflyer.com/api/gdpr/v1/certificate.
- URL сертификата — это значение
-
Проверьте сертификат с помощью библиотеки, чтобы убедиться, что сертификат:
- Выдан уполномоченным органом.
- Выдан той же строке, что и в значении заголовка
X-OpenGDPR-Processor-Domain
. - Срок его действия не истек.
- Как только вы убедитесь, что сертификат действителен, используйте его для проверки заголовка
X-OpenGDPR-Signature
в необработанном теле запроса. AppsFlyer использует SHA256 RSA в качестве алгоритма подписания. -
Получите ответ в заголовке статуса:
202 Accepted
при успешной проверке.401 Unauthorized
, если подпись не прошла проверку или домен процессора отсутствует в вашем разрешенном списке.
3. Отчет по запросу
После выполнения запроса типа доступ или переносимость можно с помощью HTTP-команды GET загрузить отчет в следующую конечную точку:
https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]
Сформированный отчет доступен в течение 14 дней .
4. Процес подачи запроса на обнаружение
Для получения сведений о форматах, которые поддерживает AppsFlyer, можно отправить запрос на обнаружение с помощью HTTP-команды GET в следующую конечную точку:
https://hq1.appsflyer.com/api/gdpr/v1/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. Запрос на отмену
Запрос GDPR можно отменить, указав его параметр subject_request_id
, однако это возможно только на этапе pending (ожидание).
Для этого отправьте HTTP-команду DELETE с параметром subject_request_id
:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
Ответ на запрос об отмене
При получении запроса на отмену AppsFlyer возвращает HTTP-ответ с кодом состояния 202 и ряд других параметров.
После отмены запроса AppsFlyer отправляет постбэк со статусом cancelled (отменен).
6. Тестовый API запросов GDPR
Этот API AppsFlyer представляет собой тестовый API запросов GDPR.
Схема работы
Тестовый API работает следующим образом:
1. Сразу после получения запроса GDPR он переводится в состояние "Pending" (ожидание). Для целей тестирования состояние меняется каждые 30 секунд.
2. Если запрос GDPR содержит конечную точку для постбэка состояния, первый постбэк отправляется сразу же после получения запроса, а затем отправляются еще два постбэка состояния с интервалом 30 секунд.
Конечная точка тестирования запросов 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
Примечания.
- Действительный токен API V2 необходимо вставить в заголовок запроса следующим образом:
'Authorization': 'Bearer %AuthTokenV2%'.
- Идентификатор приложения, указанный в свойстве "property_id", должен принадлежать владельцу аккаунта (в соответствии с токеном API).
7. Журналы запросов
Пользователь с правами администратора может получить доступ к запросам GDPR, отправленным из раздела журналов дэшборда.
Кроме того, на этой панели управления можно загрузить отчет о выполненных запросах типа "доступ" и "переносимость".
Доступ к разделу журналов на панели управления:
- Откройте главную страницу панели управления и нажмите на свое имя пользователя.
- Выберите Logs, после чего откроется показанное ниже окно:
8. Коды возврата для API GDPR и сообщения об ошибках
В этом разделе приведены HTTP-коды возврата для API GDPR и сообщения об ошибках.
Коды возврата для API GDPR
Код | Описание |
---|---|
201 | Создано |
202 | Получен запрос на отмену |
400 |
Неверный запрос. В сообщении содержится код ошибки и текст сообщения, как указано в таблице ниже. |
HTTP-код возврата 400 - неверный запрос
В сообщениях с кодом 400 содержится JSON, код ошибки и текст сообщения об ошибке.
{ "error":
{ "code":400, "af_gdpr_code": "%AF error code%", "message":"%error message text%"
}
}
Возможные сообщения с кодом 400 — неверный запрос
Код ошибки |
Описание ошибки (текст сообщения) |
---|---|
e111 | Rate limit exceeded (Превышен лимит на предоставление данных) |
e211 | Unable to cancel request with invalid status (Невозможно отменить запрос с недействительным статусом) |
e212 | Request not permitted. (Запрос не разрешен.) Erasure is in progress for the identifier. (Идет удаление данных идентификатора). |
e213 | Request already exists (Запрос уже существует) |
e214 | Request not found (Запрос не найден) |
e311 | Invalid request content-type (Неверный тип контента запроса) |
e312 | Неверная версия API |
e313 | Invalid subject_request_id (Неверный параметр subject_request_id) |
e314 | Invalid submitted_time format (Неверный формат параметра submitted_time) |
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 (Платформа приложения не соответствует типам идентификации) |
e320 | Invalid identity_type (Неверный параметр identity_type) |
e321 | LAT users are not supported via api (Пользователи LAT не поддерживаются по АPI) |
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 | Internal problem, wait 60 minutes and try again. (Внутренняя проблема, подождите 60 минут и повторите попытку.) If the problem persists contact AppsFlyer support. (Если проблема не устранена, обратитесь в службу поддержки AppsFlyer.) support@AppsFlyer.com |
Ограничения и особенности
- Ограничение запросов: 80 запросов GDPR каждые 2 минуты на уровне аккаунта (что составляет 2400 запросов в час и 57600 в день). Запросы, превышающие этот лимит, будут отклонены.
- В пользовательском интерфейсе отображается до 200 случайно выбранных запросов.
- Проверка статуса запроса, сделанного более 60 дней назад, возвращает «request not found» (запрос не найден).