# Adapt Mail API 0.16.0 https://adapt-mail.com/fr/docs/ # Documents Adapt Mail ## Courrier pour votre produit Connectez votre interface aux boîtes aux lettres Adapt Mail:, lisez et envoyez des lettres, affichez des boîtes de dialogue, gérez les fichiers, les contacts et les règles des expéditeurs. Créez des comptes, connectez des domaines, payez des boîtes mail et augmentez leur volume dans votre compte personnel où vous avez connecté votre messagerie. Mail API vous permet de travailler avec des boîtes aux lettres déjà créées. ## Commencez par l'autorisation Pour l'intégration du serveur, utilisez la clé mail API- avec X-Customer-ID.. Pour vous connecter pour un utilisateur spécifique, recevez un jeton Bearer- en utilisant son identifiant et son mot de passe. ``` GET /v1/mailboxes X-API-Key: X-Customer-ID: ``` ## Première demande Adresse de base API - https://adapt-mail.com. Toutes les demandes sont traitées via HTTPS. Pour les demandes JSON-, veuillez indiquer Content-Type: application/json. Recevez un jeton en utilisant l'identifiant et le mot de passe de votre compte de messagerie. Demandez ensuite une liste de boîtes aux lettres et stockez id de la boîte aux lettres souhaitée : elle est utilisée comme mailbox_id dans les adresses de requête. Remplacez les valeurs entre crochets par vos propres données. ``` curl https://adapt-mail.com/v1/auth/token \ -H "Content-Type: application/json" \ --data '{"login":"","password":"","mode":"account"}' curl https://adapt-mail.com/v1/mailboxes \ -H "Authorization: Bearer " ``` ## Formats de documentation Le schéma OpenAPI décrit les paramètres de requête et les réponses. Le fichier llms-full.txt contient l'ouvrage de référence complet au format texte. Des liens de téléchargement sont disponibles au début de chaque page. # Zones d’autorisation et d’accès ## Connexion par lien Votre serveur appelle POST /v1/auth/login-link avec X-API-Key et X-Customer-ID. Indiquez mailbox_id pour ouvrir uniquement cette boîte ; sans ce champ, tout le compte sera accessible. locale choisit la langue de l’interface. La réponse contient login_url, expires_in=300, expires_at (UTC), account_id et mailbox_id. Le bouton « Ouvrir la messagerie » ouvre login_url en entier, y compris #token. Le lien est valable 5 minutes et une seule fois. Ne le journalisez pas et n’exposez pas la clé API dans le navigateur. La page de connexion retire le jeton de la barre d’adresse et l’échange contre des cookies HttpOnly. En cas d’erreur ou d’expiration, créez un nouveau lien. Les droits et l’état du compte et de la boîte sont revérifiés. Les sessions utilisateur ne peuvent pas créer de liens. ``` curl https://adapt-mail.com/v1/auth/login-link \ -H "X-API-Key: " \ -H "X-Customer-ID: " \ -H "Content-Type: application/json" \ --data '{"mailbox_id":42,"locale":"en"}' { "login_url": "https://adapt-mail.com/auth/#token=", "expires_in": 300, "expires_at": "2026-10-20T12:05:00Z", "account_id": 123, "mailbox_id": 42 } ``` ## Clé du partenaire Utilisez la clé mail API- de votre intégration. Transmettez-le à X-API-Key et ID du compte de messagerie - dans l'en-tête requis X-Customer-ID. Il s'agit de ID du compte, pas de external_id ni de ID de la boîte aux lettres. La clé permet d'accéder uniquement aux clients de votre intégration. Stockez la clé sur le serveur de votre partenaire. Ne placez pas la clé d'intégration partagée dans le navigateur ou l'application mobile. ``` curl 'https://adapt-mail.com/v1/mailboxes' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' ``` ## Jeton utilisateur POST /v1/auth/token accepte login, password et mode. Pour mode=account, le login user-ID est utilisé, pour mode=mailbox, l'adresse complète de la boîte aux lettres est utilisée. Les mots de passe des comptes et des boîtes mail sont indépendants. La réponse contient access_token, token_type=Bearer et expires_in=3600. Le jeton de compte ouvre ses cases ; jeton de boîte - une seule boîte. Après expiration, vous recevrez un nouveau jeton. ``` POST /v1/auth/token Content-Type: application/json {"login":"user-123","password":"","mode":"account"} GET /v1/mailboxes Authorization: Bearer ``` ## Sessions de navigateur POST /v1/auth/login est pour son propre site adapt-mail.com. Il nécessite le bon Origin et installe HttpOnly cookies. Non classé X-Mail-Session sélectionne l'une des entrées enregistrées, mais sans cookie ne donne pas accès. Pour l'interface tierce, utilisez votre serveur et votre jeton utilisateur. Ne comptez pas sur un accès aléatoire entre domaines à partir de cookie: public CORS pour n'importe quel site n°. # Expédition et opérations ## Mettre une lettre en file d'attente Recevez une boîte ID de GET /v1/mailboxes. Créez un Idempotency-Key unique pour une soumission et enregistrez-le jusqu'au résultat final. Pour la relecture réseau, utilisez la même clé et le même corps. HTTP 202 renvoie un objet d'opération, pas une confirmation de livraison. Le champ id contient ID opérations. Sondage GET /v1/operations/{operation_id}. ``` POST /v1/mailboxes/42/send Idempotency-Key: message-20261019-0001 Content-Type: application/json {"to":["team@example.com"],"subject":"Hello","text":"A message from Adapt Mail"} ``` ## Comment comprendre le résultat - `queued` — La lettre attend d'être envoyée. - `running` — L'envoi est en cours. - `succeeded` — Le serveur de messagerie a accepté la soumission. Vérifiez le résultat pour chaque destinataire. - `failed` — L'envoi a échoué. La raison est indiquée en error. - `cancelled` — Envoi annulé. - `uncertain` — Échec de la confirmation du résultat de l'envoi. Veuillez vérifier l'opération et votre dossier envoyé avant de réessayer. Après un envoi réussi, le champ result contient accepted_recipients - destinataires acceptés, rejected_recipients - destinataires rejetés et sent_saved - le résultat de l'enregistrement d'une copie dans l'envoi. L'acceptation d'une lettre par un serveur de messagerie ne garantit pas sa livraison dans la boîte de réception du destinataire. Pour annuler un envoi en attente, exécutez POST /v1/operations/{operation_id}/cancel. La méthode /retry ne renvoie pas l'e-mail. ## Réponse, transfert et expédition différée Pour répondre, veuillez inclure message_id de l'e-mail d'origine dans reply_to_message_id et le transférer à references. Dans to, entrez l'adresse de réponse de reply_to ou l'adresse de l'expéditeur. Pour répondre à tout le monde, ajoutez les autres participants à to et cc, en excluant votre propre adresse. Pour transférer des pièces jointes, transmettez forward_message avec folder, uidvalidity et uid.. Pour vos fichiers téléchargés, utilisez file_ids. La taille totale des pièces jointes est limitée à 25 Mio. send_at est spécifié avec un fuseau horaire, stocké dans UTC ; l’expédition différée est disponible dans un délai d’un an. Les limites sont vérifiées lors de l'envoi réel, et non lors de la création de la file d'attente. # Envoyer par SMTP ## Avant de vous connecter Envoyez des e-mails depuis votre application par SMTP avec l’identifiant et le mot de passe de la boîte mail. Les clés API et les jetons de compte ne permettent pas de s’authentifier en SMTP. Créez une boîte active sur un domaine connecté et terminez la vérification de ses enregistrements DNS. L’identifiant est l’adresse complète, par exemple noreply@example.com. Utilisez le mot de passe de cette boîte, pas celui du compte de messagerie. Remplacez les adresses des exemples par les vôtres ; le mot de passe est saisi au lancement sans être affiché. ## Serveur, ports et chiffrement Utilisez mail.adapt-mail.com pour tout domaine connecté. Le port 465 active TLS dès la connexion ; le port 587 utilise STARTTLS avant l’authentification. Choisissez une seule option. Gardez la vérification du certificat activée. Dans ces exemples, l’adresse From et l’expéditeur de l’enveloppe SMTP correspondent à l’identifiant de la boîte. Le nom affiché de l’expéditeur est modifiable. Le port 25 sert aux échanges entre serveurs de messagerie ; utilisez 465 ou 587 pour votre application. ``` SMTP_HOST = "mail.adapt-mail.com" SMTP_PORT = 465 SMTP_USER = "noreply@example.com" SMTP_PASSWORD = "" SMTP_FROM = "noreply@example.com" SMTP_FROM_NAME = "Example" 465: implicit TLS 587: STARTTLS ``` ## Python : envoyer sur le port 465 Cet exemple utilise uniquement la bibliothèque standard de Python 3. Enregistrez-le dans send_mail.py et lancez python3 send_mail.py. Pour les envois automatiques, récupérez le mot de passe depuis la configuration sécurisée de votre application ; ne le stockez ni dans Git ni dans les journaux. ``` import smtplib import ssl from getpass import getpass from email.message import EmailMessage from email.utils import formataddr, make_msgid, formatdate username = "noreply@example.com" password = getpass("SMTP password: ") recipient = "recipient@example.net" message = EmailMessage() message["From"] = formataddr(("Example", username)) message["To"] = recipient message["Subject"] = "SMTP test" message["Date"] = formatdate(localtime=False, usegmt=True) message["Message-ID"] = make_msgid(domain=username.split("@")[1]) message.set_content("Hello! This message was sent through Adapt Mail SMTP.") with smtplib.SMTP_SSL( "mail.adapt-mail.com", 465, timeout=30, context=ssl.create_default_context(), ) as smtp: smtp.login(username, password) refused = smtp.send_message( message, from_addr=username, to_addrs=[recipient], ) print("Rejected recipients:", refused) ``` ## Python : connexion sur le port 587 Pour STARTTLS, conservez la préparation du message de l’exemple précédent et remplacez le bloc with smtplib.SMTP_SSL par celui-ci. Avec smtplib.SMTP, le mot de passe n’est envoyé qu’après la réussite de STARTTLS. ``` with smtplib.SMTP("mail.adapt-mail.com", 587, timeout=30) as smtp: smtp.ehlo() smtp.starttls(context=ssl.create_default_context()) smtp.ehlo() smtp.login(username, password) refused = smtp.send_message( message, from_addr=username, to_addrs=[recipient], ) print("Rejected recipients:", refused) ``` ## HTML et pièces jointes Ajoutez la version HTML après set_content et la pièce jointe avant l’envoi. Conservez la version texte pour les clients sans prise en charge HTML. Utilisez du HTML de confiance ou échappez les données insérées. ``` message.add_alternative( "

