{
    "openapi": "3.1.0",
    "info": {
        "title": "VaEmail",
        "version": "1.0.0",
        "description": "Infrastructure email pour applications et agents autonomes.\n\nVaEmail envoie des emails transactionnels et des campagnes, authentifie\nles domaines d'envoi, suit la livraison message par message et\ndiagnostique les problèmes de délivrabilité. Serveurs en Allemagne,\nenvoi via Amazon SES Europe.\n\nDeux espaces de nommage coexistent :\n\n- `/api/v1` — l'API propre à VaEmail. C'est celle à utiliser pour un\nagent : erreurs structurées, essai à blanc, idempotence, journal.\n- `/v3` — API compatible Brevo, au chemin et au schéma identiques.\nElle existe pour qu'un projet déjà écrit pour Brevo bascule en\nchangeant l'URL de base. Un nouveau projet n'a pas de raison de\ncommencer par là, sauf pour réutiliser un SDK Brevo existant.\n\nToutes les routes s'authentifient avec la même clé, en en-tête\n`api-key` (ou `X-Api-Key`).",
        "contact": {
            "name": "Agence SW",
            "url": "https://vaemail.fr"
        }
    },
    "servers": [
        {
            "url": "https://app.vaemail.fr",
            "description": "Production"
        }
    ],
    "tags": [
        {
            "name": "Découverte",
            "description": "Ce que le service sait faire, sans authentification."
        },
        {
            "name": "Transactionnel",
            "description": "Envoi unitaire déclenché par une application ou un agent."
        },
        {
            "name": "Messages",
            "description": "Suivi de livraison et vérification avant envoi."
        },
        {
            "name": "Campagnes",
            "description": "Envoi en masse à une liste, et son cycle de vie."
        },
        {
            "name": "Contacts",
            "description": "Contacts, listes et attributs personnalisés."
        },
        {
            "name": "Domaines",
            "description": "Authentification des domaines d'envoi (SPF, DKIM, DMARC)."
        },
        {
            "name": "Délivrabilité",
            "description": "Diagnostic, réputation et statistiques de remise."
        },
        {
            "name": "Compte",
            "description": "Consommation, quotas, expéditeurs, journal des actions."
        },
        {
            "name": "Webhooks",
            "description": "Abonnement aux événements d'envoi."
        },
        {
            "name": "Prospection",
            "description": "Séquences à froid : boîtes d'envoi, réponses relevées, désinscriptions. Module activable par compte."
        },
        {
            "name": "Médiathèque",
            "description": "Images hébergées pour les campagnes."
        },
        {
            "name": "RGPD",
            "description": "Export et effacement des données d'un contact."
        }
    ],
    "security": [
        {
            "CleApi": []
        }
    ],
    "paths": {
        "/api/v1/audit-logs": {
            "get": {
                "summary": "Journal des actions",
                "description": "Une ligne par appel : quelle clé, quelle opération, quels paramètres, quel résultat. Le corps des messages n'y figure jamais.\n\nPortée de clé nécessaire : `analytics.read`.",
                "operationId": "get_api_v1_audit_logs",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "analytics.read",
                "parameters": [
                    {
                        "name": "operation",
                        "in": "query",
                        "required": false,
                        "description": "Filtre sur le nom d'opération (email.send, campaign.send...).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "since",
                        "in": "query",
                        "required": false,
                        "description": "Date ISO 8601 à partir de laquelle lire.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Nombre de lignes, 1 à 200.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Curseur de pagination.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/automations/abandoned-cart": {
            "post": {
                "summary": "Déclencher le scénario « panier abandonné »",
                "description": "Déclencher le scénario « panier abandonné »\n\nPortée de clé nécessaire : `email.send`.",
                "operationId": "post_api_v1_automations_abandoned_cart",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "email.send",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/campaigns/conversion": {
            "post": {
                "summary": "Déclarer une conversion",
                "description": "Rattache un achat ou une inscription à la campagne qui l'a précédé.",
                "operationId": "post_api_v1_campaigns_conversion",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/campaigns/preview": {
            "post": {
                "summary": "Prévisualiser une campagne",
                "description": "Rend le HTML final d'une campagne, variables fusionnées, sans l'envoyer.\n\nPortée de clé nécessaire : `email.send`.",
                "operationId": "post_api_v1_campaigns_preview",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "email.send",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/campaigns/send": {
            "post": {
                "summary": "Envoyer une campagne",
                "description": "Déclenche l'envoi à toute une liste.\n\nPortée de clé nécessaire : `email.send`.\nAccepte l'en-tête `Idempotency-Key` : une relance rejoue la réponse au lieu de refaire l'action.\nDébit : 10 requêtes par minute.",
                "operationId": "post_api_v1_campaigns_send",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": true,
                "x-vaemail-scope": "email.send",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": false,
                        "description": "Identifiant unique de l'action côté appelant. La réponse est mémorisée 24 h et rejouée à l'identique en cas de relance.",
                        "schema": {
                            "type": "string",
                            "maxLength": 255
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/campaigns/{id}/stats": {
            "get": {
                "summary": "Statistiques d'une campagne",
                "description": "Statistiques d'une campagne\n\nPortée de clé nécessaire : `analytics.read`.",
                "operationId": "get_api_v1_campaigns_id_stats",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "analytics.read",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/capabilities": {
            "get": {
                "summary": "Ce que le service sait faire",
                "description": "Premier appel utile : décrit le produit, ses interfaces, ses limites et ses portées, sans clé d'API. Sert à décider si VaEmail couvre un besoin avant même d'ouvrir un compte.",
                "operationId": "get_api_v1_capabilities",
                "tags": [
                    "Découverte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "security": [],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/contacts/erase": {
            "post": {
                "summary": "Effacer les données d'un contact",
                "description": "Action irréversible : les données personnelles sont supprimées, l'adresse reste en liste de suppression pour ne pas être recontactée.\n\nPortée de clé nécessaire : `contacts.write`.",
                "operationId": "post_api_v1_contacts_erase",
                "tags": [
                    "RGPD"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "contacts.write",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/contacts/export": {
            "get": {
                "summary": "Exporter les données d'un contact",
                "description": "Exporter les données d'un contact\n\nPortée de clé nécessaire : `contacts.read`.",
                "operationId": "get_api_v1_contacts_export",
                "tags": [
                    "RGPD"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "contacts.read",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/deliverability/diagnose": {
            "get": {
                "summary": "Diagnostiquer la délivrabilité",
                "description": "Répond à « pourquoi mes emails partent mal ? » : authentification de chaque domaine, constats de réputation (rebonds durs, plaintes, provenance des contacts) et actions recommandées, chacune avec l'endpoint qui la réalise.\n\nPortée de clé nécessaire : `analytics.read`.",
                "operationId": "get_api_v1_deliverability_diagnose",
                "tags": [
                    "Délivrabilité"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "analytics.read",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": false,
                        "description": "Restreint le diagnostic à un domaine déclaré.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Verdict, constats et actions.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Diagnostic"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "404": {
                        "description": "Domaine non déclaré sur ce compte.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/domains": {
            "get": {
                "summary": "Lister les domaines d'envoi",
                "description": "Chaque domaine déclaré, avec l'état réel de son SPF, DKIM et DMARC lu dans le DNS public.\n\nPortée de clé nécessaire : `domain.read`.",
                "operationId": "get_api_v1_domains",
                "tags": [
                    "Domaines"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "domain.read",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Déclarer un domaine d'envoi",
                "description": "Deuxième étape d'une installation autonome, juste après la clé. Rend les enregistrements DNS à poser et l'état courant de l'authentification : sans SPF ni DMARC, tout ce qui part est classé en indésirable.\n\nPortée de clé nécessaire : `domain.write`.\nAccepte l'en-tête `Idempotency-Key` : une relance rejoue la réponse au lieu de refaire l'action.",
                "operationId": "post_api_v1_domains",
                "tags": [
                    "Domaines"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": true,
                "x-vaemail-scope": "domain.write",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": false,
                        "description": "Identifiant unique de l'action côté appelant. La réponse est mémorisée 24 h et rejouée à l'identique en cas de relance.",
                        "schema": {
                            "type": "string",
                            "maxLength": 255
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VerificationDomaine"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Domaine déjà déclaré, état renvoyé.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DomaineDeclare"
                                }
                            }
                        }
                    },
                    "201": {
                        "description": "Domaine déclaré.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DomaineDeclare"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/domains/verify": {
            "post": {
                "summary": "Vérifier l'authentification d'un domaine",
                "description": "Lit SPF, DKIM et DMARC dans le DNS public et rend le verdict enregistrement par enregistrement. Sans SPF et DMARC, les grands fournisseurs classent l'envoi en indésirable.\n\nPortée de clé nécessaire : `domain.write`.",
                "operationId": "post_api_v1_domains_verify",
                "tags": [
                    "Domaines"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "domain.write",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VerificationDomaine"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "État de chaque enregistrement.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VerdictDomaine"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/domains/{domain}/dns": {
            "get": {
                "summary": "Enregistrements DNS attendus pour un domaine",
                "description": "Ce qu'il faut poser chez le registrar, enregistrement par enregistrement, avec le rôle de chacun.\n\nPortée de clé nécessaire : `domain.read`.",
                "operationId": "get_api_v1_domains_domain_dns",
                "tags": [
                    "Domaines"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "domain.read",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Enregistrements attendus et état courant.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DomaineDeclare"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "404": {
                        "description": "Domaine non déclaré sur ce compte.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/health": {
            "get": {
                "summary": "État du service",
                "description": "Base de données, file d'attente et transporteur. Répond 503 si la base est injoignable.",
                "operationId": "get_api_v1_health",
                "tags": [
                    "Découverte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/messages": {
            "get": {
                "summary": "Lister les messages",
                "description": "Du plus récent au plus ancien. Pagination par curseur : rappeler l'endpoint avec `cursor` = `next_cursor`.\n\nPortée de clé nécessaire : `email.read_status`.",
                "operationId": "get_api_v1_messages",
                "tags": [
                    "Messages"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "email.read_status",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Filtre : queued, sent, delivered, failed, suppressed, held, cancelled.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "required": false,
                        "description": "Filtre sur l'étiquette posée à l'envoi.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Filtre sur le destinataire.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Nombre de lignes, 1 à 200 (50 par défaut).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Curseur de pagination renvoyé par un appel précédent.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/messages/validate": {
            "post": {
                "summary": "Essai à blanc d'un envoi",
                "description": "Dit si l'envoi passerait et nomme ce qui le bloquerait, SANS rien envoyer. À utiliser après une configuration, avant le premier vrai message.\n\nPortée de clé nécessaire : `email.send`.",
                "operationId": "post_api_v1_messages_validate",
                "tags": [
                    "Messages"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "email.send",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EssaiABlanc"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Verdict, éléments bloquants et avertissements.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResultatEssaiABlanc"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/messages/{id}": {
            "get": {
                "summary": "Statut d'un message",
                "description": "Statut de remise et suite des événements connus (remise, ouverture, clic, rebond, plainte).\n\nPortée de clé nécessaire : `email.read_status`.",
                "operationId": "get_api_v1_messages_id",
                "tags": [
                    "Messages"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "email.read_status",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Le message et ses événements.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MessageDetail"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "404": {
                        "description": "Aucun message de cet identifiant pour ce compte.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/stats/cohorts": {
            "get": {
                "summary": "Cohortes d'envoi par mois",
                "description": "Cohortes d'envoi par mois\n\nPortée de clé nécessaire : `analytics.read`.",
                "operationId": "get_api_v1_stats_cohorts",
                "tags": [
                    "Délivrabilité"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "analytics.read",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/stats/deliverability": {
            "get": {
                "summary": "Statistiques de remise par domaine destinataire",
                "description": "Statistiques de remise par domaine destinataire\n\nPortée de clé nécessaire : `analytics.read`.",
                "operationId": "get_api_v1_stats_deliverability",
                "tags": [
                    "Délivrabilité"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "analytics.read",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/suppressions": {
            "get": {
                "summary": "Lister les adresses sorties du circuit",
                "description": "Rebonds durs, plaintes et désinscriptions. Un envoi vers une de ces adresses est refusé : les lire évite de réessayer une adresse morte et de faire monter le taux de rebonds.\n\nPortée de clé nécessaire : `contacts.read`.",
                "operationId": "get_api_v1_suppressions",
                "tags": [
                    "Délivrabilité"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "contacts.read",
                "parameters": [
                    {
                        "name": "reason",
                        "in": "query",
                        "required": false,
                        "description": "Filtre : hard_bounce, soft_bounce_limit, complaint, unsubscribe, manual.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "since",
                        "in": "query",
                        "required": false,
                        "description": "Date ISO 8601 à partir de laquelle lire.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Nombre de lignes, 1 à 200.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Curseur de pagination.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/api/v1/transactional/send": {
            "post": {
                "summary": "Envoyer un email",
                "description": "Met un message en file et répond immédiatement 202 avec son identifiant : la réponse dit que le message est ACCEPTÉ, pas qu'il est arrivé. Pour la remise, interroger GET /api/v1/messages/{id}.\n\nPortée de clé nécessaire : `email.send`.\nAccepte l'en-tête `Idempotency-Key` : une relance rejoue la réponse au lieu de refaire l'action.\nDébit : 60 requêtes par minute.",
                "operationId": "post_api_v1_transactional_send",
                "tags": [
                    "Transactionnel"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": true,
                "x-vaemail-scope": "email.send",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": false,
                        "description": "Identifiant unique de l'action côté appelant. La réponse est mémorisée 24 h et rejouée à l'identique en cas de relance.",
                        "schema": {
                            "type": "string",
                            "maxLength": 255
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EnvoiTransactionnel"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Message accepté et mis en file.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MessageAccepte"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "description": "Portée insuffisante, ou domaine expéditeur hors de ceux autorisés pour la clé.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Contenu manquant, destinataire supprimé, ou paramètres invalides.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Débit ou plafond journalier de la clé atteint.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Erreur"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/usage": {
            "get": {
                "summary": "Consommation et plafonds",
                "description": "Quota mensuel, envois du jour, et pour la clé utilisée : ses portées, son plafond journalier et ce qu'il en reste. Un agent qui ne sait pas ce qu'il lui reste ne peut pas décider de s'arrêter.\n\nPortée de clé nécessaire : `billing.read`.",
                "operationId": "get_api_v1_usage",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "x-vaemail-scope": "billing.read",
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "403": {
                        "$ref": "#/components/responses/PorteeInsuffisante"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/account": {
            "get": {
                "summary": "Informations du compte",
                "description": "Informations du compte",
                "operationId": "get_v3_account",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts": {
            "get": {
                "summary": "Lister les contacts",
                "description": "Lister les contacts",
                "operationId": "get_v3_contacts",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Créer ou mettre à jour un contact",
                "description": "Créer ou mettre à jour un contact",
                "operationId": "post_v3_contacts",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/attributes": {
            "get": {
                "summary": "Lister les attributs personnalisés",
                "description": "Lister les attributs personnalisés",
                "operationId": "get_v3_contacts_attributes",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/attributes/{category}/{name}": {
            "post": {
                "summary": "Créer un attribut",
                "description": "Créer un attribut",
                "operationId": "post_v3_contacts_attributes_category_name",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier un attribut",
                "description": "Modifier un attribut",
                "operationId": "put_v3_contacts_attributes_category_name",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer un attribut",
                "description": "Supprimer un attribut",
                "operationId": "delete_v3_contacts_attributes_category_name",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/import": {
            "post": {
                "summary": "Importer des contacts en lot",
                "description": "Importer des contacts en lot",
                "operationId": "post_v3_contacts_import",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/lists": {
            "get": {
                "summary": "Lister les listes",
                "description": "Lister les listes",
                "operationId": "get_v3_contacts_lists",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Créer une liste",
                "description": "Créer une liste",
                "operationId": "post_v3_contacts_lists",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/lists/{id}": {
            "get": {
                "summary": "Lire une liste",
                "description": "Lire une liste",
                "operationId": "get_v3_contacts_lists_id",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Renommer une liste",
                "description": "Renommer une liste",
                "operationId": "put_v3_contacts_lists_id",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer une liste",
                "description": "Supprimer une liste",
                "operationId": "delete_v3_contacts_lists_id",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/contacts/{identifier}": {
            "get": {
                "summary": "Lire un contact",
                "description": "L'identifiant est l'adresse email ou l'identifiant numérique.",
                "operationId": "get_v3_contacts_identifier",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier un contact",
                "description": "Modifier un contact",
                "operationId": "put_v3_contacts_identifier",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer un contact",
                "description": "Supprimer un contact",
                "operationId": "delete_v3_contacts_identifier",
                "tags": [
                    "Contacts"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns": {
            "get": {
                "summary": "Lister les campagnes",
                "description": "Lister les campagnes",
                "operationId": "get_v3_emailCampaigns",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Créer une campagne",
                "description": "Créer une campagne",
                "operationId": "post_v3_emailCampaigns",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}": {
            "get": {
                "summary": "Lire une campagne",
                "description": "Lire une campagne",
                "operationId": "get_v3_emailCampaigns_id",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier une campagne",
                "description": "Modifier une campagne",
                "operationId": "put_v3_emailCampaigns_id",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer une campagne",
                "description": "Supprimer une campagne",
                "operationId": "delete_v3_emailCampaigns_id",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/cancel": {
            "post": {
                "summary": "Annuler un envoi",
                "description": "Annuler un envoi\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "post_v3_emailCampaigns_id_cancel",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/pause": {
            "post": {
                "summary": "Interrompre un envoi en cours",
                "description": "Interrompre un envoi en cours",
                "operationId": "post_v3_emailCampaigns_id_pause",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/resume": {
            "post": {
                "summary": "Reprendre un envoi interrompu",
                "description": "Reprendre un envoi interrompu",
                "operationId": "post_v3_emailCampaigns_id_resume",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/schedule": {
            "post": {
                "summary": "Programmer un envoi",
                "description": "Programmer un envoi",
                "operationId": "post_v3_emailCampaigns_id_schedule",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/sendNow": {
            "post": {
                "summary": "Envoyer maintenant",
                "description": "ACTION DESTRUCTIVE ET IRRÉVERSIBLE : les emails partent immédiatement à toute la liste. Exige une confirmation explicite dans le corps de la requête. Un appel sans corps a expédié 2 982 emails un samedi soir le 05/09/2026 ; la confirmation existe depuis.\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.\nDébit : 10 requêtes par minute.",
                "operationId": "post_v3_emailCampaigns_id_sendNow",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/sendTest": {
            "post": {
                "summary": "Envoyer un test",
                "description": "À faire avant tout envoi réel.\n\nDébit : 20 requêtes par minute.",
                "operationId": "post_v3_emailCampaigns_id_sendTest",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/statistics": {
            "get": {
                "summary": "Statistiques d'une campagne",
                "description": "Statistiques d'une campagne",
                "operationId": "get_v3_emailCampaigns_id_statistics",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/status": {
            "put": {
                "summary": "Changer le statut d'une campagne",
                "description": "Changer le statut d'une campagne",
                "operationId": "put_v3_emailCampaigns_id_status",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/emailCampaigns/{id}/stop": {
            "post": {
                "summary": "Interrompre un envoi en cours (synonyme de pause)",
                "description": "Interrompre un envoi en cours (synonyme de pause)",
                "operationId": "post_v3_emailCampaigns_id_stop",
                "tags": [
                    "Campagnes"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/media": {
            "get": {
                "summary": "Lister les images",
                "description": "Lister les images",
                "operationId": "get_v3_media",
                "tags": [
                    "Médiathèque"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Téléverser une image",
                "description": "Téléverser une image\n\nDébit : 60 requêtes par minute.",
                "operationId": "post_v3_media",
                "tags": [
                    "Médiathèque"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/media/{uuid}": {
            "get": {
                "summary": "Lire une image",
                "description": "Lire une image",
                "operationId": "get_v3_media_uuid",
                "tags": [
                    "Médiathèque"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer une image",
                "description": "Supprimer une image\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_media_uuid",
                "tags": [
                    "Médiathèque"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/campaigns": {
            "get": {
                "summary": "Lister les séquences",
                "description": "Lister les séquences",
                "operationId": "get_v3_outreach_campaigns",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Créer une séquence",
                "description": "Créer une séquence",
                "operationId": "post_v3_outreach_campaigns",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/campaigns/{id}": {
            "get": {
                "summary": "Lire une séquence",
                "description": "Lire une séquence",
                "operationId": "get_v3_outreach_campaigns_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier une séquence",
                "description": "Modifier une séquence",
                "operationId": "put_v3_outreach_campaigns_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer une séquence",
                "description": "Supprimer une séquence\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_outreach_campaigns_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/campaigns/{id}/enroll": {
            "post": {
                "summary": "Inscrire des prospects dans une séquence",
                "description": "Inscrire des prospects dans une séquence\n\nDébit : 60 requêtes par minute.",
                "operationId": "post_v3_outreach_campaigns_id_enroll",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/campaigns/{id}/stats": {
            "get": {
                "summary": "Statistiques d'une séquence",
                "description": "Statistiques d'une séquence",
                "operationId": "get_v3_outreach_campaigns_id_stats",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/campaigns/{id}/status": {
            "post": {
                "summary": "Démarrer, mettre en pause ou arrêter une séquence",
                "description": "Passer en « running » déclenche des envois réels aux prospects inscrits.",
                "operationId": "post_v3_outreach_campaigns_id_status",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/identity": {
            "get": {
                "summary": "Lire l'identification légale de l'expéditeur",
                "description": "Lire l'identification légale de l'expéditeur",
                "operationId": "get_v3_outreach_identity",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Déclarer l'identification légale de l'expéditeur",
                "description": "Raison sociale et adresse postale, reprises au pied de chaque message (L.34-5 du CPCE). Tant qu'elles sont vides, l'inscription en campagne et le démarrage sont refusés.",
                "operationId": "put_v3_outreach_identity",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/inbox": {
            "get": {
                "summary": "Lister les réponses reçues",
                "description": "Réponses relevées en IMAP sur les boîtes d'envoi du compte, classées (intéressé, refus, absence, désinscription). C'est la seule voie entrante de VaEmail à ce jour : elle est rattachée à une séquence, ce n'est pas une boîte générique.",
                "operationId": "get_v3_outreach_inbox",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/inbox/{id}": {
            "get": {
                "summary": "Lire une réponse",
                "description": "Lire une réponse",
                "operationId": "get_v3_outreach_inbox_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Changer le classement ou l'état d'une réponse",
                "description": "Changer le classement ou l'état d'une réponse",
                "operationId": "put_v3_outreach_inbox_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/inbox/{id}/reply": {
            "post": {
                "summary": "Répondre à un prospect",
                "description": "Envoie la réponse depuis la boîte qui a reçu le message, dans le même fil.\n\nDébit : 30 requêtes par minute.",
                "operationId": "post_v3_outreach_inbox_id_reply",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/mailboxes": {
            "get": {
                "summary": "Lister les boîtes d'envoi et leur santé",
                "description": "Lister les boîtes d'envoi et leur santé",
                "operationId": "get_v3_outreach_mailboxes",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Déclarer une boîte d'envoi",
                "description": "Déclarer une boîte d'envoi",
                "operationId": "post_v3_outreach_mailboxes",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/mailboxes/{id}": {
            "get": {
                "summary": "Lire une boîte d'envoi",
                "description": "Lire une boîte d'envoi",
                "operationId": "get_v3_outreach_mailboxes_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier une boîte d'envoi",
                "description": "Modifier une boîte d'envoi",
                "operationId": "put_v3_outreach_mailboxes_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer une boîte d'envoi",
                "description": "Supprimer une boîte d'envoi\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_outreach_mailboxes_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/prospects": {
            "get": {
                "summary": "Lister les prospects",
                "description": "Lister les prospects",
                "operationId": "get_v3_outreach_prospects",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Ajouter des prospects",
                "description": "Ajouter des prospects\n\nDébit : 60 requêtes par minute.",
                "operationId": "post_v3_outreach_prospects",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer des prospects en lot",
                "description": "Supprimer des prospects en lot\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_outreach_prospects",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/outreach/prospects/{id}": {
            "get": {
                "summary": "Lire un prospect",
                "description": "Lire un prospect",
                "operationId": "get_v3_outreach_prospects_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier un prospect",
                "description": "Modifier un prospect",
                "operationId": "put_v3_outreach_prospects_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer un prospect",
                "description": "Supprimer un prospect\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_outreach_prospects_id",
                "tags": [
                    "Prospection"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/senders": {
            "get": {
                "summary": "Lister les expéditeurs",
                "description": "Lister les expéditeurs",
                "operationId": "get_v3_senders",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Déclarer un expéditeur",
                "description": "Déclarer un expéditeur",
                "operationId": "post_v3_senders",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/senders/{id}": {
            "delete": {
                "summary": "Supprimer un expéditeur",
                "description": "Supprimer un expéditeur\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_senders_id",
                "tags": [
                    "Compte"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/smtp/email": {
            "post": {
                "summary": "Envoyer un email (schéma Brevo)",
                "description": "Même schéma que `POST https://api.brevo.com/v3/smtp/email`. Pour un nouveau développement, préférer `/api/v1/transactional/send`, qui rend des erreurs structurées.\n\nDébit : 300 requêtes par minute.",
                "operationId": "post_v3_smtp_email",
                "tags": [
                    "Transactionnel"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/smtp/statistics/aggregatedReport": {
            "get": {
                "summary": "Rapport agrégé des envois",
                "description": "Rapport agrégé des envois",
                "operationId": "get_v3_smtp_statistics_aggregatedReport",
                "tags": [
                    "Délivrabilité"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/smtp/templates": {
            "get": {
                "summary": "Lister les templates transactionnels",
                "description": "Lister les templates transactionnels",
                "operationId": "get_v3_smtp_templates",
                "tags": [
                    "Transactionnel"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/webhooks": {
            "get": {
                "summary": "Lister les webhooks",
                "description": "Lister les webhooks",
                "operationId": "get_v3_webhooks",
                "tags": [
                    "Webhooks"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "post": {
                "summary": "Créer un webhook",
                "description": "Créer un webhook",
                "operationId": "post_v3_webhooks",
                "tags": [
                    "Webhooks"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        },
        "/v3/webhooks/{id}": {
            "get": {
                "summary": "Lire un webhook",
                "description": "Lire un webhook",
                "operationId": "get_v3_webhooks_id",
                "tags": [
                    "Webhooks"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "put": {
                "summary": "Modifier un webhook",
                "description": "Modifier un webhook",
                "operationId": "put_v3_webhooks_id",
                "tags": [
                    "Webhooks"
                ],
                "x-vaemail-destructive": false,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            },
            "delete": {
                "summary": "Supprimer un webhook",
                "description": "Supprimer un webhook\n\n⚠ Action irréversible : à ne pas lancer sans validation humaine explicite.",
                "operationId": "delete_v3_webhooks_id",
                "tags": [
                    "Webhooks"
                ],
                "x-vaemail-destructive": true,
                "x-vaemail-idempotent": false,
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Succes"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/NonAuthentifie"
                    },
                    "422": {
                        "$ref": "#/components/responses/RequeteInvalide"
                    },
                    "429": {
                        "$ref": "#/components/responses/TropDeRequetes"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "CleApi": {
                "type": "apiKey",
                "in": "header",
                "name": "api-key",
                "description": "Clé d'API du compte. `X-Api-Key` est accepté aussi, par compatibilité."
            }
        },
        "responses": {
            "NonAuthentifie": {
                "description": "Clé API manquante, invalide ou compte désactivé.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Erreur"
                        }
                    }
                }
            },
            "PorteeInsuffisante": {
                "description": "La clé d'API ne porte pas la portée exigée par cette opération (voir x-vaemail-scope).",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Erreur"
                        }
                    }
                }
            },
            "RequeteInvalide": {
                "description": "Paramètres invalides.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Erreur"
                        }
                    }
                }
            },
            "TropDeRequetes": {
                "description": "Trop de requêtes : débit ou plafond journalier atteint.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Erreur"
                        }
                    }
                }
            }
        },
        "schemas": {
            "Succes": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "const": true
                    },
                    "data": {
                        "description": "Contenu propre à la ressource."
                    }
                },
                "required": [
                    "success"
                ]
            },
            "Erreur": {
                "type": "object",
                "description": "Toute erreur porte `error.code`, stable, sur lequel un programme peut brancher son comportement. `success` et `message` sont conservés pour les intégrations antérieures.",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "const": false
                    },
                    "message": {
                        "type": "string"
                    },
                    "error": {
                        "type": "object",
                        "properties": {
                            "code": {
                                "type": "string",
                                "enum": [
                                    "DOMAIN_NOT_VERIFIED",
                                    "RECIPIENT_SUPPRESSED",
                                    "TEMPLATE_NOT_FOUND",
                                    "MESSAGE_NOT_FOUND",
                                    "CONTENT_REQUIRED",
                                    "QUOTA_EXCEEDED",
                                    "DAILY_LIMIT_REACHED",
                                    "TOO_MANY_RECIPIENTS",
                                    "SENDER_DOMAIN_NOT_ALLOWED",
                                    "INSUFFICIENT_SCOPE",
                                    "IDEMPOTENCY_KEY_REUSED",
                                    "UNAUTHORIZED",
                                    "VALIDATION_FAILED",
                                    "RATE_LIMITED"
                                ]
                            },
                            "message": {
                                "type": "string"
                            },
                            "retryable": {
                                "type": "boolean",
                                "description": "Vrai si le même appel peut aboutir plus tard sans rien changer."
                            },
                            "resolution": {
                                "type": "object",
                                "description": "Action qui corrige l'erreur, avec l'endpoint qui la réalise quand il y en a un.",
                                "properties": {
                                    "action": {
                                        "type": "string"
                                    },
                                    "endpoint": {
                                        "type": "string"
                                    }
                                }
                            },
                            "details": {
                                "type": "object"
                            },
                            "documentation": {
                                "type": "string",
                                "format": "uri"
                            }
                        },
                        "required": [
                            "code",
                            "message",
                            "retryable"
                        ]
                    }
                },
                "required": [
                    "success",
                    "message",
                    "error"
                ],
                "examples": [
                    {
                        "success": false,
                        "message": "Le domaine expéditeur du compte n'est pas dans ceux autorisés pour cette clé.",
                        "error": {
                            "code": "SENDER_DOMAIN_NOT_ALLOWED",
                            "message": "Le domaine expéditeur du compte n'est pas dans ceux autorisés pour cette clé.",
                            "retryable": false,
                            "resolution": {
                                "action": "use_allowed_sender_domain"
                            }
                        }
                    }
                ]
            },
            "EnvoiTransactionnel": {
                "type": "object",
                "properties": {
                    "to": {
                        "type": "string",
                        "format": "email",
                        "description": "Destinataire."
                    },
                    "subject": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "html": {
                        "type": "string",
                        "maxLength": 102400,
                        "description": "Corps HTML. Obligatoire si `template_id` est absent."
                    },
                    "template_id": {
                        "type": "integer",
                        "description": "Template transactionnel à utiliser. Obligatoire si `html` est absent."
                    },
                    "variables": {
                        "type": "object",
                        "description": "Valeurs fusionnées dans le template."
                    },
                    "from_name": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "reply_to": {
                        "type": "string",
                        "format": "email"
                    },
                    "tag": {
                        "type": "string",
                        "maxLength": 50,
                        "description": "Étiquette libre, utile pour retrouver le message ensuite."
                    },
                    "attachments": {
                        "type": "array",
                        "maxItems": 10,
                        "items": {
                            "type": "object",
                            "properties": {
                                "filename": {
                                    "type": "string",
                                    "maxLength": 200
                                },
                                "content": {
                                    "type": "string",
                                    "description": "Contenu encodé en base64."
                                },
                                "type": {
                                    "type": "string",
                                    "maxLength": 100
                                }
                            },
                            "required": [
                                "filename",
                                "content"
                            ]
                        }
                    }
                },
                "required": [
                    "to"
                ],
                "examples": [
                    {
                        "to": "client@exemple.fr",
                        "subject": "Votre commande est prête",
                        "html": "<p>Bonjour, votre commande vous attend.</p>",
                        "tag": "commande"
                    }
                ]
            },
            "MessageAccepte": {
                "type": "object",
                "description": "202 : le message est ACCEPTÉ et mis en file, pas encore remis. Interroger `/api/v1/messages/{id}` pour la remise.",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "const": true
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "status": {
                                "type": "string",
                                "enum": [
                                    "queued",
                                    "held"
                                ]
                            }
                        }
                    }
                }
            },
            "MessageDetail": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "status": {
                                "type": "string",
                                "enum": [
                                    "queued",
                                    "sent",
                                    "delivered",
                                    "failed",
                                    "suppressed",
                                    "held",
                                    "cancelled"
                                ]
                            },
                            "to": {
                                "type": "string",
                                "format": "email"
                            },
                            "subject": {
                                "type": "string"
                            },
                            "error": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Motif d'échec renvoyé par le transporteur."
                            },
                            "sent_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time"
                            },
                            "events": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "type": {
                                            "type": "string"
                                        },
                                        "classification": {
                                            "type": [
                                                "string",
                                                "null"
                                            ]
                                        },
                                        "at": {
                                            "type": "string",
                                            "format": "date-time"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "EssaiABlanc": {
                "type": "object",
                "properties": {
                    "to": {
                        "type": "string",
                        "format": "email"
                    },
                    "subject": {
                        "type": "string"
                    },
                    "html": {
                        "type": "string"
                    },
                    "template_id": {
                        "type": "integer"
                    }
                },
                "required": [
                    "to"
                ]
            },
            "ResultatEssaiABlanc": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "sendable": {
                                "type": "boolean",
                                "description": "Vrai si l'envoi passerait tel quel."
                            },
                            "blocking": {
                                "type": "array",
                                "description": "Ce qui empêche l'envoi, avec le même code que l'erreur correspondante.",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "warnings": {
                                "type": "array",
                                "items": {
                                    "type": "object"
                                }
                            },
                            "quota_remaining": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            },
                            "daily_key_remaining": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            }
                        }
                    }
                }
            },
            "VerificationDomaine": {
                "type": "object",
                "properties": {
                    "domain": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "dkim_selector": {
                        "type": "string",
                        "maxLength": 100
                    }
                },
                "required": [
                    "domain"
                ]
            },
            "DomaineDeclare": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "domain": {
                                "type": "string"
                            },
                            "dkim_selector": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "authentication": {
                                "type": "object"
                            },
                            "dns_records": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "type": {
                                            "type": "string",
                                            "description": "Type d'enregistrement (TXT, MX, CNAME)."
                                        },
                                        "host": {
                                            "type": "string"
                                        },
                                        "value": {
                                            "type": "string"
                                        },
                                        "role": {
                                            "type": "string",
                                            "description": "À quoi sert cet enregistrement."
                                        },
                                        "publishable": {
                                            "type": "boolean",
                                            "description": "Faux si la valeur contient encore un gabarit à compléter : la publier casserait l'authentification."
                                        },
                                        "missing_values": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "description": "Valeurs à obtenir avant de publier cet enregistrement."
                                        }
                                    }
                                }
                            },
                            "dns_ready": {
                                "type": "boolean",
                                "description": "Vrai si tous les enregistrements sont publiables en l'état."
                            },
                            "dns_note": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Ce qui manque, quand un enregistrement n'est pas publiable tel quel."
                            },
                            "next_step": {
                                "type": "string",
                                "description": "Ce qu'il reste à faire, en une phrase."
                            }
                        }
                    }
                }
            },
            "VerdictDomaine": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "domain": {
                                "type": "string"
                            },
                            "spf": {
                                "type": "object"
                            },
                            "dkim": {
                                "type": "object"
                            },
                            "dmarc": {
                                "type": "object"
                            },
                            "ok": {
                                "type": "boolean",
                                "description": "SPF et DMARC présents."
                            }
                        }
                    }
                }
            },
            "Diagnostic": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean"
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "status": {
                                "type": "string",
                                "enum": [
                                    "ok",
                                    "warning",
                                    "critical"
                                ]
                            },
                            "authentication": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/VerdictDomaine"
                                }
                            },
                            "issues": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "key": {
                                            "type": "string"
                                        },
                                        "level": {
                                            "type": "string",
                                            "enum": [
                                                "info",
                                                "warning",
                                                "critical"
                                            ]
                                        },
                                        "title": {
                                            "type": "string"
                                        },
                                        "summary": {
                                            "type": [
                                                "string",
                                                "null"
                                            ]
                                        },
                                        "cause": {
                                            "type": [
                                                "string",
                                                "null"
                                            ]
                                        },
                                        "actions": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    }
                                }
                            },
                            "recommended_actions": {
                                "type": "array",
                                "items": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "x-vaemail-scopes": {
        "email.send": "Envoyer des emails (transactionnel et campagnes).",
        "email.read_status": "Lire le statut de livraison des messages.",
        "domain.read": "Lire les domaines et leur authentification.",
        "domain.write": "Déclarer et vérifier un domaine.",
        "contacts.read": "Lire les contacts et les listes.",
        "contacts.write": "Créer et modifier les contacts et les listes.",
        "analytics.read": "Lire les statistiques et la délivrabilité.",
        "billing.read": "Lire la consommation et les quotas."
    },
    "x-vaemail-error-codes": {
        "DOMAIN_NOT_VERIFIED": "Le domaine d'envoi n'est pas authentifié.",
        "RECIPIENT_SUPPRESSED": "Destinataire dans la liste de suppression.",
        "TEMPLATE_NOT_FOUND": "Template transactionnel introuvable.",
        "MESSAGE_NOT_FOUND": "Message introuvable.",
        "CONTENT_REQUIRED": "Fournir « html » ou « template_id ».",
        "QUOTA_EXCEEDED": "Quota mensuel atteint.",
        "DAILY_LIMIT_REACHED": "Plafond journalier de la clé d'API atteint.",
        "TOO_MANY_RECIPIENTS": "Plus de destinataires que ce que la clé autorise.",
        "SENDER_DOMAIN_NOT_ALLOWED": "Domaine expéditeur hors de ceux autorisés pour cette clé.",
        "INSUFFICIENT_SCOPE": "La clé d'API ne porte pas la portée nécessaire.",
        "IDEMPOTENCY_KEY_REUSED": "Clé d'idempotence déjà utilisée avec un contenu différent.",
        "UNAUTHORIZED": "Clé API manquante, invalide ou compte désactivé.",
        "VALIDATION_FAILED": "Paramètres invalides.",
        "RATE_LIMITED": "Trop de requêtes."
    },
    "x-vaemail-capabilities": "https://app.vaemail.fr/api/v1/capabilities"
}
