Documentation

Export de données & effacement

Demander une archive de portabilité RGPD (art. 20) via l'API, et planifier ou annuler l'effacement du compte.


Deux droits des personnes concernées disposent d'endpoints dans l'API publique : la portabilité (art. 20), qui produit une archive JSON de vos données personnelles, et l'effacement (art. 17), qui programme la suppression du compte.

L'export de données n'a aucune interface dans le tableau de bord. Il est accessible uniquement par l'API.

Il n'existe dans l'application Parsurai ni bouton, ni page, ni lien de téléchargement pour l'archive de l'art. 20. Les trois endpoints ci-dessous constituent toute la fonctionnalité — demander une archive, en suivre l'état et la télécharger passent tous par l'API avec votre clé API. La section Export de données sous Paramètres → Sécurité correspond à l'export CSV DATEV, qui est une autre fonctionnalité.

L'effacement, lui, est différent : il dispose d'un chemin dans le tableau de bord en plus des endpoints décrits plus bas.

Aucune de ces routes n'est soumise à l'offre, et aucune n'est conditionnée à l'acceptation d'une nouvelle version des documents juridiques — subordonner un droit de la personne concernée à l'acceptation d'un document viderait ce droit de sa substance.

Demander une archive

POST/v1/me/data-export
curl -X POST "https://api.parsurai.com/v1/me/data-export" \
  -H "X-API-Key: $PARSURAI_API_KEY"
{
  "export_id": "3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31",
  "status": "pending"
}

La réponse est un 202 Accepted : l'archive est construite en arrière-plan, pas pendant la requête.

Cet endpoint est limité à 5 requêtes par heure et par compte, bien en deçà des limites générales décrites dans Limites de taux & Erreurs. Une archive est la copie la plus concentrée de vos données personnelles dans le système : elle est donc délibérément coûteuse à demander. Interrogez l'état plutôt que de demander une seconde archive.

Suivre l'état

GET/v1/me/data-export/{export_id}
curl "https://api.parsurai.com/v1/me/data-export/3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31" \
  -H "X-API-Key: $PARSURAI_API_KEY"
{
  "export_id": "3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31",
  "status": "ready",
  "download_url": "https://api.parsurai.com/v1/me/data-export/3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31/download?token=...",
  "expires_at": "2026-06-14T10:12:44Z"
}
ChampTypeDescription
export_idUUIDL'archive décrite
statusstringpending, ready, failed ou expired
download_urlstring | nullLe lien à usage unique, présent seulement tant que l'archive est ready et inutilisée
expires_attimestamp | nullQuand le jeton de téléchargement cesse de fonctionner

Un export_id qui n'est pas le vôtre renvoie 404, jamais 403 — un 403 confirmerait qu'une archive appartenant à quelqu'un d'autre existe sous cet identifiant.

download_url disparaît dès que l'archive a été téléchargée une fois. Relire l'état après un téléchargement réussi renvoie download_url: null, le statut restant ready.

Télécharger

GET/v1/me/data-export/{export_id}/download

Le token signé présent dans la chaîne de requête est la seule authentification acceptée par cette route — les navigateurs suivent un lien de téléchargement sans envoyer d'en-tête X-API-Key. Le jeton est lié à une archive et à un compte, expire, et est consommé dès la première utilisation.

curl -L "$DOWNLOAD_URL" -o data-export.json

La réponse diffuse l'archive en pièce jointe :

HTTP/1.1 200 OK
Content-Type: application/json
Content-Disposition: attachment; filename="data-export-3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31.json"
Cache-Control: no-store
Referrer-Policy: no-referrer

Tout refus — jeton expiré, mauvaise archive, mauvais propriétaire, archive non prête, déjà téléchargée — renvoie le même 403 avec le même message :

{ "detail": "download link is not valid" }

Les cas sont délibérément indiscernables : le détenteur d'un lien volé n'apprend rien sur la partie du lien qu'il faudrait modifier.

Le lien de téléchargement est à usage unique. Un transfert interrompu après que le serveur a marqué l'archive comme téléchargée ne peut pas être relancé avec le même lien — demandez alors un nouvel export.

Durée de vie du jeton et de l'archive

Les deux sont des réglages de déploiement : confirmez-les auprès de l'exploitant de votre déploiement. Les valeurs par défaut livrées sont :

RéglageValeur par défaut
Durée de vie du jeton de téléchargement60 minutes à partir du moment où l'archive est prête
Rétention de l'archive7 jours, après quoi les octets stockés sont purgés et l'enregistrement supprimé

L'archive existe pour être téléchargée, pas pour être conservée : c'est pourquoi elle a la fenêtre de rétention la plus courte de toutes les catégories de données.

Contenu de l'archive

L'archive est un unique document JSON : un manifest décrivant l'export, puis une section par catégorie de données.

SectionContenu
accountIdentifiant du compte, e-mail, nom affiché, offre, date de création
settingsLes paramètres de votre compte
webhooksLa configuration de vos endpoints de webhook
legal_acceptancesQuelles versions des documents juridiques vous avez acceptées, et quand
business_detailsLes informations d'entreprise enregistrées
billingIdentifiant client Stripe et statut d'abonnement
extraction_historyVotre historique d'extractions

manifest contient schema_version, generated_at, user_id, ainsi qu'un décompte par section dans categories.

Les identifiants d'accès sont exclus par construction : empreintes de mots de passe, empreintes de clés API et secrets de signature de webhook ne figurent jamais dans l'archive. Ce ne sont pas des données personnelles portables, et les exporter créerait un nouveau risque de divulgation.

Si l'archive assemblée dépasse la taille maximale du déploiement (64 Mo par défaut), la construction échoue et l'export se termine avec status: "failed".

Effacement

L'effacement programme la suppression du compte après un délai de grâce, pendant lequel vous pouvez encore changer d'avis.

DELETE/v1/me
curl -X DELETE "https://api.parsurai.com/v1/me" \
  -H "X-API-Key: $PARSURAI_API_KEY"
{ "scheduled_for": "2026-07-14T09:12:44Z" }

Programmer la suppression :

  • fixe la date de suppression à 30 jours,
  • résilie un abonnement Stripe actif à la fin de la période de facturation en cours, et
  • envoie un e-mail de confirmation à l'adresse du compte.

Le compte continue de fonctionner jusqu'à la date prévue. Les clés API restent valides et les extractions continuent ; les requêtes ne commencent à être refusées qu'une fois la date de suppression passée. Après le délai de grâce, une purge planifiée supprime le compte et ses données.

POST/v1/me/cancel-deletion
curl -X POST "https://api.parsurai.com/v1/me/cancel-deletion" \
  -H "X-API-Key: $PARSURAI_API_KEY"

L'annulation renvoie les données courantes du compte, dans la même structure que GET /v1/me. Un compte sans suppression programmée reçoit un 409.

L'effacement est également disponible dans le tableau de bord, sous Paramètres → Zone de danger, avec le même parcours de programmation et d'annulation. Contrairement à l'archive de l'art. 20, l'API n'est pas nécessaire.