OpenDSR API

En resumen: De un vistazo: Este artículo es para los clientes de AppsFlyer, a menudo denominados anunciantes o propietarios de aplicaciones, que usan la plataforma para registrar la atribución y el uso de aplicaciones. Los propietarios de aplicaciones implementan la API OpenDSR (Solicitud de Sujeto de Datos) para cumplir con las leyes de protección de datos aplicables como el GDPR (Europa), CCPA (California), LGPD (Brasil), PDPA (Tailandia) y PIPA (Corea).

Una palabra de nuestros abogados: Nada de lo que se indica aquí es asesoramiento legal. Se proporciona para tu información y comodidad. Deberías trabajar en estrecha colaboración con asesores legales y otros profesionales para determinar exactamente cómo el GDPR, CCPA o cualquier otra ley puede o no aplicarse a ti. La relación de privacidad entre tú y AppsFlyer se rige por la Política de privacidad de servicios de AppsFlyer. Para preguntas relacionadas con esta Política de Privacidad de Servicios o para contactar con nuestro responsable de protección de datos, envía un correo a: privacy@appsflyer.com. Para efectos del artículo 27 del Reglamento General de Protección de Datos, el representante dentro de la UE de AppsFlyer es AppsFlyer Germany GmbH, Schönhauser Allee 180, 10119 Berlín, Alemania (contacto privacy@appsflyer.com; +49-30-166373500).

Regulaciones de privacidad

En este artículo, las referencias a las normas de privacidad incluyen las normas enumeradas en la tabla que figura a continuación.

Norma Logotipo Descripción
GDPR GDPR.png El Reglamento General de Protección de Datos es el conjunto de normas de la UE en materia de protección de datos y privacidad de los ciudadanos de la Unión Europea.
CCPA CCPA.png Ley de Privacidad del Consumidor de California  
LGPD LGPD.png Lei Geral de Proteção de Dados
PDPA 6137_Privacy_Shield_Thailand-01.png Ley de protección de datos personales

Los términos "regulaciones de privacidad", "RGPD", "CCPA", "LGPD" y "PDPA" se usan indistintamente en este artículo.  

La iniciativa OpenDSR

Para atender y administrar las solicitudes de los sujetos de datos de acuerdo con las regulaciones de privacidad, AppsFlyer, junto con mParticle, Amplitude y Braze, iniciaron el protocolo OpenDSR (anteriormente conocido como OpenGDPR).

OpenDSR es un marco de código abierto y unificado que facilita la cooperación entre empresas de tecnología para el uso justo y transparente de los datos de consumidores. Permite a los proveedores tomar acciones de privacidad de datos en múltiples sistemas que procesan y almacenan datos de clientes.

Aprender más sobre la iniciativa OpenDSR.

Definiciones

Término DSR Término de AppsFlyer Descripción
Sujeto de datos Usuario de la aplicación o usuario final El usuario de la aplicación sobre el que se recopilan los datos
Controlador de datos Propietario de la aplicación o anunciante El propietario de la aplicación determina el propósito y los medios por los cuales se procesan los datos personales.  
Procesador de datos AppsFlyer y sus partners AppsFlyer y sus socios procesan datos personales en nombre del controlador de datos.

Requisitos de DSR

En el DSR se detallan los derechos obligatorios del sujeto de datos, que el controlador de datos debe cumplir. Para fines de API, estos derechos se traducen en tipos de solicitud. A continuación se detalla cómo AppsFlyer procesa los diferentes tipos de solicitud.  

Tipo de solicitud

(Derecho)

Definición según el GDPR Procesamiento de la solicitud por parte de AppsFlyer  
Acceso
  • Si lo solicitan, los usuarios de la aplicación tienen derecho a saber si, por qué y durante cuánto tiempo el propietario de la aplicación procesará sus datos.
  • Si los datos se comparten con terceros, como AppsFlyer, los usuarios de la aplicación tienen derecho a saber quiénes son esos terceros.
  • También tienen derecho a saber qué categorías de datos se procesan.
  • Si hay procesamiento automatizado que pudiera afectarlos significativamente.
Los propietarios de la aplicación reciben una copia de los datos personales procesados de los usuarios de la aplicación.
 Portabilidad El usuario de la aplicación debe recibir todos sus datos personales en un formato estructurado, comúnmente utilizado y legible por máquina, como un archivo CSV. El propietario de la aplicación recibe una copia de los datos personales procesados del usuario de la aplicación.
Rectificación Permite a los usuarios de la aplicación corregir sus datos si ven que son inexactos o falsos. Los propietarios de aplicaciones están obligados a eliminar o corregir los datos inexactos o incompletos.
  • AppsFlyer elimina los datos del usuario de la aplicación registrados antes de la fecha de la solicitud de rectificación.
  • Los datos recibidos a partir de entonces son registrados por AppsFlyer.
