Saltar al contenido

API de eliminación de datos

La API de eliminación de datos es la forma de autoservicio para eliminar los datos personales de un sujeto de Pushwoosh (derecho de eliminación de GDPR). La eliminación es irreversible: úsela para reflejar la página de Solicitudes de datos del Panel de Control y la acción Borrar datos personales en la tarjeta de un suscriptor desde sus propios sistemas.

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

Todos los endpoints se sirven a través de HTTPS. Las solicitudes y respuestas usan application/json, excepto Upload, que usa multipart/form-data.

Autenticación

Anchor link to

Cada solicitud debe incluir un encabezado Authorization con su token de la API del servidor:

Authorization: Api YOUR_API_TOKEN

El token debe tener acceso de modificación a cada aplicación nombrada en application_codes. Es el mismo acceso que un token necesita para escribir datos de dispositivo en esas aplicaciones.

Convenciones

Anchor link to
  • Nomenclatura de campos: los cuerpos de las solicitudes aceptan lowerCamelCase (por ejemplo, applicationCodes, identifierType). Las respuestas se serializan usando los nombres de campo de proto, en snake_case (task_id, identifier_hash, etc.). Los ejemplos y las referencias de objetos a continuación usan ese formato.
  • Identificadores: un sujeto se direcciona mediante identifier_type (SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, o SUBJECT_IDENTIFIER_EMAIL) más una lista de identifiers de ese único tipo. Un identificador de correo electrónico se compara sin distinguir mayúsculas y minúsculas.
  • Primero un dry run, luego cítelo: Create con dry_run: true solo cuenta lo que se eliminaría y no escribe nada. Citar el task_id de ese dry run como confirmation_dry_run_task_id en la llamada real es opcional, pero si cita uno, debe coincidir exactamente con las aplicaciones e identificadores de ese dry run, y debe llamarse dentro de los 15 minutos posteriores a su finalización. De lo contrario, la llamada se rechaza.
  • Los informes nunca llevan el identificador en texto claro. Tanto GetTaskReport como GetJournalReport informan cada identificador como su hash sha256 (identifier_hash), y el cuerpo del informe se codifica en CSV como base64 dentro de la respuesta JSON.

Respuestas de error

Anchor link to
Estado HTTPSignificado
400 Bad RequestArgumento no válido, como un identifier_type, identifiers, o application_codes vacío, más de 10,000 identificadores, más de 50 aplicaciones, identificadores × aplicaciones por encima de 50,000, una cadena de identificador vacía, o (solo Upload) un archivo CSV faltante o ilegible. También se devuelve como FailedPrecondition en la transmisión cuando un confirmation_dry_run_task_id citado no coincide con el dry run finalizado que nombra, es demasiado antiguo (más de 15 minutos), o no es un dry run finalizado en absoluto.
401 UnauthorizedEncabezado Authorization faltante o no válido.
403 ForbiddenEl token no tiene derecho de modificación/datos de dispositivo en una de las aplicaciones solicitadas, o quien llama no puede leer la tarea/informe solicitado.
404 Not FoundNo se encontró la tarea, o no pertenece a la cuenta de quien llama.
413 Payload Too Large(solo Upload) el archivo subido supera los 5 MB.
429 Too Many RequestsLa cuenta ya inició 20 tareas de eliminación de datos (dry runs incluidos) en las últimas 24 horas.
MétodoRutaDescripción
POST/api/data_erasure/tasksCrear una tarea de eliminación (o dry-run)
POST/api/data_erasure/uploadCrear una tarea de eliminación a partir de un CSV subido de identificadores
GET/api/data_erasure/tasksListar las tareas de eliminación de la cuenta
GET/api/data_erasure/tasks/{task_id}Obtener una tarea de eliminación
GET/api/data_erasure/tasks/{task_id}/rowsListar los resultados por identificador de una tarea
GET/api/data_erasure/tasks/{task_id}/reportDescargar el informe de una tarea como CSV
GET/api/data_erasure/reportDescargar todas las tareas de un período como un único CSV

Comienza a eliminar los datos personales de los sujetos listados en las aplicaciones listadas. Con dry_run: true, la tarea solo cuenta lo que se eliminaría.

POST /api/data_erasure/tasks

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
identifierTypestringSíSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, o SUBJECT_IDENTIFIER_EMAIL.
identifiersarray de stringsSíIdentificadores de sujeto de ese único tipo, hasta 10,000 por tarea, sin valores vacíos.
applicationCodesarray de stringsSíCódigos de aplicación desde los que eliminar, hasta 50. No hay forma de eliminar de todas las aplicaciones de la cuenta en una sola llamada, así que nombre cada una explícitamente. identifiers.length × applicationCodes.length no debe superar 50,000, porque el informe contiene una fila por identificador por aplicación.
dryRunbooleanNoCuenta lo que se eliminaría y no escribe nada. El valor predeterminado es false.
confirmationDryRunTaskIdintegerNotask_id de un dry run finalizado que midió esta eliminación exacta. Consulte Convenciones.
Ejemplo de solicitud
Anchor link to
{
"identifierType": "SUBJECT_IDENTIFIER_EMAIL",
"identifiers": ["subject@example.com"],
"applicationCodes": ["XXXXX-XXXXX"],
"dryRun": true
}
CampoTipoDescripción
task_idintegerId de la tarea creada. Úselo con todos los demás endpoints de esta página.

Crea el mismo tipo de tarea que Create, pero los identificadores provienen de un CSV subido en lugar de un array JSON. Use esto para una lista masiva de sujetos.

POST /api/data_erasure/upload

Solicitud (multipart/form-data)

