Passer au contenu

API d'effacement des données

L’API d’effacement des données est le moyen en libre-service d’effacer les données personnelles d’une personne concernée de Pushwoosh (droit à l’effacement du RGPD). L’effacement ne peut pas être annulé : utilisez-la pour reproduire depuis vos propres systèmes la page Demandes de données du Panneau de Contrôle et l’action Effacer les données personnelles sur la fiche d’un abonné.

URL de base

Anchor link to
https://rpc-api.svc-nue.pushwoosh.com

Tous les points de terminaison sont servis en HTTPS. Les requêtes et les réponses utilisent application/json, à l’exception de Upload, qui utilise multipart/form-data.

Authentification

Anchor link to

Chaque requête doit inclure un en-tête Authorization avec votre jeton d’API serveur :

Authorization: Api VOTRE_JETON_API

Le jeton doit disposer d’un accès en modification à chaque application nommée dans application_codes. C’est le même accès qu’un jeton doit avoir pour écrire des données d’appareil sur ces applications.

Conventions

Anchor link to
  • Nommage des champs : les corps de requête acceptent le lowerCamelCase (par exemple, applicationCodes, identifierType). Les réponses sont sérialisées avec les noms de champs proto, en snake_case (task_id, identifier_hash, etc.). Les exemples et les références d’objets ci-dessous utilisent cette casse.
  • Identifiants : une personne concernée est désignée par identifier_type (SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, ou SUBJECT_IDENTIFIER_EMAIL) plus une liste d’identifiers de ce seul type. Un identifiant e-mail est comparé sans tenir compte de la casse.
  • Test à blanc d’abord, puis citez-le : Create avec dry_run: true se contente de compter ce qui serait effacé et n’écrit rien. Citer le task_id de ce test à blanc comme confirmation_dry_run_task_id sur l’appel réel est optionnel, mais si vous en citez un, il doit correspondre exactement aux applications et aux identifiants de ce test à blanc, et être appelé dans les 15 minutes suivant sa fin. Sinon, l’appel est refusé.
  • Les rapports ne contiennent jamais l’identifiant en clair. GetTaskReport et GetJournalReport indiquent chaque identifiant sous forme de son hash sha256 (identifier_hash), et le corps du rapport est un CSV encodé en base64 dans la réponse JSON.

Réponses d’erreur

Anchor link to
Statut HTTPSignification
400 Bad RequestArgument invalide, comme un identifier_type, des identifiers, ou des application_codes vides, plus de 10 000 identifiants, plus de 50 applications, des identifiants × applications dépassant 50 000, une chaîne d’identifiant vide, ou (Upload uniquement) un fichier CSV manquant ou illisible. Également renvoyé comme FailedPrecondition sur le réseau lorsqu’un confirmation_dry_run_task_id cité ne correspond pas au test à blanc terminé qu’il désigne, est trop ancien (plus de 15 minutes), ou n’est pas du tout un test à blanc terminé.
401 UnauthorizedEn-tête Authorization manquant ou invalide.
403 ForbiddenLe jeton n’a pas de droit de modification/données d’appareil sur l’une des applications demandées, ou l’appelant n’est pas autorisé à lire la tâche/le rapport demandé.
404 Not FoundLa tâche n’a pas été trouvée, ou n’appartient pas au compte de l’appelant.
413 Payload Too Large(Upload uniquement) le fichier importé dépasse 5 Mo.
429 Too Many RequestsLe compte a déjà démarré 20 tâches d’effacement de données (tests à blanc inclus) au cours des dernières 24 heures.

Points de terminaison

Anchor link to
MéthodeCheminDescription
POST/api/data_erasure/tasksCréer une tâche d’effacement (ou de test à blanc)
POST/api/data_erasure/uploadCréer une tâche d’effacement à partir d’un CSV d’identifiants importé
GET/api/data_erasure/tasksLister les tâches d’effacement du compte
GET/api/data_erasure/tasks/{task_id}Obtenir une tâche d’effacement
GET/api/data_erasure/tasks/{task_id}/rowsLister les résultats par identifiant d’une tâche
GET/api/data_erasure/tasks/{task_id}/reportTélécharger le rapport d’une tâche au format CSV
GET/api/data_erasure/reportTélécharger toutes les tâches d’une période en un seul CSV

