# Adapt Mail API 0.16.0 https://adapt-mail.com/es/docs/ # Documentación Adapt Mail ## Correo para su producto Conecte su interfaz a Adapt Mail: buzones de correo, lea y envíe cartas, muestre cuadros de diálogo, administre archivos, contactos y reglas de remitente. Cree cuentas, conecte dominios, pague buzones de correo y aumente su volumen en su cuenta personal donde conectó su correo. Mail API le permite trabajar con buzones de correo ya creados. ## Empezar con autorización Para la integración del servidor, use la clave de correo API- junto con X-Customer-ID.. Para iniciar sesión para un usuario específico, reciba un token Bearer- usando su nombre de usuario y contraseña. ``` GET /v1/mailboxes X-API-Key: X-Customer-ID: ``` ## Primera solicitud Dirección base API - https://adapt-mail.com. Todas las solicitudes se procesan a través de HTTPS. Para solicitudes JSON-, indique Content-Type: application/json. Reciba un token utilizando el nombre de usuario y la contraseña de su cuenta de correo electrónico. Luego solicite una lista de buzones y almacene id del buzón deseado: se usa como mailbox_id en las direcciones de solicitud. Reemplace los valores entre paréntesis angulares con sus propios datos. ``` 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 " ``` ## Formatos de documentación El esquema OpenAPI describe los parámetros de solicitud y las respuestas. El archivo llms-full.txt contiene el libro de referencia completo en formato de texto. Los enlaces de descarga están disponibles al principio de cada página. # Zonas de autorización y acceso ## Acceso mediante enlace Tu servidor llama a POST /v1/auth/login-link con X-API-Key y X-Customer-ID. Indica mailbox_id para abrir solo ese buzón; omítelo para abrir toda la cuenta. locale selecciona el idioma de la interfaz. La respuesta contiene login_url, expires_in=300, expires_at (UTC), account_id y mailbox_id. El botón «Abrir correo» abre login_url completo, incluido #token. El enlace dura 5 minutos y permite un solo uso. No lo guardes en registros ni expongas la clave API en el navegador. La página de acceso elimina el token de la barra de direcciones y lo canjea por cookies HttpOnly. Si falla o caduca, crea otro enlace. Se vuelven a comprobar los permisos y el estado de la cuenta y del buzón. Las sesiones de usuario no pueden crear enlaces. ``` 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 } ``` ## Clave de socio Utilice la clave de correo API- de su integración. Páselo a X-API-Key y ID de la cuenta de correo; en el encabezado requerido X-Customer-ID.. Este es el ID de la cuenta, no el external_id ni el ID del buzón. La clave permite el acceso sólo a los clientes de su integración. Guarde la clave en el servidor de su socio. No coloque la clave de integración compartida en el navegador o la aplicación móvil. ``` curl 'https://adapt-mail.com/v1/mailboxes' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' ``` ## token de usuario POST /v1/auth/token acepta login, password y mode.. Para mode=account se utiliza el inicio de sesión user-ID, para mode=mailbox se utiliza la dirección completa del buzón. Las contraseñas de cuenta y buzón son independientes. La respuesta contiene access_token, token_type=Bearer y expires_in=3600.. El token de la cuenta abre sus casillas; ficha de caja: solo una caja. Después del vencimiento, recibirá un nuevo token. ``` POST /v1/auth/token Content-Type: application/json {"login":"user-123","password":"","mode":"account"} GET /v1/mailboxes Authorization: Bearer ``` ## Sesiones de navegador POST /v1/auth/login es para su propio sitio adapt-mail.com. Requiere el Origin correcto e instala HttpOnly cookies. Sin clasificar X-Mail-Session selecciona una de las entradas guardadas, pero sin cookie no da acceso. Para la interfaz de terceros, utilice su servidor y token de usuario. No cuente con acceso aleatorio entre dominios desde cookie: public CORS para ningún sitio no. # Despacho y operaciones ## poner en cola una carta Reciba ID casilla de GET /v1/mailboxes. Cree un Idempotency-Key único para un envío y guárdelo hasta el resultado final. Para la reproducción en red, utilice la misma clave y el mismo cuerpo. HTTP 202 devuelve un objeto de operación, no una confirmación de entrega. El campo id contiene ID operaciones. Encuesta 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"} ``` ## Cómo entender el resultado. - `queued` — La carta está esperando ser enviada. - `running` — El envío está en curso. - `succeeded` — El servidor de correo aceptó el envío. Consulta el resultado de cada destinatario. - `failed` — El envío falló. El motivo se da en error. - `cancelled` — Envío cancelado. - `uncertain` — No se pudo confirmar el resultado del envío. Verifique la operación y su carpeta de enviados antes de volver a intentarlo. Después de un envío exitoso, el campo result contiene accepted_recipients - destinatarios aceptados, rejected_recipients - destinatarios rechazados y sent_saved - el resultado de guardar una copia en enviado. La aceptación de una carta por parte de un servidor de correo no garantiza la entrega a la bandeja de entrada del destinatario. Para cancelar un envío pendiente, ejecute POST /v1/operations/{operation_id}/cancel. El método /retry no reenvía el correo electrónico. ## Respuesta, reenvío y envío retrasado Para responder, incluya message_id del correo electrónico original en reply_to_message_id y reenvíelo a references.. En to, ingrese la dirección de respuesta de reply_to o la dirección del remitente. Para responder a todos, agregue otros participantes a to y cc, excluyendo su propia dirección. Para reenviar archivos adjuntos, pase forward_message con folder, uidvalidity y uid.. Para sus archivos cargados, use file_ids. El tamaño total del archivo adjunto está limitado a 25 MiB. send_at se especifica con una zona horaria, almacenada en UTC; El envío diferido está disponible dentro de un año. Los límites se verifican en el momento del envío real, no en el momento de la creación de la cola. # Envío mediante SMTP ## Antes de conectarte Envía correos desde tu aplicación mediante SMTP con el usuario y la contraseña del buzón. Las claves API y los tokens de cuenta no sirven para SMTP. Crea un buzón activo en un dominio conectado y completa la verificación de sus registros DNS. El usuario es la dirección completa, por ejemplo noreply@example.com. Usa la contraseña del buzón, no la de la cuenta de correo. Sustituye las direcciones de ejemplo por las tuyas; la contraseña se introduce al ejecutar el programa sin mostrarse. ## Servidor, puertos y cifrado Usa mail.adapt-mail.com para cualquier dominio conectado. El puerto 465 inicia TLS directamente; el puerto 587 utiliza STARTTLS antes de la autenticación. Elige una opción. Mantén activada la verificación del certificado. En los ejemplos, la dirección From y el remitente del sobre SMTP coinciden con el usuario del buzón. Puedes cambiar el nombre visible del remitente. El puerto 25 se usa entre servidores de correo; para tu aplicación, usa 465 o 587. ``` 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: envío por el puerto 465 El ejemplo solo utiliza la biblioteca estándar de Python 3. Guárdalo como send_mail.py y ejecuta python3 send_mail.py. Para envíos automáticos, obtén la contraseña de la configuración segura de tu aplicación; no la guardes en Git ni en los registros. ``` 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: conexión por el puerto 587 Para STARTTLS, conserva la preparación del mensaje del ejemplo anterior y sustituye el bloque with smtplib.SMTP_SSL por el siguiente. Con smtplib.SMTP, la contraseña solo se envía después de que STARTTLS se complete correctamente. ``` 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 y archivos adjuntos Añade la versión HTML después de set_content y el archivo adjunto antes del envío. Conserva la versión de texto para los clientes sin HTML. Usa HTML de confianza o escapa los datos que insertes. ``` 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", ) ``` ## Resultado, límites y mensajes enviados Si send_message termina correctamente, el servidor SMTP ha aceptado el mensaje; no significa que haya llegado a la bandeja de entrada del destinatario. El diccionario refused contiene los destinatarios rechazados; si se rechazan todos, Python lanza SMTPRecipientsRefused. SMTP y API comparten los límites de cada buzón: hasta 30 mensajes en una ventana móvil de 60 segundos, 50 destinatarios por mensaje y 1000 destinatarios en una ventana móvil de 24 horas, o 5000 con el límite ampliado activado. Se cuentan todos los destinatarios To, Cc y Bcc. El envío directo por SMTP no guarda por sí solo una copia en Enviados. Los clientes de correo lo hacen mediante IMAP; la API de Adapt Mail guarda la copia por separado. ## Errores SMTP - `535` — Error de autenticación: comprueba la dirección completa, la contraseña del buzón y su disponibilidad. - `451` — Fallo temporal, incluido el exceso de los límites de envío. Reintenta más tarde, tras una espera. - `550 / 5xx` — Rechazo permanente: comprueba las direcciones, los permisos del remitente y el texto de la respuesta. Más de 50 destinatarios se rechazan después de DATA. Corrige la causa antes de reintentar. - `TLS / timeout` — Comprueba mail.adapt-mail.com, el puerto, el modo TLS y el acceso saliente desde el servidor de tu aplicación. Usa SMTP_SSL en 465 o SMTP con STARTTLS en 587. Lee la respuesta completa del servidor SMTP. Reintenta los fallos temporales tras una espera. Si la conexión se corta después de transmitir el mensaje y se desconoce el resultado, no lo reenvíes a ciegas: SMTP no tiene Idempotency-Key y el reintento puede crear un duplicado. # Cartas y diálogos ## Lista y páginas GET /v1/mailboxes/{mailbox_id}/folders devuelve carpetas con un número total de letras total, número de no leídas unread y un valor de uidvalidity. Para una lista de letras use GET /v1/mailboxes/{mailbox_id}/messages: la respuesta contiene items, next_before y uidvalidity, hasta 40 letras por página. Pase next_before como before en la siguiente solicitud. null significa el final de la lista. La búsqueda de q está limitada a 200 caracteres y se realiza en función del contenido del correo. ``` GET /v1/mailboxes/42/messages?folder=INBOX GET /v1/mailboxes/42/messages?folder=INBOX&before=120 ``` ## ID de letras uid es el identificador de la carta dentro de la carpeta, folder es el nombre de la carpeta, mailbox_id es ID del buzón. El valor uidvalidity determina la versión de numeración de las letras en la carpeta. Tome los cuatro valores de la respuesta API y guárdelos juntos. Si uidvalidity ha cambiado, vuelva a descargar la lista de correo de esta carpeta: el antiguo uid ya no se puede utilizar. Leer el contenido no marca el correo electrónico como leído. Para marcar, haga POST /v1/mailboxes/{mailbox_id}/messages/actions con action=read. ``` POST /v1/mailboxes/42/messages/actions {"folder":"INBOX","uidvalidity":123456,"uids":[120],"action":"read"} ``` ## La correspondencia como diálogo GET /v1/mailboxes/{mailbox_id}/threads devuelve hasta 100 diálogos. Pase thread_id de la conversación seleccionada a GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} para pasar sus letras de antiguas a nuevas. Es posible que aparezca una nueva letra en el diálogo con un ligero retraso. Actualizar la lista; Para comprobar el envío, utilice el estado de la operación. No es necesario reenviar el correo electrónico debido al retraso en la visualización. # Límites y almacenamiento ## Límites generales SMTP y API Buzón regular: 1000 destinatarios en un período continuo de 24 horas. Caja con outbound_high_limit=true: 5000. Hasta 30 letras en 60 segundos deslizantes; hasta 50 destinatarios en total en To, Cc y Bcc de una letra. Se tienen en cuenta los SMTP- destinatarios recibidos, incluidas las direcciones internas y las repeticiones de los destinatarios en diferentes letras. No hay límite de horas separadas. Se trata del consumo de permisos de envío y no de las estadísticas de cartas entregadas. GET /v1/mailboxes devuelve el límite, el flujo y el resto de ambas ventanas. No hay gasto acumulable por el límite de destinatarios por carta. Si el medidor no está disponible, el servidor devuelve 503 en lugar de cero consumo. ``` { "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 } ``` ## Superando el límite API-send puede recibir 202 y luego fallar failed con mail_daily_limit_exceeded o mail_minute_limit_exceeded. Más de 50 destinatarios son rechazados inmediatamente con 422. SMTP devuelve un error temporal de 451 si se excede la ventana y 550 después de DATA si hay más de 50 destinatarios. No hay forma de saltarse el límite mediante otro protocolo. ## Correo y archivos quota_mb es la capacidad compartida de mensajes y archivos en MiB. used_bytes es el uso total en bytes. storage_shared=true; file_quota_bytes equivale a quota_mb × 1048576 y no es capacidad adicional. file_used_bytes es el tamaño original de los archivos subidos, ya incluido en el uso total. Los archivos se almacenan junto al correo en nuestros discos. La cuota compartida incluye la codificación MIME y las cabeceras. Una copia adjunta a un mensaje enviado ocupa espacio adicional. Los clientes IMAP externos ven la carpeta del sistema Adapt Files: al eliminarla se borran los archivos guardados. La renovación y el aumento de volumen están disponibles en su cuenta personal donde ha conectado su correo electrónico. Una vez finalizado el período de pago, se bloquean la lectura y el envío. Después de 24 horas, comienza la retirada de la caja; renueva tu suscripción antes de esta fecha. # Eventos y webhooks ## Conectando webhooks Especifique la dirección para recibir webhooks en su configuración de integración. Recibirá notificaciones sobre nuevas cartas, el estado de los buzones y los resultados de las operaciones. En la configuración de integración, establezca un secreto de webhook independiente y habilite la entrega. Este secreto se utiliza para verificar las firmas de notificaciones; mail API-key no es adecuado para esto. ## Formato de notificación La notificación llega HTTP POST- solicitud con Content-Type: application/json. El campo event contiene el tipo de evento, timestamp - hora de notificación, data - datos del evento. La composición de data depende del evento. El identificador data.event_id permite reconocer el reenvío. Guárdelo junto con su ID de integración y procese un evento solo una vez. ``` { "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 } } ``` ## Verificación y confirmación El encabezado X-Webhook-Signature contiene HMAC-SHA256 en notación hexadecimal en minúsculas. Calcule la firma a partir de los bytes originales del cuerpo de la solicitud y el secreto del webhook. Verificar la firma antes de procesar los datos; volver a serializar JSON cambiará los bytes que se firman. Después de verificar la firma y guardar el evento, devuelva HTTP 200 o 201. Las respuestas 202 y 204 no acusan recibo. Responda dentro de los 10 segundos; Realice un procesamiento prolongado después de guardar el evento. Las notificaciones pueden llegar repetidas veces y desordenadas. Antes de cambiar el estado de la suscripción, verifique sus detalles actuales. El historial de entrega está disponible en la configuración de integración. ## que eventos ocurren - `mailbox.created` — La caja está creada y lista para usar. - `mailbox.expiring` — Se acerca el final del periodo de pago de la caja. - `mailbox.renewed` — Se ha ampliado el plazo de pago de la caja. - `mailbox.suspended` — El acceso al buzón está suspendido: la lectura y el envío no están disponibles. - `mailbox.resumed` — Se ha restablecido el acceso al buzón. - `mailbox.deleting_soon` — Queda una hora para que se borre la casilla no pagada. - `mailbox.deleted` — El cuadro ha sido eliminado. - `mailbox.account_changed` — El buzón está vinculado a otra cuenta de correo. - `mail.message.received` — Ha aparecido una nueva carta entrante en el buzón. - `mail.operation.succeeded` — La operación se completó con éxito. Para el envío, esto significa la aceptación de la carta por parte del servidor de correo, en lugar de su entrega en la bandeja de entrada del destinatario. - `mail.operation.failed` — La operación fracasó. - `mail.operation.uncertain` — Se desconoce el resultado del envío. Por favor verifique el estado antes de reenviar. Recordatorios de pago: 14, 7, 3, 2, 1 día y una hora antes del vencimiento. La renovación cancela los recordatorios obsoletos que aún no se han enviado. # Errores y repeticiones. ## Formato de error La respuesta de error contiene una cadena detail:, un objeto con code/message o una lista de errores de validación. No determine el comportamiento a partir del texto traducido: utilice HTTP-status y code generado por máquina cuando esté presente. ``` {"detail":"..."} {"detail":{"code":"...","message":"..."}} ``` ## Códigos HTTP - `400` — Encabezado o identificador no válido. Consulta tu solicitud. - `401` — La sesión o clave no fue aceptada. Inicie sesión nuevamente o verifique su clave. - `403` — Derechos insuficientes o se deniega el acceso al buzón. - `404` — El recurso no se encontró o no está disponible para la cuenta actual. - `409` — Estado de carpeta, cuota o conflicto de generación. Actualice sus datos antes de volver a intentarlo. - `413` — El tamaño del archivo excede el límite permitido. - `422` — Parámetros de solicitud no válidos. Verifique los campos proporcionados en la respuesta. - `429` — Demasiadas solicitudes. Inténtelo de nuevo más tarde. - `503` — El servicio no está disponible temporalmente. Vuelva a intentar la solicitud con un retraso. Después del 401, se requiere un nuevo inicio de sesión. Después de 409, vuelva a leer el estado. Después de 503, repita con retraso; para enviar, mantén el mismo Idempotency-Key. No repitas acciones irreversibles a ciegas. # Aplicaciones conectadas ## Conectar una aplicación Conecta tu cliente de IA con esta dirección. Elige los buzones y permisos al conectarlo. Permite el acceso solo a los buzones y acciones necesarios. ``` 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 ``` ## Permisos - `mail.read` — Buscar y leer mensajes, conversaciones y adjuntos. - `mail.send` — Enviar, responder y reenviar mensajes. - `mail.manage` — Borradores, archivos, carpetas, estado de lectura, destacados, archivo y spam. - `mail.delete` — Papelera y eliminación permanente de mensajes, borradores y archivos. ## Revocar acceso El acceso dura 30 días. Puedes revocarlo en ajustes cuando quieras. # Configuración del buzón ## Plantillas de correo Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola. La plantilla reemplazará el texto del editor. Se conservarán los destinatarios y adjuntos. ``` 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.