Supresión El derecho de supresión obliga a los propietarios de aplicaciones a eliminar los datos personales dentro de un plazo de 10 días después de la recepción de la solicitud. Los datos se eliminan

API de solicitudes GDPR de AppsFlyer

Usa la API de solicitudes de RGPD tal como se describe en esta sección para implementar el cumplimiento normativo del DSR.  

  • Solicitud de RGPD Solicitud de RGPD: Realizar uno de los tipos de solicitud anteriores: acceso, portabilidad, supresión, rectificación.
  • 2. Solicitud de estado Consulta el estado actual de una solicitud de GDPR.
  • 4. Solicitud de descubrimiento Consulta sobre la versión de API soportada y el formato de datos.
  • Cancelación Cancelar una solicitud de GDPR durante su fase pendiente.

Los propietarios de aplicaciones deben implementar cambios en la interfaz de usuario de su aplicación, de modo que los usuarios de la aplicación puedan enviar solicitudes. Debe tenerse en cuenta que las solicitudes de RGPD se envían de a un usuario por vez.

1. Solicitud de RGPD

Flujo de solicitudes GDPR

Los tipos de solicitud de RGPD, de acceso, portabilidad, supresión y rectificación, tienen el mismo flujo:

  1. El usuario de la aplicación envía una solicitud.
  2. El propietario de la aplicación genera la solicitud de RGPD (ver más abajo) y la envía a AppsFlyer.
  3. AppsFlyer  recibe la solicitud y responde con un "201 OK" para las solicitudes válidas.
  4. Para Acceso y Portabilidad: la solicitud se cumple de inmediato.
    Para la eliminación y rectificación:
    • Durante las siguientes 48 horas, la solicitud se pone en cola y su estado es pending (pendiente). El usuario de la aplicación puede cancelar la solicitud.  
    • Después de 48 horas, el estado de la solicitud cambia a in_progress (en curso). AppsFlyer envía un postback de cambio de estado. En este punto,no se puede cancelar la solicitud.
    • Dentro de los 10 días (revisa la nota a continuación), AppsFlyer cumple con la solicitud y el estado de la solicitud se actualiza a completed (finalizada). AppsFlyer envía un postback de cambio de estado.

      • En el caso de una solicitud de supresión o rectificación, los datos del usuario de la aplicación se eliminan.
      • En el caso de portabilidad o acceso, se puede acceder a los datos del Usuario de la aplicación en el panel de control de AppsFlyer bajo RGPD o a través de la API de solicitud (ver más abajo).

      Nota: Este período de 10 días comienza cuando el Propietario de la Aplicación envía su solicitud. Después de 48 horas, el estado de la solicitud cambia a En Progreso y se completará en un adicional de 8 días, totalizando 10 días.

Formato de solicitudes GDPR

Se puede presentar una API de solicitudes GDPR por medio de HTTP POST al punto de conexión:

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests

Para la autorización de API, usa el mismo token de API V2 que para Pull API. Un usuario administrador puede recuperar el token desde la página del token de API en el panel de control. Agrega el token en el encabezado de la solicitud de la siguiente manera:

Parámetros

Nombre de la propiedad Obligatorio Descripción
subject_request_id Secuencia UUID v4. Generada por el controlador al momento del envío de la solicitud al procesador. Luego puede utilizarse para controlar el estado de la solicitud, actualizarla o cancelarla.
subject_request_type Valor de la secuencia que representa el tipo de solicitud GDPR.  Valores admitidos:
  • erasure
  • portability
  • Acceso:
  • rectification
subject_identities
  • Una matriz de objetos de identidad que definen la identidad del solicitante (ver más abajo).
  • Cada solicitud puede contener solo una identidad de sujeto.
submitted_time
  • Secuencia de fecha RFC 3339 del momento de la solicitud original enviada por el sujeto de datos
  • Marcas de tiempo en UTC
property_id

Cadena que representa la aplicación móvil con la cual está relacionada esta solicitud.

Ejemplos:

  • iOS: id123456789 
  • Android: com.ejemplo, com.nombre.publisher  
  • Android fuera de la tienda: com.nombre.publisher-canal
    Nota En algunos casos, los propietarios de aplicaciones registran la atribución fuera de la tienda mediante el nombre de Android Google Play. En estos casos, usa el nombre normal de la aplicación tal como se muestra en el panel de control.
