Visão geral: este artigo é para o uso de clientes da AppsFlyer, também conhecidos como anunciantes ou proprietários de aplicativos, que usam a plataforma para registrar o uso e atribuição de aplicativos. Os proprietários de aplicativos implementam a API OpenDSR (Data Subject Request) para cumprir as leis de proteção de dados aplicáveis, como GDPR (Europa), CCPA (Califórnia), LGPD (Brasil) e PDPA (Tailândia).
Um recado dos nossos advogados: o conteúdo aqui mencionado não é orientação jurídica. Ele serve apenas para sua informação e conveniência. Você deve trabalhar estreitamente com assessores legais e de outras áreas profissionais para definir exatamente como a GDPR, CCPA ou quaisquer outras leis podem ou não se aplicar a você. A relação de privacidade entre você e a AppsFlyer é definida pela Política de Privacidade dos Serviços da AppsFlyer. Para qualquer dúvida relacionada a esta Política de Privacidade de Serviços ou para entrar em contato com nosso responsável pela proteção de dados, envie-nos um e-mail para privacy@appsflyer.com. Para fins do Artigo 27 do Regulamento Geral de Proteção de Dados, o representante da AppsFlyer na UE é a AppsFlyer Germany GmbH, Schönhauser Allee 180, 10119 Berlim, Alemanha (entre em contato com privacy@appsflyer.com; +49-30-166373500).
Regulamentos de privacidade
Neste artigo, as referências aos regulamentos de privacidade incluem os regulamentos mencionados na tabela a seguir.
Regulamento | Logotipo | Descrição |
---|---|---|
GDPR | O Regulamento Geral de Proteção de Dados é o regulamento da UE relativo à proteção e privacidade de dados para os cidadãos da União Europeia. | |
CCPA | Lei de Privacidade do Consumidor da Califórnia | |
LGPD | Lei Geral de Proteção de Dados Pessoais | |
PDPA | Lei de Proteção de Dados Pessoais |
Os termos de regulamentos de privacidade, GDPR, CCPA e LGPD são usados de forma intercambiável neste artigo.
A iniciativa OpenDSR
Para atender e gerenciar solicitações de titulares de dados enviadas de acordo com os regulamentos de privacidade, a AppsFlyer, junto com mParticle, Amplitude e Braze, iniciou o protocolo OpenDSR (anteriormente conhecido como OpenGDPR).
OpenDSR é uma estrutura de código aberto que facilita a cooperação entre empresas de tecnologia para o uso justo e transparente dos dados do consumidor. Ela permite que os fornecedores tomem medidas de privacidade de dados em vários sistemas que processam e armazenam dados de clientes.
Saiba mais sobre a iniciativa OpenDSR.
Definições
Termo do DSR | Termo AppsFlyer | Descrição |
---|---|---|
Pessoa em causa | Usuário do aplicativo ou Usuário final | O usuário do aplicativo sobre quem os dados são coletados |
Controlador de dados | Proprietário do aplicativo ou anunciante | O proprietário do aplicativo determina o propósito e os meios pelos quais os dados pessoais são processados. |
Processador de dados | AppsFlyer e seus parceiros | A AppsFlyer e seus parceiros processam dados pessoais em nome do controlador de dados |
Requisitos do DSR
O DSR detalha os direitos obrigatórios do Titular dos Dados, com os quais o Controlador de Dados deve cumprir. Para fins de API, esses direitos são traduzidos em tipos de solicitação. Veja a seguir como a AppsFlyer processa os diferentes tipos de solicitação.
Tipo de solicitação (Direito) |
Definição do GDPR |
Processamento da solicitação pela AppsFlyer |
---|---|---|
Acesso |
|
Os proprietários do aplicativo recebem uma cópia dos dados pessoais processados dos usuários do aplicativo. |
Portabilidade |
O usuário do aplicativo precisa receber todos os seus dados pessoais em um formato estruturado, comumente usado e legível pela máquina, como um arquivo CSV. |
O proprietário do aplicativo recebe umacópia dos dados pessoais processados pelo usuário do aplicativo. |
Retificação |
Permite que os usuários do aplicativo corrijam seus dados caso percebam que estão imprecisos ou inverídicos. Os proprietários devem apagar ou corrigir dados imprecisos ou incompletos. |
|
Exclusão |
O direito de exclusão requer que os proprietários do aplicativo removam dados pessoais até 14 dias após o recebimento da solicitação. |
Os dados são excluídos |
API de solicitações do GDPR da AppsFlyer
Use a API de solicitações do GDPR, conforme descrito nesta seção, para implementar a conformidade com o DSR.
- Solicitação do GDPR: executar um dos tipos de solicitação acima: "acesso", "portabilidade", "exclusão" ou "retificação".
- Solicitação de status – consultar o status atual de uma solicitação do GDPR
- Solicitação de descoberta: questionar a versão da API e o formato de dados compatíveis
- Cancelamento: cancelar uma solicitação do GDPR durante sua fase pendente.
Os proprietários do aplicativo devem implementar alterações de UI em seus aplicativos, para que os usuários possam enviar solicitações. Observe que as solicitações de GDPR são para um usuário por vez.
1. Solicitação do GDPR
Fluxo da solicitação do GDPR
Todos os tipos de solicitação do GDPR, acesso, portabilidade, exclusão e retificação possuem o mesmo fluxo:
- O usuário do aplicativo envia uma solicitação.
- O proprietário do aplicativo cria a solicitação GDPR (veja abaixo) e a envia para a AppsFlyer.
- A AppsFlyer recebe a solicitação e responde com "201 OK" para solicitações válidas.
- Durante as 48 horas seguintes, a solicitação fica na fila com o status pendente. O usuário do aplicativo pode cancelar a solicitação.
- Após 48 horas, o status da solicitação muda para in_progress.A AppsFlyer envia um postback de alteração de status. Neste ponto, a solicitação não pode ser cancelada.
- Em 14 dias (consulte a observação abaixo), a AppsFlyer atende à solicitação e o status da solicitação é atualizado para concluído. A AppsFlyer envia um postback de alteração de status.
- Em caso de apagamento ou retificação, os dados do Usuário do Aplicativo são excluídos.
- No caso de portabilidade ou acesso, os dados do usuário do aplicativo podem ser acessados no painel da AppsFlyer abaixo de GDPR ou por meio da API de solicitação (veja abaixo).
Observação: este período de 14 dias começa assim que o período pendente de 48 horas termina. Assim, o prazo total para atendimento da solicitação é de 16 dias após o proprietário do aplicativo enviar a solicitação à AppsFlyer.
- Em caso de apagamento ou retificação, os dados do Usuário do Aplicativo são excluídos.
Formato da solicitação do GDPR
Uma API de solicitação do GDPR pode ser enviada por meio de HTTP POST ao seguinte endpoint:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests
Para a autorização da API, use o mesmo token da API V2 da Pull API. O usuário administrador recupera o token na página token da API no painel. Adicione o token no cabeçalho da solicitação da seguinte forma: 'Authorization': 'Bearer %AuthTokenV2%'
Parâmetros
Nome da propriedade | Obrigatório | Descrição |
---|---|---|
subject_request_id | Sim | String UUID v4. Gerado pelo controlador no momento do envio da solicitação a um Processador. Em seguida, pode ser usado para verificar o status da solicitação, atualizá-la ou cancelá-la. |
subject_request_type | Sim |
Valor de string que representa o tipo de solicitação do GDPR. Valores suportados:
|
subject_identities | Sim |
|
submitted_time | Sim |
|
property_id | Sim |
String que representa o aplicativo móvel para o qual essa solicitação está direcionado Exemplos:
|
api_version | Não | String de versão que representa a versão desejada da API de solicitação do GDPR |
status_callback_urls | Não, mas recomendado |
|
platform |
Não |
Valor é uma das plataformas DSR compatíveis: |
Sim |
Para uma solicitação de plataforma CTV, PC ou console, inclua qualquer uma das seguintes plataformas: |
Objetos Subject_identities
Tipo de objeto | Obrigatório | Descrição |
---|---|---|
identity_type | Sim |
|
identity_value | Sim |
|
identity_format | Sim |
|
Exemplo: solicitação de exclusão do GDPR
Exemplo de solicitação de apagamento para plataformas android
, ios
, web
e 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"
]
}'
Exemplo de solicitação de eliminação para plataformas CTV
, PC
e 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"
]
}'
Exemplo de código da solicitação de apagamento do 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. Solicitação de status
Toda solicitação do GDPR enviada pode ter seu status consultado posteriormente, especificando o subject_request_id
. Existem quatro tipos de status compatíveis:
- pending - uma solicitação correta foi recebida e está atualmente na fila
- in_progress - uma solicitação está sendo executada no momento
- completed - uma solicitação foi atendida
- cancelled - uma solicitação foi cancelada
Formato da solicitação de status
Uma solicitação de status pode ser enviada por meio de HTTP GET ao seguinte endpoint:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
Exemplo da resposta de status
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 status
Conforme descrito no Fluxo da solicitação do GDPR acima, quando o status de uma solicitação do GDPR é alterado, de pending para in_progress para completed, a AppsFlyer envia um postback do GDPR aos endpoints solicitantes, especificados com a propriedade status_callback_urls.
Exemplo de postback de status:
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 a autenticidade dos postbacks recebidos:
- Crie uma lista de permissões de todos os domínios do processador que você permite fazer callbacks.
-
Se o valor do cabeçalho para
X-OpenDSR-Processor-Domain
estiver em sua lista de permissões, busque o certificado.- O URL do certificado é o valor de
processor_certificate
no corpo da resposta/discovery
. - Você também pode buscar o certificado diretamente do endpoint da AppsFlyer usando o token da API V2 como um token de portador no cabeçalho de autorização:
GET https://hq1.appsflyer.com/api/gdpr/v1/certificate
- O URL do certificado é o valor de
-
Valide o certificado usando uma biblioteca para confirmar que o certificado:
- É emitido por uma autoridade confiável.
- É emitido para a mesma string fornecida no valor do header
X-OpenGDPR-Processor-Domain
. - Não está expirado.
- Depois de confirmar que o certificado é válido, use-o para validar o header
X-OpenGDPR-Signature
no corpo da solicitação bruta. A AppsFlyer usa SHA256 RSA como um algoritmo de assinatura. -
Obtenha uma resposta no cabeçalho de status:
202 Accepted
se a validação for bem-sucedida.401 Unauthorized
se a assinatura não for validada ou o domínio do processador não estiver em sua lista de permissões.
3. Solicitação de relatório
Depois que uma solicitação de acesso ou solicitação de portabilidade for concluída, você poderá baixar o relatório via HTTP GET para o seguinte endpoint:
https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]
O relatório gerado fica disponível durante catorze dias a partir do momento da conclusão.
4. Processo de solicitação de descoberta
Para conhecer os formatos compatíveis com a AppsFlyer, uma solicitação de descoberta pode ser enviada por meio de HTTP GET ao seguinte endpoint:
https://hq1.appsflyer.com/api/gdpr/v1/discovery
Exemplo da resposta de descoberta
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. Solicitação de cancelamento
É possível cancelar uma solicitação do GDPR, com base em seu subject_request_id
, mas somente durante a fase pending.
Para enviar um HTTP DELETE com subject_request_id
:
https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>
Resposta de cancelamento
Quando uma solicitação de cancelamento do GDPR é recebida, a AppsFlyer retorna uma resposta HTTP com código de status 202 e diversos outros parâmetros.
Depois que o cancelamento da solicitação ocorre, a AppsFlyer envia um postback com o status cancelado.
6. API de teste das solicitações do GDPR
Esta API da AppsFlyer é uma API de teste para a API de Solicitações GDPR da AppsFlyer.
Como ela funciona?
Essa API de teste funciona da seguinte forma:
1. Assim que uma solicitação do GDPR for feita, a solicitação é colocada imediatamente no status "Pending". Para fins de teste, o status é alterado a cada 30 segundos.
2. Se um endpoint para um postback de status foi inserido na solicitação do GDPR, um primeiro postback é enviado logo após a solicitação e dois outros postbacks de status são enviados em intervalos de 30 segundos.
Ponto final de teste de solicitação do GDPR: POST
https://hq1.appsflyer.com/api/gdpr/v1/stub
Ponto final de teste da solicitação de status: GET
https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId
Ponto final de teste da solicitação de descoberta: GET
https://hq1.appsflyer.com/api/gdpr/v1/stub/discovery
Ponto final de teste da solicitação de cancelamento: DELETE
https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId
Ponto final de teste de certificado: GET
https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate
Ponto final de teste de relatórios de acesso/portabilidade: GET
https://hq1.appsflyer.com/api/gdpr/v1/stub/download/:requestId
Observações
- Um token válido da API V2 deve ser inserido no cabeçalho da solicitação da seguinte forma:
'Authorization': 'Bearer %AuthTokenV2%'
- Na propriedade "property_id", o ID do aplicativo deve pertencer ao proprietário da conta (de acordo com o token da API).
7. Registros de solicitações
O usuário administrador da conta pode acessar as solicitações de GDPR enviadas no Painel de Registros.
Para solicitações de acesso e portabilidade completas, também é possível fazer download do relatório a partir deste painel.
Para acessar o Painel de Registros:
- Acesse o painel principal e clique no seu nome de usuário.
- Clique em Registros e a seguinte janela abrirá:
8. Códigos de retorno e mensagens de erro da API de GDPR
Os códigos de retorno e mensagens de erro de API de GDPR HTTP estão detalhados nesta seção.
Códigos de retorno da API de GDPR
Código de retorno | Descrição |
---|---|
201 | Criado |
202 | Solicitação de cancelamento recebida |
400 |
Erro na solicitação. O corpo contém o código de erro e a mensagem conforme listado na tabela a seguir. |
Código de retorno HTTP 400 - solicitação incorreta
Mensagens com código de retorno 400 contêm um JSON com o código de erro e mensagem.
{ "error":
{ "code":400, "af_gdpr_code": "%AF error code%", "message":"%error message text%"
}
}
Código de retorno 400 mensagens de erro na solicitação
Código do erro |
Descrição do erro (mensagem) |
---|---|
e111 | Limite de taxa excedido |
e211 | Não é possível cancelar uma solicitação com status inválido |
e212 | Solicitação não permitida. A eliminação está em andamento para o identificador. |
e213 | A solicitação já existe |
e214 | Solicitação não encontrada |
e311 | Tipo de conteúdo de solicitação inválido |
e312 | Versão da API inválida |
e313 | subject_request_id inválido |
e314 | Formato do submitted_time inválido |
e315 | Comprimento do status_callback_url inválido |
e316 | Formato do status_callback_url inválido |
e317 | Formato do app_id inválido |
e318 | Identity_type inválido |
e319 | A plataforma do aplicativo não corresponde aos tipos de identidade |
e320 | Identity_type inválido |
e321 | Usuários LAT não são suportados via api |
e322 | subject_request_type inválido |
e323 | Formato de subjet_identities inválido |
e324 | Comprimento subject_identities inválido |
e325 | Valor de subjet_identities inválido |
e411 | AppID está incorreto ou não pertence à sua conta |
e412 | Sem permissão para eliminar solicitação de apagamento |
e413 | Sem permissão para visualizar a solicitação |
e511 | Problema interno, aguarde 60 minutos e tente novamente. Se o problema persistir, entre em contato com o suporte da AppsFlyer. support@AppsFlyer.com |
Características e limitações
- Limitação de taxa: 80 solicitações GDPR a cada 2 minutos no nível da conta (o que equivale a 2.400 solicitações por hora e 57.600 por dia). As solicitações que excederem esse limite falharão.
- A interface do usuário exibe até 200 solicitações selecionadas aleatoriamente.
- Verificar o status de uma solicitação de mais de 60 dias atrás retorna "solicitação não encontrada".