# Exécuter une tâche d’expurgation Découvrez comment exécuter votre première tâche d’expurgation. Cet exemple utilise des tâches d’expurgation pour expurger les données personnelles d’un client et vous empêcher d’y accéder dans l’API et dans le Dashboard Stripe. ## Créer votre première tâche et expurger un client test L’objet [RedactionJob](https://docs.stripe.com/api/privacy/redaction-job.md) est l’objet principal avec lequel vous interagissez et l’abstraction principale permettant de gérer toutes les demandes d’expurgation. Vous pouvez utiliser l’objet RedactionJob pour indiquer les objets à expurger, les valider afin de vous assurer qu’ils sont admissibles, puis exécuter l’expurgation. ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs \ -u "<>:" \ -d "objects[customers][]=cus_1xx" \ -d "objects[customers][]=cus_2xx" ``` Une fois que vous avez créé une tâche, celle-ci commence à valider l’admissibilité des objets à expurger. Pour les objets `Customer`, la tâche d’expurgation identifie tous les objets associés à ce client, y compris PaymentIntents, Charges, Subscriptions, Invoices, PaymentMethods, les notifications, etc. Certains de ces objets peuvent avoir des centaines d’enregistrements, directement corrélés à la fréquence à laquelle un client peut effectuer des achats ou ajouter des informations de paiement. Bien que vous puissiez spécifier des identifiants supplémentaires pour les objets appartenant à un même client, vous n’avez pas besoin de les définir explicitement. Nous avons une limite de 10 identificateurs d’objet à expurger dans chaque nouvelle tâche. ## Configurer un client avec des données de test Avant de créer une tâche d’expurgation, commencez par créer un client test dans un environnement de test. Accédez au [Dashboard Stripe](https://dashboard.stripe.com/test/customers), cliquez sur **Ajouter un client**, et remplissez quelques informations de test dans la boîte de dialogue. Après avoir créé le client, copiez l’ID `cus_`. Vous pouvez utiliser le Dashboard Stripe ou l’API pour créer n’importe quel objet supplémentaire que votre intégration Stripe utilise, comme `PaymentIntents`, `Charges`, `PaymentMethods`, `Subscriptions` récurrents, etc. Nous créons un `PaymentIntent` non confirmé de base pour cet objet `Customer`, comme suit : ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "objects[amount]=999" \ -d "objects[currency]=usd" \ -d "objects[customer]=ADD_CUS_ID_HERE" \ -d "objects[description]=Test charge" ``` Consultez le [guide d’intégration PaymentIntents](https://docs.stripe.com/payments/payment-intents.md#creating-a-paymentintent) pour en savoir plus. Lors de cette première exécution, vous laissez ce PaymentIntent incomplet pour démontrer une fonctionnalité de la tâche ultérieurement. Si vous affichez le client dans le Dashboard, vous pouvez voir ce qui suit : ![Paiement non confirmé dans le Dashboard](https://b.stripecdn.com/docs-statics-srv/assets/payment-in-dashboard.67647e73eec0ab69a78848e01b057293.png) Paiement non confirmé dans le Dashboard ## Créer une tâche d’expurgation Maintenant que vous disposez d’un objet Customer avec des objets expurgeables supplémentaires, créez une tâche d’expurgation avec l’ID de client test. La requête se présente comme suit : ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs \ -u "<>:" \ -d "objects[customers][]=ADD_CUS_ID_HERE" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "validating", "validation_behavior": "error" } ``` Par défaut, `validation_behavior` est défini sur `error`. Cette option est configurable et vous trouverez plus de détails dans les étapes suivantes de ce guide. ## Afficher l’objet Redaction Job Lorsque l’état d’une tâche change, Stripe envoie un webhook. Vous pouvez consulter les [événements de webhook](https://dashboard.stripe.com/test/events) dans le Dashboard Stripe. Pour en savoir plus, consultez la [documentation consacrée aux webhooks](https://docs.stripe.com/webhooks.md#webhook-endpoint-def). Vous pouvez également utiliser [Récupérer une tâche d’expurgation](https://docs.stripe.com/api/privacy/redaction-job/retrieve.md) pour vérifier l’état de la tâche : ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" ``` La tâche sera à l’état `validating`, ce qui signifie qu’elle vérifie si l’objet fourni et les objets associés sont admissibles à l’expurgation. Ce processus peut prendre un certain temps, en fonction du nombre d’objets associés à l’objet fourni. Si la tâche ne détecte aucune erreur ou restriction, l’état passe à `ready`. Dans le cas contraire, il passe à `failed`. Si vous avez créé le PaymentIntent plus tôt et ne l’avez pas finalisé, il sera à l’état `failed`. ## Examiner les erreurs de validation En cas d’échec d’une tâche, vous pouvez vérifier la liste des erreurs à l’aide de l’endpoint des erreurs de validation. Le PaymentIntent incomplet que vous avez créé précédemment vous renverra la réponse suivante. ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/validation_errors \ -u "<>:" ``` ```json { "object": "list", "data": [ { "id": "prjve_123", "object": "privacy.redaction_job_validation_error", "code": "invalid_state", "erroring_object": { "id": "pi_123", "object_type": "payment_intent" }, "message": "PaymentIntent is not finalized. Confirm or cancel the PaymentIntent." } ], "has_more": false, "url": "/v1/privacy/redaction_jobs/:job/validation_errors" } ``` Les messages d’erreur vous indiquent pourquoi vous ne pouvez pas expurger un objet. Ces restrictions dépendent à la fois de notre capacité à prendre en charge l’expurgation de l’objet et du comportement du produit. L’expurgation de certains objets peut avoir des résultats différents, vous devez donc effectuer certaines actions avant de pouvoir expurger les objets. Dans cet exemple, vous pouvez effectuer l’action requise à l’aide de l’API Stripe ou du Dashboard en confirmant ou en annulant le PaymentIntent. Selon votre cas d’utilisation, si vous n’avez aucune raison commerciale de conserver les données du client, vous pouvez utiliser le comportement de validation des tâches d’expurgation pour appliquer automatiquement les corrections que nous recommandons. ## Comportement de validation Nous avons deux modes de comportement de validation, `error` et `fix`. Vous pouvez mettre à jour le mode comme suit : ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" \ -d validation_behavior=fix ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "failed","validation_behavior": "fix" } ``` Si vous le souhaitez, vous pouvez également redéfinir `validation_behavior` sur `error` en utilisant : ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" \ -d validation_behavior=error ``` La configuration du comportement de validation modifie uniquement la configuration et ne change rien d’autre. L’action de correction s’applique lors de l’exécution du job. Considérez la correction comme un comportement destructif. Vous pouvez consulter [la liste des corrections](https://docs.stripe.com/privacy/redaction.md#fix-validation-behaviors) et les correctifs appliqués. ## Valider à nouveau une tâche d’expurgation Lorsqu’une tâche n’est pas validée, elle reste à l’état `failed`. Une fois que vous avez résolu toutes les erreurs de validation, soit par le biais de `validation_behavior: fix`, soit via des modifications manuelles, validez la tâche. ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/validate \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "validating", "validation_behavior": "fix" } ``` Dans l’exemple de PaymentIntent, l’utilisation du comportement de validation « fix » (corriger) résout l’erreur de validation. Si vous tentez d’expurger des objets dans d’autres produits Stripe, répétez [l’étape](https://docs.stripe.com/privacy/redaction/example.md#validation-errors) pour examiner les erreurs de validation jusqu’à ce que vous les résolviez toutes et que l’état de la tâche passe à `ready`. ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "ready", "validation_behavior": "fix" } ``` ## Exécuter une tâche d’expurgation Une fois que la tâche est à l’état `ready`, vous pouvez l’exécuter. Votre tâche passe à l’état `redacting`. Aucune action supplémentaire n’est nécessaire. ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/run \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "redacting", "validation_behavior": "fix" } ``` Une fois la validation terminée, l’état passe à `succeeded`. ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "succeeded", "validation_behavior": "fix" } ``` Les objets associés seront également expurgés à partir du Dashboard et de l’API. ```curl curl https://api.stripe.com/v1/customers/cus_xxx \ -u "<>:" ``` ```json { "id": "cus_xxx", "object": "customer","deleted": true } ``` ```curl curl https://api.stripe.com/v1/payment_intents/pi_xxx \ -u "<>:" ``` ```json { "id": "pi_xxx", "object": "payment_intent", "amount": 999, ... "amount_received": 999, ... "confirmation_method": "automatic", "created": 1234567890, "currency": "usd", "customer": "cus_xxx","description": "[redacted]", "last_payment_error": null, "latest_charge": "ch_xxx", ... "payment_method": "pm_xxx", "payment_method_configuration_details": { "id": "pmc_xxx", "parent": null }, ... } ``` ## Annuler une tâche d’expurgation Vous pouvez annuler la tâche et abandonner toutes les modifications à tout moment après la validation et avant l’expurgation. Une seule tâche peut interagir avec un objet à la fois, c’est pourquoi le fait de créer plusieurs tâches expurgeant le même objet directement ou implicitement entraîne une erreur pour les tâches suivantes. L’annulation d’une tâche libère l’objet et permet à d’autres tâches de l’expurger à nouveau. L’exemple de tâche avec le PaymentIntent ayant déjà été exécuté, vous ne pouvez pas l’annuler. Pour tester cette fonction, [créez une nouvelle tâche d’expurgation](https://docs.stripe.com/privacy/redaction/example.md#create-job) et annulez la tâche comme suit : ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/A_DIFFERENT_REDACTION_JOB_ID/cancel \ -u "<>:" ``` Si une erreur de validation indique « Cet objet est en cours de traitement par une autre tâche active », vous pouvez libérer les objets en annulant cette tâche. ## Rechercher un client Pour expurger les informations relatives à une personne, trouvez l’identifiant de l’objet `Customer` qui lui est associé. Pour ce faire, utilisez l’[endpoint Customer Search](https://docs.stripe.com/api/customers/search.md), la [page Client du Dashboard](https://dashboard.stripe.com/customers) ou la barre de recherche du Dashboard située en haut de la page. Une fois que vous avez trouvé le client, copiez son ID. Si vous utilisez le Dashboard, vous pouvez cliquer sous **ID client** pour le copier. ## See also - [Expurger des données personnelles](https://docs.stripe.com/privacy/redaction.md) - [Documentation sur l’API Redaction Jobs](https://docs.stripe.com/api/privacy/redaction-job.md) - [Gérer les demandes de suppression des clients](https://docs.stripe.com/privacy/deletion-requests.md)