api_version No Secuencia de versión que representa la versión deseada de la API de solicitudes GDPR.
status_callback_urls No, pero recomendado
  • Matriz de hasta 3 puntos de conexión para que las devoluciones de llamadas de estado se envíen a los siguientes cambios de estado de solicitud.
  • Solo se admiten puntos de conexión HTTPS.
  • Se rechazan las URL no válidas.
plataforma

 
No El valor es una de las plataformas DSR compatibles:
android, ios, web, windowsphone

Para una solicitud de plataforma de CTV, PC o Consola, incluye cualquiera de las siguientes plataformas:  

 nativepc 
vidaa 
quest

Objetos subject_identities

Tipo de objeto Obligatorio Descripción
identity_type
  • El tipo de identidad en formato de cadena para , , , las plataformas son cualquiera de las siguientes: 
    • ios_advertising_id
    • android_advertising_id
    • fire_advertising_id
    • microsoft_advertising_id
    • appsflyer_id
    • customer_user_id (CUID) 
  • Para , , y plataformas solo lo siguiente: 
    • appsflyer_id 
    • customer_user_id (CUID)
  • Ejemplo: android_advertising_id

    ¡Importante!

    Para usar CUID a través de la API de OpenDSR, debes enviar el CUID con / dentro de los eventos en la aplicación usando : o

identity_value
  • Formato: Cadena
  • Ejemplo: "a7551968-d5d6-44b2-9831-815ac9017798"
identity_format
  • El método utilizado para codificar el identity_value: rawrawraw es el único admitido:
  • Ejemplo: "raw"

Ejemplo: Solicitud de eliminación de GDPR 

Ejemplo de una solicitud de eliminación para las plataformas: , , ,

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"
 ]
}'
 

Ejemplo de una solicitud de eliminación para, , y plataformas:

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"
 ]
}'

 

Ejemplo de código de solicitud de borrado 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. 2. Solicitud de estado

Cada solicitud GDPR que se presente puede consultarse posteriormente para saber su estado. Para esto, se debe especificar el subject_request_idsubject_request_idsubject_request_id. Existen cuatro tipos de estado admitidos:

  1. pending (Pendiente): Se recibió una solicitud correcta y en este momento se encuentra en la cola.
  2. in_progress (En curso): En este momento se está procesando una solicitud.
  3. completed (Finalizada): Se cumplió con una solicitud.
  4. canceled (Cancelada): Se canceló una solicitud.

Formato de solicitud de estado

Se puede presentar una solicitud de estado por medio de HTTP GET al punto de conexión

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>

Ejemplo de respuesta de estado

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",
}

Postbacks de estado

Tal como se describiera anteriormente en la sección Flujo de solicitudes GDPR, cuando cambia el estado de una solicitud GDPR, de pending (pendiente) a in_progress (en curso) y a completed (finalizada), AppsFlyer envía un postback GDPR a los puntos de conexión de la solicitud, especificados con la propiedad status_callback_urls.

Ejemplo de postback de estado:

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"
}

Validar postback

Para validar la autenticidad de los postbacks entrantes:

  1. Crea una lista de permitidos de todos los dominios de procesador a los que permitas realizar devoluciones de llamada.
  2. Si el valor del encabezado para está en tu lista de permitidos, obtén el certificado.
    • La URL del certificado es el valor de en el cuerpo de la respuesta.
    • También puedes obtener el certificado directamente desde el endpoint de AppsFlyer utilizando el token de API V2 como un token de portador en el encabezado de autorización:
  3. Valida el certificado usando una biblioteca para confirmar que el certificado:
    1. ha sido emitido por una autoridad de confianza.
    2. Se emite a la misma cadena proporcionada en el valor del encabezado.
    3. no ha expirado.
  4. Una vez que confirmes que el certificado es válido, utilízalo para validar el encabezado X-OpenDSR-Signature contra el cuerpo de la solicitud sin procesar. AppsFlyer utiliza SHA256 RSA como algoritmo de firma.
  5. Obtén una respuesta en el encabezado de estado:
    1. si la validación es exitosa.
    2. 401 Unauthorized401 Unauthorized si la firma no se valida o el dominio del procesador no está en tu lista de permitidos.

3. 3. Solicitud de reporte

Una vez que se haya completado una Solicitud de acceso o Solicitud de Portabilidad, puedes descargar el reporte a través de HTTP GET al siguiente punto de conexión:

https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]

El reporte generado estará disponible durante 14 días a partir de la finalización.

4. 4. Proceso de solicitud de descubrimiento

Para conocer los formatos admitidos por AppsFlyer, se puede enviar una solicitud de descubrimiento por medio de HTTP GET al punto de conexión

https://hq1.appsflyer.com/api/gdpr/v1/discovery

Ejemplo de respuesta de descubrimiento

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. Solicitud de cancelación

