# Adapt Mail API 0.16.0 https://adapt-mail.com/pt-br/docs/ # Documentação Adapt Mail ## Correio para o seu produto Conecte sua interface a caixas de correio Adapt Mail:, leia e envie cartas, mostre caixas de diálogo, gerencie arquivos, contatos e regras de remetente. Crie contas, conecte domínios, pague por caixas de correio e aumente seu volume em sua conta pessoal onde você conectou seu e-mail. Mail API permite que você trabalhe com caixas de correio já criadas. ## Comece com autorização Para integração do servidor, utilize o mail API-key junto com X-Customer-ID. Para efetuar login para um usuário específico, receba um Bearer-token usando seu login e senha. ``` GET /v1/mailboxes X-API-Key: X-Customer-ID: ``` ## Primeira solicitação Endereço base API - https://adapt-mail.com. Todas as solicitações são processadas via HTTPS. Para solicitações JSON- indique Content-Type: application/json. Receba um token usando o login e senha da sua conta de e-mail. Em seguida, solicite uma lista de caixas de correio e armazene id da caixa de correio desejada: ela é usada como mailbox_id em endereços de solicitação. Substitua os valores entre colchetes angulares por seus próprios dados. ``` 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 documentação O esquema OpenAPI descreve os parâmetros e respostas da solicitação. O arquivo llms-full.txt contém o livro de referência completo em formato de texto. Links para download estão disponíveis no início de cada página. # Áreas de autorização e acesso ## Entrar por link Seu servidor chama POST /v1/auth/login-link com X-API-Key e X-Customer-ID. Informe mailbox_id para abrir apenas essa caixa; omita o campo para abrir toda a conta. locale seleciona o idioma da interface. A resposta contém login_url, expires_in=300, expires_at (UTC), account_id e mailbox_id. O botão “Abrir e-mail” abre login_url completo, incluindo #token. O link vale por 5 minutos e só pode ser usado uma vez. Não o registre em logs nem exponha a chave API no navegador. A página de login remove o token da barra de endereços e o troca por cookies HttpOnly. Em caso de erro ou expiração, crie um novo link. O escopo de acesso e o estado da conta e da caixa são verificados novamente. Sessões de usuário não podem criar links. ``` 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 } ``` ## Chave do parceiro Use o mail API-key da sua integração. Passe para X-API-Key e ID da conta de e-mail - no cabeçalho obrigatório X-Customer-ID. Este é ID da conta, não external_id e não ID da caixa de correio. A chave permite acesso apenas aos clientes da sua integração. Armazene a chave no servidor do seu parceiro. Não coloque a chave de integração compartilhada no navegador ou aplicativo móvel. ``` curl 'https://adapt-mail.com/v1/mailboxes' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' ``` ## Token do usuário POST /v1/auth/token aceita login, password e mode. Para mode=account é usado o login user-ID, para mode=mailbox é usado o endereço completo da caixa de correio. As senhas da conta e da caixa de correio são independentes. A resposta contém access_token, token_type=Bearer e expires_in=3600. O token da conta abre suas caixas; token de caixa - apenas uma caixa. Após a expiração, você receberá um novo token. ``` POST /v1/auth/token Content-Type: application/json {"login":"user-123","password":"","mode":"account"} GET /v1/mailboxes Authorization: Bearer ``` ## Sessões do navegador POST /v1/auth/login é para site próprio adapt-mail.com. Requer o Origin correto e instala HttpOnly cookies. Não classificado X-Mail-Session seleciona uma das entradas salvas, mas sem cookie não dá acesso. Para front-end de terceiros, use seu servidor e token de usuário. Não conte com acesso aleatório entre domínios de cookie: público CORS para qualquer site não. # Despacho e operações ## Enfileirar uma carta Caixa de recebimento ID de GET /v1/mailboxes. Crie um Idempotency-Key exclusivo para um envio e salve-o até o resultado final. Para reprodução em rede, use a mesma chave e o mesmo corpo. HTTP 202 retorna um objeto de operação, não uma confirmação de entrega. O campo id contém operações ID. Enquete 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"} ``` ## Como entender o resultado - `queued` — A carta está aguardando para ser enviada. - `running` — O envio está em andamento. - `succeeded` — O servidor de e-mail aceitou o envio. Verifique o resultado para cada destinatário. - `failed` — Falha no envio. O motivo é fornecido em error. - `cancelled` — Envio cancelado. - `uncertain` — Falha ao confirmar o resultado do envio. Verifique a operação e a pasta enviada antes de tentar novamente. Após um envio bem-sucedido, o campo result contém accepted_recipients - destinatários aceitos, rejected_recipients - destinatários rejeitados e sent_saved - o resultado de salvar uma cópia enviada. A aceitação de uma carta por um servidor de correio não garante a entrega na caixa de entrada do destinatário. Para cancelar um envio pendente, execute POST /v1/operations/{operation_id}/cancel. O método /retry não reenvia o email. ## Resposta, encaminhamento e envio atrasado Para responder, inclua message_id do e-mail original em reply_to_message_id e encaminhe para references.. Em to, insira o endereço de resposta de reply_to ou o endereço do remetente. Para responder a todos, adicione outros participantes a to e cc, excluindo o seu próprio endereço. Para encaminhar anexos, passe forward_message com folder, uidvalidity e uid. Para seus arquivos enviados, use file_ids. O tamanho total do anexo é limitado a 25 MiB. send_at é especificado com um fuso horário, armazenado em UTC; o envio diferido está disponível dentro de um ano. Os limites são verificados no envio real, não na criação da fila. # Envio por SMTP ## Antes de conectar Envie e-mails pelo seu aplicativo via SMTP com o usuário e a senha da caixa de e-mail. Chaves de API e tokens de conta não servem para SMTP. Crie uma caixa ativa em um domínio conectado e conclua a verificação dos registros DNS. O usuário é o endereço completo, como noreply@example.com. Use a senha dessa caixa, não a da conta de e-mail. Substitua os endereços dos exemplos pelos seus; a senha é digitada na execução sem ser exibida. ## Servidor, portas e criptografia Use mail.adapt-mail.com para qualquer domínio conectado. Na porta 465, o TLS começa imediatamente; na 587, o STARTTLS é executado antes da autenticação. Escolha uma opção. Mantenha a verificação do certificado ativada. Nos exemplos, o endereço From e o remetente do envelope SMTP correspondem ao usuário da caixa. O nome de exibição do remetente pode ser alterado. A porta 25 é usada entre servidores de e-mail; use 465 ou 587 no seu aplicativo. ``` 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: envio pela porta 465 O exemplo usa apenas a biblioteca padrão do Python 3. Salve-o como send_mail.py e execute python3 send_mail.py. Para envios automáticos, obtenha a senha da configuração segura do aplicativo; não a salve no Git nem nos logs. ``` 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: conexão pela porta 587 Para STARTTLS, mantenha a preparação da mensagem do exemplo anterior e substitua o bloco with smtplib.SMTP_SSL pelo seguinte. Com smtplib.SMTP, a senha só é enviada após o STARTTLS ser concluído com sucesso. ``` 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 e anexos Adicione a versão HTML após set_content e o anexo antes do envio. Mantenha a versão em texto para clientes sem suporte a HTML. Use HTML confiável ou escape os dados inseridos. ``` 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, limites e mensagens enviadas Um send_message bem-sucedido significa que o servidor SMTP aceitou a mensagem, não que ela chegou à caixa de entrada do destinatário. O dicionário refused contém os destinatários rejeitados; se todos forem rejeitados, o Python lança SMTPRecipientsRefused. SMTP e API compartilham os limites de cada caixa: até 30 mensagens em uma janela móvel de 60 segundos, 50 destinatários por mensagem e 1000 destinatários em uma janela móvel de 24 horas, ou 5000 com o limite ampliado ativado. Todos os destinatários To, Cc e Bcc são contabilizados. O envio direto por SMTP não salva automaticamente uma cópia em Enviados. Os clientes de e-mail fazem isso por IMAP; a API do Adapt Mail salva a cópia separadamente. ## Erros SMTP - `535` — Falha na autenticação: confira o endereço completo, a senha e a disponibilidade da caixa. - `451` — Falha temporária, inclusive ao exceder os limites de envio. Tente novamente mais tarde, após uma espera. - `550 / 5xx` — Rejeição permanente: confira os endereços, as permissões do remetente e o texto da resposta. Mais de 50 destinatários são rejeitados após DATA. Corrija a causa antes de tentar novamente. - `TLS / timeout` — Confira mail.adapt-mail.com, a porta, o modo TLS e o acesso de saída do servidor do aplicativo. Use SMTP_SSL em 465 ou SMTP com STARTTLS em 587. Leia a resposta completa do servidor SMTP. Repita falhas temporárias após uma espera. Se a conexão cair após transmitir a mensagem e o resultado for desconhecido, não reenvie às cegas: SMTP não possui Idempotency-Key, e a repetição pode gerar uma duplicata. # Cartas e diálogos ## Lista e páginas GET /v1/mailboxes/{mailbox_id}/folders retorna pastas com um número total de letras total, número de letras não lidas unread e um valor de uidvalidity. Para uma lista de letras use GET /v1/mailboxes/{mailbox_id}/messages: a resposta contém items, next_before e uidvalidity, até 40 letras por página. Passe next_before como before na próxima solicitação. null significa o fim da lista. A busca por q é limitada a 200 caracteres e é realizada com base no conteúdo do e-mail. ``` GET /v1/mailboxes/42/messages?folder=INBOX GET /v1/mailboxes/42/messages?folder=INBOX&before=120 ``` ## IDs de letras uid é o identificador da carta dentro da pasta, folder é o nome da pasta, mailbox_id é ID da caixa de correio. O valor uidvalidity determina a versão de numeração das letras da pasta. Pegue todos os quatro valores da resposta API e armazene-os juntos. Se uidvalidity foi alterado, baixe novamente a lista de e-mail desta pasta: o antigo uid não pode mais ser usado. A leitura do conteúdo não marca o e-mail como lido. Para marcar, faça POST /v1/mailboxes/{mailbox_id}/messages/actions com action=read. ``` POST /v1/mailboxes/42/messages/actions {"folder":"INBOX","uidvalidity":123456,"uids":[120],"action":"read"} ``` ## Correspondência como diálogo GET /v1/mailboxes/{mailbox_id}/threads retorna até 100 caixas de diálogo. Passe thread_id da conversa selecionada para GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} para obter suas letras do antigo para o novo. Uma nova carta pode aparecer no diálogo com um ligeiro atraso. Atualize a lista; Para verificar o envio, use o status da operação. Não há necessidade de reenviar o e-mail devido ao atraso na exibição. # Limites e armazenamento ## Limites gerais SMTP e API Caixa de correio normal: 1.000 destinatários em um período contínuo de 24 horas. Caixa com outbound_high_limit=true: 5000. Até 30 letras em deslizamento de 60 segundos; até 50 destinatários no total em To, Cc e Bcc de uma carta. São considerados SMTP-destinatários recebidos, incluindo endereços internos e repetições de destinatários em cartas diferentes. Não há limite de horas separado. Este é o consumo de permissões de envio, e não as estatísticas de cartas entregues. GET /v1/mailboxes retorna o limite, fluxo e restante de ambas as janelas. Não há despesa cumulativa para o limite de destinatários por carta. Se o medidor não estiver disponível, o servidor retornará 503 em vez de consumo zero. ``` { "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 } ``` ## Excedendo o limite API-send pode receber 202 e posteriormente falhar failed com mail_daily_limit_exceeded ou mail_minute_limit_exceeded. Mais de 50 destinatários são rejeitados imediatamente com 422. SMTP retorna uma falha temporária de 451 se a janela for excedida e 550 após DATA se houver mais de 50 destinatários. Não há como contornar o limite através de outro protocolo. ## Correio e arquivos quota_mb é a capacidade compartilhada de mensagens e arquivos em MiB. used_bytes é o uso total em bytes. storage_shared=true; file_quota_bytes equivale a quota_mb × 1048576 e não é capacidade extra. file_used_bytes é o tamanho original dos arquivos enviados, já incluído no uso total. Os arquivos são armazenados com os e-mails em nossos discos. A cota compartilhada inclui a codificação MIME e os cabeçalhos. Uma cópia anexada a uma mensagem enviada ocupa espaço adicional. Clientes IMAP externos veem a pasta de sistema Adapt Files: excluí-la apaga os arquivos salvos. A renovação e o aumento de volume estão disponíveis na sua conta pessoal onde você conectou seu e-mail. Após o término do período pago, a leitura e o envio ficam bloqueados. Após 24 horas, inicia-se a retirada da caixa; renove sua assinatura antes desta data. # Eventos e webhooks ## Conectando webhooks Especifique o endereço para receber webhooks nas configurações de integração. Receberá notificações sobre novas cartas, status das caixas de correio e resultados das operações. Nas configurações de integração, defina um segredo de webhook separado e habilite a entrega. Este segredo é usado para verificar assinaturas de notificação; mail API-key não é adequado para isso. ## Formato de notificação A notificação vem HTTP POST- solicitação com Content-Type: application/json. O campo event contém o tipo de evento, timestamp — hora da notificação, data — dados do evento. A composição de data depende do evento. O identificador data.event_id permite reconhecer a reentrega. Armazene-o junto com seu ID de integração e processe um evento apenas uma 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 } } ``` ## Verificação e confirmação O cabeçalho X-Webhook-Signature contém HMAC-SHA256 em notação hexadecimal minúscula. Calcule a assinatura dos bytes originais do corpo da solicitação e do segredo do webhook. Verifique a assinatura antes de processar os dados; re-serializar JSON alterará os bytes que estão sendo assinados. Após verificar a assinatura e salvar o evento, retorne HTTP 200 ou 201. As respostas 202 e 204 não acusam recebimento. Responda em 10 segundos; Execute um processamento demorado após salvar o evento. As notificações podem chegar repetidamente e fora de ordem. Antes de alterar o status da assinatura, verifique seus detalhes atuais. O histórico de entrega está disponível nas configurações de integração. ## Que eventos ocorrem - `mailbox.created` — A caixa está criada e pronta para uso. - `mailbox.expiring` — O fim do período de pagamento da caixa está se aproximando. - `mailbox.renewed` — O período de pagamento da caixa foi estendido. - `mailbox.suspended` — O acesso à caixa postal está suspenso: a leitura e o envio ficam indisponíveis. - `mailbox.resumed` — O acesso à caixa de correio foi restaurado. - `mailbox.deleting_soon` — Falta uma hora para que a caixa não paga seja excluída. - `mailbox.deleted` — A caixa foi excluída. - `mailbox.account_changed` — A caixa de correio está vinculada a outra conta de correio. - `mail.message.received` — Uma nova carta recebida apareceu na caixa de correio. - `mail.operation.succeeded` — A operação foi concluída com sucesso. Para o envio, isso significa a aceitação da carta pelo servidor de correio, em vez da entrega na caixa de entrada do destinatário. - `mail.operation.failed` — A operação falhou. - `mail.operation.uncertain` — O resultado do envio é desconhecido. Verifique a condição antes de reenviar. Lembretes de pagamento: 14, 7, 3, 2, 1 dia e uma hora antes do vencimento. A renovação cancela lembretes desatualizados que ainda não foram enviados. # Erros e repetições ## Formato de erro A resposta de erro contém uma string detail:, um objeto com code/message ou uma lista de erros de validação. Não determine o comportamento a partir do texto traduzido: use HTTP-status e code gerado por máquina quando presente. ``` {"detail":"..."} {"detail":{"code":"...","message":"..."}} ``` ## Códigos HTTP - `400` — Cabeçalho ou identificador inválido. Verifique seu pedido. - `401` — A sessão ou chave não foi aceita. Faça login novamente ou verifique sua chave. - `403` — Direitos insuficientes ou acesso à caixa de correio negado. - `404` — O recurso não foi encontrado ou não está disponível para a conta corrente. - `409` — Estado da pasta, cota ou conflito de geração. Atualize seus dados antes de tentar novamente. - `413` — O tamanho do arquivo excede o limite permitido. - `422` — Parâmetros de solicitação inválidos. Verifique os campos fornecidos na resposta. - `429` — Muitos pedidos. Por favor, tente novamente mais tarde. - `503` — O serviço está temporariamente indisponível. Tente novamente a solicitação com atraso. Após 401, é necessário um novo login. Após 409, releia o status. Após 503, repita com atraso; para enviar, mantenha o mesmo Idempotency-Key. Não repita ações irreversíveis cegamente. # Aplicativos conectados ## Conectar um aplicativo Conecte seu cliente de IA usando este endereço. Escolha as caixas e permissões ao conectar. Permita acesso apenas às caixas de e-mail e ações necessárias. ``` 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 ``` ## Permissões - `mail.read` — Pesquisar e ler mensagens, conversas e anexos. - `mail.send` — Enviar, responder e encaminhar mensagens. - `mail.manage` — Rascunhos, arquivos, pastas, status de leitura, destaques, arquivo e spam. - `mail.delete` — Lixeira e exclusão permanente de mensagens, rascunhos e arquivos. ## Revogar acesso O acesso dura 30 dias. Você pode revogá-lo nas configurações a qualquer momento. # Configurações da caixa de correio ## Modelos de e-mail Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho. O modelo substituirá o texto do editor. Os destinatários e anexos serão preservados. ``` 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.

