# Adapt Mail API 0.16.0 https://adapt-mail.com/ko/docs/ # 문서 Adapt Mail ## 제품에 대한 메일 인터페이스를 Adapt Mail: 사서함에 연결하고, 편지를 읽고 보내고, 대화 상자를 표시하고, 파일, 연락처 및 보낸 사람 규칙을 관리하세요. 메일을 연결한 개인 계정에서 계정을 만들고, 도메인을 연결하고, 사서함 비용을 지불하고, 볼륨을 늘리세요. Mail API을 사용하면 이미 생성된 사서함으로 작업할 수 있습니다. ## 승인으로 시작 서버 통합을 위해 X-Customer-ID.과 함께 메일 API-키를 사용하세요. 특정 사용자에 대해 로그인하려면 해당 사용자의 로그인과 비밀번호를 사용하여 Bearer-토큰을 받으세요. ``` GET /v1/mailboxes X-API-Key: X-Customer-ID: ``` ## 첫 번째 요청 기본 주소 API - https://adapt-mail.com. 모든 요청은 HTTPS.을 통해 처리됩니다. JSON- 요청의 경우 Content-Type: application/json.을 표시하십시오. 이메일 계정 로그인 및 비밀번호를 사용하여 토큰을 받습니다. 그런 다음 사서함 목록을 요청하고 원하는 사서함의 id을 저장합니다. 이는 요청 주소에서 mailbox_id로 사용됩니다. 꺾쇠 괄호 안의 값을 자신의 데이터로 바꾸십시오. ``` 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 " ``` ## 문서 형식 OpenAPI 스키마는 요청 매개변수와 응답을 설명합니다. 파일 llms-full.txt에는 텍스트 형식의 전체 참고 서적이 포함되어 있습니다. 다운로드 링크는 각 페이지의 시작 부분에 있습니다. # 승인 및 접근 영역 ## 링크로 로그인 서버에서 X-API-Key와 X-Customer-ID로 POST /v1/auth/login-link를 호출합니다. mailbox_id를 지정하면 해당 사서함만 열리고, 생략하면 전체 계정이 열립니다. locale은 인터페이스 언어를 선택합니다. 응답에는 login_url, expires_in=300, expires_at(UTC), account_id, mailbox_id가 포함됩니다. “메일 열기” 버튼은 #token을 포함한 전체 login_url을 엽니다. 링크는 5분 동안 한 번만 사용할 수 있습니다. 링크를 로그에 저장하거나 브라우저에 API 키를 노출하지 마세요. 로그인 페이지는 주소 표시줄에서 토큰을 제거하고 HttpOnly 쿠키로 교환합니다. 오류가 발생하거나 만료되면 새 링크를 만드세요. 접근 범위와 계정 및 사서함 상태를 다시 확인합니다. 사용자 세션으로는 링크를 생성할 수 없습니다. ``` 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 } ``` ## 파트너 키 통합의 메일 API-키를 사용하세요. 메일 계정의 X-API-Key 및 ID에 전달하세요 - 필수 헤더 X-Customer-ID.에 이것은 메일함의 external_id 및 ID이 아닌 계정의 ID입니다. 키를 사용하면 통합 클라이언트에만 액세스할 수 있습니다. 파트너의 서버에 키를 저장하세요. 브라우저나 모바일 애플리케이션에 공유 통합 키를 배치하지 마십시오. ``` curl 'https://adapt-mail.com/v1/mailboxes' \ -H 'X-API-Key: ' \ -H 'X-Customer-ID: ' ``` ## 사용자 토큰 POST /v1/auth/token은 login, password 및 mode.을 허용합니다. mode=account의 경우 로그인 user-ID이 사용되고, mode=mailbox의 경우 전체 사서함 주소가 사용됩니다. 계정 및 사서함 비밀번호는 독립적입니다. 응답에는 access_token, token_type=Bearer 및 expires_in=3600.이 포함됩니다. 계정 토큰은 상자를 엽니다. 상자 토큰 - 상자가 하나만 있습니다. 만료 후에는 새 토큰을 받게 됩니다. ``` POST /v1/auth/token Content-Type: application/json {"login":"user-123","password":"","mode":"account"} GET /v1/mailboxes Authorization: Bearer ``` ## 브라우저 세션 POST /v1/auth/login은 자체 사이트 adapt-mail.com.용입니다. 올바른 Origin이 필요하고 HttpOnly을 설치합니다. cookies. 분류되지 않음 X-Mail-Session은 저장된 입력 중 하나를 선택하지만 cookie이 없으면 액세스 권한을 부여하지 않습니다. 타사 프런트엔드의 경우 서버와 사용자 토큰을 사용하세요. 모든 사이트 번호에 대해 cookie: 공개 CORS에서 임의의 교차 도메인 액세스를 기대하지 마십시오. # 파견 및 운영 ## 편지 대기열에 넣기 GET /v1/mailboxes.에서 ID 상자를 받습니다. 한 번의 제출에 대해 고유한 Idempotency-Key을 만들고 최종 결과가 나올 때까지 저장합니다. 네트워크 재생의 경우 동일한 키와 동일한 본문을 사용합니다. HTTP 202는 배송 확인이 아닌 작업 개체를 반환합니다. id 필드에는 ID 작업이 포함되어 있습니다. 설문 조사 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"} ``` ## 결과를 이해하는 방법 - `queued` — 편지가 전송되기를 기다리고 있습니다. - `running` — 전송이 진행 중입니다. - `succeeded` — 메일 서버가 제출을 수락했습니다. 각 수신자의 결과를 확인하세요. - `failed` — 전송에 실패했습니다. 그 이유는 error.에 나와 있습니다. - `cancelled` — 발송이 취소되었습니다. - `uncertain` — 전송 결과를 확인하지 못했습니다. 다시 시도하기 전에 작업과 보낸 폴더를 확인하십시오. 전송이 성공한 후 result 필드에는 accepted_recipients - 수락된 수신자, rejected_recipients - 거부된 수신자 및 sent_saved - 전송된 복사본을 저장한 결과가 포함됩니다. 메일 서버가 편지를 수락한다고 해서 수신자의 받은 편지함으로의 배달이 보장되는 것은 아닙니다. 보류 중인 전송을 취소하려면 POST /v1/operations/{operation_id}/cancel.을 실행하십시오. /retry 메소드는 이메일을 다시 보내지 않습니다. ## 회신, 전달 및 지연 발송 회신하려면 reply_to_message_id에 원본 이메일의 message_id을 포함하여 references.로 전달해 주세요. to에는 reply_to에서 받은 회신 주소 또는 보낸 사람 주소를 입력하세요. 모든 사람에게 답장하려면 자신의 주소를 제외한 다른 참가자를 to 및 cc에 추가하세요. 첨부 파일을 전달하려면 folder, uidvalidity 및 uid.을 사용하여 forward_message을 전달합니다. 업로드된 파일의 경우 file_ids.을 사용합니다. 총 첨부 파일 크기는 25MiB로 제한됩니다. send_at은 UTC에 저장된 시간대와 함께 지정됩니다. 1년 이내에 배송 연기가 가능합니다. 대기열 생성 시가 아닌 실제 전송 시 제한을 확인합니다. # SMTP로 메일 보내기 ## 연결 전 준비 메일함의 사용자 이름과 비밀번호로 SMTP에 인증하여 애플리케이션에서 메일을 보내세요. API 키와 계정 토큰은 SMTP에 사용할 수 없습니다. 연결된 도메인에 활성 메일함을 만들고 DNS 레코드 검증을 완료하세요. 사용자 이름은 noreply@example.com과 같은 전체 이메일 주소입니다. 메일 계정 비밀번호가 아닌 해당 메일함의 비밀번호를 사용하세요. 예제 주소를 실제 주소로 바꾸세요. 비밀번호는 실행 시 입력하며 화면에 표시되지 않습니다. ## 서버, 포트 및 암호화 연결된 모든 도메인에서 mail.adapt-mail.com을 사용하세요. 465 포트는 연결 즉시 TLS를 시작하고, 587 포트는 STARTTLS 후 인증합니다. 한 가지 방식을 선택하고 인증서 검증은 활성화된 상태로 유지하세요. 예제의 From 주소와 SMTP 봉투 발신자는 메일함 사용자 이름과 같습니다. 발신자 표시 이름은 변경할 수 있습니다. 25 포트는 메일 서버 간 통신용입니다. 애플리케이션에서는 465 또는 587을 사용하세요. ``` SMTP_HOST = "mail.adapt-mail.com" SMTP_PORT = 465 SMTP_USER = "noreply@example.com" SMTP_PASSWORD = "" SMTP_FROM = "noreply@example.com" SMTP_FROM_NAME = "Example" 465: implicit TLS 587: STARTTLS ``` ## Python: 465 포트로 보내기 이 예제는 Python 3 표준 라이브러리만 사용합니다. send_mail.py로 저장한 뒤 python3 send_mail.py를 실행하세요. 자동 발송 시에는 애플리케이션의 보안 설정에서 비밀번호를 가져오고 Git이나 로그에 저장하지 마세요. ``` 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: 587 포트로 연결하기 STARTTLS를 사용하려면 이전 예제의 메시지 준비 코드를 유지하고 with smtplib.SMTP_SSL 블록을 아래 코드로 바꾸세요. smtplib.SMTP에서는 STARTTLS가 성공한 후에만 비밀번호가 전송됩니다. ``` with smtplib.SMTP("mail.adapt-mail.com", 587, timeout=30) as smtp: smtp.ehlo() smtp.starttls(context=ssl.create_default_context()) smtp.ehlo() smtp.login(username, password) refused = smtp.send_message( message, from_addr=username, to_addrs=[recipient], ) print("Rejected recipients:", refused) ``` ## HTML 및 첨부파일 set_content 뒤에 HTML 버전을 추가하고 발송 전에 첨부파일을 추가하세요. HTML을 지원하지 않는 클라이언트를 위해 일반 텍스트 버전도 유지하세요. 신뢰할 수 있는 HTML만 사용하거나 삽입할 데이터를 이스케이프 처리하세요. ``` 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", ) ``` ## 결과, 제한 및 보낸 메일 send_message 성공은 SMTP 서버가 메일을 수락했다는 뜻이며 수신자의 받은편지함에 도착했다는 뜻은 아닙니다. refused 딕셔너리에는 거부된 수신자가 포함됩니다. 모든 수신자가 거부되면 Python은 SMTPRecipientsRefused 예외를 발생시킵니다. SMTP와 API는 메일함별 제한을 공유합니다. 최근 60초 동안 최대 30통, 메일당 최대 50명, 최근 24시간 동안 최대 1000명의 수신자에게 보낼 수 있으며 상향된 제한이 활성화되면 5000명입니다. To, Cc, Bcc의 모든 수신자를 계산합니다. SMTP로 직접 보내면 보낸편지함에 사본이 자동 저장되지 않습니다. 메일 클라이언트는 IMAP으로 사본을 저장하며, Adapt Mail API는 발송 시 사본을 별도로 저장합니다. ## SMTP 오류 - `535` — 인증 실패: 전체 주소, 메일함 비밀번호 및 메일함 사용 가능 여부를 확인하세요. - `451` — 발송 제한 초과 등을 포함한 일시적인 실패입니다. 잠시 기다린 뒤 재시도하세요. - `550 / 5xx` — 영구적인 거부: 주소, 발신자 권한 및 응답 내용을 확인하세요. 수신자가 50명을 넘으면 DATA 이후 거부됩니다. 원인을 해결한 후 재시도하세요. - `TLS / timeout` — mail.adapt-mail.com, 포트, TLS 모드 및 애플리케이션 서버의 외부 연결 가능 여부를 확인하세요. 465에서는 SMTP_SSL, 587에서는 STARTTLS를 사용하는 SMTP를 이용하세요. SMTP 서버의 전체 응답을 확인하세요. 일시적인 실패는 기다린 뒤 재시도하세요. 메시지 전송 후 연결이 끊겨 결과를 알 수 없다면 무작정 다시 보내지 마세요. SMTP에는 Idempotency-Key가 없어 재시도로 중복 메일이 발생할 수 있습니다. # 편지와 대화 ## 목록 및 페이지 GET /v1/mailboxes/{mailbox_id}/folders은 총 문자 수 total, 읽지 않은 문자 수 unread 및 값 uidvalidity.인 폴더를 반환합니다. 문자 목록의 경우 GET /v1/mailboxes/{mailbox_id}/messages:을 사용하면 응답에 items, next_before 및 uidvalidity가 포함되며 페이지당 최대 40개의 문자가 포함됩니다. 다음 요청에서 next_before을 before로 전달합니다. null은 목록의 끝을 의미합니다. q에 대한 검색은 200자로 제한되며, 메일 내용을 기준으로 검색됩니다. ``` GET /v1/mailboxes/42/messages?folder=INBOX GET /v1/mailboxes/42/messages?folder=INBOX&before=120 ``` ## 문자 ID uid은 폴더 안에 있는 문자의 식별자이고, folder은 폴더 이름이고, mailbox_id는 사서함의 ID입니다. uidvalidity 값은 폴더에 있는 문자의 번호 매기기 버전을 결정합니다. API 답변에서 네 가지 값을 모두 가져와서 함께 저장하세요. uidvalidity이 변경된 경우 이 폴더의 메일 목록을 다시 다운로드하세요. 이전 uid은 더 이상 사용할 수 없습니다. 내용을 읽는다고 해서 이메일이 읽은 것으로 표시되지는 않습니다. 표시하려면 POST /v1/mailboxes/{mailbox_id}/messages/actions을 action=read.와 함께 수행하세요. ``` POST /v1/mailboxes/42/messages/actions {"folder":"INBOX","uidvalidity":123456,"uids":[120],"action":"read"} ``` ## 대화로서의 대응 GET /v1/mailboxes/{mailbox_id}/threads은 최대 100개의 대화 상자를 반환합니다. 선택한 대화의 thread_id을 GET /v1/mailboxes/{mailbox_id}/threads/{thread_id}에 전달하여 이전 문자에서 새 문자로 가져옵니다. 약간의 지연 후에 새 문자가 대화에 나타날 수 있습니다. 목록을 업데이트하십시오. 제출 내용을 확인하려면 작업 상태를 사용하세요. 표시 지연으로 인해 이메일을 다시 보낼 필요가 없습니다. # 한도 및 저장용량 ## 일반 제한 SMTP 및 API 일반 사서함: 24시간 동안 수신자 1000명. outbound_high_limit=true: 5000이 포함된 상자. 60초 슬라이딩에 최대 30자; 한 편지의 To, Cc, Bcc에 총 최대 50명의 수신자가 있습니다. 수신된 SMTP-수신자는 내부 주소와 다른 편지로 된 수신자의 반복을 포함하여 고려됩니다. 별도의 시간 제한은 없습니다. 이는 전송 권한의 소비이지 배달된 편지의 통계가 아닙니다. GET /v1/mailboxes은 두 창의 한계, 흐름 및 나머지를 반환합니다. 편지당 수신인 수 제한에 대한 누적 비용은 없습니다. 측정기를 사용할 수 없는 경우 서버는 소비량이 0이 아닌 503을 반환합니다. ``` { "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 } ``` ## 한도 초과 API-send는 202를 수신하고 나중에 실패할 수 있습니다. failed은 mail_daily_limit_exceeded 또는 mail_minute_limit_exceeded.으로 50명 이상의 수신자가 422로 즉시 거부됩니다. SMTP은 창을 초과한 경우 일시적인 실패 451을 반환하고 수신자가 50명 이상인 경우 DATA 이후에는 550을 반환합니다. 다른 프로토콜을 통해 제한을 우회할 수 있는 방법은 없습니다. ## 메일 및 파일 quota_mb는 메일과 파일의 공용 용량(MiB)입니다. used_bytes는 총 사용량(바이트)입니다. storage_shared=true이며 file_quota_bytes는 quota_mb × 1048576과 같고 추가 용량이 아닙니다. file_used_bytes는 업로드한 파일의 원본 크기로, 이미 총 사용량에 포함됩니다. 파일은 메일과 함께 당사 디스크에 저장됩니다. 공용 한도에는 MIME 인코딩과 헤더가 포함됩니다. 보낸 메일에 복사된 첨부 파일은 추가 공간을 차지합니다. 외부 IMAP 클라이언트에는 Adapt Files 시스템 폴더가 표시됩니다. 이 폴더를 삭제하면 저장된 파일도 삭제됩니다. 갱신 및 수량 증가는 이메일을 연결한 개인 계정에서 가능합니다. 유료 기간이 끝나면 읽기 및 보내기가 차단됩니다. 24시간 후에 상자 제거가 시작됩니다. 이 날짜 이전에 구독을 갱신하세요. # 이벤트 및 웹훅 ## 웹훅 연결 통합 설정에서 웹훅을 수신할 주소를 지정하세요. 새 편지, 사서함 상태 및 작업 결과에 대한 알림을 받게 됩니다. 통합 설정에서 별도의 웹훅 비밀을 설정하고 전달을 활성화하세요. 이 비밀은 알림 서명을 확인하는 데 사용됩니다. 메일 API-key는 이에 적합하지 않습니다. ## 알림 형식 알림은 Content-Type: application/json. 필드 event와 함께 HTTP POST- 요청에 이벤트 유형 timestamp — 알림 시간, data — 이벤트 데이터를 포함합니다. data의 구성은 이벤트에 따라 다릅니다. 식별자 data.event_id을 사용하면 재배송을 인식할 수 있습니다. 통합 ID와 함께 저장하고 하나의 이벤트를 한 번만 처리하세요. ``` { "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 } } ``` ## 확인 및 확인 헤더 X-Webhook-Signature에는 소문자 16진수 표기법으로 HMAC-SHA256이 포함되어 있습니다. 요청 본문의 원본 바이트와 웹훅 비밀에서 서명을 계산합니다. 데이터를 처리하기 전에 서명을 확인하세요. JSON을 다시 직렬화하면 서명되는 바이트가 변경됩니다. 서명을 확인하고 이벤트를 저장한 후 HTTP 200 또는 201을 반환합니다. 응답 202 및 204는 수신을 확인하지 않습니다. 10초 이내에 답변하세요. 이벤트를 저장한 후 시간이 오래 걸리는 처리를 수행하십시오. 알림은 반복적으로 또는 순서 없이 도착할 수 있습니다. 구독 상태를 변경하기 전에 현재 세부 정보를 확인하세요. 통합 설정에서 배송 내역을 확인할 수 있습니다. ## 어떤 이벤트가 발생하나요? - `mailbox.created` — 상자가 생성되어 사용할 준비가 되었습니다. - `mailbox.expiring` — 박스 유료기간 종료가 다가오고 있습니다. - `mailbox.renewed` — 박스 유료 기간이 연장되었습니다. - `mailbox.suspended` — 사서함에 대한 액세스가 일시 중지되어 읽기 및 보내기가 불가능합니다. - `mailbox.resumed` — 사서함에 대한 액세스가 복원되었습니다. - `mailbox.deleting_soon` — 미납박스 삭제까지 1시간 남았습니다. - `mailbox.deleted` — 상자가 삭제되었습니다. - `mailbox.account_changed` — 사서함이 다른 메일 계정에 연결되어 있습니다. - `mail.message.received` — 새로운 편지가 우편함에 나타났습니다. - `mail.operation.succeeded` — 작업이 성공적으로 완료되었습니다. 발송의 경우 이는 수신자의 받은 편지함으로 배달되는 것이 아니라 메일 서버에서 편지를 수락하는 것을 의미합니다. - `mail.operation.failed` — 작업이 실패했습니다. - `mail.operation.uncertain` — 전송 결과를 알 수 없습니다. 다시 보내기 전에 상태를 확인하십시오. 결제 알림: 만료 14, 7, 3, 2, 1일 및 1시간 전. 갱신하면 아직 전송되지 않은 오래된 알림이 취소됩니다. # 오류와 반복 ## 오류 형식 오류 응답에는 detail: 문자열, code/message이 있는 개체 또는 유효성 검사 오류 목록이 포함됩니다. 번역된 텍스트에서 동작을 결정하지 마십시오. 존재하는 경우 HTTP-status 및 기계 생성 code을 사용하십시오. ``` {"detail":"..."} {"detail":{"code":"...","message":"..."}} ``` ## 코드 HTTP - `400` — 헤더 또는 식별자가 잘못되었습니다. 요청을 확인하세요. - `401` — 세션 또는 키가 승인되지 않았습니다. 다시 로그인하거나 키를 확인하세요. - `403` — 권한이 부족하거나 사서함에 대한 액세스가 거부되었습니다. - `404` — 리소스를 찾을 수 없거나 현재 계정에서 사용할 수 없습니다. - `409` — 폴더 상태, 할당량 또는 세대 충돌. 다시 시도하기 전에 데이터를 업데이트하세요. - `413` — 파일 크기가 허용된 한도를 초과했습니다. - `422` — 요청 매개변수가 잘못되었습니다. 응답에 제공된 필드를 확인하세요. - `429` — 요청이 너무 많습니다. 나중에 다시 시도해 주세요. - `503` — 일시적으로 서비스를 이용할 수 없습니다. 지연된 요청을 다시 시도하십시오. 401 이후에는 새로 로그인해야 합니다. 409 이후에는 상태를 다시 읽어보세요. 503 이후에는 지연을 두고 반복합니다. 보내려면 동일하게 Idempotency-Key. 되돌릴 수 없는 행동을 맹목적으로 반복하지 마십시오. # 연결된 앱 ## 앱 연결 이 주소로 AI 클라이언트를 연결하세요. 연결 시 메일함과 권한을 선택합니다. 필요한 메일함과 작업에만 접근을 허용하세요. ``` 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 ``` ## 권한 - `mail.read` — 메일, 대화 및 첨부파일 검색과 읽기. - `mail.send` — 메일 보내기, 답장 및 전달. - `mail.manage` — 초안, 파일, 폴더, 읽음 상태, 중요 표시, 보관 및 스팸. - `mail.delete` — 휴지통 이동 및 메일, 초안, 파일 영구 삭제. ## 접근 철회 접근 권한은 30일간 유효하며 설정에서 언제든 철회할 수 있습니다. # 사서함 설정 ## 메일 템플릿 메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다. 템플릿이 편집기 본문을 대체합니다. 받는 사람과 첨부 파일은 유지됩니다. ``` 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.

