OpenDSR API

Краткий обзор: Эта статья предназначена для клиентов AppsFlyer (рекламодателей или владельцев приложений), которые используют платформу AppsFlyer для регистрации данных об использовании приложения и атрибуции. Владельцы приложений реализуют API OpenDSR (Запрос субъектов данных), чтобы соответствовать соответствующим правовым нормам о защите данных, таким как GDPR (Европа), CCPA (Калифорния), LGPD (Бразилия), PDPA (Таиланд) и PIPA (Корея).

Важное юридическое примечание: информация в данной статье не может считаться рекомендациями юриста. Данная информация предоставляется только для ознакомления. Чтобы точно определить, необходимо ли вам соблюдать требования GDPR, CCPA или иных правовых норм, вам необходимо проконсультироваться с юристом или иным специалистом. Уровень конфиденциальности ваших данных в AppsFlyer определяется Политикой конфиденциальности AppsFlyer.    По любым вопросам, касающимся данной Политики конфиденциальности, или для связи с нашим специалистом по защите данных отправьте нам письмо по адресу privacy@appsflyer.com. Представителем AppsFlyer в ЕС по вопросам соблюдения статьи 27 Общего регламента по защите данных является AppsFlyer Germany GmbH, Schönhauser Allee 180, 10119 Berlin, Germany (контактные данные privacy@appsflyer.com; +49-30-166373500).

Законы о защите данных

В данной статье под законами о защите данных понимаются законы, перечисленные в таблице ниже.

Закон Логотип Описание
GDPR GDPR.png General Data Protection Regulation (GDPR) – общий регламент ЕС по защите данных; это регламент Европейского союза по правилам обработки персональных данных граждан ЕС.
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, инициировала протокол OpenDSR (ранее известный как OpenGDPR).

OpenDSR – это платформа с открытым исходным кодом, обеспечивающая сотрудничество между компаниями-разработчиками для обеспечения справедливого и прозрачного использования данных клиентов. Эта инициатива позволяет разработчикам без труда реализовывать меры по защите данных клиентов в разных системах при их обработке и хранении.

Подробнее об инициативе OpenDSR.

Определения

Термин DSR Термин AppsFlyer Описание
Субъект данных Пользователь приложения или конечный пользователь Пользователь приложения, о ком собираются данные
Контролёр данных Владелец приложения или рекламодатель Владелец приложения определяет цели и способы обработки персональных данных.  
Обработчик данных Компания AppsFlyer и её партнёры Компания AppsFlyer и её партнёры, которые обрабатывают персональные данные по поручению контролёра данных.

Требования DSR

В DSR изложены обязательные права субъекта данных, которые должен соблюдать контролёр данных. В целях использования АPI эти права превращаются в запросы различных типов. Ниже показано, как AppsFlyer обрабатывает различные типы запросов.  

Тип запроса

(право)

Определение в GDPR Обработка запроса в AppsFlyer  
Доступ к данным
  • Пользователи приложения имеют право знать, будет ли владелец приложения обрабатывать их данные, с какой целью и в течение какого срока.
  • Если данные предоставляются третьим лицам, например, AppsFlyer, пользователи приложения имеют право знать, кто эти третьи лица.
  • Право на получение сведений об обрабатываемых категориях данных.
  • Право на получение сведений о наличии автоматических средств обработки, которые могут оказать существенное воздействие на данные.
Владельцы приложения получают копию обработанных персональных данных пользователя приложения.
 Переносимость данных Все персональные данные должны предоставляться пользователю приложения в структурированном, общепринятом и машиночитаемом формате, например в виде СSV-файла. Владельцы приложения получают копию обработанных персональных данных пользователя приложения.
Исправление данных Позволяет пользователям приложения вносить исправления в свои данные в случае их неточности или недостоверности. Владельцы приложения обязаны удалить или исправить неточные или неполные данные.
  • AppsFlyer удаляет данные пользователя приложения, записанные до даты запроса на исправление.
  • Данные, полученные после запроса, регистрируются.