Hello! This message was sent through Adapt Mail.

", subtype="html", ) with open("document.pdf", "rb") as attachment: message.add_attachment( attachment.read(), maintype="application", subtype="pdf", filename="document.pdf", ) ``` ## Résultat, limites et messages envoyés Un send_message réussi signifie que le serveur SMTP a accepté le message, pas qu’il est arrivé dans la boîte de réception du destinataire. Le dictionnaire refused contient les destinataires refusés ; si tous sont refusés, Python lève SMTPRecipientsRefused. SMTP et API partagent les limites de chaque boîte : jusqu’à 30 messages sur une fenêtre glissante de 60 secondes, 50 destinataires par message et 1000 destinataires sur 24 heures glissantes, ou 5000 si la limite supérieure est activée. Tous les destinataires To, Cc et Bcc sont comptés. L’envoi direct par SMTP n’enregistre pas lui-même de copie dans les messages envoyés. Les clients de messagerie le font via IMAP ; l’API Adapt Mail enregistre cette copie séparément. ## Erreurs SMTP - `535` — Échec de l’authentification : vérifiez l’adresse complète, le mot de passe et la disponibilité de la boîte. - `451` — Échec temporaire, notamment en cas de dépassement des limites d’envoi. Réessayez après un délai. - `550 / 5xx` — Refus permanent : vérifiez les adresses, les droits de l’expéditeur et le texte de la réponse. Plus de 50 destinataires sont refusés après DATA. Corrigez la cause avant de réessayer. - `TLS / timeout` — Vérifiez mail.adapt-mail.com, le port, le mode TLS et l’accès sortant du serveur de votre application. Utilisez SMTP_SSL sur 465 ou SMTP avec STARTTLS sur 587. Lisez la réponse SMTP complète. Réessayez après un délai en cas d’échec temporaire. Si la connexion est interrompue après la transmission et que le résultat est inconnu, ne renvoyez pas aveuglément : SMTP n’a pas d’Idempotency-Key et un nouvel essai peut créer un doublon. # Lettres et dialogues ## Liste et pages GET /v1/mailboxes/{mailbox_id}/folders renvoie les dossiers avec un nombre total de lettres total, un nombre de lettres non lues unread et une valeur de uidvalidity.. Pour une liste de lettres, utilisez GET /v1/mailboxes/{mailbox_id}/messages:, la réponse contient items, next_before et uidvalidity, jusqu'à 40 lettres par page. Passez next_before comme before dans la prochaine requête. null signifie la fin de la liste. La recherche de q est limitée à 200 caractères et est effectuée en fonction du contenu du mail. ``` GET /v1/mailboxes/42/messages?folder=INBOX GET /v1/mailboxes/42/messages?folder=INBOX&before=120 ``` ## ID de lettre uid est l'identifiant de la lettre à l'intérieur du dossier, folder est le nom du dossier, mailbox_id est ID de la boîte aux lettres. La valeur uidvalidity détermine la version de numérotation des lettres dans le dossier. Prenez les quatre valeurs de la réponse API et stockez-les ensemble. Si uidvalidity a changé, retéléchargez la liste de diffusion de ce dossier : l'ancien uid ne peut plus être utilisé. La lecture du contenu ne marque pas l'e-mail comme lu. Pour marquer, faites POST /v1/mailboxes/{mailbox_id}/messages/actions avec action=read. ``` POST /v1/mailboxes/42/messages/actions {"folder":"INBOX","uidvalidity":123456,"uids":[120],"action":"read"} ``` ## La correspondance comme dialogue GET /v1/mailboxes/{mailbox_id}/threads renvoie jusqu'à 100 boîtes de dialogue. Transmettez thread_id de la conversation sélectionnée à GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} pour faire passer ses lettres de l'ancienne à la nouvelle. Une nouvelle lettre peut apparaître dans le dialogue avec un léger retard. Mettre à jour la liste ; Pour vérifier la soumission, utilisez le statut de l'opération. Il n'est pas nécessaire de renvoyer l'e-mail en raison du retard d'affichage. # Limites et stockage ## Limites générales SMTP et API Boîte aux lettres standard : 1 000 destinataires sur une période glissante de 24 heures. Boîte avec outbound_high_limit=true: 5000. Jusqu'à 30 lettres en glissant 60 secondes ; jusqu'à 50 destinataires au total en To, Cc et Bcc d'une lettre. Les SMTP-destinataires reçus sont pris en compte, y compris les adresses internes et les répétitions des destinataires dans différentes lettres. Il n’y a pas de limite horaire distincte. Il s'agit de la consommation des autorisations d'envoi, et non des statistiques des lettres livrées. GET /v1/mailboxes renvoie la limite, le débit et le reste des deux fenêtres. Il n’y a pas de dépenses cumulées pour la limite de destinataires par lettre. Si le compteur est indisponible, le serveur renvoie 503 plutôt que zéro consommation. ``` { "outbound_daily_recipient_limit": 1000, "outbound_daily_recipients_used": 120, "outbound_daily_recipients_remaining": 880, "outbound_messages_per_minute": 30, "outbound_minute_messages_used": 2, "outbound_minute_messages_remaining": 28, "outbound_recipients_per_message": 50 } ``` ## Dépassement de la limite API-send peut recevoir 202 et échouer plus tard failed avec mail_daily_limit_exceeded ou mail_minute_limit_exceeded. Plus de 50 destinataires sont immédiatement rejetés avec 422. SMTP renvoie un échec temporaire de 451 si la fenêtre est dépassée et 550 après DATA s'il y a plus de 50 destinataires. Il n’existe aucun moyen de contourner la limite via un autre protocole. ## Courrier et fichiers quota_mb est la capacité commune aux messages et aux fichiers, en Mio. used_bytes est l’espace total utilisé, en octets. storage_shared=true ; file_quota_bytes vaut quota_mb × 1048576 et ne constitue pas un espace supplémentaire. file_used_bytes est la taille d’origine des fichiers téléversés, déjà incluse dans le total. Les fichiers sont stockés avec les messages sur nos disques. Le quota commun inclut l’encodage MIME et les en-têtes. Une pièce jointe copiée dans un message envoyé occupe de l’espace supplémentaire. Les clients IMAP externes voient le dossier système Adapt Files : sa suppression efface les fichiers enregistrés. Le renouvellement et l'augmentation de volume sont disponibles dans votre compte personnel où vous avez connecté votre email. Après la fin de la période payante, la lecture et l'envoi sont bloqués. Après 24 heures, le retrait des cartons commence ; renouvelez votre abonnement avant cette date. # Événements et webhooks ## Connexion des webhooks Spécifiez l'adresse de réception des webhooks dans vos paramètres d'intégration. Il recevra des notifications sur les nouvelles lettres, l'état des boîtes aux lettres et les résultats des opérations. Dans les paramètres d'intégration, définissez un secret de webhook distinct et activez la livraison. Ce secret est utilisé pour vérifier les signatures de notification ; mail API-key ne convient pas pour cela. ## Format des notifications La notification arrive HTTP POST- demande avec Content-Type: application/json. Le champ event contient le type d'événement, timestamp — heure de notification, data — données d'événement. La composition de data dépend de l'événement. L'identifiant data.event_id permet de reconnaître la relivraison. Stockez-le avec votre ID d'intégration et traitez un événement une seule fois. ``` { "event": "mail.message.received", "timestamp": "2026-11-01T12:00:00Z", "data": { "event_id": "00000000-0000-4000-8000-000000000001", "created_at": "2026-11-01T12:00:00Z", "mailbox_id": 42, "folder": "INBOX", "uidvalidity": 123456, "uid": 120 } } ``` ## Vérification et confirmation L'en-tête X-Webhook-Signature contient HMAC-SHA256 en notation hexadécimale minuscule. Calculez la signature à partir des octets d'origine du corps de la requête et du secret du webhook. Vérifiez la signature avant de traiter les données ; la re-sérialisation de JSON modifiera les octets signés. Après avoir vérifié la signature et sauvegardé l'événement, renvoyez HTTP 200 ou 201. Les réponses 202 et 204 n'accusent pas réception. Répondez dans les 10 secondes ; Effectuez un traitement long après avoir enregistré l'événement. Les notifications peuvent arriver à plusieurs reprises et dans le désordre. Avant de modifier le statut de l'abonnement, vérifiez ses détails actuels. L'historique des livraisons est disponible dans les paramètres d'intégration. ## Quels événements se produisent - `mailbox.created` — La box est créée et prête à l'emploi. - `mailbox.expiring` — La fin de la période payante de la box approche. - `mailbox.renewed` — La période de paiement de la box a été allongée. - `mailbox.suspended` — L'accès à la boîte mail est suspendu : la lecture et l'envoi sont indisponibles. - `mailbox.resumed` — L'accès à la boîte aux lettres a été rétabli. - `mailbox.deleting_soon` — Il reste une heure avant la suppression de la case impayée. - `mailbox.deleted` — La boîte a été supprimée. - `mailbox.account_changed` — La boîte aux lettres est liée à un autre compte de messagerie. - `mail.message.received` — Une nouvelle lettre entrante est apparue dans la boîte aux lettres. - `mail.operation.succeeded` — L'opération s'est déroulée avec succès. Pour l'envoi, cela signifie l'acceptation de la lettre par le serveur de messagerie, plutôt que sa remise dans la boîte de réception du destinataire. - `mail.operation.failed` — L'opération a échoué. - `mail.operation.uncertain` — Le résultat de l'envoi est inconnu. Veuillez vérifier l'état avant de renvoyer. Rappels de paiement : 14, 7, 3, 2, 1 jour et une heure avant l'expiration. Le renouvellement annule les rappels obsolètes qui n'ont pas encore été envoyés. # Erreurs et répétitions ## Format d'erreur La réponse d'erreur contient une chaîne detail:, un objet avec code/message ou une liste d'erreurs de validation. Ne déterminez pas le comportement à partir du texte traduit : utilisez le statut HTTP- et le code généré par la machine lorsqu'ils sont présents. ``` {"detail":"..."} {"detail":{"code":"...","message":"..."}} ``` ## Codes HTTP - `400` — En-tête ou identifiant invalide. Vérifiez votre demande. - `401` — La session ou la clé n'a pas été acceptée. Connectez-vous à nouveau ou vérifiez votre clé. - `403` — Droits insuffisants ou accès à la boîte aux lettres refusé. - `404` — La ressource n'a pas été trouvée ou n'est pas disponible pour le compte actuel. - `409` — État du dossier, quota ou conflit de génération. Veuillez mettre à jour vos données avant de réessayer. - `413` — La taille du fichier dépasse la limite autorisée. - `422` — Paramètres de requête non valides. Vérifiez les champs fournis dans la réponse. - `429` — Trop de demandes. Veuillez réessayer plus tard. - `503` — Le service est temporairement indisponible. Réessayez la demande avec un certain délai. Après 401, une nouvelle connexion est requise. Après 409, relisez le statut. Après 503, répétez avec retard ; pour envoyer, gardez le même Idempotency-Key. Ne répétez pas aveuglément des actions irréversibles. # Applications connectées ## Connecter une application Connectez votre client IA à cette adresse. Choisissez les boîtes mail et les autorisations à la connexion. Autorisez uniquement les boîtes mail et les actions nécessaires. ``` URL / Resource: https://adapt-mail.com/mcp Transport: Streamable HTTP Authorization: OAuth 2.1 / PKCE S256 OAuth discovery: /.well-known/oauth-authorization-server Resource metadata: /.well-known/oauth-protected-resource/mcp ``` ## Autorisations - `mail.read` — Rechercher et lire les messages, conversations et pièces jointes. - `mail.send` — Envoyer, répondre et transférer des messages. - `mail.manage` — Brouillons, fichiers, dossiers, état de lecture, favoris, archives et spam. - `mail.delete` — Corbeille et suppression définitive de messages, brouillons et fichiers. ## Révoquer l’accès L’accès dure 30 jours. Vous pouvez le révoquer à tout moment dans les paramètres. # Paramètres de la boîte aux lettres ## Modèles de messages Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul. Le modèle remplacera le texte de l’éditeur. Les destinataires et pièces jointes seront conservés. ``` POST /v1/mailboxes/42/templates Content-Type: application/json {"name":"Welcome","subject":"Welcome","text":"Thank you for joining us.","html":"