Démarre l’effacement des données personnelles des personnes concernées listées, dans les applications listées. Avec dry_run: true, la tâche se contente de compter ce qui serait effacé.

POST /api/data_erasure/tasks

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
identifierTypestringOuiSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, ou SUBJECT_IDENTIFIER_EMAIL.
identifierstableau de chaînesOuiIdentifiants de la personne concernée pour ce seul type, jusqu’à 10 000 par tâche, sans valeur vide.
applicationCodestableau de chaînesOuiCodes d’application desquels effacer, jusqu’à 50. Il n’existe aucun moyen d’effacer de toutes les applications du compte en un seul appel, nommez donc chacune explicitement. identifiers.length × applicationCodes.length ne doit pas dépasser 50 000, car le rapport contient une ligne par identifiant et par application.
dryRunbooleanNonCompte ce qui serait effacé et n’écrit rien. La valeur par défaut est false.
confirmationDryRunTaskIdintegerNontask_id d’un test à blanc terminé qui a mesuré cet effacement exact. Voir Conventions.
Exemple de requête
Anchor link to
{
"identifierType": "SUBJECT_IDENTIFIER_EMAIL",
"identifiers": ["subject@example.com"],
"applicationCodes": ["XXXXX-XXXXX"],
"dryRun": true
}
ChampTypeDescription
task_idintegerId de la tâche créée. Utilisez-le avec tous les autres points de terminaison de cette page.

Crée le même type de tâche que Create, mais les identifiants proviennent d’un CSV importé plutôt que d’un tableau JSON. Utilisez cette méthode pour une liste de personnes en masse.

POST /api/data_erasure/upload

Requête (multipart/form-data)

Anchor link to
ChampRequisDescription
fileOuiFichier CSV, jusqu’à 5 Mo, un identifiant par ligne, dans la colonne unique. La première ligne peut nommer la colonne (user_id, userid, user id, hwid, email, identifier, ou subject, sans tenir compte de la casse) au lieu de contenir un identifiant. Cette ligne est alors ignorée comme en-tête, et non comptée. Les lignes vides sont ignorées et comptées séparément. Les identifiants en double (sans tenir compte de la casse pour l’e-mail) sont fusionnés en un seul et comptés séparément.
identifier_typeOuiuser_id, hwid, ou email, en minuscules, une casse différente des valeurs de l’énumération JSON identifierType utilisées ailleurs sur cette page. Un seul type s’applique à tout le fichier.
application_codesOuiCodes d’application séparés par des virgules.
dry_runNontrue/false.
confirmation_dry_run_task_idNonIdentique à Create.
{
"task_id": 123,
"identifier_count": 480,
"duplicate_count": 3,
"skipped_rows": 1
}

Liste les effacements du compte, du plus récent au plus ancien : le journal d’audit de qui a effacé quoi et quand. Les tests à blanc sont exclus sauf si includeDryRuns est défini.

GET /api/data_erasure/tasks

Paramètres de requête

Anchor link to
ParamètreTypeDescription
limit / offsetintegerPagination.
includeDryRunsbooleanInclut les tâches de test à blanc (mesure uniquement).
from / tostring (RFC 3339)Conserve les tâches démarrées dans [from, to).
applicationCodestringConserve les tâches qui couvrent cette application.
initiatorUserIdintegerConserve les tâches démarrées par cet utilisateur du Panneau de Contrôle. 0 (valeur par défaut) conserve tous les initiateurs.
initiatorTokenIdintegerConserve les tâches démarrées par ce jeton API. 0 (valeur par défaut) conserve tous les initiateurs.
initiatorEmailstringConserve les tâches démarrées par cet utilisateur du Panneau de Contrôle, mis en correspondance par e-mail, sans tenir compte de la casse.
ChampTypeDescription
taskstableau d’objets de tâche d’effacement de donnéesTâches correspondantes.

Retourne une tâche d’effacement avec son statut et ses compteurs. Utilisez-la pour suivre une tâche démarrée par Create ou Upload.