Удаление данных Право на удаление данных обязывает владельцев приложения удалить персональные данные пользователя в течение 10 дней с момента получения запроса. Данные удалены.

API AppsFlyer для запросов GDPR

Используйте API для запросов GDPR, как описано в этом разделе, чтобы соблюдать DSR. 

  • Запрос GDPR выполнение запроса одного из вышеперечисленных типов: «доступ к данным», «переносимость данных», «удаление данных» или «исправление данных».
  • Запрос о статусе: запрос текущего статуса запроса по GDPR.
  • Запрос на обнаружение: запрос о поддерживаемой версии API и формате данных.
  • Отмена: отмена запроса GDPR на этапе ожидания.

Владельцы приложений обязаны внести изменения в пользовательский интерфейс приложения, чтобы пользователи приложения имели возможность отправлять такие запросы. Обратите внимание, что запросы GDPR рассматриваются по отдельным пользователям.

1. Запрос GDPR

Процедура выполнения запросов GDPR

Процедура выполнения запросов GDPR всех типов (доступ к данным, переносимость данных, удаление или исправление данных) одинакова:

  1. Пользователь приложения отправляет запрос.
  2. Владелец приложения создаёт запрос GDPR (см. ниже) и отправляет его в AppsFlyer.
  3. AppsFlyer получает запрос и, если запрос правильный, отправляет ответ «201 OK».
  4. По вопросам, связанным с доступом к данным и переносимостью данных: Запросы выполняются в течение 8 дней.
    Примечание: Этот 8-дневный период начинается, когда Владелец приложения подаёт свой запрос. Статус запроса изменяется с «Ожидание» на «В процессе» и будет выполнен в течение дополнительных 6 дней, всего 8 дней.
    По удалению и исправлению:
    • Запрос помещается в очередь и в течение следующих 48 часов имеет статус «Ожидание». На этом этапе пользователь приложения может отменить запрос.  
    • Через 48 часов статус запроса меняется на «В процессе» (in_progress). AppsFlyer отправляет постбэк изменения статуса. На этом этапе запрос уже нельзя отменить.
    • В течение 10 дней (см. примечание ниже) AppsFlyer выполняет запрос, и статус запроса меняется на «Выполнен» . AppsFlyer отправляет постбэк изменения статуса.

      • Если пользователь приложения запросил удаление или исправление данных, его данные удаляются.
      • Если поступил запрос на переносимость данных или доступ к данным, данные пользователя доступны на дэшборде AppsFlyer в разделе GDPR или через API запросов (см. ниже).

      Примечание. Этот 10-дневный период начинается с момента, когда владелец приложения подаёт свой запрос. Через 48 часов статус запроса изменится на «В процессе», и он будет выполнен в течение дополнительных 8 дней, в общей сложности 10 дней.

Формат запроса 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 Да
  • Строка даты в формате RFC 3339, определяющая время создания исходного запроса субъектом данных
  • Метки времени по UTC
property_id Да

Строка, определяющая мобильное приложение, к которому относится этот запрос

Примеры:

  • iOS: id123456789 
  • Android: com.пример, com.название.издателя 
  • Внемагазинные приложения на Android: com.название.издателя-канал
    Примечание В некоторых случаях владельцы приложений регистрируют атрибуцию внемагазинных приложений, используя название Google Play для Android. В таких случаях используйте обычное название приложения, как оно указано на дэшборде.
api_version Нет Строка версии, определяющая нужную версию API запросов GDPR.
status_callback_urls Нет, но рекомендуется
  • Массив конечных точек до 3 шт. для обратных вызовов со статусами, которые передаются для изменения статуса запроса.
  • Поддерживаются только конечные точки HTTPS.
  • Недействительные URL-адреса отклоняются.
platform

 
Нет Значение является одной из поддерживаемых платформ DSR:
android, ios, web, windowsphone
Да

Для запроса платформы CTV, ПК или консоли включите любую из приведённых ниже платформ:  

 nativepcplaystationrokusteamwebos