"} ``` ## Respuesta automática Las respuestas automáticas funcionan con el navegador cerrado y cuentan para los límites de envío. Se excluyen las listas de correo y los mensajes automáticos. Incluya una zona horaria en las fechas de respuesta automática; repeat_days va de 1 a 30. Solo se responde a mensajes personales nuevos: From debe coincidir con 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} ``` ## Filtros Hasta 100 filtros por buzón y 20 condiciones por filtro. Se comparan las cabeceras completas; ASCII no distingue mayúsculas, los demás caracteres sí. Se aplica el primer filtro coincidente. Las reglas de remitente tienen prioridad. Los mensajes existentes se procesan por separado. Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}. Se procesarán la bandeja de entrada y las carpetas personales. Se excluyen enviados, borradores, spam y papelera. ``` 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 ``` ## Avance - `file_infected` — Se detectó una amenaza. Se ha bloqueado la apertura del archivo. - `file_scan_unavailable` — El antivirus no está disponible temporalmente. Inténtalo más tarde. Añada preview=pdf a la solicitud de contenido de archivos o adjuntos DOC, XLS, XLSX, PPT, PPTX y ODT. Límite: 10 conversiones por minuto y buzón. X-File-Scan: clean y X-File-Scanned-At indican el resultado y la hora del análisis. scanned_at puede ser null en la lista de archivos. El resultado se conserva una hora; una amenaza o un antivirus no disponible bloquea la descarga. ``` 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 Iniciar sesión en el navegador La ruta es para adapt-mail.com y requiere Origin: https://adapt-mail.com. Devoluciones HttpOnly cookies y sin clasificar session_id. Para uso de su cliente /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": "Iniciar sesión en el navegador", "operationId": "login_v1_auth_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "session_id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Demasiadas solicitudes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La ruta es para adapt-mail.com y requiere Origin: https://adapt-mail.com. Devoluciones HttpOnly cookies y sin clasificar session_id. Para uso de su cliente /v1/auth/token.", "security": [] } ``` # POST /v1/auth/token Obtener un token de usuario Emite un token de acceso durante una hora según el nombre de usuario y la contraseña. Especifique mode=account para acceder a todos los buzones de correo de la cuenta o mode=mailbox para acceder a una dirección. Pase access_token en el encabezado 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": "Obtener un token de usuario", "operationId": "token_v1_auth_token_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Demasiadas solicitudes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Emite un token de acceso durante una hora según el nombre de usuario y la contraseña. Especifique mode=account para acceder a todos los buzones de correo de la cuenta o mode=mailbox para acceder a una dirección. Pase access_token en el encabezado Authorization: Bearer .", "security": [] } ``` # GET /v1/auth/sessions Sesiones guardadas Requerido cookie mail_browser. X-API-Key y Bearer no reemplazan este cookie. Sin cookie se devuelve una lista vacía. ```sh curl -X GET 'https://adapt-mail.com/v1/auth/sessions' \ -b cookies.txt ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Sesiones guardadas", "operationId": "sessions_v1_auth_sessions_get", "responses": { "200": { "description": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Requerido cookie mail_browser. X-API-Key y Bearer no reemplazan este cookie. Sin cookie se devuelve una lista vacía.", "security": [ { "Browser": [] } ] } ``` # POST /v1/auth/logout Salir de la sesión Sólo sesión de usuario. Recupera la entrada seleccionada; las entradas restantes se conservan. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/logout' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Salir de la sesión", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "logged_out": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Sólo sesión de usuario. Recupera la entrada seleccionada; las entradas restantes se conservan." } ``` # GET /v1/me Perfil de usuario Devuelve el perfil de la cuenta de correo actual. Úselo para mostrar el nombre de usuario e iniciar sesión en su aplicación. ```sh curl -X GET 'https://adapt-mail.com/v1/me' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Perfil de usuario", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve el perfil de la cuenta de correo actual. Úselo para mostrar el nombre de usuario e iniciar sesión en su aplicación." } ``` # GET /v1/avatars/{domain} Logotipo de dominio 200 - imagen; 202 — preparación, repetir después del Retry-After; 204 - sin logotipo; 503 - error temporal. El logotipo no confirma la identidad del remitente. ```sh curl -X GET 'https://adapt-mail.com/v1/avatars/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Логотипы доменов" ], "summary": "Logotipo de dominio", "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": "Respuesta exitosa", "content": { "image/png": { "schema": { "type": "string", "format": "binary" } } } }, "202": { "description": "El logo se está preparando." }, "204": { "description": "Sin logotipo" }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Demasiadas solicitudes", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "200 - imagen; 202 — preparación, repetir después del Retry-After; 204 - sin logotipo; 503 - error temporal. El logotipo no confirma la identidad del remitente." } ``` # GET /v1/domains Lista de dominios Dominios personalizados y un dominio compartido están disponibles para crear una dirección personal. ```sh curl -X GET 'https://adapt-mail.com/v1/domains' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Lista de dominios", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Dominios personalizados y un dominio compartido están disponibles para crear una dirección personal." } ``` # GET /v1/domains/{domain_id}/dns DNS-registros de dominio Las instrucciones contienen los valores exactos de DNS- y el resultado de la prueba, pero no cambian automáticamente DNS. ```sh curl -X GET 'https://adapt-mail.com/v1/domains//dns' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "DNS-registros de dominio", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Las instrucciones contienen los valores exactos de DNS- y el resultado de la prueba, pero no cambian automáticamente DNS." } ``` # GET /v1/mailboxes Listado de cajas y límite de consumo. La lista de buzones está limitada por el propietario o el único buzón de la sesión del usuario. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Listado de cajas y límite de consumo.", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Mailbox" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La lista de buzones está limitada por el propietario o el único buzón de la sesión del usuario." } ``` # PATCH /v1/mailboxes/{mailbox_id} Configuración del buzón Use /v1 para cambiar name, password y signature. Cambie la cuota compartida quota_mb desde el panel de su proveedor. Los archivos no tienen una cuota independiente. Idempotency-Key es opcional, pero se recomienda para los reintentos. ```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": "Configuración del buzón", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "Encabezado o identificador no válido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Use /v1 para cambiar name, password y signature. Cambie la cuota compartida quota_mb desde el panel de su proveedor. Los archivos no tienen una cuota independiente. Idempotency-Key es opcional, pero se recomienda para los reintentos." } ``` # GET /v1/mailboxes/{mailbox_id}/folders Carpetas y contadores Devuelve una lista de carpetas, la cantidad de correos electrónicos total, la cantidad de mensajes no leídos unread y el valor uidvalidity para cada carpeta. Utilice el nombre de la carpeta y uidvalidity en consultas sobre sus letras. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Carpetas y contadores", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve una lista de carpetas, la cantidad de correos electrónicos total, la cantidad de mensajes no leídos unread y el valor uidvalidity para cada carpeta. Utilice el nombre de la carpeta y uidvalidity en consultas sobre sus letras." } ``` # POST /v1/mailboxes/{mailbox_id}/folders Creando una carpeta La carpeta personalizada se crea en IMAP y está disponible para otros clientes de correo. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Creando una carpeta", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La carpeta personalizada se crea en IMAP y está disponible para otros clientes de correo." } ``` # GET /v1/mailboxes/{mailbox_id}/messages lista de letras Devuelve hasta 40 letras, desde la nueva UID hasta la antigua. Para la página siguiente, pase next_before como before.. Para next_before=null no hay más páginas. Leer no establece el indicador de lectura. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "lista de letras", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 40 letras, desde la nueva UID hasta la antigua. Para la página siguiente, pase next_before como before.. Para next_before=null no hay más páginas. Leer no establece el indicador de lectura." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid} Contenido del correo Envíe folder, uidvalidity y uid de la lista de correo. HTML borrado, las imágenes externas no están incluidas. Para marcar una carta como leída, realice una acción separada read. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Contenido del correo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Envíe folder, uidvalidity y uid de la lista de correo. HTML borrado, las imágenes externas no están incluidas. Para marcar una carta como leída, realice una acción separada read." } ``` # POST /v1/mailboxes/{mailbox_id}/messages/actions Acciones con letras Aplica una acción a los mensajes seleccionados en una carpeta. Pase sus ID a uids, el nombre de la carpeta a folder y su uidvalidity.. Para action=move, especifique también la carpeta de destino a 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": "Acciones con letras", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "updated": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Aplica una acción a los mensajes seleccionados en una carpeta. Pase sus ID a uids, el nombre de la carpeta a folder y su uidvalidity.. Para action=move, especifique también la carpeta de destino a destination." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/eml Descargue la carta en EML Devuelve los MIME-bytes originales con encabezados y archivos adjuntos. No cambia la legibilidad. PDF se crea en el navegador mediante impresión; No existe una ruta PDF- separada. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//eml?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Descargue la carta en 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": "Respuesta exitosa", "content": { "message/rfc822": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve los MIME-bytes originales con encabezados y archivos adjuntos. No cambia la legibilidad. PDF se crea en el navegador mediante impresión; No existe una ruta PDF- separada." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/attachments/{index} Descargar archivo adjunto Añada preview=pdf a la solicitud de contenido de archivos o adjuntos DOC, XLS, XLSX, PPT, PPTX y ODT. Límite: 10 conversiones por minuto y buzón. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//attachments/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Descargar archivo adjunto", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Añada preview=pdf a la solicitud de contenido de archivos o adjuntos DOC, XLS, XLSX, PPT, PPTX y ODT. Límite: 10 conversiones por minuto y buzón." } ``` # POST /v1/mailboxes/{mailbox_id}/send enviar una carta Requerido Idempotency-Key Entre 8 y 128 caracteres. Repetir con la misma clave y cuerpo devuelve la misma operación; otro cuerpo da 409. HTTP 202 significa hacer cola. Verifica el estado de la operación, no el hecho de que se haya recibido respuesta. ```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": "enviar una carta", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "Encabezado o identificador no válido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Tamaño excedido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Requerido Idempotency-Key Entre 8 y 128 caracteres. Repetir con la misma clave y cuerpo devuelve la misma operación; otro cuerpo da 409. HTTP 202 significa hacer cola. Verifica el estado de la operación, no el hecho de que se haya recibido respuesta." } ``` # GET /v1/operations Lista de operaciones Devuelve las últimas 100 operaciones. Una sesión de un buzón individual ve sólo sus operaciones. ```sh curl -X GET 'https://adapt-mail.com/v1/operations' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de operaciones", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Operation" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve las últimas 100 operaciones. Una sesión de un buzón individual ve sólo sus operaciones." } ``` # GET /v1/operations/{operation_id} Estado de operación Devuelve el estado actual de una operación por su id.. Mientras que status es igual a queued o running, la operación no se completa. Una vez completado, marque result en caso de éxito o error en caso de error. ```sh curl -X GET 'https://adapt-mail.com/v1/operations/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Estado de operación", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve el estado actual de una operación por su id.. Mientras que status es igual a queued o running, la operación no se completa. Una vez completado, marque result en caso de éxito o error en caso de error." } ``` # POST /v1/operations/{operation_id}/cancel Cancelar envío Cancela el envío de una carta mientras la operación está en el estado queued. Si el envío ya comenzó, completó o fue cancelado, se devuelve un 409. No puede recuperar una carta ya enviada con este método. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//cancel' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Cancelar envío", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "cancelled": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Cancela el envío de una carta mientras la operación está en el estado queued. Si el envío ya comenzó, completó o fue cancelado, se devuelve un 409. No puede recuperar una carta ya enviada con este método." } ``` # POST /v1/operations/{operation_id}/retry repetir la operacion Reinicia la aplicación de reglas de remitente: kind=sender_rules, status=failed. El envío de cartas no se puede repetir usando este método. Para un estado inadecuado, se devuelve 409; Repetir la creación y configuración de un buzón mediante este método no está disponible y devuelve 403. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//retry' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "repetir la operacion", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Reinicia la aplicación de reglas de remitente: kind=sender_rules, status=failed. El envío de cartas no se puede repetir usando este método. Para un estado inadecuado, se devuelve 409; Repetir la creación y configuración de un buzón mediante este método no está disponible y devuelve 403." } ``` # PUT /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Guardar borrador Crea o actualiza un borrador antes del draft_id.. Para un nuevo borrador, genere UUID; Para guardados posteriores, utilice el mismo identificador. Puede continuar su borrador desde otro dispositivo después de iniciar sesión en el mismo buzón. ```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": "Guardar borrador", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Crea o actualiza un borrador antes del draft_id.. Para un nuevo borrador, genere UUID; Para guardados posteriores, utilice el mismo identificador. Puede continuar su borrador desde otro dispositivo después de iniciar sesión en el mismo buzón." } ``` # DELETE /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Eliminar borrador Eliminar un borrador no afecta un correo electrónico que ya ha sido puesto en cola. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//drafts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Eliminar borrador", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Eliminar un borrador no afecta un correo electrónico que ya ha sido puesto en cola." } ``` # GET /v1/mailboxes/{mailbox_id}/drafts Lista de borradores Devuelve hasta 100 borradores, del más nuevo al más antiguo. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//drafts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de borradores", "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": "Respuesta exitosa", "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." } } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 100 borradores, del más nuevo al más antiguo." } ``` # GET /v1/mailboxes/{mailbox_id}/threads Lista de diálogos Devuelve hasta 100 cuadros de diálogo, comenzando por los actualizados más recientemente. Los mensajes de las carpetas Trash y Junk no se incluyen en la lista. La nueva carta puede aparecer con un ligero retraso; Vuelva a intentar la solicitud para actualizar la lista. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de diálogos", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "thread_id": { "type": "string" }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "messages": { "type": "integer" }, "unread": { "type": "integer" }, "senders": { "type": "array", "items": { "type": "string" } }, "subject": { "type": "string" }, "sender": { "type": "string" } } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 100 cuadros de diálogo, comenzando por los actualizados más recientemente. Los mensajes de las carpetas Trash y Junk no se incluyen en la lista. La nueva carta puede aparecer con un ligero retraso; Vuelva a intentar la solicitud para actualizar la lista." } ``` # GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} Cartas de dialogo Devuelve hasta 100 letras de la conversación seleccionada, de antiguas a nuevas. Pase thread_id de la lista de diálogo. Los correos electrónicos que ya han sido eliminados o que ya no están disponibles no se incluyen en la respuesta. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Cartas de dialogo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Message" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 100 letras de la conversación seleccionada, de antiguas a nuevas. Pase thread_id de la lista de diálogo. Los correos electrónicos que ya han sido eliminados o que ya no están disponibles no se incluyen en la respuesta." } ``` # PUT /v1/mailboxes/{mailbox_id}/sender-rules Regla del remitente Crea o actualiza una regla para la dirección sender.. Especifique action=spam para dirigir los nuevos correos electrónicos del remitente a spam, o action=allow para permitir sus correos electrónicos. La regla se aplica a futuros correos electrónicos entrantes. ```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": "Regla del remitente", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Crea o actualiza una regla para la dirección sender.. Especifique action=spam para dirigir los nuevos correos electrónicos del remitente a spam, o action=allow para permitir sus correos electrónicos. La regla se aplica a futuros correos electrónicos entrantes." } ``` # GET /v1/mailboxes/{mailbox_id}/sender-rules Lista de reglas del remitente Devuelve las reglas del remitente para el buzón seleccionado. Cada regla contiene una dirección sender, una acción action y un identificador id para su posterior eliminación. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//sender-rules' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de reglas del remitente", "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": "Respuesta exitosa", "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." } } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve las reglas del remitente para el buzón seleccionado. Cada regla contiene una dirección sender, una acción action y un identificador id para su posterior eliminación." } ``` # DELETE /v1/mailboxes/{mailbox_id}/sender-rules/{rule_id} Eliminar una regla de remitente Elimina la regla del remitente por rule_id. Los mensajes posteriores se procesan según las reglas de correo generales. Los mensajes ya recibidos permanecen en sus carpetas. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//sender-rules/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Eliminar una regla de remitente", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Elimina la regla del remitente por rule_id. Los mensajes posteriores se procesan según las reglas de correo generales. Los mensajes ya recibidos permanecen en sus carpetas." } ``` # GET /v1/mailboxes/{mailbox_id}/contacts lista de contactos Devuelve hasta 1000 contactos ordenados por nombre. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//contacts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "lista de contactos", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContactResponse" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 1000 contactos ordenados por nombre." } ``` # POST /v1/mailboxes/{mailbox_id}/contacts Guardar contacto Guarda el nombre y la dirección del contacto en el buzón seleccionado. Si ya existe un contacto con el mismo email, actualiza su nombre sin crear un duplicado. ```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": "Guardar contacto", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactResponse" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Guarda el nombre y la dirección del contacto en el buzón seleccionado. Si ya existe un contacto con el mismo email, actualiza su nombre sin crear un duplicado." } ``` # DELETE /v1/mailboxes/{mailbox_id}/contacts/{contact_id} Eliminar contacto Eliminar un contacto no elimina mensajes. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//contacts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Eliminar contacto", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Eliminar un contacto no elimina mensajes." } ``` # GET /v1/mailboxes/{mailbox_id}/files Lista de archivos Devuelve hasta 1000 archivos listos del buzón seleccionado. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Lista de archivos", "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": "Respuesta exitosa", "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." } } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Devuelve hasta 1000 archivos listos del buzón seleccionado." } ``` # POST /v1/mailboxes/{mailbox_id}/files Subir archivo multipart/form-data, campo file. Tamaño desde 1 byte hasta 25 MiB. El antivirus comprueba el archivo antes de descargarlo. Cuota insuficiente da 409, sobredimensionado - 413, amenaza detectada - 422, verificación no disponible - 503. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' \ -F 'file=@document.pdf' ``` ```json { "tags": [ "Файлы" ], "summary": "Subir archivo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Tamaño excedido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "multipart/form-data, campo file. Tamaño desde 1 byte hasta 25 MiB. El antivirus comprueba el archivo antes de descargarlo. Cuota insuficiente da 409, sobredimensionado - 413, amenaza detectada - 422, verificación no disponible - 503." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/download Descargar archivo La respuesta contiene bytes de archivo con Content-Disposition: attachment. El enlace requiere autorización en cada solicitud; El almacenamiento público URL no se emite. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//download' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Descargar archivo", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "La respuesta contiene bytes de archivo con Content-Disposition: attachment. El enlace requiere autorización en cada solicitud; El almacenamiento público URL no se emite." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/content Contenido del archivo Añada preview=pdf a la solicitud de contenido de archivos o adjuntos DOC, XLS, XLSX, PPT, PPTX y ODT. Límite: 10 conversiones por minuto y buzón. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//content' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Contenido del archivo", "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": "Respuesta exitosa", "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": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Añada preview=pdf a la solicitud de contenido de archivos o adjuntos DOC, XLS, XLSX, PPT, PPTX y ODT. Límite: 10 conversiones por minuto y buzón." } ``` # DELETE /v1/mailboxes/{mailbox_id}/files/{file_id} Eliminar archivo Un archivo de envío incompleto no se puede eliminar: respuesta 409. La cuota se libera después de la eliminación. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//files/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Eliminar archivo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Un archivo de envío incompleto no se puede eliminar: respuesta 409. La cuota se libera después de la eliminación." } ``` # POST /v1/auth/login-link Crear un enlace de acceso Tu servidor llama a POST /v1/auth/login-link con X-API-Key y X-Customer-ID. Indica mailbox_id para abrir solo ese buzón; omítelo para abrir toda la cuenta. locale selecciona el idioma de la interfaz. ```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": "Crear un enlace de acceso", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkResult" } } } }, "401": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Tu servidor llama a POST /v1/auth/login-link con X-API-Key y X-Customer-ID. Indica mailbox_id para abrir solo ese buzón; omítelo para abrir toda la cuenta. locale selecciona el idioma de la interfaz." } ``` # POST /v1/auth/login-link/consume Canjear un enlace por una sesión Solo para la página de acceso de adapt-mail.com: POST con Origin: https://adapt-mail.com. Devuelve session_id y cookies HttpOnly. Enlace reutilizado o caducado: 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": "Canjear un enlace por una sesión", "operationId": "consume_login_link_v1_auth_login_link_consume_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkConsume" } } }, "required": true }, "responses": { "200": { "description": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResult" } } } }, "403": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "410": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Error de solicitud", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Solo para la página de acceso de adapt-mail.com: POST con Origin: https://adapt-mail.com. Devuelve session_id y cookies HttpOnly. Enlace reutilizado o caducado: HTTP 410.", "security": [] } ``` # GET /v1/mailboxes/{mailbox_id}/templates Plantillas de correo Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Plantillas de correo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TemplateRecord" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola." } ``` # POST /v1/mailboxes/{mailbox_id}/templates Plantillas de correo Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Plantillas de correo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola." } ``` # PUT /v1/mailboxes/{mailbox_id}/templates/{template_id} Plantillas de correo Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Plantillas de correo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola." } ``` # DELETE /v1/mailboxes/{mailbox_id}/templates/{template_id} Plantillas de correo Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Plantillas de correo", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "const": true } } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Hasta 100 plantillas por buzón. Campos: name, subject, text y html; el HTML se sanea. Una plantilla no envía correo por sí sola." } ``` # GET /v1/mailboxes/{mailbox_id}/autoresponder Respuesta automática Incluya una zona horaria en las fechas de respuesta automática; repeat_days va de 1 a 30. Solo se responde a mensajes personales nuevos: From debe coincidir con Return-Path. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//autoresponder' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Respuesta automática", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Incluya una zona horaria en las fechas de respuesta automática; repeat_days va de 1 a 30. Solo se responde a mensajes personales nuevos: From debe coincidir con Return-Path." } ``` # PUT /v1/mailboxes/{mailbox_id}/autoresponder Respuesta automática Incluya una zona horaria en las fechas de respuesta automática; repeat_days va de 1 a 30. Solo se responde a mensajes personales nuevos: From debe coincidir con 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": "Respuesta automática", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Incluya una zona horaria en las fechas de respuesta automática; repeat_days va de 1 a 30. Solo se responde a mensajes personales nuevos: From debe coincidir con Return-Path." } ``` # GET /v1/mailboxes/{mailbox_id}/filters Filtros Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//filters' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtros", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FilterRecord" } } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters Filtros Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte 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": "Filtros", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}." } ``` # PUT /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtros Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte 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": "Filtros", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}." } ``` # DELETE /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtros Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//filters/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Filtros", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters/{filter_id}/apply Aplicar a mensajes existentes Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte GET /v1/operations/{operation_id}. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//filters//apply' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Aplicar a mensajes existentes", "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": "Respuesta exitosa", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Iniciar sesión requerido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sin acceso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso no encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflicto de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidad temporal", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Al modificar un filtro se devuelve operation. Aplicarlo al historial requiere un Idempotency-Key de 8–120 caracteres. Reutilice la clave al reintentar; consulte 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": "Direcciones de los principales destinatarios." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copie las direcciones de los destinatarios que sean visibles para otros participantes." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Direcciones de destinatarios en Cco." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Asunto de la carta." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "El texto de la carta sin formato." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-versión formateada de la carta." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID archivos descargados previamente en este buzón. Consíguelos al descargar o de la lista de archivos." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "El correo electrónico original cuyos archivos adjuntos deben reenviarse." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "El valor message_id del correo electrónico al que estás respondiendo." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "El valor references del mensaje original para guardar la cadena de respuesta." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Hora de envío retrasada con zona horaria, por ejemplo 2026-11-01T12:00:00Z. Sin un valor, el envío comienza a medida que se procesa la cola." } }, "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": "Nombre de carpeta de la lista de carpetas, por ejemplo INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "El valor es uidvalidity de la respuesta API para esta carpeta." }, "uids": { "items": { "type": "integer" }, "type": "array", "maxItems": 100, "minItems": 1, "title": "Uids", "description": "Identificadores de letras seleccionadas de una carpeta." }, "action": { "type": "string", "enum": [ "read", "unread", "star", "unstar", "move", "delete" ], "title": "Action" }, "destination": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Destination", "description": "Nombre de la carpeta de destino. Requerido para 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": "Nombre de carpeta de la lista de carpetas, por ejemplo INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "El valor es uidvalidity de la respuesta API para esta carpeta." }, "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": "Direcciones de los principales destinatarios." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copie las direcciones de los destinatarios que sean visibles para otros participantes." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Direcciones de destinatarios en Cco." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Asunto de la carta." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "El texto de la carta sin formato." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-versión formateada de la carta." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID archivos descargados previamente en este buzón. Consíguelos al descargar o de la lista de archivos." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "El correo electrónico original cuyos archivos adjuntos deben reenviarse." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "El valor message_id del correo electrónico al que estás respondiendo." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "El valor references del mensaje original para guardar la cadena de respuesta." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Hora de envío retrasada con zona horaria, por ejemplo 2026-11-01T12:00:00Z. Sin un valor, el envío comienza a medida que se procesa la cola." } }, "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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 de operación para verificar el estado y cancelar un envío pendiente." }, "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "created_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "completed_at": { "anyOf": [ { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, { "type": "null" } ] }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "El motivo del error si la operación no se completó correctamente." }, "result": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ], "description": "El resultado de la operación. Para envío, contiene información sobre los destinatarios aceptados y rechazados." } } }, "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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, { "type": "null" } ] }, "ready_at": { "anyOf": [ { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, { "type": "null" } ] }, "delete_after": { "anyOf": [ { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, { "type": "null" } ] }, "created_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa 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": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." } } }, "FilterRecord": { "type": "object", "required": [ "id", "data", "updated_at" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." } } }, "FilterChange": { "type": "object", "required": [ "id", "data", "updated_at", "operation" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "Fecha y hora en UTC. Si no hay compensación, el valor también representa UTC." }, "operation": { "$ref": "#/components/schemas/Operation" } } } } ```