Pular para o conteúdo

API de Exclusão de Dados

A API de Exclusão de Dados é a forma de autoatendimento para apagar os dados pessoais de um titular do Pushwoosh (direito à exclusão do GDPR). A exclusão é irreversível: use-a para espelhar a página Solicitações de dados do Painel de Controle e a ação Apagar dados pessoais no cartão de um assinante a partir dos seus próprios sistemas.

https://rpc-api.svc-nue.pushwoosh.com

Todos os endpoints são servidos via HTTPS. As solicitações e respostas usam application/json, exceto Upload, que usa multipart/form-data.

Autenticação

Anchor link to

Toda solicitação deve incluir um cabeçalho Authorization com seu token de API do Servidor:

Authorization: Api YOUR_API_TOKEN

O token deve ter acesso de modificação a cada aplicativo nomeado em application_codes. É o mesmo acesso que um token precisa para gravar dados de dispositivo nesses aplicativos.

Convenções

Anchor link to
  • Nomenclatura de campos: corpos de solicitação aceitam lowerCamelCase (por exemplo, applicationCodes, identifierType). As respostas são serializadas usando os nomes de campo do proto, em snake_case (task_id, identifier_hash, e assim por diante). Os exemplos e as referências de objeto abaixo usam essa formatação.
  • Identificadores: um titular é endereçado por identifier_type (SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID ou SUBJECT_IDENTIFIER_EMAIL) mais uma lista de identifiers desse único tipo. Um identificador de e-mail é comparado sem diferenciar maiúsculas de minúsculas.
  • Primeiro o dry run, depois cite-o: Create com dry_run: true apenas conta o que seria apagado e não grava nada. Citar o task_id desse dry run como confirmation_dry_run_task_id na chamada real é opcional, mas se você citar um, ele deve corresponder exatamente às aplicações e identificadores desse dry run, e ser chamado dentro de 15 minutos após sua conclusão. Caso contrário, a chamada é recusada.
  • Os relatórios nunca carregam o identificador em texto claro. Tanto GetTaskReport quanto GetJournalReport reportam cada identificador como seu hash sha256 (identifier_hash), e o corpo do relatório é um CSV codificado em base64 dentro da resposta JSON.

Respostas de erro

Anchor link to
Status HTTPSignificado
400 Bad RequestArgumento inválido, como um identifier_type, identifiers ou application_codes vazio, mais de 10.000 identificadores, mais de 50 aplicativos, identificadores × aplicativos acima de 50.000, uma string de identificador vazia, ou (somente em Upload) um arquivo CSV ausente/ilegível. Também retornado como FailedPrecondition na transmissão quando um confirmation_dry_run_task_id citado não corresponde ao dry run concluído que ele nomeia, é antigo demais (mais de 15 minutos), ou não é um dry run concluído.
401 UnauthorizedCabeçalho Authorization ausente ou inválido.
403 ForbiddenO token não tem direito de modificação/dados de dispositivo em um dos aplicativos solicitados, ou o chamador não pode ler a tarefa/relatório solicitado.
404 Not FoundA tarefa não foi encontrada, ou não pertence à conta do chamador.
413 Payload Too Large(somente em Upload) o arquivo enviado tem mais de 5 MB.
429 Too Many RequestsA conta já iniciou 20 tarefas de exclusão de dados (incluindo dry runs) nas últimas 24 horas.
MétodoCaminhoDescrição
POST/api/data_erasure/tasksCriar uma tarefa de exclusão (ou dry run)
POST/api/data_erasure/uploadCriar uma tarefa de exclusão a partir de um CSV de identificadores enviado
GET/api/data_erasure/tasksListar as tarefas de exclusão da conta
GET/api/data_erasure/tasks/{task_id}Obter uma tarefa de exclusão
GET/api/data_erasure/tasks/{task_id}/rowsListar os resultados por identificador de uma tarefa
GET/api/data_erasure/tasks/{task_id}/reportBaixar o relatório de uma tarefa como CSV
GET/api/data_erasure/reportBaixar todas as tarefas de um período como um único CSV