"} ``` ## Resposta automática As respostas automáticas funcionam com o navegador fechado e contam nos limites de envio. Listas de discussão e mensagens automáticas são excluídas. Informe o fuso horário nas datas da resposta automática; repeat_days varia de 1 a 30. Somente mensagens pessoais novas recebem resposta: From deve corresponder a 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 Até 100 filtros por caixa e 20 condições por filtro. As condições comparam cabeçalhos completos; ASCII ignora maiúsculas e minúsculas, outros caracteres não. O primeiro filtro correspondente é aplicado. As regras de remetente têm prioridade. As mensagens existentes são processadas separadamente. A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; consulte GET /v1/operations/{operation_id}. A caixa de entrada e as pastas pessoais serão processadas. Enviados, rascunhos, spam e lixeira são excluídos. ``` 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 ``` ## Visualização - `file_infected` — Uma ameaça foi detectada. A abertura do arquivo foi bloqueada. - `file_scan_unavailable` — O antivírus está temporariamente indisponível. Tente novamente mais tarde. Adicione preview=pdf à solicitação de conteúdo de arquivos ou anexos DOC, XLS, XLSX, PPT, PPTX e ODT. Limite: 10 conversões por minuto por caixa. X-File-Scan: clean e X-File-Scanned-At mostram o resultado e a hora da verificação. scanned_at pode ser null na lista de arquivos. O resultado fica em cache por uma hora; ameaças ou antivírus indisponível bloqueiam o download. ``` 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 Faça login no navegador A rota é para adapt-mail.com e requer Origin: https://adapt-mail.com. Retorna HttpOnly cookies e não classificado session_id. Para seu cliente use /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": "Faça login no navegador", "operationId": "login_v1_auth_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "session_id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Muitos pedidos", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A rota é para adapt-mail.com e requer Origin: https://adapt-mail.com. Retorna HttpOnly cookies e não classificado session_id. Para seu cliente use /v1/auth/token.", "security": [] } ``` # POST /v1/auth/token Obtendo um token de usuário Emite um token de acesso por uma hora com base no login e senha. Especifique mode=account para acessar todas as caixas de correio da conta ou mode=mailbox para acessar um endereço. Passe access_token no cabeçalho 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": "Obtendo um token de usuário", "operationId": "token_v1_auth_token_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Muitos pedidos", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Emite um token de acesso por uma hora com base no login e senha. Especifique mode=account para acessar todas as caixas de correio da conta ou mode=mailbox para acessar um endereço. Passe access_token no cabeçalho Authorization: Bearer .", "security": [] } ``` # GET /v1/auth/sessions Sessões salvas Obrigatório cookie mail_browser. X-API-Key e Bearer não substituem este cookie. Sem cookie uma lista vazia é retornada. ```sh curl -X GET 'https://adapt-mail.com/v1/auth/sessions' \ -b cookies.txt ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Sessões salvas", "operationId": "sessions_v1_auth_sessions_get", "responses": { "200": { "description": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Obrigatório cookie mail_browser. X-API-Key e Bearer não substituem este cookie. Sem cookie uma lista vazia é retornada.", "security": [ { "Browser": [] } ] } ``` # POST /v1/auth/logout Sair da sessão Somente sessão do usuário. Recupera a entrada selecionada; as entradas restantes são retidas. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/logout' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Sair da sessão", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "logged_out": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Somente sessão do usuário. Recupera a entrada selecionada; as entradas restantes são retidas." } ``` # GET /v1/me Perfil de usuário Retorna o perfil da conta de email atual. Use-o para exibir o nome de usuário e login em seu aplicativo. ```sh curl -X GET 'https://adapt-mail.com/v1/me' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Perfil de usuário", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna o perfil da conta de email atual. Use-o para exibir o nome de usuário e login em seu aplicativo." } ``` # GET /v1/avatars/{domain} Logotipo do domínio 200 - imagem; 202 — preparação, repita após Retry-After; 204 - sem logotipo; 503 - erro temporário. O logotipo não confirma a identidade do remetente. ```sh curl -X GET 'https://adapt-mail.com/v1/avatars/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Логотипы доменов" ], "summary": "Logotipo do domínio", "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": "Resposta bem-sucedida", "content": { "image/png": { "schema": { "type": "string", "format": "binary" } } } }, "202": { "description": "O logotipo está sendo preparado" }, "204": { "description": "Sem logotipo" }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "Muitos pedidos", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "200 - imagem; 202 — preparação, repita após Retry-After; 204 - sem logotipo; 503 - erro temporário. O logotipo não confirma a identidade do remetente." } ``` # GET /v1/domains Lista de domínios Domínios personalizados e um domínio compartilhado estão disponíveis para criar um endereço pessoal. ```sh curl -X GET 'https://adapt-mail.com/v1/domains' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Lista de domínios", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Domínios personalizados e um domínio compartilhado estão disponíveis para criar um endereço pessoal." } ``` # GET /v1/domains/{domain_id}/dns DNS-registros de domínio As instruções contêm os valores exatos de DNS- e o resultado do teste, mas não alteram automaticamente DNS. ```sh curl -X GET 'https://adapt-mail.com/v1/domains//dns' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "DNS-registros de domínio", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "As instruções contêm os valores exatos de DNS- e o resultado do teste, mas não alteram automaticamente DNS." } ``` # GET /v1/mailboxes Lista de caixas e limite de consumo A lista de caixas de correio é limitada pelo proprietário ou pela única caixa de correio da sessão do usuário. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "Lista de caixas e limite 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Mailbox" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A lista de caixas de correio é limitada pelo proprietário ou pela única caixa de correio da sessão do usuário." } ``` # PATCH /v1/mailboxes/{mailbox_id} Configurações da caixa de correio Use /v1 para alterar name, password e signature. Altere a cota compartilhada quota_mb no painel da hospedagem. Os arquivos não têm cota separada. Idempotency-Key é opcional, mas recomendado para novas tentativas. ```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": "Configurações da caixa de correio", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "Cabeçalho ou identificador inválido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Use /v1 para alterar name, password e signature. Altere a cota compartilhada quota_mb no painel da hospedagem. Os arquivos não têm cota separada. Idempotency-Key é opcional, mas recomendado para novas tentativas." } ``` # GET /v1/mailboxes/{mailbox_id}/folders Pastas e contadores Retorna uma lista de pastas, o número de emails total, o número de mensagens não lidas unread e o valor uidvalidity para cada pasta. Use o nome da pasta e uidvalidity nas consultas às suas letras. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Pastas e 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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna uma lista de pastas, o número de emails total, o número de mensagens não lidas unread e o valor uidvalidity para cada pasta. Use o nome da pasta e uidvalidity nas consultas às suas letras." } ``` # POST /v1/mailboxes/{mailbox_id}/folders Criando uma pasta A pasta personalizada é criada em IMAP e está disponível para outros clientes de email. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Criando uma pasta", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A pasta personalizada é criada em IMAP e está disponível para outros clientes de email." } ``` # GET /v1/mailboxes/{mailbox_id}/messages Lista de cartas Retorna até 40 letras, do novo UID ao antigo. Para a próxima página, passe next_before como before. Para next_before=null não há mais páginas. Read não define o sinalizador de leitura. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de cartas", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 40 letras, do novo UID ao antigo. Para a próxima página, passe next_before como before. Para next_before=null não há mais páginas. Read não define o sinalizador de leitura." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid} Conteúdo do e-mail Envie folder, uidvalidity e uid da lista de e-mail. HTML apagado, imagens externas não estão incluídas. Para marcar uma carta como lida, execute uma ação separada read. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Conteúdo do e-mail", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Envie folder, uidvalidity e uid da lista de e-mail. HTML apagado, imagens externas não estão incluídas. Para marcar uma carta como lida, execute uma ação separada read." } ``` # POST /v1/mailboxes/{mailbox_id}/messages/actions Ações com letras Aplica uma ação às mensagens selecionadas em uma pasta. Passe seus IDs para uids, o nome da pasta para folder e seu uidvalidity.. Para action=move, especifique também a pasta de destino para 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": "Ações com 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "updated": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Aplica uma ação às mensagens selecionadas em uma pasta. Passe seus IDs para uids, o nome da pasta para folder e seu uidvalidity.. Para action=move, especifique também a pasta de destino para destination." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/eml Baixe a carta em EML Retorna os MIME-bytes originais com cabeçalhos e anexos. Não altera a legibilidade. PDF é criado no navegador via impressão; Não há rota PDF- separada. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//eml?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Baixe a carta em 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": "Resposta bem-sucedida", "content": { "message/rfc822": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna os MIME-bytes originais com cabeçalhos e anexos. Não altera a legibilidade. PDF é criado no navegador via impressão; Não há rota PDF- separada." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/attachments/{index} Baixar anexo Adicione preview=pdf à solicitação de conteúdo de arquivos ou anexos DOC, XLS, XLSX, PPT, PPTX e ODT. Limite: 10 conversões por minuto por caixa. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//attachments/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Baixar anexo", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Adicione preview=pdf à solicitação de conteúdo de arquivos ou anexos DOC, XLS, XLSX, PPT, PPTX e ODT. Limite: 10 conversões por minuto por caixa." } ``` # POST /v1/mailboxes/{mailbox_id}/send Envie uma carta Obrigatório Idempotency-Key 8–128 caracteres. Repetir com a mesma chave e corpo retorna a mesma operação; outro corpo dá 409. HTTP 202 significa fila. Verifique o status da operação, não o fato de que uma resposta foi recebida. ```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": "Envie uma 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "Cabeçalho ou identificador inválido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Tamanho excedido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Obrigatório Idempotency-Key 8–128 caracteres. Repetir com a mesma chave e corpo retorna a mesma operação; outro corpo dá 409. HTTP 202 significa fila. Verifique o status da operação, não o fato de que uma resposta foi recebida." } ``` # GET /v1/operations Lista de operações Retorna as últimas 100 operações. Uma sessão de uma caixa de correio individual vê apenas suas operações. ```sh curl -X GET 'https://adapt-mail.com/v1/operations' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de operações", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Operation" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna as últimas 100 operações. Uma sessão de uma caixa de correio individual vê apenas suas operações." } ``` # GET /v1/operations/{operation_id} Status da operação Retorna o estado atual de uma operação por seu id. Embora status seja igual a queued ou running, a operação não é concluída. Depois de concluído, verifique result em caso de sucesso ou error em caso de erro. ```sh curl -X GET 'https://adapt-mail.com/v1/operations/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Status da operação", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna o estado atual de uma operação por seu id. Embora status seja igual a queued ou running, a operação não é concluída. Depois de concluído, verifique result em caso de sucesso ou error em caso de erro." } ``` # POST /v1/operations/{operation_id}/cancel Cancelar envio Cancela o envio de uma carta enquanto a operação estiver no estado queued. Se o envio já foi iniciado, concluído ou foi cancelado, um 409 é retornado. Você não pode recuperar uma carta já enviada usando este método. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//cancel' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Cancelar envio", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "cancelled": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Cancela o envio de uma carta enquanto a operação estiver no estado queued. Se o envio já foi iniciado, concluído ou foi cancelado, um 409 é retornado. Você não pode recuperar uma carta já enviada usando este método." } ``` # POST /v1/operations/{operation_id}/retry Repita a operação Reinicia a aplicação das regras do remetente: kind=sender_rules, status=failed. O envio de cartas não pode ser repetido usando este método. Para um estado inadequado, 409 é retornado; A repetição da criação e configuração de uma caixa de correio por meio deste método não está disponível e retorna 403. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//retry' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Repita a operação", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Reinicia a aplicação das regras do remetente: kind=sender_rules, status=failed. O envio de cartas não pode ser repetido usando este método. Para um estado inadequado, 409 é retornado; A repetição da criação e configuração de uma caixa de correio por meio deste método não está disponível e retorna 403." } ``` # PUT /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Salvar rascunho Cria ou atualiza um rascunho até draft_id. Para um novo rascunho, gere UUID; Para salvamentos subsequentes, use o mesmo identificador. Você pode continuar seu rascunho em outro dispositivo após fazer login na mesma caixa de correio. ```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": "Salvar rascunho", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Cria ou atualiza um rascunho até draft_id. Para um novo rascunho, gere UUID; Para salvamentos subsequentes, use o mesmo identificador. Você pode continuar seu rascunho em outro dispositivo após fazer login na mesma caixa de correio." } ``` # DELETE /v1/mailboxes/{mailbox_id}/drafts/{draft_id} Excluir rascunho A exclusão de um rascunho não afeta um e-mail que já esteja na fila. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//drafts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Excluir rascunho", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A exclusão de um rascunho não afeta um e-mail que já esteja na fila." } ``` # GET /v1/mailboxes/{mailbox_id}/drafts Lista de rascunhos Retorna até 100 rascunhos, do mais recente ao mais antigo. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//drafts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de rascunhos", "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": "Resposta bem-sucedida", "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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "updated_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." } } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 100 rascunhos, do mais recente ao mais antigo." } ``` # GET /v1/mailboxes/{mailbox_id}/threads Lista de diálogos Retorna até 100 caixas de diálogo, começando pelas atualizadas mais recentemente. As mensagens das pastas Trash e Junk não estão incluídas na lista. A nova carta pode aparecer com um ligeiro atraso; tente novamente a solicitação para atualizar a 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "thread_id": { "type": "string" }, "updated_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "messages": { "type": "integer" }, "unread": { "type": "integer" }, "senders": { "type": "array", "items": { "type": "string" } }, "subject": { "type": "string" }, "sender": { "type": "string" } } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 100 caixas de diálogo, começando pelas atualizadas mais recentemente. As mensagens das pastas Trash e Junk não estão incluídas na lista. A nova carta pode aparecer com um ligeiro atraso; tente novamente a solicitação para atualizar a lista." } ``` # GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} Cartas de diálogo Retorna até 100 letras da conversa selecionada, da antiga para a nova. Passe thread_id da lista de diálogo. Emails que já foram excluídos ou não estão mais disponíveis não são incluídos na resposta. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Cartas de diálogo", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Message" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 100 letras da conversa selecionada, da antiga para a nova. Passe thread_id da lista de diálogo. Emails que já foram excluídos ou não estão mais disponíveis não são incluídos na resposta." } ``` # PUT /v1/mailboxes/{mailbox_id}/sender-rules Regra do remetente Cria ou atualiza uma regra para o endereço sender. Especifique action=spam para direcionar novos e-mails do remetente para spam ou action=allow para permitir seus e-mails. A regra se aplica a e-mails recebidos futuros. ```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": "Regra do remetente", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Cria ou atualiza uma regra para o endereço sender. Especifique action=spam para direcionar novos e-mails do remetente para spam ou action=allow para permitir seus e-mails. A regra se aplica a e-mails recebidos futuros." } ``` # GET /v1/mailboxes/{mailbox_id}/sender-rules Lista de regras do remetente Retorna as regras do remetente para a caixa de correio selecionada. Cada regra contém um endereço sender, uma ação action e um identificador id para exclusão posterior. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//sender-rules' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de regras do remetente", "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": "Resposta bem-sucedida", "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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." } } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna as regras do remetente para a caixa de correio selecionada. Cada regra contém um endereço sender, uma ação action e um identificador id para exclusão posterior." } ``` # DELETE /v1/mailboxes/{mailbox_id}/sender-rules/{rule_id} Excluir uma regra de remetente Remove a regra do remetente em rule_id. As mensagens subsequentes são processadas por regras gerais de correio. As mensagens já recebidas permanecem em suas pastas. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//sender-rules/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Excluir uma regra de remetente", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Remove a regra do remetente em rule_id. As mensagens subsequentes são processadas por regras gerais de correio. As mensagens já recebidas permanecem em suas pastas." } ``` # GET /v1/mailboxes/{mailbox_id}/contacts Lista de contatos Retorna até 1.000 contatos classificados por nome. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//contacts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Lista de contatos", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContactResponse" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 1.000 contatos classificados por nome." } ``` # POST /v1/mailboxes/{mailbox_id}/contacts Salvar contato Salva o nome e endereço do contato na caixa de correio selecionada. Se já existir um contato com o mesmo email, atualiza seu nome sem criar uma duplicata. ```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": "Salvar contato", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactResponse" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Salva o nome e endereço do contato na caixa de correio selecionada. Se já existir um contato com o mesmo email, atualiza seu nome sem criar uma duplicata." } ``` # DELETE /v1/mailboxes/{mailbox_id}/contacts/{contact_id} Excluir contato Excluir um contato não exclui mensagens. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//contacts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "Excluir contato", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Excluir um contato não exclui mensagens." } ``` # GET /v1/mailboxes/{mailbox_id}/files Lista de arquivos Retorna até 1000 arquivos prontos da caixa de correio selecionada. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Lista de arquivos", "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": "Resposta bem-sucedida", "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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." } } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retorna até 1000 arquivos prontos da caixa de correio selecionada." } ``` # POST /v1/mailboxes/{mailbox_id}/files Carregar arquivo multipart/form-data, campo file. Tamanho de 1 byte a 25 MiB. O antivírus verifica o arquivo antes de baixá-lo. Cota insuficiente dá 409, tamanho grande - 413, ameaça detectada - 422, verificação indisponível - 503. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' \ -F 'file=@document.pdf' ``` ```json { "tags": [ "Файлы" ], "summary": "Carregar arquivo", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Tamanho excedido", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "multipart/form-data, campo file. Tamanho de 1 byte a 25 MiB. O antivírus verifica o arquivo antes de baixá-lo. Cota insuficiente dá 409, tamanho grande - 413, ameaça detectada - 422, verificação indisponível - 503." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/download Baixar arquivo A resposta contém bytes de arquivo com Content-Disposition: attachment. O link requer autorização em cada solicitação; o armazenamento público URL não é emitido. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//download' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Baixar arquivo", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A resposta contém bytes de arquivo com Content-Disposition: attachment. O link requer autorização em cada solicitação; o armazenamento público URL não é emitido." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/content Conteúdo do arquivo Adicione preview=pdf à solicitação de conteúdo de arquivos ou anexos DOC, XLS, XLSX, PPT, PPTX e ODT. Limite: 10 conversões por minuto por caixa. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//content' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Conteúdo do arquivo", "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": "Resposta bem-sucedida", "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": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Adicione preview=pdf à solicitação de conteúdo de arquivos ou anexos DOC, XLS, XLSX, PPT, PPTX e ODT. Limite: 10 conversões por minuto por caixa." } ``` # DELETE /v1/mailboxes/{mailbox_id}/files/{file_id} Excluir arquivo Um arquivo de envio incompleto não pode ser excluído: resposta 409. A cota é liberada após a exclusão. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//files/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "Excluir arquivo", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Um arquivo de envio incompleto não pode ser excluído: resposta 409. A cota é liberada após a exclusão." } ``` # POST /v1/auth/login-link Criar um link de acesso Seu servidor chama POST /v1/auth/login-link com X-API-Key e X-Customer-ID. Informe mailbox_id para abrir apenas essa caixa; omita o campo para abrir toda a conta. locale seleciona o idioma da interface. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/login-link' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' \ -H 'Content-Type: application/json' \ --data '{"mailbox_id":1,"locale":"en"}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "Criar um link de acesso", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkResult" } } } }, "401": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Seu servidor chama POST /v1/auth/login-link com X-API-Key e X-Customer-ID. Informe mailbox_id para abrir apenas essa caixa; omita o campo para abrir toda a conta. locale seleciona o idioma da interface." } ``` # POST /v1/auth/login-link/consume Trocar um link por uma sessão Apenas para a página de login adapt-mail.com: POST com Origin: https://adapt-mail.com. Retorna session_id e cookies HttpOnly. Link reutilizado ou expirado: 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": "Trocar um link por uma sessão", "operationId": "consume_login_link_v1_auth_login_link_consume_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkConsume" } } }, "required": true }, "responses": { "200": { "description": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResult" } } } }, "403": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "410": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Erro na solicitação", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Apenas para a página de login adapt-mail.com: POST com Origin: https://adapt-mail.com. Retorna session_id e cookies HttpOnly. Link reutilizado ou expirado: HTTP 410.", "security": [] } ``` # GET /v1/mailboxes/{mailbox_id}/templates Modelos de e-mail Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modelos de e-mail", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TemplateRecord" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho." } ``` # POST /v1/mailboxes/{mailbox_id}/templates Modelos de e-mail Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modelos de e-mail", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho." } ``` # PUT /v1/mailboxes/{mailbox_id}/templates/{template_id} Modelos de e-mail Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modelos de e-mail", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho." } ``` # DELETE /v1/mailboxes/{mailbox_id}/templates/{template_id} Modelos de e-mail Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Modelos de e-mail", "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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "const": true } } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Até 100 modelos por caixa. Campos: name, subject, text e html; o HTML é sanitizado. Um modelo não envia e-mails sozinho." } ``` # GET /v1/mailboxes/{mailbox_id}/autoresponder Resposta automática Informe o fuso horário nas datas da resposta automática; repeat_days varia de 1 a 30. Somente mensagens pessoais novas recebem resposta: From deve corresponder a Return-Path. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//autoresponder' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "Resposta 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Informe o fuso horário nas datas da resposta automática; repeat_days varia de 1 a 30. Somente mensagens pessoais novas recebem resposta: From deve corresponder a Return-Path." } ``` # PUT /v1/mailboxes/{mailbox_id}/autoresponder Resposta automática Informe o fuso horário nas datas da resposta automática; repeat_days varia de 1 a 30. Somente mensagens pessoais novas recebem resposta: From deve corresponder a 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": "Resposta 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Informe o fuso horário nas datas da resposta automática; repeat_days varia de 1 a 30. Somente mensagens pessoais novas recebem resposta: From deve corresponder a Return-Path." } ``` # GET /v1/mailboxes/{mailbox_id}/filters Filtros A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FilterRecord" } } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; consulte GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters Filtros A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; consulte GET /v1/operations/{operation_id}." } ``` # PUT /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtros A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; consulte GET /v1/operations/{operation_id}." } ``` # DELETE /v1/mailboxes/{mailbox_id}/filters/{filter_id} Filtros A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; consulte GET /v1/operations/{operation_id}." } ``` # POST /v1/mailboxes/{mailbox_id}/filters/{filter_id}/apply Aplicar às mensagens existentes A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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 às mensagens 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": "Resposta bem-sucedida", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "Login necessário", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Sem acesso", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Recurso não encontrado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflito de estado", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "Indisponibilidade temporária", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "A alteração de um filtro retorna operation. Aplicar ao histórico exige um Idempotency-Key de 8–120 caracteres. Reutilize a chave ao tentar novamente; 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": "Endereços dos principais destinatários." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copie os endereços dos destinatários que estão visíveis para outros participantes." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Endereços de destinatários Cco." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Assunto da carta." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "O texto da carta sem formatação." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-versão formatada da carta." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID arquivos baixados anteriormente nesta caixa de correio. Obtenha-os durante o download ou na lista de arquivos." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "O e-mail original cujos anexos precisam ser encaminhados." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "O valor message_id do e-mail ao qual você está respondendo." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "O valor references da mensagem original para salvar a cadeia de resposta." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Tempo de despacho atrasado com fuso horário, por exemplo 2026-11-01T12:00:00Z. Sem um valor, o despacho começa conforme a fila é processada." } }, "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": "Nome da pasta da lista de pastas, por exemplo INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "O valor é uidvalidity da resposta API para esta pasta." }, "uids": { "items": { "type": "integer" }, "type": "array", "maxItems": 100, "minItems": 1, "title": "Uids", "description": "Identificadores de letras selecionadas de uma pasta." }, "action": { "type": "string", "enum": [ "read", "unread", "star", "unstar", "move", "delete" ], "title": "Action" }, "destination": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Destination", "description": "Nome da pasta de destino. Obrigatório 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": "Nome da pasta da lista de pastas, por exemplo INBOX." }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "O valor é uidvalidity da resposta API para esta pasta." }, "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": "Endereços dos principais destinatários." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "Copie os endereços dos destinatários que estão visíveis para outros participantes." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "Endereços de destinatários Cco." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "Assunto da carta." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "O texto da carta sem formatação." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-versão formatada da carta." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID arquivos baixados anteriormente nesta caixa de correio. Obtenha-os durante o download ou na lista de arquivos." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "O e-mail original cujos anexos precisam ser encaminhados." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "O valor message_id do e-mail ao qual você está respondendo." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "O valor references da mensagem original para salvar a cadeia de resposta." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "Tempo de despacho atrasado com fuso horário, por exemplo 2026-11-01T12:00:00Z. Sem um valor, o despacho começa conforme a fila é processada." } }, "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": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também 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 da operação para verificar o status e cancelar um envio pendente." }, "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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "created_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "completed_at": { "anyOf": [ { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, { "type": "null" } ] }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "O motivo do erro se a operação não foi concluída com êxito." }, "result": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ], "description": "O resultado da operação. Para envio, contém informações sobre destinatários aceitos e rejeitados." } } }, "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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, { "type": "null" } ] }, "ready_at": { "anyOf": [ { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, { "type": "null" } ] }, "delete_after": { "anyOf": [ { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, { "type": "null" } ] }, "created_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "updated_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "updated_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." } } }, "FilterRecord": { "type": "object", "required": [ "id", "data", "updated_at" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "Data e hora em UTC. Se não houver deslocamento, o valor também 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": "Data e hora em UTC. Se não houver deslocamento, o valor também representa UTC." }, "operation": { "$ref": "#/components/schemas/Operation" } } } } ```