"} ``` ## 자동 응답 브라우저가 닫혀 있어도 자동 응답이 전송되며 발송 한도에 포함됩니다. 메일링 리스트와 자동 메시지에는 응답하지 않습니다. 자동 응답 날짜에는 시간대를 포함하세요. repeat_days는 1~30입니다. 새로운 개인 메일에만 응답하며 From이 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} ``` ## 필터 메일함당 필터는 최대 100개, 필터당 조건은 최대 20개입니다. 전체 헤더를 비교하며 ASCII는 대소문자를 구분하지 않고 다른 문자는 구분합니다. 처음 일치하는 필터가 적용됩니다. 발신자 규칙이 우선하며 기존 메일 처리는 별도로 실행합니다. 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요. 받은편지함과 사용자 폴더를 처리합니다. 보낸편지함, 임시보관함, 스팸 및 휴지통은 제외됩니다. ``` 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 ``` ## 시사 - `file_infected` — 위협이 발견되어 파일 열기가 차단되었습니다. - `file_scan_unavailable` — 바이러스 검사를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요. DOC, XLS, XLSX, PPT, PPTX, ODT 파일이나 첨부파일의 내용 요청에 preview=pdf를 추가하세요. 메일함당 분당 최대 10회 변환할 수 있습니다. X-File-Scan: clean과 X-File-Scanned-At은 검사 결과와 시간을 나타냅니다. 파일 목록의 scanned_at은 null일 수 있습니다. 결과는 한 시간 동안 캐시되며 위협이 있거나 검사기를 사용할 수 없으면 파일을 제공하지 않습니다. ``` 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 브라우저에 로그인 경로는 adapt-mail.com에 대한 것이며 Origin:이 필요합니다. https://adapt-mail.com. HttpOnly cookies을 반환하고 분류되지 않은 session_id. 클라이언트의 경우 /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": "브라우저에 로그인", "operationId": "login_v1_auth_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "mailbox_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "session_id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "요청이 너무 많습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "경로는 adapt-mail.com에 대한 것이며 Origin:이 필요합니다. https://adapt-mail.com. HttpOnly cookies을 반환하고 분류되지 않은 session_id. 클라이언트의 경우 /v1/auth/token.을 사용합니다.", "security": [] } ``` # POST /v1/auth/token 사용자 토큰 얻기 로그인 및 비밀번호를 기반으로 1시간 동안 액세스 토큰을 발급합니다. 모든 계정 사서함에 액세스하려면 mode=account을 지정하고 하나의 주소에 액세스하려면 mode=mailbox을 지정합니다. Authorization: Bearer 헤더에 access_token을 전달합니다. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/token' \ -H 'Content-Type: application/json' \ --data '{"login":"user-123","password":""}' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "사용자 토큰 얻기", "operationId": "token_v1_auth_token_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } }, "required": true }, "responses": { "200": { "description": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "요청이 너무 많습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "로그인 및 비밀번호를 기반으로 1시간 동안 액세스 토큰을 발급합니다. 모든 계정 사서함에 액세스하려면 mode=account을 지정하고 하나의 주소에 액세스하려면 mode=mailbox을 지정합니다. Authorization: Bearer 헤더에 access_token을 전달합니다.", "security": [] } ``` # GET /v1/auth/sessions 저장된 세션 필수 cookie mail_browser. X-API-Key 및 Bearer은 이를 대체하지 않습니다. cookie. cookie이 없으면 빈 목록이 반환됩니다. ```sh curl -X GET 'https://adapt-mail.com/v1/auth/sessions' \ -b cookies.txt ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "저장된 세션", "operationId": "sessions_v1_auth_sessions_get", "responses": { "200": { "description": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필수 cookie mail_browser. X-API-Key 및 Bearer은 이를 대체하지 않습니다. cookie. cookie이 없으면 빈 목록이 반환됩니다.", "security": [ { "Browser": [] } ] } ``` # POST /v1/auth/logout 세션에서 로그아웃 사용자 세션에만 해당됩니다. 선택한 입력을 불러옵니다. 나머지 입력은 유지됩니다. ```sh curl -X POST 'https://adapt-mail.com/v1/auth/logout' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "세션에서 로그아웃", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "logged_out": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "사용자 세션에만 해당됩니다. 선택한 입력을 불러옵니다. 나머지 입력은 유지됩니다." } ``` # GET /v1/me 사용자 프로필 현재 메일 계정의 프로필을 반환합니다. 이를 사용하여 애플리케이션에 사용자 이름과 로그인을 표시합니다. ```sh curl -X GET 'https://adapt-mail.com/v1/me' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Авторизация и аккаунт" ], "summary": "사용자 프로필", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "현재 메일 계정의 프로필을 반환합니다. 이를 사용하여 애플리케이션에 사용자 이름과 로그인을 표시합니다." } ``` # GET /v1/avatars/{domain} 도메인 로고 200 - 이미지; 202 — 준비, Retry-After 이후 반복; 204 - 로고 없음; 503 - 일시적인 오류입니다. 로고는 보낸 사람의 신원을 확인하지 않습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/avatars/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Логотипы доменов" ], "summary": "도메인 로고", "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": "성공적인 응답", "content": { "image/png": { "schema": { "type": "string", "format": "binary" } } } }, "202": { "description": "로고 준비중입니다" }, "204": { "description": "로고 없음" }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "429": { "description": "요청이 너무 많습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "200 - 이미지; 202 — 준비, Retry-After 이후 반복; 204 - 로고 없음; 503 - 일시적인 오류입니다. 로고는 보낸 사람의 신원을 확인하지 않습니다." } ``` # GET /v1/domains 도메인 목록 개인 주소를 생성하려면 사용자 정의 도메인과 공유 도메인을 사용할 수 있습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/domains' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "도메인 목록", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "개인 주소를 생성하려면 사용자 정의 도메인과 공유 도메인을 사용할 수 있습니다." } ``` # GET /v1/domains/{domain_id}/dns DNS-도메인 레코드 지침에는 정확한 DNS- 값과 테스트 결과가 포함되어 있지만 DNS을 자동으로 변경하지는 않습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/domains//dns' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "DNS-도메인 레코드", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "지침에는 정확한 DNS- 값과 테스트 결과가 포함되어 있지만 DNS을 자동으로 변경하지는 않습니다." } ``` # GET /v1/mailboxes 상자 목록 및 소비 한도 사서함 목록은 소유자 또는 사용자 세션의 유일한 사서함에 의해 제한됩니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Домены и ящики" ], "summary": "상자 목록 및 소비 한도", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Mailbox" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "사서함 목록은 소유자 또는 사용자 세션의 유일한 사서함에 의해 제한됩니다." } ``` # PATCH /v1/mailboxes/{mailbox_id} 사서함 설정 /v1에서 name, password, signature를 변경할 수 있습니다. 공용 quota_mb는 호스팅 패널에서 변경합니다. 파일에는 별도 한도가 없습니다. Idempotency-Key는 선택 사항이지만 재시도 시 사용하는 것이 좋습니다. ```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": "사서함 설정", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "잘못된 헤더 또는 식별자", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "/v1에서 name, password, signature를 변경할 수 있습니다. 공용 quota_mb는 호스팅 패널에서 변경합니다. 파일에는 별도 한도가 없습니다. Idempotency-Key는 선택 사항이지만 재시도 시 사용하는 것이 좋습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/folders 폴더 및 카운터 폴더 목록, 이메일 수 total, 읽지 않은 메시지 수 unread 및 각 폴더에 대한 값 uidvalidity을 반환합니다. 해당 문자에 대한 쿼리에는 폴더 이름과 uidvalidity을 사용하세요. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "폴더 및 카운터", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "폴더 목록, 이메일 수 total, 읽지 않은 메시지 수 unread 및 각 폴더에 대한 값 uidvalidity을 반환합니다. 해당 문자에 대한 쿼리에는 폴더 이름과 uidvalidity을 사용하세요." } ``` # POST /v1/mailboxes/{mailbox_id}/folders 폴더 만들기 사용자 정의 폴더는 IMAP에 생성되며 다른 메일 클라이언트에서 사용할 수 있습니다. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//folders' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "폴더 만들기", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "사용자 정의 폴더는 IMAP에 생성되며 다른 메일 클라이언트에서 사용할 수 있습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/messages 편지 목록 새 UID부터 이전 문자까지 최대 40자를 반환합니다. 다음 페이지의 경우 next_before을 before.로 전달합니다. next_before=null의 경우 더 이상 페이지가 없습니다. 읽기는 읽기 플래그를 설정하지 않습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "편지 목록", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "새 UID부터 이전 문자까지 최대 40자를 반환합니다. 다음 페이지의 경우 next_before을 before.로 전달합니다. next_before=null의 경우 더 이상 페이지가 없습니다. 읽기는 읽기 플래그를 설정하지 않습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid} 메일 내용 메일 목록에서 folder, uidvalidity 및 uid을 보냅니다. HTML 지워지면 외부 이미지가 포함되지 않습니다. 편지를 읽음으로 표시하려면 별도의 작업을 수행하세요 read. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "메일 내용", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "메일 목록에서 folder, uidvalidity 및 uid을 보냅니다. HTML 지워지면 외부 이미지가 포함되지 않습니다. 편지를 읽음으로 표시하려면 별도의 작업을 수행하세요 read." } ``` # POST /v1/mailboxes/{mailbox_id}/messages/actions 문자를 사용한 작업 한 폴더에서 선택한 메시지에 작업을 적용합니다. 해당 ID를 uids에 전달하고 폴더 이름을 folder에 전달하고 해당 uidvalidity.을 action=move의 경우 대상 폴더도 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": "문자를 사용한 작업", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "updated": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "한 폴더에서 선택한 메시지에 작업을 적용합니다. 해당 ID를 uids에 전달하고 폴더 이름을 folder에 전달하고 해당 uidvalidity.을 action=move의 경우 대상 폴더도 destination.에 지정합니다." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/eml EML에서 편지를 다운로드하세요. 헤더와 첨부 파일이 포함된 원본 MIME-바이트를 반환합니다. 가독성은 변경되지 않습니다. PDF은 인쇄를 통해 브라우저에 생성됩니다. 별도의 PDF-route가 없습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//eml?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "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": "성공적인 응답", "content": { "message/rfc822": { "schema": { "type": "string", "format": "binary" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "헤더와 첨부 파일이 포함된 원본 MIME-바이트를 반환합니다. 가독성은 변경되지 않습니다. PDF은 인쇄를 통해 브라우저에 생성됩니다. 별도의 PDF-route가 없습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/messages/{uid}/attachments/{index} 첨부파일 다운로드 DOC, XLS, XLSX, PPT, PPTX, ODT 파일이나 첨부파일의 내용 요청에 preview=pdf를 추가하세요. 메일함당 분당 최대 10회 변환할 수 있습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//messages//attachments/?uidvalidity=' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "첨부파일 다운로드", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "DOC, XLS, XLSX, PPT, PPTX, ODT 파일이나 첨부파일의 내용 요청에 preview=pdf를 추가하세요. 메일함당 분당 최대 10회 변환할 수 있습니다." } ``` # POST /v1/mailboxes/{mailbox_id}/send 편지 보내기 필수 Idempotency-Key 8~128자입니다. 동일한 키와 본문을 사용하여 반복하면 동일한 작업이 반환됩니다. 다른 기관에서는 409를 제공합니다. HTTP 202는 대기열을 의미합니다. 응답 수신 여부가 아닌 작업 상태를 확인하세요. ```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": "편지 보내기", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "400": { "description": "잘못된 헤더 또는 식별자", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "크기 초과", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필수 Idempotency-Key 8~128자입니다. 동일한 키와 본문을 사용하여 반복하면 동일한 작업이 반환됩니다. 다른 기관에서는 409를 제공합니다. HTTP 202는 대기열을 의미합니다. 응답 수신 여부가 아닌 작업 상태를 확인하세요." } ``` # GET /v1/operations 작업 목록 마지막 100개의 작업을 반환합니다. 개별 사서함의 세션에서는 해당 작업만 볼 수 있습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/operations' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "작업 목록", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Operation" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "마지막 100개의 작업을 반환합니다. 개별 사서함의 세션에서는 해당 작업만 볼 수 있습니다." } ``` # GET /v1/operations/{operation_id} 운영현황 id.으로 작업의 현재 상태를 반환합니다. status은 queued 또는 running과 같지만 작업은 완료되지 않습니다. 완료되면 성공 시 result, 오류 시 error를 확인하세요. ```sh curl -X GET 'https://adapt-mail.com/v1/operations/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "운영현황", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "id.으로 작업의 현재 상태를 반환합니다. status은 queued 또는 running과 같지만 작업은 완료되지 않습니다. 완료되면 성공 시 result, 오류 시 error를 확인하세요." } ``` # POST /v1/operations/{operation_id}/cancel 보내기 취소 작업이 queued. 상태인 동안 편지 보내기를 취소합니다. 보내기가 이미 시작되었거나 완료되었거나 취소된 경우 409가 반환됩니다. 이 방법으로는 이미 보낸 편지를 불러올 수 없습니다. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//cancel' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "보내기 취소", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "cancelled": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "작업이 queued. 상태인 동안 편지 보내기를 취소합니다. 보내기가 이미 시작되었거나 완료되었거나 취소된 경우 409가 반환됩니다. 이 방법으로는 이미 보낸 편지를 불러올 수 없습니다." } ``` # POST /v1/operations/{operation_id}/retry 작업을 반복하세요 보낸 사람 규칙 적용을 다시 시작합니다: kind=sender_rules, status=failed. 이 방법을 사용하면 편지 보내기를 반복할 수 없습니다. 부적합한 상태의 경우 409가 반환됩니다. 이 방법을 통해 사서함 생성 및 구성을 반복할 수 없으며 403을 반환합니다. ```sh curl -X POST 'https://adapt-mail.com/v1/operations//retry' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "작업을 반복하세요", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "보낸 사람 규칙 적용을 다시 시작합니다: kind=sender_rules, status=failed. 이 방법을 사용하면 편지 보내기를 반복할 수 없습니다. 부적합한 상태의 경우 409가 반환됩니다. 이 방법을 통해 사서함 생성 및 구성을 반복할 수 없으며 403을 반환합니다." } ``` # PUT /v1/mailboxes/{mailbox_id}/drafts/{draft_id} 초안 저장 draft_id.까지 초안을 생성하거나 업데이트합니다. 새 초안의 경우 UUID을 생성합니다. 후속 저장에는 동일한 식별자를 사용하십시오. 동일한 편지함에 로그인한 후 다른 장치에서 초안을 계속할 수 있습니다. ```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": "초안 저장", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "draft_id.까지 초안을 생성하거나 업데이트합니다. 새 초안의 경우 UUID을 생성합니다. 후속 저장에는 동일한 식별자를 사용하십시오. 동일한 편지함에 로그인한 후 다른 장치에서 초안을 계속할 수 있습니다." } ``` # DELETE /v1/mailboxes/{mailbox_id}/drafts/{draft_id} 초안 삭제 초안을 삭제해도 이미 대기열에 추가된 이메일에는 영향을 주지 않습니다. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//drafts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "초안 삭제", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "초안을 삭제해도 이미 대기열에 추가된 이메일에는 영향을 주지 않습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/drafts 초안 목록 최신 항목부터 가장 오래된 항목까지 최대 100개의 초안을 반환합니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//drafts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "초안 목록", "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": "성공적인 응답", "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." } } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "최신 항목부터 가장 오래된 항목까지 최대 100개의 초안을 반환합니다." } ``` # GET /v1/mailboxes/{mailbox_id}/threads 대화 목록 가장 최근에 업데이트된 대화상자부터 시작하여 최대 100개의 대화상자를 반환합니다. Trash 및 Junk 폴더의 메시지는 목록에 포함되지 않습니다. 새 문자는 약간의 지연 후에 나타날 수 있습니다. 목록 업데이트 요청을 다시 시도하세요. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "대화 목록", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "thread_id": { "type": "string" }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "messages": { "type": "integer" }, "unread": { "type": "integer" }, "senders": { "type": "array", "items": { "type": "string" } }, "subject": { "type": "string" }, "sender": { "type": "string" } } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "가장 최근에 업데이트된 대화상자부터 시작하여 최대 100개의 대화상자를 반환합니다. Trash 및 Junk 폴더의 메시지는 목록에 포함되지 않습니다. 새 문자는 약간의 지연 후에 나타날 수 있습니다. 목록 업데이트 요청을 다시 시도하세요." } ``` # GET /v1/mailboxes/{mailbox_id}/threads/{thread_id} 대화의 편지 선택한 대화의 이전 문자부터 새 문자까지 최대 100자를 반환합니다. 대화 상자 목록에서 thread_id을 전달합니다. 이미 삭제되었거나 더 이상 사용할 수 없는 이메일은 응답에 포함되지 않습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//threads/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "대화의 편지", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Message" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "선택한 대화의 이전 문자부터 새 문자까지 최대 100자를 반환합니다. 대화 상자 목록에서 thread_id을 전달합니다. 이미 삭제되었거나 더 이상 사용할 수 없는 이메일은 응답에 포함되지 않습니다." } ``` # PUT /v1/mailboxes/{mailbox_id}/sender-rules 발신자 규칙 sender. 주소에 대한 규칙을 생성하거나 업데이트합니다. 보낸 사람의 새 이메일을 스팸으로 보내려면 action=spam을 지정하고, 보낸 사람의 이메일을 허용하려면 action=allow을 지정합니다. 규칙은 향후 수신 이메일에 적용됩니다. ```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": "발신자 규칙", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "sender. 주소에 대한 규칙을 생성하거나 업데이트합니다. 보낸 사람의 새 이메일을 스팸으로 보내려면 action=spam을 지정하고, 보낸 사람의 이메일을 허용하려면 action=allow을 지정합니다. 규칙은 향후 수신 이메일에 적용됩니다." } ``` # GET /v1/mailboxes/{mailbox_id}/sender-rules 발신자 규칙 목록 선택한 사서함에 대한 보낸 사람 규칙을 반환합니다. 각 규칙에는 주소 sender, 작업 action 및 후속 삭제를 위한 식별자 id가 포함되어 있습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//sender-rules' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "발신자 규칙 목록", "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": "성공적인 응답", "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." } } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "선택한 사서함에 대한 보낸 사람 규칙을 반환합니다. 각 규칙에는 주소 sender, 작업 action 및 후속 삭제를 위한 식별자 id가 포함되어 있습니다." } ``` # DELETE /v1/mailboxes/{mailbox_id}/sender-rules/{rule_id} 보낸 사람 규칙 삭제 rule_id.으로 보낸 사람 규칙을 제거합니다. 후속 메시지는 일반 메일 규칙에 따라 처리됩니다. 이미 받은 메시지는 폴더에 남아 있습니다. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//sender-rules/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "보낸 사람 규칙 삭제", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "rule_id.으로 보낸 사람 규칙을 제거합니다. 후속 메시지는 일반 메일 규칙에 따라 처리됩니다. 이미 받은 메시지는 폴더에 남아 있습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/contacts 연락처 목록 이름별로 정렬된 최대 1000개의 연락처를 반환합니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//contacts' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "연락처 목록", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContactResponse" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "이름별로 정렬된 최대 1000개의 연락처를 반환합니다." } ``` # POST /v1/mailboxes/{mailbox_id}/contacts 연락처 저장 선택한 메일함에 연락처의 이름과 주소를 저장합니다. 동일한 email을(를) 가진 연락처가 이미 존재하는 경우 중복을 생성하지 않고 해당 이름을 업데이트합니다. ```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": "연락처 저장", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactResponse" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "선택한 메일함에 연락처의 이름과 주소를 저장합니다. 동일한 email을(를) 가진 연락처가 이미 존재하는 경우 중복을 생성하지 않고 해당 이름을 업데이트합니다." } ``` # DELETE /v1/mailboxes/{mailbox_id}/contacts/{contact_id} 연락처 삭제 연락처를 삭제해도 메시지는 삭제되지 않습니다. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//contacts/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Почтовый ящик" ], "summary": "연락처 삭제", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "연락처를 삭제해도 메시지는 삭제되지 않습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/files 파일 목록 선택한 메일함의 준비된 파일을 최대 1000개까지 반환합니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "파일 목록", "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": "성공적인 응답", "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." } } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "선택한 메일함의 준비된 파일을 최대 1000개까지 반환합니다." } ``` # POST /v1/mailboxes/{mailbox_id}/files 파일 업로드 multipart/form-data, 필드 file. 크기는 1바이트에서 25MiB까지입니다. 바이러스 백신은 다운로드하기 전에 파일을 확인합니다. 할당량이 부족하면 409, 크기 초과 - 413, 감지된 위협 - 422, 확인할 수 없음 - 503이 표시됩니다. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//files' \ -H 'Authorization: Bearer ' \ -F 'file=@document.pdf' ``` ```json { "tags": [ "Файлы" ], "summary": "파일 업로드", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "크기 초과", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "multipart/form-data, 필드 file. 크기는 1바이트에서 25MiB까지입니다. 바이러스 백신은 다운로드하기 전에 파일을 확인합니다. 할당량이 부족하면 409, 크기 초과 - 413, 감지된 위협 - 422, 확인할 수 없음 - 503이 표시됩니다." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/download 파일 다운로드 응답에는 Content-Disposition: attachment.의 파일 바이트가 포함되어 있습니다. 링크에는 각 요청에 대한 승인이 필요합니다. 공개 URL 저장소가 발급되지 않았습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//download' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "파일 다운로드", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "응답에는 Content-Disposition: attachment.의 파일 바이트가 포함되어 있습니다. 링크에는 각 요청에 대한 승인이 필요합니다. 공개 URL 저장소가 발급되지 않았습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/files/{file_id}/content 파일 내용 DOC, XLS, XLSX, PPT, PPTX, ODT 파일이나 첨부파일의 내용 요청에 preview=pdf를 추가하세요. 메일함당 분당 최대 10회 변환할 수 있습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//files//content' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "파일 내용", "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": "성공적인 응답", "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": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "DOC, XLS, XLSX, PPT, PPTX, ODT 파일이나 첨부파일의 내용 요청에 preview=pdf를 추가하세요. 메일함당 분당 최대 10회 변환할 수 있습니다." } ``` # DELETE /v1/mailboxes/{mailbox_id}/files/{file_id} 파일 삭제 불완전한 제출 파일은 삭제할 수 없습니다. 응답 409. 삭제 후 할당량이 해제됩니다. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//files/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Файлы" ], "summary": "파일 삭제", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "type": "boolean" } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "불완전한 제출 파일은 삭제할 수 없습니다. 응답 409. 삭제 후 할당량이 해제됩니다." } ``` # POST /v1/auth/login-link 로그인 링크 생성 서버에서 X-API-Key와 X-Customer-ID로 POST /v1/auth/login-link를 호출합니다. mailbox_id를 지정하면 해당 사서함만 열리고, 생략하면 전체 계정이 열립니다. locale은 인터페이스 언어를 선택합니다. ```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": "로그인 링크 생성", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkResult" } } } }, "401": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "서버에서 X-API-Key와 X-Customer-ID로 POST /v1/auth/login-link를 호출합니다. mailbox_id를 지정하면 해당 사서함만 열리고, 생략하면 전체 계정이 열립니다. locale은 인터페이스 언어를 선택합니다." } ``` # POST /v1/auth/login-link/consume 링크를 세션으로 교환 adapt-mail.com 로그인 페이지 전용입니다. Origin: https://adapt-mail.com을 포함하여 POST 요청을 보냅니다. session_id와 HttpOnly 쿠키를 반환합니다. 이미 사용했거나 만료된 링크: 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": "링크를 세션으로 교환", "operationId": "consume_login_link_v1_auth_login_link_consume_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginLinkConsume" } } }, "required": true }, "responses": { "200": { "description": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BrowserSessionResult" } } } }, "403": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "410": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "요청 오류", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "adapt-mail.com 로그인 페이지 전용입니다. Origin: https://adapt-mail.com을 포함하여 POST 요청을 보냅니다. session_id와 HttpOnly 쿠키를 반환합니다. 이미 사용했거나 만료된 링크: HTTP 410.", "security": [] } ``` # GET /v1/mailboxes/{mailbox_id}/templates 메일 템플릿 메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "메일 템플릿", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TemplateRecord" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다." } ``` # POST /v1/mailboxes/{mailbox_id}/templates 메일 템플릿 메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//templates' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "메일 템플릿", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다." } ``` # PUT /v1/mailboxes/{mailbox_id}/templates/{template_id} 메일 템플릿 메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다. ```sh curl -X PUT 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' \ -H 'Content-Type: application/json' \ --data '{"name":""}' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "메일 템플릿", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRecord" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다." } ``` # DELETE /v1/mailboxes/{mailbox_id}/templates/{template_id} 메일 템플릿 메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//templates/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "메일 템플릿", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "object", "properties": { "deleted": { "const": true } } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "메일함당 템플릿은 최대 100개입니다. 필드: name, subject, text, html. HTML은 정제됩니다. 템플릿 자체는 메일을 보내지 않습니다." } ``` # GET /v1/mailboxes/{mailbox_id}/autoresponder 자동 응답 자동 응답 날짜에는 시간대를 포함하세요. repeat_days는 1~30입니다. 새로운 개인 메일에만 응답하며 From이 Return-Path와 일치해야 합니다. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//autoresponder' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "자동 응답", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "자동 응답 날짜에는 시간대를 포함하세요. repeat_days는 1~30입니다. 새로운 개인 메일에만 응답하며 From이 Return-Path와 일치해야 합니다." } ``` # PUT /v1/mailboxes/{mailbox_id}/autoresponder 자동 응답 자동 응답 날짜에는 시간대를 포함하세요. repeat_days는 1~30입니다. 새로운 개인 메일에만 응답하며 From이 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": "자동 응답", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Autoresponder" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "자동 응답 날짜에는 시간대를 포함하세요. repeat_days는 1~30입니다. 새로운 개인 메일에만 응답하며 From이 Return-Path와 일치해야 합니다." } ``` # GET /v1/mailboxes/{mailbox_id}/filters 필터 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요. ```sh curl -X GET 'https://adapt-mail.com/v1/mailboxes//filters' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "필터", "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": "성공적인 응답", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FilterRecord" } } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요." } ``` # POST /v1/mailboxes/{mailbox_id}/filters 필터 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 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": "필터", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요." } ``` # PUT /v1/mailboxes/{mailbox_id}/filters/{filter_id} 필터 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 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": "필터", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterChange" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요." } ``` # DELETE /v1/mailboxes/{mailbox_id}/filters/{filter_id} 필터 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요. ```sh curl -X DELETE 'https://adapt-mail.com/v1/mailboxes//filters/' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "필터", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요." } ``` # POST /v1/mailboxes/{mailbox_id}/filters/{filter_id}/apply 기존 메일에 적용 필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 GET /v1/operations/{operation_id}로 상태를 확인하세요. ```sh curl -X POST 'https://adapt-mail.com/v1/mailboxes//filters//apply' \ -H 'Authorization: Bearer ' ``` ```json { "tags": [ "Настройки ящика" ], "summary": "기존 메일에 적용", "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": "성공적인 응답", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Operation" } } } }, "401": { "description": "로그인이 필요합니다", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "접근 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "리소스를 찾을 수 없습니다.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "국가 갈등", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "503": { "description": "일시적인 이용 불가", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "필터 변경 시 operation을 반환합니다. 기존 메일에 적용하려면 8~120자의 Idempotency-Key가 필요합니다. 재시도할 때 같은 키를 사용하고 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": "주요 수신자의 주소입니다." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "다른 참가자에게 표시되는 수신자 주소를 복사합니다." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "숨은참조 수신자 주소." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "편지의 제목." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "서식을 적용하지 않은 편지의 텍스트입니다." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-형식화된 편지 버전입니다." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID 이전에 이 사서함에 다운로드한 파일이 있습니다. 다운로드할 때 또는 파일 목록에서 가져옵니다." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "첨부 파일을 전달해야 하는 원본 이메일입니다." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "답장하려는 이메일의 message_id 값입니다." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "응답 체인을 저장하기 위한 원본 메시지의 값 references." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "시간대가 포함된 지연된 디스패치 시간(예: 2026-11-01T12:00:00Z.) 값이 없으면 대기열이 처리될 때 디스패치가 시작됩니다." } }, "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": "폴더 목록의 폴더 이름(예: INBOX.)" }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "값은 이 폴더에 대한 응답 API의 uidvalidity입니다." }, "uids": { "items": { "type": "integer" }, "type": "array", "maxItems": 100, "minItems": 1, "title": "Uids", "description": "한 폴더에서 선택한 문자의 식별자입니다." }, "action": { "type": "string", "enum": [ "read", "unread", "star", "unstar", "move", "delete" ], "title": "Action" }, "destination": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Destination", "description": "대상 폴더 이름. 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": "폴더 목록의 폴더 이름(예: INBOX.)" }, "uidvalidity": { "type": "integer", "exclusiveMinimum": 0, "title": "Uidvalidity", "description": "값은 이 폴더에 대한 응답 API의 uidvalidity입니다." }, "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": "주요 수신자의 주소입니다." }, "cc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Cc", "description": "다른 참가자에게 표시되는 수신자 주소를 복사합니다." }, "bcc": { "items": { "type": "string" }, "type": "array", "maxItems": 50, "title": "Bcc", "description": "숨은참조 수신자 주소." }, "subject": { "type": "string", "maxLength": 998, "title": "Subject", "default": "", "description": "편지의 제목." }, "text": { "type": "string", "maxLength": 200000, "title": "Text", "default": "", "description": "서식을 적용하지 않은 편지의 텍스트입니다." }, "html": { "anyOf": [ { "type": "string", "maxLength": 300000 }, { "type": "null" } ], "title": "Html", "description": "HTML-형식화된 편지 버전입니다." }, "file_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 20, "title": "File Ids", "description": "ID 이전에 이 사서함에 다운로드한 파일이 있습니다. 다운로드할 때 또는 파일 목록에서 가져옵니다." }, "forward_message": { "anyOf": [ { "$ref": "#/components/schemas/MessageReference" }, { "type": "null" } ], "description": "첨부 파일을 전달해야 하는 원본 이메일입니다." }, "reply_to_message_id": { "anyOf": [ { "type": "string", "maxLength": 998 }, { "type": "null" } ], "title": "Reply To Message Id", "description": "답장하려는 이메일의 message_id 값입니다." }, "references": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "References", "description": "응답 체인을 저장하기 위한 원본 메시지의 값 references." }, "send_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Send At", "description": "시간대가 포함된 지연된 디스패치 시간(예: 2026-11-01T12:00:00Z.) 값이 없으면 대기열이 처리될 때 디스패치가 시작됩니다." } }, "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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입니다." }, "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "created_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "completed_at": { "anyOf": [ { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, { "type": "null" } ] }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "작업이 성공적으로 완료되지 않은 경우 오류가 발생하는 이유입니다." }, "result": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ], "description": "작업 결과입니다. 전송의 경우 수락 및 거부된 수신자에 대한 정보가 포함됩니다." } } }, "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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, { "type": "null" } ] }, "ready_at": { "anyOf": [ { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, { "type": "null" } ] }, "delete_after": { "anyOf": [ { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, { "type": "null" } ] }, "created_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 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": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." } } }, "FilterRecord": { "type": "object", "required": [ "id", "data", "updated_at" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." } } }, "FilterChange": { "type": "object", "required": [ "id", "data", "updated_at", "operation" ], "properties": { "id": { "type": "integer" }, "data": { "$ref": "#/components/schemas/MailFilter" }, "updated_at": { "type": "string", "description": "UTC.의 날짜 및 시간 오프셋이 없으면 값은 UTC.도 나타냅니다." }, "operation": { "$ref": "#/components/schemas/Operation" } } } } ```