Inicia a exclusão dos dados pessoais dos titulares listados nos aplicativos listados. Com dry_run: true, a tarefa apenas conta o que seria apagado.

POST /api/data_erasure/tasks

Corpo da solicitação

Anchor link to
ParâmetroTipoObrigatórioDescrição
identifierTypestringSimSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID ou SUBJECT_IDENTIFIER_EMAIL.
identifiersarray de stringsSimIdentificadores de titular desse único tipo, até 10.000 por tarefa, sem valores vazios.
applicationCodesarray de stringsSimCódigos de aplicativo dos quais apagar, até 50. Não há como apagar de todos os aplicativos da conta em uma única chamada, então nomeie cada um explicitamente. identifiers.length × applicationCodes.length não deve exceder 50.000, porque o relatório contém uma linha por identificador por aplicativo.
dryRunbooleanNãoConta o que seria apagado e não grava nada. O padrão é false.
confirmationDryRunTaskIdintegerNãotask_id de um dry run concluído que mediu exatamente esta exclusão. Consulte Convenções.
Exemplo de solicitação
Anchor link to
{
"identifierType": "SUBJECT_IDENTIFIER_EMAIL",
"identifiers": ["subject@example.com"],
"applicationCodes": ["XXXXX-XXXXX"],
"dryRun": true
}
CampoTipoDescrição
task_idintegerID da tarefa criada. Use-o com todos os outros endpoints desta página.

Cria o mesmo tipo de tarefa que Create, mas os identificadores vêm de um CSV enviado em vez de um array JSON. Use isso para uma lista de titulares em massa.

POST /api/data_erasure/upload

Solicitação (multipart/form-data)

Anchor link to
CampoObrigatórioDescrição
fileSimArquivo CSV, até 5 MB, um identificador por linha, na única coluna. A primeira linha pode nomear a coluna (user_id, userid, user id, hwid, email, identifier ou subject, sem diferenciar maiúsculas de minúsculas) em vez de conter um identificador. Essa linha é então ignorada como cabeçalho, não contada. Linhas em branco são ignoradas e contadas separadamente. Identificadores duplicados (sem diferenciar maiúsculas de minúsculas, para e-mail) são reduzidos a um só e contados separadamente.
identifier_typeSimuser_id, hwid ou email, em minúsculas, uma formatação diferente dos valores do enum JSON identifierType usados no restante desta página. Um único tipo se aplica ao arquivo inteiro.
application_codesSimCódigos de aplicativo separados por vírgula.
dry_runNãotrue/false.
confirmation_dry_run_task_idNãoO mesmo que em Create.
{
"task_id": 123,
"identifier_count": 480,
"duplicate_count": 3,
"skipped_rows": 1
}

Lista as exclusões da conta, das mais recentes para as mais antigas: o diário de auditoria de quem apagou o quê e quando. Os dry runs são deixados de fora, a menos que includeDryRuns seja definido.

GET /api/data_erasure/tasks

Parâmetros de consulta

Anchor link to
ParâmetroTipoDescrição
limit / offsetintegerPaginação.
includeDryRunsbooleanInclui tarefas dry-run (somente de medição).
from / tostring (RFC 3339)Mantém as tarefas iniciadas em [from, to).
applicationCodestringMantém as tarefas que cobrem este aplicativo.
initiatorUserIdintegerMantém as tarefas iniciadas por este usuário do Painel de Controle. 0 (padrão) mantém todos os iniciadores.
initiatorTokenIdintegerMantém as tarefas iniciadas por este token de API. 0 (padrão) mantém todos os iniciadores.
initiatorEmailstringMantém as tarefas iniciadas por este usuário do Painel de Controle, comparado por e-mail, sem diferenciar maiúsculas de minúsculas.
CampoTipoDescrição
tasksarray de Objetos de tarefa de exclusão de dadosTarefas correspondentes.

Retorna uma tarefa de exclusão com seu status e contadores. Use-a para acompanhar uma tarefa iniciada por Create ou Upload.