Es posible cancelar una solicitud de GDPR, basada en su , pero solo durante la fase pendiente.

Para enviar un HTTP DELETE con :

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>

Respuesta de cancelación

Cuando se recibe una solicitud de cancelación GDPR, AppsFlyer devuelve una respuesta de HTTP con código de estado 202 y varios parámetros más. 

Una vez que se cancela la solicitud, AppsFlyer envía un postback con el estado cancelled (cancelada).

6. 6. API de prueba de solicitudes GDPR

Se trata de una API de prueba de AppsFlyer correspondiente a la API de solicitudes RGPD de AppsFlyer.

¿Cómo funciona?

La API de prueba funciona de la siguiente manera:

1. 1. Una vez presentada una solicitud GDPR, inmediatamente se le asigna el estado "Pending" (pendiente). A los fines de la prueba, el estado cambia cada 30 segundos.

2. 30. Si se insertó un punto de conexión para un postback de estado en la solicitud GDPR, se envía un primer postback inmediatamente después de la solicitud, y dos postbacks de estado más con intervalos de 30 segundos.

Punto de conexión de prueba de solicitud GDPR: POST

https://hq1.appsflyer.com/api/gdpr/v1/stub

Punto de conexión de prueba de solicitud de estado: GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

Punto de conexión de prueba de solicitud de descubrimiento: GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/discovery

Punto de conexión de prueba de solicitud de cancelación: ELIMINAR

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

Punto de conexión de prueba de certificado: GET GET

https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate

Punto de conexión de prueba de reportes de acceso/portabilidad: GET GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/download/:requestId

 Notas

  • Se debe insertar un token de API V2 válido en el encabezado de la solicitud de la siguiente manera:
  • En la propiedad "property_id", el ID de la aplicación debe corresponder al propietario de la cuenta (de acuerdo con el token de la API).

7. Registros de solicitudes

Un usuario administrador puede acceder a las solicitudes de RGPD enviadas en el Panel de control de registros.

En el caso de las solicitudes de acceso y portabilidad finalizadas, también es posible descargar el reporte desde este panel de control.

Para acceder al panel de control de registros:

  1. En la barra superior, abra el menú de la cuenta (menú desplegable de direcciones de correo electrónico) > Administración de usuarios.
  2. Se abrirá la siguiente ventana:

GDPR_Table.png

8. 8. Mensajes de error y códigos de retorno de la API de RGPD

Los mensajes de error y códigos de retorno HTTP de la API de RGPD se detallan en esta sección.  

Códigos de retorno de la API de RGPD

Código de respuesta Descripción
201 Creada
202 Solicitud de cancelación recibida
400 Solicitud incorrecta. El cuerpo contiene el mensaje y código de error tal como se enumeran en la tabla a continuación.

Código de retorno HTTP 400: solicitud incorrecta

Los mensajes que tienen el código de retorno 400 contienen un JSON con el mensaje y código de error.

{ "error": { "code":400, "af_gdpr_code": "%AF error code%", "message":"%error message text%" } }

Mensajes de solicitud incorrectos, código de retorno 400

Código del error Descripción del error (mensaje)
e111 Excede el límite de velocidad
e211 No se puede cancelar la solicitud con un estado inválido
e212 Solicitud no permitida. La eliminación está en curso para el identificador.
e213 La solicitud ya existe
e214 No se encontró la solicitud
e311 Tipo de contenido de solicitud inválido
e312 Versión de API inválida
e313 subject_request_id inválido
e314 Formato de submitted_time inválido
e315 Longitud de status_callback_url inválida
e316 Formato de status_callback_url inválido
e317 Formato de app_id inválido
e318 identity_type inválido
e319 La plataforma de aplicación no coincide con los tipos de identidad
e320 identity_type inválido
e321 Los usuarios de LAT no son compatibles a través de la API
e322 subject_request_type inválido
e323 Formato de subject_identities inválido
e324 Longitud de subject_identities inválida
e325 Valor subject_identities inválido
e411 AppID es incorrecto o no pertenece a tu cuenta
e412 No hay permisos para cancelar la solicitud de eliminación
e413 No hay permisos para ver la solicitud
e511 Problema interno, espera 60 minutos e intenta nuevamente. Si el problema persiste, contacta con el soporte de AppsFlyer. support@AppsFlyer.com 

Rasgos y limitaciones

  • Límite de tasa de la API de OpenDSR: 350 solicitudes por minuto Superar este límite resultará en un error, lo que requerirá que la solicitud sea reenviada. Mantenerse dentro de este límite de tasa permite hasta 504,000 solicitudes por día.
  • Al verificar el estado de una solicitud de hace más de 60 días, se devuelve "solicitud no encontrada".