vidaa,tizensmartcastchatgptbattlenet
questswitchxboxepic

Объекты Subject_identities

Тип объекта Обязательно? Описание
identity_type Да
  • Тип идентификатора в строковом формате для платформ android, ios, web, windowsphone: любой из приведённых ниже. 
    • ios_advertising_id
    • android_advertising_id
    • fire_advertising_id
    • microsoft_advertising_id
    • appsflyer_id
    • customer_user_id (CUID) 
  • Для платформ CTV, PC, и Console только следующее: 
    • appsflyer_id 
    • customer_user_id (CUID)
  • Пример: android_advertising_id

    Важно!

    Чтобы использовать CUID через OpenDSR API, вы должны отправить CUID с idfa / appsflyer_id внутри событий приложения, используя event_name: Login - Complete или Registration - Account created

identity_value Да
  • Формат: строка
  • Пример: «a7551968-d5d6-44b2-9831-815ac9017798»
identity_format Да
  • Метод кодирования identity_value: допустим только raw:
  • Пример: «raw»

Пример: запрос 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, PC, и Console

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 типа «удаление»

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. Запрос статуса

Для каждого отправленного запроса GDPR можно впоследствии отправить запрос о его статусе, указав параметр subject_request_id. Возможны четыре возможных статуса:

  1. pending (Ожидание) – получен правильный запрос, который в данное время находится в очереди.
  2. in_progress (Выполняется) – запрос в данное время находится в обработке.
  3. completed (Выполнен) – запрос выполнен.
  4. 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"
}

Валидация постбэка

Для валидации входящих постбэков:

  1. Создайте список всех доменов процессора, которым вы разрешаете выполнять обратные вызовы.
  2. Если значение заголовка X-OpenGDPR-Processor-Domain находится в вашем разрешённом списке, получите сертификат.
    • URL сертификата – это значение processor_certificate в теле ответа /discovery.
    • Вы также можете получить сертификат непосредственно от конечной точки AppsFlyer, используя токен API V2 в качестве токена предъявителя в заголовке авторизации: GET https://hq1.appsflyer.com/api/gdpr/v1/certificate.
  3. Проверьте сертификат с помощью библиотеки, чтобы убедиться, что сертификат:
    1. выдан уполномоченным органом;
    2. выдан той же строке, что и в значении заголовка X-OpenGDPR-Processor-Domain;
    3. срок сертификата не истёк.
  4. Как только вы убедитесь, что сертификат действителен, используйте его для проверки заголовка X-OpenGDPR-Signature в необработанном теле запроса. AppsFlyer использует SHA256 RSA в качестве алгоритма подписания.
  5. Получите ответ в заголовке статуса:
    1. 202 Accepted при успешной валидации;
    2. 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, отправленным из раздела журналов дэшборда.

Кроме того, на этом дэшборде можно загрузить отчёт о выполненных запросах типа «доступ» и «переносимость».

Доступ к разделу журналов на дэшборде:

  1. На верхней панели откройте меню учётной записи (выпадающий список адресов электронной почты) > журнал E-GDPR.
  2. Откроется следующее окно:

GDPR_Table.png

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 – неверный запрос

Код ошибки Описание ошибки (текст сообщения)
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 (Платформа приложения не соответствует типам идентификации)
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)
e326 Invalid JSON format – request body could not be parsed (Неверный формат JSON – парсинг тела запроса невозможен) – используется, когда тело запроса содержит неправильно сформированный JSON
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. support@AppsFlyer.com (Если проблема не устранена, обратитесь в службу поддержки AppsFlyer: support@AppsFlyer.com)  

Характеристики и ограничения

  • Ограничение скорости API OpenDSR: 350 запросов в минуту. Превышение этого лимита приведёт к ошибке, требующей повторной отправки запроса. При соблюдении этого лимита, можно отправлять до 504 000 запросов в день.
  • Проверка статуса запроса, сделанного более 60 дней назад, возвращает «request not found» (запрос не найден).