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 (Data Subject Request) 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 nota de nuestros abogados: Nada de lo indicado aquí constituye asesoramiento jurídico. 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 |
|---|---|---|
| RGPD | 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 | Ley de Privacidad del Consumidor de California | |
| LGPD | Lei Geral de Proteção de Dados | |
| PDPA | Ley de Protección de Datos Personales |
Los términos "normativas de privacidad", "GDPR", "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 framework 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.
Saber 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 partners 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 |
|
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. |
|
| Eliminación | El derecho de eliminació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 GDPR tal como se describe en esta sección para implementar el cumplimiento normativo del DSR.
- Solicitud de RGPD: Realiza uno de los tipos de solicitud anteriores: acceso, portabilidad, supresión, rectificación.
- Solicitud de estado: Consulta el estado actual de una solicitud GDPR.
- Solicitud de descubrimiento: Consulta la versión de la API compatible y el formato de datos.
- Cancelación: Cancela una solicitud de RGPD 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. Debes tener en cuenta que las solicitudes GDPR se envían de a un usuario por vez.
1. Solicitud de RGPD
Flujo de solicitudes GDPR
Los tipos de solicitud GDPR, Acceso, Portabilidad, Eliminación y Rectificación, tienen el mismo flujo:
- Usuario de la aplicación envía una solicitud.
- El propietario de la aplicación genera la solicitud de GDPR (ver más abajo) y la envía a AppsFlyer.
- AppsFlyer recibe la solicitud y responde con un "201 OK" para las solicitudes válidas.
-
Para acceso y portabilidad: Las solicitudes se completan en un plazo de 8 días.
Nota: Este período de 8 días comienza cuando el propietario de la aplicación envía su solicitud. El estado de la solicitud cambia a “En Progreso” de pendiente y se completará dentro de 6 días adicionales, totalizando 8 días.
Para la eliminación y rectificación:- Durante las siguientes 48 horas, la solicitud se pone en cola y queda en estado 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. AppsFlyer envía un postback de cambio de estado. En este punto,no se puede cancelar la solicitud.
-
En un plazo de 10 días (ver la nota más abajo), AppsFlyer tramita la solicitud y el estado de la solicitud cambia a completed. AppsFlyer envía un postback de cambio de estado.
- En el caso de eliminación o rectificación, se eliminan los datos del usuario de la aplicación.
- En el caso de portabilidad o acceso, se puede acceder a los datos del usuario de la aplicación en el dashboard de AppsFlyer, en GDPR o a través de la API de solicitudes (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 8 días adicionales, hasta un total de 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 la 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 la API en el dashboard. Agrega el token en el encabezado de la solicitud de la siguiente manera: 'Authorization': 'Bearer %AuthTokenV2%'
Parámetros
| Nombre de propiedad | Obligatorio | Description |
|---|---|---|
| subject_request_id | Sí | 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 | Sí |
Valor de la secuencia que representa el tipo de solicitud GDPR. Valores admitidos:
|
| subject_identities | Sí |
|
| submitted_time | Sí |
|
| property_id | Sí |
Cadena que representa la aplicación móvil con la cual está relacionada esta solicitud. Ejemplos:
|
| api_version | No | Cadena de versión que representa la versión deseada de la API de Solicitudes GDPR. |
| status_callback_urls | No, pero recomendado |
|
|
plataforma |
No | El valor es una de las plataformas DSR admitidas:android, ios, web, windowsphone
|
| Sí |
Para una solicitud de plataforma de CTV, PC o Consola, incluye cualquiera de las siguientes plataformas:
|
Objetos subject_identities
| Tipo de objeto | Obligatorio | Description |
|---|---|---|
| identity_type | Sí |
Importante: Para usar CUID a través de la API de OpenDSR, debes enviar el CUID con |
| identity_value | Sí |
|
| identity_format | Sí |
|
Ejemplo: Solicitud de eliminación de GDPR
Ejemplo de una solicitud de eliminación para las plataformas android, ios, web y 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"
]
}'
Ejemplo de una solicitud de eliminación para las plataformas CTV, PC y 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"
]
}'
Ejemplo de código de solicitud de borrado GDPR
Java
/*
usando el paquete okhttp instalado desde 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);
}
}
}
Python Node.js C#
""" usando el paquete requests de Python,
instálalo con 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)
/* usando el paquete request de npm,
instálalo con 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);
// gestiona la respuesta leyendo response.StatusCode
Console.WriteLine(response.Content);
}
}
2. Solicitud del estado
Cada solicitud de GDPR enviada puede consultarse más adelante para conocer su estado, especificando el subject_request_id. Existen cuatro tipos de estado admitidos:
- pending - Se ha recibido una solicitud correcta y actualmente está en la cola
- in_progress - Actualmente se está procesando una solicitud
- completed - Se ha completado una solicitud
- canceled - Se ha cancelado 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
Como se describe arriba en el GDPR Request Flow, cuando cambia el estado de una solicitud de GDPR, de pending a in_progress y luego a completed, AppsFlyer envía un postback de GDPR a los endpoints solicitantes 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:
- Crea una lista de permitidos de todos los dominios de procesador a los que permitas realizar devoluciones de llamada.
-
Si el valor del encabezado
X-OpenGDPR-Processor-Domainestá en tu allowlist, obtén el certificado.-
La URL del certificado es el valor de
processor_certificateen el cuerpo de la respuesta de/discovery. -
También puedes obtener el certificado directamente desde el endpoint de AppsFlyer usando el token de API V2 como bearer token en el encabezado de autorización:
GET https://hq1.appsflyer.com/api/gdpr/v1/certificate
-
La URL del certificado es el valor de
-
Valida el certificado usando una biblioteca para confirmar que el certificado:
- ha sido emitido por una autoridad de confianza.
-
Se emite para el mismo string proporcionado en el valor del encabezado
X-OpenGDPR-Processor-Domain. - no ha expirado.
-
Una vez que confirmes que el certificado es válido, utilízalo para validar el encabezado
X-OpenGDPR-Signaturecontra el cuerpo sin procesar de la solicitud. AppsFlyer utiliza SHA256 RSA como algoritmo de firma. -
Obtén una respuesta en el encabezado de estado:
-
202 Acceptedsi la validación se realiza correctamente. -
401 Unauthorizedsi no se puede validar la firma o el dominio del procesador no está en tu allowlist.
-
3. Solicitud de reporte
Una vez que se haya completado una Solicitud de acceso o una Solicitud de portabilidad, puedes descargar el reporte mediante HTTP GET en el siguiente endpoint:
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. Proceso de solicitud de descubrimiento
Para conocer los formatos admitidos por AppsFlyer, se puede enviar una solicitud de descubrimiento mediante HTTP GET al siguiente 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. Solicitud de cancelación
Es posible cancelar una solicitud GDPR en función de su subject_request_id, pero solo durante la fase pending.
Para enviar una solicitud HTTP DELETE con subject_request_id:
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 HTTP con el código de estado 202 y varios parámetros más.
Una vez que se produce la cancelación de la solicitud, AppsFlyer envía un postback con el estado canceled .
6. API de prueba de solicitudes GDPR
Esta API de AppsFlyer es una API de prueba para la API de solicitudes GDPR de AppsFlyer.
¿Cómo funciona?
La API de prueba funciona de la siguiente manera:
1. Una vez presentada una solicitud GDPR, inmediatamente se le asigna el estado "Pendiente". A los fines de la prueba, el estado cambia cada 30 segundos.
2. 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: DELETE
https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId
Punto de conexión de prueba del certificado: GET
https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate
Punto de conexión de prueba de reportes de acceso/portabilidad: 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:
'Authorization': 'Bearer %AuthTokenV2%' - 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:
- En la barra superior, abre el menú de la cuenta (menú desplegable de la dirección de correo electrónico) > E-GDPR log.
- Se abrirá la siguiente ventana:
8. Mensajes de error y códigos de retorno de la API de GDPR
Los mensajes de error y códigos de retorno HTTP de la API de GDPR se detallan en esta sección.
Códigos de retorno de la API de GDPR
| 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) |
|---|---|
| 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 |
| e215 | Una o varias identidades del interesado ya existen en una solicitud abierta. si actualmente hay otra solicitud abierta para el mismo identity_value en estado «pending» o «in_progress». |
| 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 |
| 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 |
| e326 | Formato JSON no válido en el cuerpo de la solicitud |
| 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 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".