Thank you for joining us.

"} ``` ## Réponse automatique Les réponses automatiques fonctionnent même lorsque le navigateur est fermé et comptent dans les limites d’envoi. Les listes de diffusion et messages automatiques sont exclus. Indiquez un fuseau horaire pour les dates du répondeur ; repeat_days va de 1 à 30. Seuls les nouveaux messages personnels reçoivent une réponse : From doit correspondre à Return-Path. ``` PUT /v1/mailboxes/42/autoresponder Content-Type: application/json {"enabled":true,"subject":"Away","text":"I will reply when I return.","starts_at":null,"ends_at":null,"repeat_days":7} ``` ## Filtres Jusqu’à 100 filtres par boîte et 20 conditions par filtre. Les conditions comparent les en-têtes complets ; la casse est ignorée pour ASCII, mais respectée pour les autres caractères. Le premier filtre correspondant s’applique. Les règles d’expéditeur sont prioritaires. Le traitement des anciens messages est une action distincte. Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. La boîte de réception et les dossiers personnels seront traités. Les messages envoyés, brouillons, spams et la corbeille sont exclus. ``` POST /v1/mailboxes/42/filters Content-Type: application/json {"name":"Invoices","enabled":true,"match":"all","conditions":[{"field":"subject","operator":"contains","value":"Invoice"}],"mark_read":false,"important":true,"trash":false,"move_to":null} POST /v1/mailboxes/42/filters/17/apply Idempotency-Key: apply-filter-0001 ``` ## Aperçu - `file_infected` — Une menace a été détectée. L’ouverture du fichier est bloquée. - `file_scan_unavailable` — L’antivirus est temporairement indisponible. Réessayez plus tard. Ajoutez preview=pdf à la requête de contenu d’un fichier ou d’une pièce jointe DOC, XLS, XLSX, PPT, PPTX ou ODT. Limite : 10 conversions par minute et par boîte. X-File-Scan: clean et X-File-Scanned-At indiquent le résultat et la date de l’analyse. scanned_at peut être null dans la liste des fichiers. Le résultat est conservé une heure ; une menace ou un antivirus indisponible bloque le téléchargement. ``` GET /v1/mailboxes/42/files//content?preview=pdf X-File-Scan: clean X-File-Scanned-At: 2026-10-22T12:00:00Z ``` # POST /v1/auth/login Connectez-vous dans le navigateur L'itinéraire est pour adapt-mail.com et nécessite Origin: https://adapt-mail.com. Retours HttpOnly cookies et non classifiés session_id. Pour votre client /v1/auth/token. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/login' \ -H 'Origin: https://adapt-mail.com' \ -c cookies.txt \ -H 'Content-Type: application/json' \ --data '{"login":"user-123","password":""}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Connectez-vous dans le navigateur", "operationId": "login_v1_auth_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "session_id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Trop de demandes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "L'itinéraire est pour adapt-mail.com et nécessite Origin: https://adapt-mail.com. Retours HttpOnly cookies et non classifiés session_id. Pour votre client /v1/auth/token.", "security": [] } ``` # POST /v1/auth/token Obtenir un jeton utilisateur Émet un jeton d'accès pendant une heure en fonction de l'identifiant et du mot de passe. Spécifiez mode=account pour accéder à toutes les boîtes aux lettres du compte ou mode=mailbox pour accéder à une adresse. Passez access_token dans l’en-tête Authorization: Bearer . ```sh curl -X POST 'https://adapt-mail.com/v1/auth/token' \ -H 'Content-Type: application/json' \ --data '{"login":"user-123","password":""}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Obtenir un jeton utilisateur", "operationId": "token_v1_auth_token_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "access_token": { "type": "string" }, "token_type": { "type": "string", "const": "Bearer" }, "expires_in": { "type": "integer", "const": 3600 }, "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Trop de demandes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Émet un jeton d'accès pendant une heure en fonction de l'identifiant et du mot de passe. Spécifiez mode=account pour accéder à toutes les boîtes aux lettres du compte ou mode=mailbox pour accéder à une adresse. Passez access_token dans l’en-tête Authorization: Bearer .", "security": [] } ``` # GET /v1/auth/sessions Sessions enregistrées Obligatoire cookie mail_browser. X-API-Key et Bearer ne remplacent pas ce cookie. Sans cookie, une liste vide est renvoyée. ```sh curl -X GET 'https://adapt-mail.com/v1/auth/sessions' \ -b cookies.txt ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Sessions enregistrées", "operationId": "sessions_v1_auth_sessions_get", "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "session_id": { "type": "string" }, "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "login": { "type": "string" }, "name": { "type": "string" } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Obligatoire cookie mail_browser. X-API-Key et Bearer ne remplacent pas ce cookie. Sans cookie, une liste vide est renvoyée.", "security": [ { "Browser": [] } ] } ``` # POST /v1/auth/logout Se déconnecter de la session Session utilisateur uniquement. Rappelle l'entrée sélectionnée ; les entrées restantes sont conservées. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/logout' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Se déconnecter de la session", "operationId": "logout_v1_auth_logout_post", "security": [ { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "logged_out": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Session utilisateur uniquement. Rappelle l'entrée sélectionnée ; les entrées restantes sont conservées." } ``` # GET /v1/me Profil utilisateur Renvoie le profil du compte de messagerie actuel. Utilisez-le pour afficher le nom d'utilisateur et la connexion dans votre application. ```sh curl -X GET 'https://adapt-mail.com/v1/me' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Profil utilisateur", "operationId": "me_v1_me_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "integer" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "name": { "type": "string" }, "verified": { "type": "boolean" }, "quota_mb": { "type": "integer" }, "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "auth_type": { "type": "string" }, "login": { "type": "string" }, "is_admin": { "type": "boolean" }, "files_enabled": { "type": "boolean" }, "service_managed": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie le profil du compte de messagerie actuel. Utilisez-le pour afficher le nom d'utilisateur et la connexion dans votre application." } ``` # GET /v1/avatars/{domain} Logo du domaine 200 - image ; 202 — préparation, répéter après Retry-After ; 204 - pas de logo ; 503 - erreur temporaire. Le logo ne confirme pas l'identité de l'expéditeur. ```sh curl -X GET 'https://adapt-mail.com/v1/avatars/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Логотипы доменов" ], "summary": "Logo du domaine", "operationId": "avatar_v1_avatars__domain__get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "domain", "in": "path", "required": true, "schema": { "type": "string", "title": "Domain" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "image/png": { "schema": { "type": "string", "format": "binary" } } } }, "202": { "description": "Le logo est en préparation" }, "204": { "description": "Pas de logo" }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Trop de demandes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "200 - image ; 202 — préparation, répéter après Retry-After ; 204 - pas de logo ; 503 - erreur temporaire. Le logo ne confirme pas l'identité de l'expéditeur." } ``` # GET /v1/domains Liste des domaines Des domaines personnalisés et un domaine partagé sont disponibles pour créer une adresse personnelle. ```sh curl -X GET 'https://adapt-mail.com/v1/domains' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Liste des domaines", "operationId": "list_domains_v1_domains_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Des domaines personnalisés et un domaine partagé sont disponibles pour créer une adresse personnelle." } ``` # GET /v1/domains/{domain_id}/dns DNS-enregistrements de domaine Les instructions contiennent les valeurs exactes DNS- et le résultat du test, mais ne modifient pas automatiquement DNS. ```sh curl -X GET 'https://adapt-mail.com/v1/domains//dns' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "DNS-enregistrements de domaine", "operationId": "domain_dns_v1_domains__domain_id__dns_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "domain_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Domain Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "domain_id": { "type": "integer" }, "status": { "type": "string" }, "records": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "value": { "type": "string" }, "observed": { "type": "array", "items": { "type": "string" } }, "matches": { "type": "boolean" }, "error": { "type": "string" } } } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Les instructions contiennent les valeurs exactes DNS- et le résultat du test, mais ne modifient pas automatiquement DNS." } ``` # GET /v1/mailboxes Liste des cartons et limite de consommation La liste des boîtes aux lettres est limitée par le propriétaire ou la seule boîte aux lettres de la session utilisateur. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Liste des cartons et limite de consommation", "operationId": "list_mailboxes_v1_mailboxes_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Mailbox" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La liste des boîtes aux lettres est limitée par le propriétaire ou la seule boîte aux lettres de la session utilisateur." } ``` # PATCH /v1/mailboxes/{mailbox_id} Paramètres de la boîte aux lettres Utilisez /v1 pour modifier name, password et signature. Modifiez le quota commun quota_mb dans le panneau de votre hébergeur. Les fichiers n’ont pas de quota séparé. Idempotency-Key est facultatif, mais recommandé pour les nouvelles tentatives. ```sh curl -X PATCH 'https://adapt-mail.com/v1/mailboxes/' \ -H 'Authorization: Bearer ' \ -H 'Idempotency-Key: message-20261019-0001' \ -H 'Content-Type: application/json' \ --data '{"name":"Support","signature":"Support team"}' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Paramètres de la boîte aux lettres", "operationId": "update_mailbox_v1_mailboxes__mailbox_id__patch", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } }, { "in": "header", "name": "Idempotency-Key", "required": false, "schema": { "type": "string", "minLength": 8, "maxLength": 128 } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailboxUpdate" } } } }, "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "En-tête ou identifiant invalide", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Utilisez /v1 pour modifier name, password et signature. Modifiez le quota commun quota_mb dans le panneau de votre hébergeur. Les fichiers n’ont pas de quota séparé. Idempotency-Key est facultatif, mais recommandé pour les nouvelles tentatives." } ``` # GET /v1/mailboxes/{mailbox_id}/folders Dossiers et compteurs Renvoie une liste de dossiers, le nombre d'e-mails total, le nombre de messages non lus unread et la valeur uidvalidity pour chaque dossier. Utilisez le nom du dossier et uidvalidity dans les requêtes sur ses lettres. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Dossiers et compteurs", "operationId": "folders_v1_mailboxes__mailbox_id__folders_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "flags": { "type": "array", "items": { "type": "string" } }, "total": { "type": "integer" }, "unread": { "type": "integer" }, "uidvalidity": { "type": "integer" } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie une liste de dossiers, le nombre d'e-mails total, le nombre de messages non lus unread et la valeur uidvalidity pour chaque dossier. Utilisez le nom du dossier et uidvalidity dans les requêtes sur ses lettres." } ``` # POST /v1/mailboxes/{mailbox_id}/folders Création d'un dossier Le dossier personnalisé est créé en IMAP et est disponible pour les autres clients de messagerie. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Création d'un dossier", "operationId": "create_folder_v1_mailboxes__mailbox_id__folders_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NameInput" } } } }, "responses": { "201": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Le dossier personnalisé est créé en IMAP et est disponible pour les autres clients de messagerie." } ``` # GET /v1/mailboxes/{mailbox_id}/messages Liste des lettres Renvoie jusqu'à 40 lettres, du nouveau UID à l'ancien. Pour la page suivante, passez next_before comme before.. Pour next_before=null, il n'y a plus de pages. Read ne définit pas l'indicateur de lecture. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste des lettres", "operationId": "messages_v1_mailboxes__mailbox_id__messages_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "folder", "in": "query", "required": false, "schema": { "type": "string", "default": "INBOX", "title": "Folder" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 200, "default": "", "title": "Q" } }, { "name": "before", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0 }, { "type": "null" } ], "title": "Before" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/MessageSummary" } }, "next_before": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "uidvalidity": { "type": "integer" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 40 lettres, du nouveau UID à l'ancien. Pour la page suivante, passez next_before comme before.. Pour next_before=null, il n'y a plus de pages. Read ne définit pas l'indicateur de lecture." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid} Contenu du message Envoyez folder, uidvalidity et uid à partir de la liste de diffusion. HTML effacé, les images externes ne sont pas incluses. Pour marquer une lettre comme lue, effectuez une action distincte read. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Contenu du message", "operationId": "message_v1_mailboxes__mailbox_id__messages__uid__get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "uid", "in": "path", "required": true, "schema": { "type": "integer", "title": "Uid" } }, { "name": "uidvalidity", "in": "query", "required": true, "schema": { "type": "integer", "title": "Uidvalidity" } }, { "name": "folder", "in": "query", "required": false, "schema": { "type": "string", "default": "INBOX", "title": "Folder" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Envoyez folder, uidvalidity et uid à partir de la liste de diffusion. HTML effacé, les images externes ne sont pas incluses. Pour marquer une lettre comme lue, effectuez une action distincte read." } ``` # POST /v1/mailboxes/{mailbox_id}/messages/actions Actions avec des lettres Applique une action aux messages sélectionnés dans un dossier. Transmettez leurs identifiants à uids, le nom du dossier à folder et son uidvalidity. Pour action=move, précisez également le dossier cible à destination. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//messages/actions' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"folder":"INBOX","uidvalidity":1,"uids":[1],"action":"read"}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Actions avec des lettres", "operationId": "action_v1_mailboxes__mailbox_id__messages_actions_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MessageAction" } } } }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "updated": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Applique une action aux messages sélectionnés dans un dossier. Transmettez leurs identifiants à uids, le nom du dossier à folder et son uidvalidity. Pour action=move, précisez également le dossier cible à destination." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/eml Téléchargez la lettre à EML Renvoie les MIME-bytes d'origine avec les en-têtes et les pièces jointes. Ne change pas la lisibilité. PDF est créé dans le navigateur via l'impression ; Il n’existe pas d’itinéraire PDF- distinct. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//eml?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Téléchargez la lettre à EML", "operationId": "export_eml_v1_mailboxes__mailbox_id__messages__uid__eml_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "uid", "in": "path", "required": true, "schema": { "type": "integer", "title": "Uid" } }, { "name": "uidvalidity", "in": "query", "required": true, "schema": { "type": "integer", "title": "Uidvalidity" } }, { "name": "folder", "in": "query", "required": false, "schema": { "type": "string", "default": "INBOX", "title": "Folder" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "message/rfc822": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie les MIME-bytes d'origine avec les en-têtes et les pièces jointes. Ne change pas la lisibilité. PDF est créé dans le navigateur via l'impression ; Il n’existe pas d’itinéraire PDF- distinct." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/attachments/{index} Télécharger la pièce jointe Ajoutez preview=pdf à la requête de contenu d’un fichier ou d’une pièce jointe DOC, XLS, XLSX, PPT, PPTX ou ODT. Limite : 10 conversions par minute et par boîte. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//attachments/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Télécharger la pièce jointe", "operationId": "attachment_v1_mailboxes__mailbox_id__messages__uid__attachments__index__get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "uid", "in": "path", "required": true, "schema": { "type": "integer", "title": "Uid" } }, { "name": "index", "in": "path", "required": true, "schema": { "type": "integer", "title": "Index" } }, { "name": "uidvalidity", "in": "query", "required": true, "schema": { "type": "integer", "title": "Uidvalidity" } }, { "name": "folder", "in": "query", "required": false, "schema": { "type": "string", "default": "INBOX", "title": "Folder" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } }, { "name": "preview", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "pdf" ] } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } }, "headers": { "X-File-Scan": { "schema": { "type": "string" } }, "X-File-Scanned-At": { "schema": { "type": "string" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Ajoutez preview=pdf à la requête de contenu d’un fichier ou d’une pièce jointe DOC, XLS, XLSX, PPT, PPTX ou ODT. Limite : 10 conversions par minute et par boîte." } ``` # POST /v1/mailboxes/{mailbox_id}/send Envoyer une lettre Obligatoire Idempotency-Key 8 à 128 caractères. Répéter avec la même clé et le même corps renvoie la même opération ; un autre organisme donne 409. HTTP 202 signifie faire la queue. Vérifiez l'état de l'opération, et non le fait qu'une réponse a été reçue. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//send' \ -H 'Authorization: Bearer ' \ -H 'Idempotency-Key: message-20261019-0001' \ -H 'Content-Type: application/json' \ --data '{"to":["team@example.com"],"subject":"Hello","text":"A message from Adapt Mail"}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Envoyer une lettre", "operationId": "send_v1_mailboxes__mailbox_id__send_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } }, { "in": "header", "name": "Idempotency-Key", "required": true, "schema": { "type": "string", "minLength": 8, "maxLength": 128 } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendInput" } } } }, "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "En-tête ou identifiant invalide", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Taille dépassée", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Obligatoire Idempotency-Key 8 à 128 caractères. Répéter avec la même clé et le même corps renvoie la même opération ; un autre organisme donne 409. HTTP 202 signifie faire la queue. Vérifiez l'état de l'opération, et non le fait qu'une réponse a été reçue." } ``` # GET /v1/operations Liste des opérations Renvoie les 100 dernières opérations. Une session d'une boîte aux lettres individuelle ne voit que ses opérations. ```sh curl -X GET 'https://adapt-mail.com/v1/operations' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste des opérations", "operationId": "operations_v1_operations_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Operation" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie les 100 dernières opérations. Une session d'une boîte aux lettres individuelle ne voit que ses opérations." } ``` # GET /v1/operations/{operation_id} État de l'opération Renvoie l'état actuel d'une opération par son id. Alors que status est égal à queued ou running, l'opération n'est pas terminée. Une fois terminé, cochez result en cas de succès ou error en cas d'erreur. ```sh curl -X GET 'https://adapt-mail.com/v1/operations/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "État de l'opération", "operationId": "operation_v1_operations__operation_id__get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "operation_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Operation Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie l'état actuel d'une opération par son id. Alors que status est égal à queued ou running, l'opération n'est pas terminée. Une fois terminé, cochez result en cas de succès ou error en cas d'erreur." } ``` # POST /v1/operations/{operation_id}/cancel Annuler l'envoi Annule l'envoi d'une lettre alors que l'opération est dans l'état queued. Si l'envoi a déjà commencé, terminé ou a été annulé, un 409 est renvoyé. Vous ne pouvez pas rappeler une lettre déjà envoyée en utilisant cette méthode. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//cancel' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Annuler l'envoi", "operationId": "cancel_v1_operations__operation_id__cancel_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "operation_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Operation Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "cancelled": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Annule l'envoi d'une lettre alors que l'opération est dans l'état queued. Si l'envoi a déjà commencé, terminé ou a été annulé, un 409 est renvoyé. Vous ne pouvez pas rappeler une lettre déjà envoyée en utilisant cette méthode." } ``` # POST /v1/operations/{operation_id}/retry Répétez l'opération Redémarre l'application des règles d'expéditeur : kind=sender_rules, status=failed. L'envoi de lettres ne peut pas être répété en utilisant cette méthode. Pour un état inapproprié, 409 est renvoyé ; La répétition de la création et de la configuration d'une boîte aux lettres via cette méthode n'est pas disponible et renvoie 403. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//retry' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Répétez l'opération", "operationId": "retry_operation_v1_operations__operation_id__retry_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "operation_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Operation Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Redémarre l'application des règles d'expéditeur : kind=sender_rules, status=failed. L'envoi de lettres ne peut pas être répété en utilisant cette méthode. Pour un état inapproprié, 409 est renvoyé ; La répétition de la création et de la configuration d'une boîte aux lettres via cette méthode n'est pas disponible et renvoie 403." } ``` # PUT /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Enregistrer le brouillon Crée ou met à jour un brouillon avant draft_id. Pour un nouveau brouillon, générez UUID ; Pour les sauvegardes ultérieures, utilisez le même identifiant. Vous pouvez continuer votre brouillon depuis un autre appareil après vous être connecté à la même boîte aux lettres. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//drafts/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"to":["team@example.com"],"subject":"Hello","text":"A message from Adapt Mail"}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Enregistrer le brouillon", "operationId": "save_draft_v1_mailboxes__mailbox_id__drafts__draft_id__put", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "draft_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Draft Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DraftInput" } } } }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Crée ou met à jour un brouillon avant draft_id. Pour un nouveau brouillon, générez UUID ; Pour les sauvegardes ultérieures, utilisez le même identifiant. Vous pouvez continuer votre brouillon depuis un autre appareil après vous être connecté à la même boîte aux lettres." } ``` # DELETE /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Supprimer le brouillon La suppression d'un brouillon n'affecte pas un e-mail déjà mis en file d'attente. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//drafts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Supprimer le brouillon", "operationId": "delete_draft_v1_mailboxes__mailbox_id__drafts__draft_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "draft_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Draft Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La suppression d'un brouillon n'affecte pas un e-mail déjà mis en file d'attente." } ``` # GET /v1/mailboxes/{mailbox_id}/drafts Liste des brouillons Renvoie jusqu'à 100 brouillons, du plus récent au plus ancien. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//drafts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste des brouillons", "operationId": "drafts_v1_mailboxes__mailbox_id__drafts_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "mailbox_id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/DraftInput" }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 100 brouillons, du plus récent au plus ancien." } ``` # GET /v1/mailboxes/{mailbox_id}/threads Liste des dialogues Renvoie jusqu'à 100 boîtes de dialogue, en commençant par les plus récemment mises à jour. Les messages des dossiers Trash et Junk ne sont pas inclus dans la liste. La nouvelle lettre peut paraître avec un léger retard ; réessayez la demande de mise à jour de la liste. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste des dialogues", "operationId": "threads_v1_mailboxes__mailbox_id__threads_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "thread_id": { "type": "string" }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "messages": { "type": "integer" }, "unread": { "type": "integer" }, "senders": { "type": "array", "items": { "type": "string" } }, "subject": { "type": "string" }, "sender": { "type": "string" } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 100 boîtes de dialogue, en commençant par les plus récemment mises à jour. Les messages des dossiers Trash et Junk ne sont pas inclus dans la liste. La nouvelle lettre peut paraître avec un léger retard ; réessayez la demande de mise à jour de la liste." } ``` # GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} Lettres de dialogue Renvoie jusqu'à 100 lettres de la conversation sélectionnée, de l'ancienne à la nouvelle. Transmettez thread_id à partir de la liste de dialogue. Les e-mails déjà supprimés ou qui ne sont plus disponibles ne sont pas inclus dans la réponse. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lettres de dialogue", "operationId": "thread_v1_mailboxes__mailbox_id__threads__thread_id__get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "thread_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Thread Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Message" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 100 lettres de la conversation sélectionnée, de l'ancienne à la nouvelle. Transmettez thread_id à partir de la liste de dialogue. Les e-mails déjà supprimés ou qui ne sont plus disponibles ne sont pas inclus dans la réponse." } ``` # PUT /v1/mailboxes/{mailbox_id}/sender-rules Règle de l'expéditeur Crée ou met à jour une règle pour l'adresse sender. Spécifiez action=spam pour diriger les nouveaux e-mails de l'expéditeur vers le spam, ou action=allow pour autoriser ses e-mails. La règle s’applique aux futurs e-mails entrants. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//sender-rules' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"sender":"sender@example.com","action":"spam"}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Règle de l'expéditeur", "operationId": "sender_rule_v1_mailboxes__mailbox_id__sender_rules_put", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SenderRule" } } } }, "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Crée ou met à jour une règle pour l'adresse sender. Spécifiez action=spam pour diriger les nouveaux e-mails de l'expéditeur vers le spam, ou action=allow pour autoriser ses e-mails. La règle s’applique aux futurs e-mails entrants." } ``` # GET /v1/mailboxes/{mailbox_id}/sender-rules Liste des règles d'expéditeur Renvoie les règles d'expéditeur pour la boîte aux lettres sélectionnée. Chaque règle contient une adresse sender, une action action et un identifiant id pour une suppression ultérieure. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//sender-rules' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste des règles d'expéditeur", "operationId": "rules_v1_mailboxes__mailbox_id__sender_rules_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "mailbox_id": { "type": "integer" }, "sender": { "type": "string" }, "action": { "type": "string", "enum": [ "spam", "allow" ] }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie les règles d'expéditeur pour la boîte aux lettres sélectionnée. Chaque règle contient une adresse sender, une action action et un identifiant id pour une suppression ultérieure." } ``` # DELETE /v1/mailboxes/{mailbox_id}/sender-rules/{rule_id} Supprimer une règle d'expéditeur Supprime la règle de l'expéditeur d'ici rule_id. Les messages suivants sont traités par les règles de messagerie générales. Les messages déjà reçus restent dans leurs dossiers. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//sender-rules/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Supprimer une règle d'expéditeur", "operationId": "delete_rule_v1_mailboxes__mailbox_id__sender_rules__rule_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Rule Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Supprime la règle de l'expéditeur d'ici rule_id. Les messages suivants sont traités par les règles de messagerie générales. Les messages déjà reçus restent dans leurs dossiers." } ``` # GET /v1/mailboxes/{mailbox_id}/contacts Liste de contacts Renvoie jusqu'à 1 000 contacts triés par nom. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//contacts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Liste de contacts", "operationId": "contacts_v1_mailboxes__mailbox_id__contacts_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContactResponse" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 1 000 contacts triés par nom." } ``` # POST /v1/mailboxes/{mailbox_id}/contacts Enregistrer le contact Enregistre le nom et l'adresse du contact dans la boîte aux lettres sélectionnée. Si un contact avec le même email existe déjà, met à jour son nom sans créer de doublon. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//contacts' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"email":"team@example.com","name":"Support team"}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Enregistrer le contact", "operationId": "add_contact_v1_mailboxes__mailbox_id__contacts_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Contact" } } } }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactResponse" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Enregistre le nom et l'adresse du contact dans la boîte aux lettres sélectionnée. Si un contact avec le même email existe déjà, met à jour son nom sans créer de doublon." } ``` # DELETE /v1/mailboxes/{mailbox_id}/contacts/{contact_id} Supprimer le contact La suppression d'un contact ne supprime pas les messages. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//contacts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Supprimer le contact", "operationId": "remove_contact_v1_mailboxes__mailbox_id__contacts__contact_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "contact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Contact Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La suppression d'un contact ne supprime pas les messages." } ``` # GET /v1/mailboxes/{mailbox_id}/files Liste des fichiers Renvoie jusqu'à 1 000 fichiers prêts de la boîte aux lettres sélectionnée. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Liste des fichiers", "operationId": "files_v1_mailboxes__mailbox_id__files_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "filename": { "type": "string" }, "content_type": { "type": "string" }, "size_bytes": { "type": "integer" }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Renvoie jusqu'à 1 000 fichiers prêts de la boîte aux lettres sélectionnée." } ``` # POST /v1/mailboxes/{mailbox_id}/files Télécharger le fichier multipart/form-data, champ file. Taille de 1 octet à 25 Mio. L'antivirus vérifie le fichier avant de le télécharger. Un quota insuffisant donne 409, surdimensionné - 413, menace détectée - 422, contrôle indisponible - 503. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' \ -F 'file=@document.pdf' ``` ```json { "tags": [ "Файлы" ], "summary": "Télécharger le fichier", "operationId": "upload_v1_mailboxes__mailbox_id__files_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_v1_mailboxes__mailbox_id__files_post" } } } }, "responses": { "201": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Taille dépassée", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "multipart/form-data, champ file. Taille de 1 octet à 25 Mio. L'antivirus vérifie le fichier avant de le télécharger. Un quota insuffisant donne 409, surdimensionné - 413, menace détectée - 422, contrôle indisponible - 503." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/download Télécharger le fichier La réponse contient des octets de fichier avec Content-Disposition: attachment. Le lien nécessite une autorisation à chaque demande ; le stockage public URL n’est pas émis. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//download' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Télécharger le fichier", "operationId": "download_v1_mailboxes__mailbox_id__files__file_id__download_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "file_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "File Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } }, "headers": { "X-File-Scan": { "schema": { "type": "string" } }, "X-File-Scanned-At": { "schema": { "type": "string" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La réponse contient des octets de fichier avec Content-Disposition: attachment. Le lien nécessite une autorisation à chaque demande ; le stockage public URL n’est pas émis." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/content Contenu du fichier Ajoutez preview=pdf à la requête de contenu d’un fichier ou d’une pièce jointe DOC, XLS, XLSX, PPT, PPTX ou ODT. Limite : 10 conversions par minute et par boîte. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//content' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Contenu du fichier", "operationId": "content_v1_mailboxes__mailbox_id__files__file_id__content_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "file_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "File Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } }, { "name": "preview", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "pdf" ] } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } }, "application/pdf": { "schema": { "type": "string", "format": "binary" } } }, "headers": { "X-File-Scan": { "schema": { "type": "string" } }, "X-File-Scanned-At": { "schema": { "type": "string" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Ajoutez preview=pdf à la requête de contenu d’un fichier ou d’une pièce jointe DOC, XLS, XLSX, PPT, PPTX ou ODT. Limite : 10 conversions par minute et par boîte." } ``` # DELETE /v1/mailboxes/{mailbox_id}/files/{file_id} Supprimer le fichier Un dossier de soumission incomplet ne peut pas être supprimé : réponse 409. Le quota est libéré après suppression. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//files/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Supprimer le fichier", "operationId": "remove_v1_mailboxes__mailbox_id__files__file_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "file_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "File Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Un dossier de soumission incomplet ne peut pas être supprimé : réponse 409. Le quota est libéré après suppression." } ``` # POST /v1/auth/login-link Créer un lien de connexion Votre serveur appelle POST /v1/auth/login-link avec X-API-Key et X-Customer-ID. Indiquez mailbox_id pour ouvrir uniquement cette boîte ; sans ce champ, tout le compte sera accessible. locale choisit la langue de l’interface. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/login-link' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' \ -H 'Content-Type: application/json' \ --data '{"mailbox_id":1,"locale":"en"}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Créer un lien de connexion", "operationId": "login_link_v1_auth_login_link_post", "security": [ { "PartnerKey": [], "Customer": [] } ], "parameters": [ { "name": "X-Customer-ID", "in": "header", "required": true, "schema": { "type": "integer", "minimum": 1 } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkInput" } } } }, "responses": { "201": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkResult" } } } }, "401": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Votre serveur appelle POST /v1/auth/login-link avec X-API-Key et X-Customer-ID. Indiquez mailbox_id pour ouvrir uniquement cette boîte ; sans ce champ, tout le compte sera accessible. locale choisit la langue de l’interface." } ``` # POST /v1/auth/login-link/consume Échanger un lien contre une session Réservé à la page de connexion adapt-mail.com : POST avec Origin: https://adapt-mail.com. Renvoie session_id et des cookies HttpOnly. Lien réutilisé ou expiré : HTTP 410. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/login-link/consume' \ -H 'Origin: https://adapt-mail.com' \ -c cookies.txt \ -H 'Content-Type: application/json' \ --data '{"token":""}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Échanger un lien contre une session", "operationId": "consume_login_link_v1_auth_login_link_consume_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkConsume" } } }, "required": true }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResult" } } } }, "403": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "410": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Erreur de requête", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Réservé à la page de connexion adapt-mail.com : POST avec Origin: https://adapt-mail.com. Renvoie session_id et des cookies HttpOnly. Lien réutilisé ou expiré : HTTP 410.", "security": [] } ``` # GET /v1/mailboxes/{mailbox_id}/templates Modèles de messages Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modèles de messages", "operationId": "templates_v1_mailboxes__mailbox_id__templates_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TemplateRecord" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul." } ``` # POST /v1/mailboxes/{mailbox_id}/templates Modèles de messages Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modèles de messages", "operationId": "create_template_v1_mailboxes__mailbox_id__templates_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailTemplate" } } } }, "responses": { "201": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul." } ``` # PUT /v1/mailboxes/{mailbox_id}/templates/{template_id} Modèles de messages Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modèles de messages", "operationId": "update_template_v1_mailboxes__mailbox_id__templates__template_id__put", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "template_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Template Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailTemplate" } } } }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul." } ``` # DELETE /v1/mailboxes/{mailbox_id}/templates/{template_id} Modèles de messages Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modèles de messages", "operationId": "delete_template_v1_mailboxes__mailbox_id__templates__template_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "template_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Template Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "const": true } } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Jusqu’à 100 modèles par boîte. Champs : name, subject, text et html ; le HTML est nettoyé. Un modèle n’envoie pas de message tout seul." } ``` # GET /v1/mailboxes/{mailbox_id}/autoresponder Réponse automatique Indiquez un fuseau horaire pour les dates du répondeur ; repeat_days va de 1 à 30. Seuls les nouveaux messages personnels reçoivent une réponse : From doit correspondre à Return-Path. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//autoresponder' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Réponse automatique", "operationId": "autoresponder_v1_mailboxes__mailbox_id__autoresponder_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Indiquez un fuseau horaire pour les dates du répondeur ; repeat_days va de 1 à 30. Seuls les nouveaux messages personnels reçoivent une réponse : From doit correspondre à Return-Path." } ``` # PUT /v1/mailboxes/{mailbox_id}/autoresponder Réponse automatique Indiquez un fuseau horaire pour les dates du répondeur ; repeat_days va de 1 à 30. Seuls les nouveaux messages personnels reçoivent une réponse : From doit correspondre à Return-Path. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//autoresponder' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"enabled":false,"subject":"","text":"","starts_at":"2026-11-01T12:00:00Z","ends_at":"2026-11-01T12:00:00Z","repeat_days":7}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Réponse automatique", "operationId": "set_autoresponder_v1_mailboxes__mailbox_id__autoresponder_put", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Indiquez un fuseau horaire pour les dates du répondeur ; repeat_days va de 1 à 30. Seuls les nouveaux messages personnels reçoivent une réponse : From doit correspondre à Return-Path." } ``` # GET /v1/mailboxes/{mailbox_id}/filters Filtres Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//filters' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtres", "operationId": "filters_v1_mailboxes__mailbox_id__filters_get", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "200": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FilterRecord" } } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters Filtres Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//filters' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":"","conditions":[{"field":"from","operator":"contains","value":""}]}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtres", "operationId": "create_filter_v1_mailboxes__mailbox_id__filters_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailFilter" } } } }, "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}." } ``` # PUT /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtres Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//filters/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":"","conditions":[{"field":"from","operator":"contains","value":""}]}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtres", "operationId": "update_filter_v1_mailboxes__mailbox_id__filters__filter_id__put", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "filter_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Filter Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailFilter" } } } }, "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}." } ``` # DELETE /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtres Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//filters/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtres", "operationId": "delete_filter_v1_mailboxes__mailbox_id__filters__filter_id__delete", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "filter_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Filter Id" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters/{filter_id}/apply Appliquer aux messages existants Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//filters//apply' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Appliquer aux messages existants", "operationId": "apply_filter_v1_mailboxes__mailbox_id__filters__filter_id__apply_post", "security": [ { "PartnerKey": [], "Customer": [] }, { "Session": [] }, { "Browser": [] } ], "parameters": [ { "name": "mailbox_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mailbox Id" } }, { "name": "filter_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Filter Id" } }, { "name": "idempotency-key", "in": "header", "required": true, "schema": { "type": "string", "minLength": 8, "maxLength": 120, "title": "Idempotency-Key" } }, { "name": "X-Customer-ID", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Customer-Id" } } ], "responses": { "202": { "description": "Réponse réussie", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Connexion requise", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Pas d'accès", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Ressource introuvable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflit d'État", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilité temporaire", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Une modification de filtre renvoie operation. L’application à l’historique nécessite un Idempotency-Key de 8 à 120 caractères. Réutilisez la clé lors des tentatives ; consultez GET /v1/operations/{operation_id}." } ``` # Schemas ```json { "Body_upload_v1_mailboxes__mailbox_id__files_post": { "properties": { "file": { "type": "string", "format": "binary", "title": "File" } }, "type": "object", "required": [ "file" ], "title": "Body_upload_v1_mailboxes__mailbox_id__files_post" }, "Contact": { "properties": { "email": { "type": "string", "title": "Email" }, "name": { "type": "string", "maxLength": 120, "minLength": 1, "title": "Name" } }, "additionalProperties": false, "type": "object", "required": [ "email", "name" ], "title": "Contact", "example": { "email": "team@example.com", "name": "Support team" } }, "DraftInput": { "properties": { "to": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "To", "description": "Adresses des principaux destinataires." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copiez les adresses des destinataires visibles par les autres participants." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Adresses des destinataires en Cci." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Objet de la lettre." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "Le texte de la lettre sans mise en forme." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "Version au format HTML- de la lettre." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID fichiers précédemment téléchargés dans cette boîte aux lettres. Récupérez-les lors du téléchargement ou depuis la liste des fichiers." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "L'e-mail d'origine dont les pièces jointes doivent être transférées." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "La valeur message_id de l'e-mail auquel vous répondez." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "La valeur references du message d'origine pour enregistrer la chaîne de réponse." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Heure d'envoi différé avec fuseau horaire, par exemple 2026-11-01T12:00:00Z. Sans valeur, l'envoi commence au fur et à mesure du traitement de la file d'attente." } }, "additionalProperties": false, "type": "object", "title": "DraftInput", "example": { "to": [ "team@example.com" ], "subject": "Hello", "text": "A message from Adapt Mail" } }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "Login": { "properties": { "login": { "type": "string", "title": "Login" }, "password": { "type": "string", "maxLength": 128, "minLength": 1, "title": "Password" }, "mode": { "type": "string", "enum": [ "account", "mailbox" ], "title": "Mode", "default": "account" } }, "additionalProperties": false, "type": "object", "required": [ "login", "password" ], "title": "Login" }, "MailboxUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 120, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "quota_mb": { "anyOf": [ { "type": "integer", "minimum": 10240 }, { "type": "null" } ], "title": "Quota Mb" }, "file_quota_mb": { "anyOf": [ { "type": "integer", "maximum": 512000, "minimum": 256 }, { "type": "null" } ], "title": "File Quota Mb" }, "password": { "anyOf": [ { "type": "string", "maxLength": 128, "minLength": 12 }, { "type": "null" } ], "title": "Password" }, "signature": { "anyOf": [ { "type": "string", "maxLength": 5000 }, { "type": "null" } ], "title": "Signature" } }, "additionalProperties": false, "type": "object", "title": "MailboxUpdate", "example": { "name": "Support", "signature": "Support team" } }, "MessageAction": { "properties": { "folder": { "type": "string", "maxLength": 255, "minLength": 1, "title": "Folder", "description": "Nom du dossier dans la liste des dossiers, par exemple INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "La valeur est uidvalidity de la réponse API pour ce dossier." }, "uids": { "items": { "type": "integer" }, "type": "array", "maxItems": 100, "minItems": 1, "title": "Uids", "description": "Identifiants des lettres sélectionnées dans un dossier." }, "action": { "type": "string", "enum": [ "read", "unread", "star", "unstar", "move", "delete" ], "title": "Action" }, "destination": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Destination", "description": "Nom du dossier cible. Requis pour action=move." } }, "additionalProperties": false, "type": "object", "required": [ "folder", "uidvalidity", "uids", "action" ], "title": "MessageAction" }, "MessageReference": { "properties": { "folder": { "type": "string", "maxLength": 255, "minLength": 1, "title": "Folder", "description": "Nom du dossier dans la liste des dossiers, par exemple INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "La valeur est uidvalidity de la réponse API pour ce dossier." }, "uid": { "type": "integer", "exclusiveMinimum": 0, "title": "Uid" } }, "additionalProperties": false, "type": "object", "required": [ "folder", "uidvalidity", "uid" ], "title": "MessageReference" }, "NameInput": { "properties": { "name": { "type": "string", "maxLength": 120, "minLength": 1, "title": "Name" } }, "additionalProperties": false, "type": "object", "required": [ "name" ], "title": "NameInput" }, "SendInput": { "properties": { "to": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "minItems": 1, "title": "To", "description": "Adresses des principaux destinataires." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copiez les adresses des destinataires visibles par les autres participants." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Adresses des destinataires en Cci." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Objet de la lettre." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "Le texte de la lettre sans mise en forme." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "Version au format HTML- de la lettre." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID fichiers précédemment téléchargés dans cette boîte aux lettres. Récupérez-les lors du téléchargement ou depuis la liste des fichiers." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "L'e-mail d'origine dont les pièces jointes doivent être transférées." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "La valeur message_id de l'e-mail auquel vous répondez." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "La valeur references du message d'origine pour enregistrer la chaîne de réponse." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Heure d'envoi différé avec fuseau horaire, par exemple 2026-11-01T12:00:00Z. Sans valeur, l'envoi commence au fur et à mesure du traitement de la file d'attente." } }, "additionalProperties": false, "type": "object", "required": [ "to" ], "title": "SendInput", "example": { "to": [ "team@example.com" ], "subject": "Hello", "text": "A message from Adapt Mail" } }, "SenderRule": { "properties": { "sender": { "type": "string", "title": "Sender" }, "action": { "type": "string", "enum": [ "spam", "allow" ], "title": "Action", "default": "spam" } }, "additionalProperties": false, "type": "object", "required": [ "sender" ], "title": "SenderRule", "example": { "sender": "sender@example.com", "action": "spam" } }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" } }, "type": "object", "required": [ "loc", "msg", "type" ], "title": "ValidationError" }, "Address": { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" } } }, "MessageSummary": { "type": "object", "properties": { "uid": { "type": "integer" }, "uidvalidity": { "type": "integer" }, "folder": { "type": "string" }, "message_id": { "type": "string" }, "thread_id": { "type": "string" }, "sender": { "type": "string" }, "recipients": { "type": "array", "items": { "$ref": "#/components/schemas/Address" } }, "subject": { "type": "string" }, "preview": { "type": "string" }, "flags": { "type": "array", "items": { "type": "string" } }, "size_bytes": { "type": "integer" }, "received_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } }, "Attachment": { "type": "object", "properties": { "index": { "type": "integer" }, "filename": { "type": "string" }, "content_type": { "type": "string" }, "size_bytes": { "type": "integer" } } }, "Message": { "type": "object", "properties": { "uid": { "type": "integer" }, "uidvalidity": { "type": "integer" }, "folder": { "type": "string" }, "message_id": { "type": "string" }, "thread_id": { "type": "string" }, "sender": { "type": "string" }, "recipients": { "type": "array", "items": { "$ref": "#/components/schemas/Address" } }, "subject": { "type": "string" }, "preview": { "type": "string" }, "flags": { "type": "array", "items": { "type": "string" } }, "size_bytes": { "type": "integer" }, "received_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "text": { "type": "string" }, "html": { "type": "string" }, "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/Attachment" } }, "cc": { "type": "array", "items": { "$ref": "#/components/schemas/Address" } }, "references": { "type": "string" }, "reply_to": { "type": "string" } } }, "Operation": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "ID d'opération pour vérifier le statut et annuler une soumission en attente." }, "kind": { "type": "string" }, "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "status": { "type": "string", "enum": [ "queued", "running", "succeeded", "failed", "uncertain", "cancelled" ] }, "run_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "completed_at": { "anyOf": [ { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, { "type": "null" } ] }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "La raison de l'erreur si l'opération n'a pas abouti." }, "result": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ], "description": "Le résultat de l'opération. Pour l'envoi, contient des informations sur les destinataires acceptés et rejetés." } } }, "SendResult": { "type": "object", "properties": { "message_id": { "type": "string" }, "smtp_accepted": { "type": "boolean" }, "sent_saved": { "type": "boolean" }, "accepted_recipients": { "type": "array", "items": { "type": "string" } }, "rejected_recipients": { "type": "array", "items": { "type": "object", "properties": { "email": { "type": "string" }, "code": { "type": "integer" } } } } } }, "Mailbox": { "type": "object", "properties": { "id": { "type": "integer" }, "account_id": { "type": "integer" }, "domain_id": { "type": "integer" }, "email": { "type": "string" }, "name": { "type": "string" }, "quota_mb": { "type": "integer" }, "used_bytes": { "type": "integer" }, "file_quota_bytes": { "type": "integer" }, "file_used_bytes": { "type": "integer" }, "status": { "type": "string" }, "signature": { "type": "string" }, "enabled": { "type": "boolean" }, "access_allowed": { "type": "boolean" }, "paid_until": { "anyOf": [ { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, { "type": "null" } ] }, "ready_at": { "anyOf": [ { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, { "type": "null" } ] }, "delete_after": { "anyOf": [ { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, { "type": "null" } ] }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "reserved_quota_mb": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "outbound_high_limit": { "type": "boolean" }, "outbound_daily_recipient_limit": { "type": "integer" }, "outbound_daily_recipients_used": { "type": "integer" }, "outbound_daily_recipients_remaining": { "type": "integer" }, "outbound_messages_per_minute": { "type": "integer" }, "outbound_minute_messages_used": { "type": "integer" }, "outbound_minute_messages_remaining": { "type": "integer" }, "outbound_recipients_per_message": { "type": "integer" }, "storage_shared": { "type": "boolean", "const": true } } }, "Domain": { "type": "object", "properties": { "id": { "type": "integer" }, "account_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "name": { "type": "string" }, "status": { "type": "string" }, "is_shared": { "type": "boolean" }, "verification_token": { "type": "string" }, "dns_status": { "type": "object" }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } }, "File": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "filename": { "type": "string" }, "content_type": { "type": "string" }, "size_bytes": { "type": "integer" }, "scanned_at": { "anyOf": [ { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, { "type": "null" } ] } } }, "ContactResponse": { "type": "object", "properties": { "id": { "type": "integer" }, "mailbox_id": { "type": "integer" }, "email": { "type": "string" }, "name": { "type": "string" }, "created_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } }, "Error": { "type": "object", "properties": { "detail": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" } } }, { "type": "array", "items": { "type": "object" } } ] } } }, "LoginLinkInput": { "properties": { "mailbox_id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0 }, { "type": "null" } ], "title": "Mailbox Id" }, "locale": { "type": "string", "enum": [ "en", "ru", "fr", "es", "de", "zh-cn", "ko", "tr", "hi", "pt-br" ], "title": "Locale", "default": "en" } }, "additionalProperties": false, "type": "object", "title": "LoginLinkInput" }, "LoginLinkConsume": { "properties": { "token": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$", "title": "Token" } }, "additionalProperties": false, "type": "object", "required": [ "token" ], "title": "LoginLinkConsume" }, "LoginLinkResult": { "properties": { "login_url": { "type": "string", "title": "Login Url" }, "expires_in": { "type": "integer", "const": 300, "title": "Expires In" }, "expires_at": { "type": "string", "title": "Expires At" }, "account_id": { "type": "integer", "title": "Account Id" }, "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Mailbox Id" } }, "additionalProperties": false, "type": "object", "required": [ "login_url", "expires_in", "expires_at", "account_id", "mailbox_id" ], "title": "LoginLinkResult" }, "BrowserSessionResult": { "properties": { "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Mailbox Id" }, "session_id": { "type": "string", "title": "Session Id" } }, "additionalProperties": false, "type": "object", "required": [ "mailbox_id", "session_id" ], "title": "BrowserSessionResult" }, "MailTemplate": { "properties": { "name": { "type": "string", "maxLength": 120, "minLength": 1, "title": "Name" }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "" }, "text": { "type": "string", "maxLength": 20000, "title": "Text", "default": "" }, "html": { "type": "string", "maxLength": 30000, "title": "Html", "default": "" } }, "additionalProperties": false, "type": "object", "required": [ "name" ], "title": "MailTemplate" }, "MailFilter": { "properties": { "name": { "type": "string", "maxLength": 120, "minLength": 1, "title": "Name" }, "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "match": { "type": "string", "enum": [ "all", "any" ], "title": "Match", "default": "all" }, "conditions": { "items": { "$ref": "#/components/schemas/FilterCondition" }, "type": "array", "maxItems": 20, "minItems": 1, "title": "Conditions" }, "mark_read": { "type": "boolean", "title": "Mark Read", "default": false }, "important": { "type": "boolean", "title": "Important", "default": false }, "trash": { "type": "boolean", "title": "Trash", "default": false }, "move_to": { "anyOf": [ { "type": "string", "maxLength": 255, "minLength": 1 }, { "type": "null" } ], "title": "Move To" } }, "additionalProperties": false, "type": "object", "required": [ "name", "conditions" ], "title": "MailFilter" }, "FilterCondition": { "properties": { "field": { "type": "string", "enum": [ "from", "to", "cc", "subject" ], "title": "Field" }, "operator": { "type": "string", "enum": [ "contains", "not_contains", "equals", "not_equals" ], "title": "Operator" }, "value": { "type": "string", "maxLength": 200, "minLength": 1, "title": "Value" } }, "additionalProperties": false, "type": "object", "required": [ "field", "operator", "value" ], "title": "FilterCondition" }, "Autoresponder": { "properties": { "enabled": { "type": "boolean", "title": "Enabled", "default": false }, "subject": { "type": "string", "maxLength": 200, "title": "Subject", "default": "" }, "text": { "type": "string", "maxLength": 10000, "title": "Text", "default": "" }, "starts_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Starts At" }, "ends_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Ends At" }, "repeat_days": { "type": "integer", "maximum": 30, "minimum": 1, "title": "Repeat Days", "default": 7 } }, "additionalProperties": false, "type": "object", "title": "Autoresponder" }, "TemplateRecord": { "type": "object", "required": [ "id", "data", "updated_at" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailTemplate" }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } }, "FilterRecord": { "type": "object", "required": [ "id", "data", "updated_at" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." } } }, "FilterChange": { "type": "object", "required": [ "id", "data", "updated_at", "operation" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "Date et heure en UTC. S'il n'y a pas de décalage, la valeur représente également UTC." }, "operation": { "$ref": "#/components/schemas/Operation" } } } } ```