# Supprimer un profil

> Efface les données personnelles d'un profil et annule ses e-mails planifiés. Utilisez cette opération pour répondre à une demande de droit à l'effacement.
>
> Identifiez le profil par n'importe quelle combinaison de `external_profile_id`, `customer_user_id` et `email` — Adapty Mail résout le profil de la même manière qu'il le fait lors de l'enregistrement.
>
> L'effacement est définitif. Une requête ultérieure [Save profile](#operation/saveProfile) portant les mêmes identifiants ne recrée pas le profil.
>
> Répétez une suppression par `external_profile_id` ou `customer_user_id` et elle réussit à nouveau sans rien modifier. Répétez-en une qui ne portait que `email` et elle retourne `404` : l'effacement supprime l'adresse stockée, de sorte qu'un e-mail n'a plus rien à faire correspondre.

## OpenAPI

```yaml
/api-specs/adapty-mail-api.yaml post /api/v1/profile/delete/
openapi: 3.1.0
info:
  title: Adapty Mail API
  version: 1.0.0
  description: |
    L'API Adapty Mail vous permet d'envoyer des profils utilisateur et des événements de transaction à Adapty Mail directement
    depuis votre serveur, sans faire transiter les données par le SDK Adapty.

    Utilisez-la pour :

    - Ajouter des abonnés lorsque vous n'avez pas encore de base dans Adapty Mail.
    - Réutiliser la base d'abonnés de vos autres applications.
    - Alimenter Adapty Mail en mode serveur à serveur, avec votre backend comme source de vérité.

    Un profil avec une adresse e-mail suffit pour le flow **never purchased**. Tous les autres flows
    (renewal cancelled, billing issue, expired, refunded) sont pilotés par l'historique d'achats, donc ces
    profils ont également besoin d'événements de transaction pour être placés dans le bon flow.

    Pour un guide étape par étape, consultez [Envoyer des e-mails et des transactions via l'API Adapty Mail](/docs/mail-send-data-via-api).
servers:
  - url: https://api-mail.adapty.io
    description: Serveur de production
paths:
  /api/v1/profile/delete/:
    post:
      summary: Supprimer un profil
      description: |
        Efface les données personnelles d'un profil et annule ses e-mails planifiés. Utilisez cette opération pour répondre à une demande de droit à l'effacement.

        Identifiez le profil par n'importe quelle combinaison de `external_profile_id`, `customer_user_id` et `email` — Adapty Mail résout le profil de la même manière qu'il le fait lors de l'enregistrement.

        L'effacement est définitif. Une requête ultérieure [Save profile](#operation/saveProfile) portant les mêmes identifiants ne recrée pas le profil.

        Répétez une suppression par `external_profile_id` ou `customer_user_id` et elle réussit à nouveau sans rien modifier. Répétez-en une qui ne portait que `email` et elle retourne `404` : l'effacement supprime l'adresse stockée, de sorte qu'un e-mail n'a plus rien à faire correspondre.
      operationId: deleteProfile
      security:
        - apikeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProfileDeleteDTO"
            examples:
              byExternalProfileId:
                summary: Supprimer par l'identifiant envoyé lors de l'enregistrement du profil
                value:
                  external_profile_id: user_12345
              byEmail:
                summary: Supprimer par adresse e-mail
                value:
                  email: jane@example.com
      responses:
        "204":
          description: Profil supprimé. La réponse ne contient pas de corps.
        "400":
          description: Aucun identifiant n'a été fourni.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: At least one of external_profile_id, customer_user_id or email must be provided
                        error_code: missing_identifier
                        status_code: 400
                        field_name: null
        "403":
          description: Clé API secrète manquante ou invalide.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: Secret key doesn't exist
                        error_code: secret_key_does_not_exist_error
                        status_code: 403
                        field_name: null
        "404":
          description: Aucun profil ne correspond aux identifiants envoyés.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: Profile not found
                        error_code: profile_not_found_error
                        status_code: 404
                        field_name: null
components:
  schemas:
    ProfileDeleteDTO:
      type: object
      description: |
        Identifiants du profil à supprimer. Envoyez au moins un des champs `external_profile_id`,
        `customer_user_id` ou `email`.
      anyOf:
        - required:
            - external_profile_id
        - required:
            - customer_user_id
        - required:
            - email
      properties:
        external_profile_id:
          type: string
          description: L'identifiant que vous avez envoyé lors de l'enregistrement du profil.
        customer_user_id:
          type: string
          description: L'identifiant de l'utilisateur dans votre propre système.
        email:
          type: string
          format: email
          description: L'adresse e-mail associée au profil.
    Errors:
      type: object
      description: Réponse d'erreur standard. Chaque échec renvoie un statut 4XX avec cette structure.
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
                description: Description de l'erreur lisible par un humain.
              error_code:
                type: string
                description: Identifiant d'erreur lisible par une machine.
              status_code:
                type: integer
                description: Code de statut HTTP pour cette erreur.
              field_name:
                type: string
                description: Le champ de la requête à l'origine de l'erreur, ou `null` si l'erreur n'est pas liée à un champ spécifique.
  securitySchemes:
    apikeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: |
        Authentifiez chaque requête avec votre clé API secrète Adapty Mail, envoyée en tant qu'en-tête **Authorization**
        avec la valeur `Bearer {your_secret_api_key}`, par exemple, `Bearer secret_live_...`.

        Vous trouverez cette clé dans Adapty Mail sous **Settings**. La clé est spécifique au projet — elle identifie le
        projet auquel les données appartiennent, ainsi les endpoints de profil et de transaction ne nécessitent pas d'ID de projet.
```