Anchor link to
CampoRequeridoDescripción
fileSíArchivo CSV, hasta 5 MB, un identificador por fila, en la única columna. La primera fila puede nombrar la columna (user_id, userid, user id, hwid, email, identifier, o subject, sin distinguir mayúsculas y minúsculas) en lugar de contener un identificador. Esa fila se omite entonces como encabezado, sin contarse. Las filas en blanco se omiten y se cuentan por separado. Los identificadores duplicados (sin distinguir mayúsculas y minúsculas, para email) se colapsan en uno y se cuentan por separado.
identifier_typeSíuser_id, hwid, o email, en minúsculas, un formato diferente al de los valores de enum JSON identifierType usados en el resto de esta página. Un solo tipo se aplica a todo el archivo.
application_codesSíCódigos de aplicación separados por comas.
dry_runNotrue/false.
confirmation_dry_run_task_idNoIgual que Create.
{
"task_id": 123,
"identifier_count": 480,
"duplicate_count": 3,
"skipped_rows": 1
}

Lista las eliminaciones de la cuenta, las más recientes primero: el diario de auditoría de quién eliminó qué y cuándo. Los dry runs se excluyen a menos que se configure includeDryRuns.

GET /api/data_erasure/tasks

Parámetros de consulta

Anchor link to
ParámetroTipoDescripción
limit / offsetintegerPaginación.
includeDryRunsbooleanIncluir tareas dry-run (solo de medición).
from / tostring (RFC 3339)Mantener las tareas iniciadas en [from, to).
applicationCodestringMantener las tareas que cubren esta aplicación.
initiatorUserIdintegerMantener las tareas iniciadas por este usuario del Panel de Control. 0 (predeterminado) mantiene todos los iniciadores.
initiatorTokenIdintegerMantener las tareas iniciadas por este token de API. 0 (predeterminado) mantiene todos los iniciadores.
initiatorEmailstringMantener las tareas iniciadas por este usuario del Panel de Control, comparado por email, sin distinguir mayúsculas y minúsculas.
CampoTipoDescripción
tasksarray de objetos de tarea de eliminación de datosTareas coincidentes.

Devuelve una tarea de eliminación con su estado y contadores. Úselo para seguir una tarea iniciada por Create o Upload.

GET /api/data_erasure/tasks/{task_id}

CampoTipoDescripción
taskobjeto de tarea de eliminación de datosLa tarea solicitada.

ListTaskRows

Anchor link to

Devuelve el resultado por identificador de una tarea: qué se eliminó, no se encontró, se omitió o falló. Los identificadores se informan como su hash sha256.

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

Parámetros de consulta

Anchor link to
ParámetroTipoDescripción
limit / offsetintegerPaginación.
CampoTipoDescripción
rowsarray de objetos de fila de tarea de eliminación de datosEsta página de resultados.

GetTaskReport

Anchor link to

Devuelve el informe completo de una tarea como un archivo CSV: una fila por identificador por aplicación, con su resultado. ListTaskRows muestra las mismas filas página por página en su lugar.

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

CampoTipoDescripción
filenamestringNombre de archivo sugerido, por ejemplo data-erasure-task-42.csv.
content_typestringtext/csv.
contentstring (base64)El archivo CSV. Columnas: task_id, created, identifier_type, identifier_hash, application_code, result, detail.

GetJournalReport

Anchor link to

Devuelve todas las eliminaciones de un período como un único archivo CSV: una fila por identificador por aplicación, con la tarea y su iniciador en cada fila. Esto es lo que una cuenta entrega a un auditor.

GET /api/data_erasure/report

Parámetros de consulta

Anchor link to
ParámetroTipoRequeridoDescripción
fromstring (RFC 3339)SíInicio del período.
tostring (RFC 3339)NoFin del período. El valor predeterminado es ahora.
includeDryRunsbooleanNoIncluir tareas dry-run.
CampoTipoDescripción
filenamestringNombre de archivo sugerido, por ejemplo data-erasure-2026-01-01-2026-04-01.csv.
content_typestringtext/csv.
contentstring (base64)El archivo CSV. Columnas: 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 tarea de eliminación de datos

Anchor link to
CampoTipoDescripción
task_idintegerId de la tarea.
identifier_typestringSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, o SUBJECT_IDENTIFIER_EMAIL.
application_codesarray de stringsAplicaciones que cubre la tarea.
dry_runbooleanSi esta tarea solo midió un volumen.
statusstringERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE, o _FAILED.
total_countintegerIdentificadores × aplicaciones que cubre esta tarea.
deleted_countintegerCuántos se eliminaron (o, para un dry run, se eliminarían).
not_found_countintegerCuántos no coincidieron con nada.
failed_countintegerCuántos fallaron. Consulte ListTaskRows o el informe para saber por qué.
fail_reasonstringSe establece cuando status es ERASURE_TASK_STATUS_FAILED.
initiator_user_idintegerUsuario del Panel de Control que inició la tarea. 0 cuando lo hizo un token de API.
initiator_token_idintegerToken de API que inició la tarea. 0 cuando lo hizo un usuario del Panel de Control.
initiator_emailstringDirección del usuario del Panel de Control que inició la tarea. Vacío para un token de API.
createdstring (RFC 3339)Cuándo se creó la tarea.
started_atstring (RFC 3339)Cuándo comenzó el trabajo de eliminación.
finished_atstring (RFC 3339)Cuándo la tarea alcanzó un estado final.

Objeto de fila de tarea de eliminación de datos

Anchor link to
CampoTipoDescripción
identifier_hashstringsha256 del identificador. El informe nunca almacena ni devuelve el identificador en sí.
application_codestringAplicación a la que se aplica el resultado de esta fila.
resultstringERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED, o _FAILED.
detailstringDetalle técnico, se establece principalmente en caso de fallo.
createdstring (RFC 3339)Cuándo se escribió esta fila.

Relacionado

Anchor link to