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 tohttps://rpc-api.svc-nue.pushwoosh.comTous 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 toChaque requête doit inclure un en-tête Authorization avec votre jeton d’API serveur :
Authorization: Api VOTRE_JETON_APILe 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, ensnake_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, ouSUBJECT_IDENTIFIER_EMAIL) plus une liste d’identifiersde 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: truese contente de compter ce qui serait effacé et n’écrit rien. Citer letask_idde ce test à blanc commeconfirmation_dry_run_task_idsur 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 HTTP | Signification |
|---|---|
400 Bad Request | Argument 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 Unauthorized | En-tête Authorization manquant ou invalide. |
403 Forbidden | Le 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 Found | La 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 Requests | Le 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éthode | Chemin | Description |
|---|---|---|
POST | /api/data_erasure/tasks | Créer une tâche d’effacement (ou de test à blanc) |
POST | /api/data_erasure/upload | Créer une tâche d’effacement à partir d’un CSV d’identifiants importé |
GET | /api/data_erasure/tasks | Lister 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}/rows | Lister les résultats par identifiant d’une tâche |
GET | /api/data_erasure/tasks/{task_id}/report | Télécharger le rapport d’une tâche au format CSV |
GET | /api/data_erasure/report | Télécharger toutes les tâches d’une période en un seul CSV |
Create
Anchor link toDé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ètre | Type | Requis | Description |
|---|---|---|---|
identifierType | string | Oui | SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, ou SUBJECT_IDENTIFIER_EMAIL. |
identifiers | tableau de chaînes | Oui | Identifiants de la personne concernée pour ce seul type, jusqu’à 10 000 par tâche, sans valeur vide. |
applicationCodes | tableau de chaînes | Oui | Codes 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. |
dryRun | boolean | Non | Compte ce qui serait effacé et n’écrit rien. La valeur par défaut est false. |
confirmationDryRunTaskId | integer | Non | task_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}Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
task_id | integer | Id de la tâche créée. Utilisez-le avec tous les autres points de terminaison de cette page. |
Upload
Anchor link toCré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| Champ | Requis | Description |
|---|---|---|
file | Oui | Fichier 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_type | Oui | user_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_codes | Oui | Codes d’application séparés par des virgules. |
dry_run | Non | true/false. |
confirmation_dry_run_task_id | Non | Identique à Create. |
Réponse
Anchor link to{ "task_id": 123, "identifier_count": 480, "duplicate_count": 3, "skipped_rows": 1}ListTasks
Anchor link toListe 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ètre | Type | Description |
|---|---|---|
limit / offset | integer | Pagination. |
includeDryRuns | boolean | Inclut les tâches de test à blanc (mesure uniquement). |
from / to | string (RFC 3339) | Conserve les tâches démarrées dans [from, to). |
applicationCode | string | Conserve les tâches qui couvrent cette application. |
initiatorUserId | integer | Conserve les tâches démarrées par cet utilisateur du Panneau de Contrôle. 0 (valeur par défaut) conserve tous les initiateurs. |
initiatorTokenId | integer | Conserve les tâches démarrées par ce jeton API. 0 (valeur par défaut) conserve tous les initiateurs. |
initiatorEmail | string | Conserve 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. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
tasks | tableau d’objets de tâche d’effacement de données | Tâches correspondantes. |
GetTask
Anchor link toRetourne 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}
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
task | Objet de tâche d’effacement de données | La tâche demandée. |
ListTaskRows
Anchor link toRetourne 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ètre | Type | Description |
|---|---|---|
limit / offset | integer | Pagination. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
rows | tableau d’objets de ligne de tâche d’effacement de données | Cette page de résultats. |
GetTaskReport
Anchor link toRetourne 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
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
filename | string | Nom de fichier suggéré, par exemple data-erasure-task-42.csv. |
content_type | string | text/csv. |
content | string (base64) | Le fichier CSV. Colonnes : task_id, created, identifier_type, identifier_hash, application_code, result, detail. |
GetJournalReport
Anchor link toRetourne 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ètre | Type | Requis | Description |
|---|---|---|---|
from | string (RFC 3339) | Oui | Début de la période. |
to | string (RFC 3339) | Non | Fin de la période. La valeur par défaut est l’heure actuelle. |
includeDryRuns | boolean | Non | Inclut les tâches de test à blanc. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
filename | string | Nom de fichier suggéré, par exemple data-erasure-2026-01-01-2026-04-01.csv. |
content_type | string | text/csv. |
content | string (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| Champ | Type | Description |
|---|---|---|
task_id | integer | Id de la tâche. |
identifier_type | string | SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, ou SUBJECT_IDENTIFIER_EMAIL. |
application_codes | tableau de chaînes | Applications couvertes par la tâche. |
dry_run | boolean | Indique si cette tâche s’est contentée de mesurer un volume. |
status | string | ERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE, ou _FAILED. |
total_count | integer | Identifiants × applications couverts par cette tâche. |
deleted_count | integer | Le nombre effacé (ou, pour un test à blanc, qui l’aurait été). |
not_found_count | integer | Le nombre qui n’a correspondu à rien. |
failed_count | integer | Le nombre en échec. Voir ListTaskRows ou le rapport pour en connaître la raison. |
fail_reason | string | Défini lorsque status vaut ERASURE_TASK_STATUS_FAILED. |
initiator_user_id | integer | Utilisateur du Panneau de Contrôle ayant démarré la tâche. 0 lorsque c’est un jeton API. |
initiator_token_id | integer | Jeton API ayant démarré la tâche. 0 lorsque c’est un utilisateur du Panneau de Contrôle. |
initiator_email | string | Adresse de l’utilisateur du Panneau de Contrôle ayant démarré la tâche. Vide pour un jeton API. |
created | string (RFC 3339) | Date de création de la tâche. |
started_at | string (RFC 3339) | Date de début du travail d’effacement. |
finished_at | string (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| Champ | Type | Description |
|---|---|---|
identifier_hash | string | sha256 de l’identifiant. Le rapport ne stocke ni ne renvoie jamais l’identifiant lui-même. |
application_code | string | Application à laquelle s’applique le résultat de cette ligne. |
result | string | ERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED, ou _FAILED. |
detail | string | Détail technique, généralement défini en cas d’échec. |
created | string (RFC 3339) | Date d’écriture de cette ligne. |