GET /api/data_erasure/tasks/{task_id}

CampoTipoDescrição
taskObjeto de tarefa de exclusão de dadosA tarefa solicitada.

ListTaskRows

Anchor link to

Retorna o resultado por identificador de uma tarefa: o que foi excluído, não encontrado, ignorado ou falhou. Os identificadores são reportados como seu hash sha256.

GET /api/data_erasure/tasks/{task_id}/rows

Parâmetros de consulta

Anchor link to
ParâmetroTipoDescrição
limit / offsetintegerPaginação.
CampoTipoDescrição
rowsarray de Objetos de linha da tarefa de exclusão de dadosEsta página de resultados.

GetTaskReport

Anchor link to

Retorna o relatório completo de uma tarefa como um arquivo CSV: uma linha por identificador por aplicativo, com seu resultado. ListTaskRows mostra as mesmas linhas página por página, em vez disso.

GET /api/data_erasure/tasks/{task_id}/report

CampoTipoDescrição
filenamestringNome de arquivo sugerido, por exemplo data-erasure-task-42.csv.
content_typestringtext/csv.
contentstring (base64)O arquivo CSV. Colunas: task_id, created, identifier_type, identifier_hash, application_code, result, detail.

GetJournalReport

Anchor link to

Retorna todas as exclusões de um período como um único arquivo CSV: uma linha por identificador por aplicativo, com a tarefa e seu iniciador em cada linha. É isso que uma conta entrega a um auditor.

GET /api/data_erasure/report

Parâmetros de consulta

Anchor link to
ParâmetroTipoObrigatórioDescrição
fromstring (RFC 3339)SimInício do período.
tostring (RFC 3339)NãoFim do período. O padrão é agora.
includeDryRunsbooleanNãoInclui tarefas dry-run.
CampoTipoDescrição
filenamestringNome de arquivo sugerido, por exemplo data-erasure-2026-01-01-2026-04-01.csv.
content_typestringtext/csv.
contentstring (base64)O arquivo CSV. Colunas: task_id, task_created, initiator_user_id, initiator_email, initiator_token_id, dry_run, identifier_type, identifier_hash, application_code, result, detail, row_created.

Objeto de tarefa de exclusão de dados

Anchor link to
CampoTipoDescrição
task_idintegerID da tarefa.
identifier_typestringSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID ou SUBJECT_IDENTIFIER_EMAIL.
application_codesarray de stringsAplicativos que a tarefa cobre.
dry_runbooleanSe esta tarefa apenas mediu um volume.
statusstringERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE ou _FAILED.
total_countintegerIdentificadores × aplicativos que esta tarefa cobre.
deleted_countintegerQuantos foram apagados (ou, em um dry run, seriam).
not_found_countintegerQuantos não corresponderam a nada.
failed_countintegerQuantos falharam. Consulte ListTaskRows ou o relatório para saber o motivo.
fail_reasonstringDefinido quando status é ERASURE_TASK_STATUS_FAILED.
initiator_user_idintegerUsuário do Painel de Controle que iniciou a tarefa. 0 quando foi um token de API.
initiator_token_idintegerToken de API que iniciou a tarefa. 0 quando foi um usuário do Painel de Controle.
initiator_emailstringEndereço do usuário do Painel de Controle que iniciou a tarefa. Vazio para um token de API.
createdstring (RFC 3339)Quando a tarefa foi criada.
started_atstring (RFC 3339)Quando o trabalho de exclusão começou.
finished_atstring (RFC 3339)Quando a tarefa atingiu um status final.

Objeto de linha da tarefa de exclusão de dados

Anchor link to
CampoTipoDescrição
identifier_hashstringsha256 do identificador. O relatório nunca armazena ou retorna o identificador em si.
application_codestringAplicativo ao qual o resultado desta linha se aplica.
resultstringERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED ou _FAILED.
detailstringDetalhe técnico, definido principalmente em caso de falha.
createdstring (RFC 3339)Quando esta linha foi gravada.

Relacionado

Anchor link to