GET /api/data_erasure/tasks/{task_id}

ChampTypeDescription
taskObjet de tâche d’effacement de donnéesLa tâche demandée.

ListTaskRows

Anchor link to

Retourne le résultat par identifiant d’une tâche : ce qui a été supprimé, non trouvé, ignoré, ou en échec. Les identifiants sont indiqués sous forme de leur hash sha256.

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

Paramètres de requête

Anchor link to
ParamètreTypeDescription
limit / offsetintegerPagination.
ChampTypeDescription
rowstableau d’objets de ligne de tâche d’effacement de donnéesCette page de résultats.

GetTaskReport

Anchor link to

Retourne le rapport complet d’une tâche sous forme de fichier CSV : une ligne par identifiant et par application, avec son résultat. ListTaskRows affiche à la place les mêmes lignes page par page.

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

ChampTypeDescription
filenamestringNom de fichier suggéré, par exemple data-erasure-task-42.csv.
content_typestringtext/csv.
contentstring (base64)Le fichier CSV. Colonnes : task_id, created, identifier_type, identifier_hash, application_code, result, detail.

GetJournalReport

Anchor link to

Retourne tous les effacements d’une période sous forme d’un seul fichier CSV : une ligne par identifiant et par application, avec la tâche et son initiateur sur chaque ligne. C’est ce qu’un compte remet à un auditeur.

GET /api/data_erasure/report

Paramètres de requête

Anchor link to
ParamètreTypeRequisDescription
fromstring (RFC 3339)OuiDébut de la période.
tostring (RFC 3339)NonFin de la période. La valeur par défaut est l’heure actuelle.
includeDryRunsbooleanNonInclut les tâches de test à blanc.
ChampTypeDescription
filenamestringNom de fichier suggéré, par exemple data-erasure-2026-01-01-2026-04-01.csv.
content_typestringtext/csv.
contentstring (base64)Le fichier CSV. Colonnes : task_id, task_created, initiator_user_id, initiator_email, initiator_token_id, dry_run, identifier_type, identifier_hash, application_code, result, detail, row_created.

Objet de tâche d’effacement de données

Anchor link to
ChampTypeDescription
task_idintegerId de la tâche.
identifier_typestringSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, ou SUBJECT_IDENTIFIER_EMAIL.
application_codestableau de chaînesApplications couvertes par la tâche.
dry_runbooleanIndique si cette tâche s’est contentée de mesurer un volume.
statusstringERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE, ou _FAILED.
total_countintegerIdentifiants × applications couverts par cette tâche.
deleted_countintegerLe nombre effacé (ou, pour un test à blanc, qui l’aurait été).
not_found_countintegerLe nombre qui n’a correspondu à rien.
failed_countintegerLe nombre en échec. Voir ListTaskRows ou le rapport pour en connaître la raison.
fail_reasonstringDéfini lorsque status vaut ERASURE_TASK_STATUS_FAILED.
initiator_user_idintegerUtilisateur du Panneau de Contrôle ayant démarré la tâche. 0 lorsque c’est un jeton API.
initiator_token_idintegerJeton API ayant démarré la tâche. 0 lorsque c’est un utilisateur du Panneau de Contrôle.
initiator_emailstringAdresse de l’utilisateur du Panneau de Contrôle ayant démarré la tâche. Vide pour un jeton API.
createdstring (RFC 3339)Date de création de la tâche.
started_atstring (RFC 3339)Date de début du travail d’effacement.
finished_atstring (RFC 3339)Date à laquelle la tâche a atteint un statut final.

Objet de ligne de tâche d’effacement de données

Anchor link to
ChampTypeDescription
identifier_hashstringsha256 de l’identifiant. Le rapport ne stocke ni ne renvoie jamais l’identifiant lui-même.
application_codestringApplication à laquelle s’applique le résultat de cette ligne.
resultstringERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED, ou _FAILED.
detailstringDétail technique, généralement défini en cas d’échec.
createdstring (RFC 3339)Date d’écriture de cette ligne.

Sujets connexes

Anchor link to