/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { '/health': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get: operations['HealthController_check']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/domains': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List domains * @description Returns every domain for the authenticated user. */ get: operations['EmailController_getDomains']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/mailboxes': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List mailboxes * @description Returns every mailbox for the authenticated user, including folder counts. */ get: operations['EmailController_getMailboxes']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List emails * @description Paginated list of email summaries. Filter by mailbox or omit to list all. Responses collapse by thread in every mailbox except `drafts`: each row represents the most recent email of the thread in that mailbox and carries `threadSize`, `lastReceivedAt` and `participants` (cross-mailbox). */ get: operations['EmailController_list']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/search': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Search emails * @description Search emails by text, sender, recipient, date range, read status or attachment. */ post: operations['EmailController_search']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/threads/{id}': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get email thread by id * @description Returns all emails in the same thread as the given id, ordered chronologically. If the email has no replies, returns a single-element array. */ get: operations['EmailController_getThread']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/keys/lookup': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Look up recipient public keys * @description Returns the public encryption key for each address if it belongs to an active Internxt domain. Returns null for external or unknown addresses. */ post: operations['EmailController_lookupRecipientKeys']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/send': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Send an email * @description Composes and sends an email on behalf of the authenticated user. At least one recipient in `to` is required. */ post: operations['EmailController_send']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/{id}/reply': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Reply to an email * @description Sends a reply to a given email */ post: operations['EmailController_reply']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/drafts': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Save a draft * @description Creates a new draft email. All fields are optional so partial drafts can be saved. Pass `encryption` to store the body encrypted only with the sender's key — the sender is the only reader and can decrypt it on retrieval. */ post: operations['EmailController_saveDraft']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/drafts/{id}': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get a draft * @description Returns a draft */ get: operations['EmailController_getDraft']; put?: never; post?: never; /** * Discard a draft * @description Permanently discards a draft by ID. Returns 404 if the email exists but is not a draft. */ delete: operations['EmailController_discardDraft']; options?: never; head?: never; /** * Update a draft * @description Updates a draft email. All fields are optional so partial drafts can be saved. Pass `encryption` with a fresh envelope to replace the stored body — the previous envelope is dropped together with the destroyed draft. */ patch: operations['EmailController_updateDraft']; trace?: never; }; '/email/attachment': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Upload an attachment * @description Uploads an attachment and get the info to attach it to an user email. */ post: operations['EmailController_uploadAttachment']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/{id}/attachment/{blobId}': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Download an attachment * @description Streams the bytes of an attachment from the given email. Optional `name` and `type` query params set the response filename and content-type. */ get: operations['EmailController_downloadAttachment']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/email/{id}': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post?: never; /** * Delete an email * @description Permanently deletes an email by ID. */ delete: operations['EmailController_delete']; options?: never; head?: never; /** * Update an email * @description Partially update an email: move it to another mailbox, mark as read/unread, or flag/unflag. Multiple operations can be combined in a single request. */ patch: operations['EmailController_update']; trace?: never; }; '/users/me/mail-account': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get the caller`s mail account status * @description Returns the account status. When suspended, includes `suspendedAt` and the scheduled `deletionAt`. */ get: operations['UserController_getMailAccount']; put?: never; /** Provision the caller`s mail account */ post: operations['UserController_createMailAccount']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/users/me/mail-account/keys': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get encryption keys and salt for one of the caller`s addresses * @description If `address` is omitted, returns keys for the caller`s primary address. */ get: operations['UserController_getMailAccountKeys']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/addresses/availability': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Check address availability (called by the auth service) */ get: operations['AddressesController_checkAvailability']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/gateway/addresses/{address}': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Get a mail address resource (used to resolve drive user id) */ get: operations['GatewayController_getAddress']; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/gateway/accounts/{uuid}/suspend': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Suspend a mail account */ post: operations['GatewayController_suspendAccount']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/gateway/accounts/{uuid}/reactivate': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Reactivate a mail account */ post: operations['GatewayController_reactivateAccount']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/stalwart-events': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post: operations['StalwartEventsController_handleEvents']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; '/mta-hooks/rcpt': { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** RCPT-stage hook */ post: operations['MtaHooksController_rcpt']; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { MailDomainDto: { /** @example f3a1b2c4-… */ id: string; /** @example active */ status: string; /** @example internxt.me */ domain: string; /** @example 2025-06-15T10:29:55Z */ createdAt: string; /** @example 2025-06-15T10:29:55Z */ updatedAt: string; }; MailboxResponseDto: { /** @example f3a1b2c4-… */ id: string; /** @example Inbox */ name: string; /** * @example inbox * @enum {string|null} */ type: 'inbox' | 'drafts' | 'sent' | 'trash' | 'spam' | 'archive' | null; /** @example null */ parentId: Record | null; /** @example 142 */ totalEmails: number; /** @example 3 */ unreadEmails: number; }; EmailAddressDto: { /** @example Alice Smith */ name?: string; /** @example alice@internxt.me */ email: string; }; EncryptedWrappedKeyDto: { /** @description Hybrid ciphertext (base64) */ hybridCiphertext: string; /** @description Encrypted symmetric key (base64) */ encryptedKey: string; /** @description Recipient address this key was wrapped for */ encryptedForEmail: string; }; EncryptedSummaryDto: { /** @description Encrypted preview snippet (base64) */ encryptedPreview: string; /** @description Wrapped keys that unlock the preview, labeled per recipient; the caller picks theirs by address */ wrappedKeys: components['schemas']['EncryptedWrappedKeyDto'][]; }; EmailSummaryResponseDto: { /** @example Ma1f09b… */ id: string; /** * @example [ * "d", * "a" * ] */ mailboxIds: string[]; /** @example T1a2b3c… */ threadId: string; from: components['schemas']['EmailAddressDto'][]; to: components['schemas']['EmailAddressDto'][]; /** @example Weekly sync notes */ subject: string; /** @example 2025-06-15T10:30:00Z */ receivedAt: string; /** @example Hi team, here are the notes from… */ preview: string; /** @example true */ isRead: boolean; /** @example false */ isFlagged: boolean; /** @example false */ isDraft: boolean; /** @example false */ hasAttachment: boolean; /** * @description Size in bytes * @example 4096 */ size: number; /** @description Present only for encrypted emails. Carries the encrypted preview and the de-identified wrapped keys for inline client-side decryption. */ encryption?: components['schemas']['EncryptedSummaryDto'] | null; /** * @description Total number of emails in the thread (cross-mailbox). Set only when the list collapses threads. * @example 3 */ threadSize?: number; /** * @description receivedAt of the most recent email in the thread (cross-mailbox). Set only when the list collapses threads. * @example 2025-06-15T10:30:00Z */ lastReceivedAt?: string; /** @description Unique senders that have written in the thread (cross-mailbox), deduplicated by email. Set only when the list collapses threads. */ participants?: components['schemas']['EmailAddressDto'][]; }; EmailListResponseDto: { emails: components['schemas']['EmailSummaryResponseDto'][]; /** * @description Total emails in the mailbox * @example 142 */ total: number; /** * @description Whether there are more emails to fetch * @example true */ hasMoreMails: boolean; /** @example Ma1f09b… */ nextAnchor?: string; }; SearchEmailQueryDto: { /** @description Full-text search */ text?: string; /** @example 20 */ limit?: number; /** @example 0 */ position?: number; /** * @description Filter by sender * @example [ * "a@inxt.eu", * "b@inxt.me" * ] */ from?: string[]; /** * @description Filter by recipient * @example [ * "a@inxt.eu", * "b@inxt.me" * ] */ to?: string[]; /** @description ISO 8601 date — emails received after this date */ after?: string; /** @description ISO 8601 date — emails received before this date */ before?: string; /** @description Filter by read status */ unread?: boolean; /** @description Filter by attachment presence */ hasAttachment?: boolean; }; EmailAttachmentDto: { /** @example T1a2b3c… */ blobId: string; /** @example photo.jpg */ name: string; /** @example image/jpeg */ type: string; /** * @description Size in bytes * @example 4096 */ size: number; }; EmailResponseDto: { /** @example Ma1f09b… */ id: string; /** * @example [ * "d", * "a" * ] */ mailboxIds: string[]; /** @example T1a2b3c… */ threadId: string; from: components['schemas']['EmailAddressDto'][]; to: components['schemas']['EmailAddressDto'][]; /** @example Weekly sync notes */ subject: string; /** @example 2025-06-15T10:30:00Z */ receivedAt: string; /** @example Hi team, here are the notes from… */ preview: string; /** @example true */ isRead: boolean; /** @example false */ isFlagged: boolean; /** @example false */ isDraft: boolean; /** @example false */ hasAttachment: boolean; /** * @description Size in bytes * @example 4096 */ size: number; /** @description Present only for encrypted emails. Carries the encrypted preview and the de-identified wrapped keys for inline client-side decryption. */ encryption?: components['schemas']['EncryptedSummaryDto'] | null; /** * @description Total number of emails in the thread (cross-mailbox). Set only when the list collapses threads. * @example 3 */ threadSize?: number; /** * @description receivedAt of the most recent email in the thread (cross-mailbox). Set only when the list collapses threads. * @example 2025-06-15T10:30:00Z */ lastReceivedAt?: string; /** @description Unique senders that have written in the thread (cross-mailbox), deduplicated by email. Set only when the list collapses threads. */ participants?: components['schemas']['EmailAddressDto'][]; cc: components['schemas']['EmailAddressDto'][]; bcc: components['schemas']['EmailAddressDto'][]; replyTo: components['schemas']['EmailAddressDto'][]; /** @example 2025-06-15T10:29:55Z */ sentAt: string | null; /** @example Hi team, here are the notes… */ textBody: string | null; /** @example

Hi team, here are the notes…

*/ htmlBody: string | null; attachments: components['schemas']['EmailAttachmentDto'][]; }; LookupRecipientKeysRequestDto: { /** * @description 1-50 email addresses to look up * @example [ * "alice@internxt.me", * "bob@internxt.com" * ] */ addresses: string[]; }; RecipientKeyDto: { /** @example alice@internxt.me */ address: string; /** @example base64encodedpublickey== */ publicKey: string | null; }; LookupRecipientKeysResponseDto: { recipients: components['schemas']['RecipientKeyDto'][]; }; EncryptionBlockDto: { /** @example v3 */ version: string; /** @description Encrypted body (base64) */ encryptedText: string; /** @description Encrypted preview snippet (base64), ~256 chars plaintext, same session key as the body */ encryptedPreview: string; /** @description Encrypted attachments session key (base64), same session key as the body */ encryptedAttachmentsSessionKey: string; /** @description Wrapped session keys, labeled per recipient; one entry unlocks body, preview and attachments key */ wrappedKeys: components['schemas']['EncryptedWrappedKeyDto'][]; }; AttachmentRefDto: { /** @example T1a2b3c… */ blobId: string; /** @example photo.jpg */ name: string; /** @example image/jpeg */ type: string; /** * @description Size in bytes * @example 4096 */ size: number; }; SendEmailRequestDto: { /** @description Primary recipients (at least one required) */ to: components['schemas']['EmailAddressDto'][]; cc?: components['schemas']['EmailAddressDto'][]; bcc?: components['schemas']['EmailAddressDto'][]; /** @example Weekly sync notes */ subject: string; /** * @description Plain-text version of the email body * @example Hi team, here are the notes from today… */ textBody?: string; /** * @description HTML version of the email body * @example

Hi team, here are the notes from today…

*/ htmlBody?: string; encryption?: components['schemas']['EncryptionBlockDto']; attachments?: components['schemas']['AttachmentRefDto'][]; /** * @example INTERNXT * @enum {string} */ deliveryMode?: 'INTERNXT' | 'EXTERNAL'; /** * @description JMAP id of the email being replied to (for threading) * @example Ma1f09b… */ inReplyToEmailId?: string; /** * @description JMAP id of the draft being sent. When present, the draft is destroyed after the email is sent so it no longer appears in the Drafts folder. * @example Ma1f09b… */ draftId?: string; }; EmailCreatedResponseDto: { /** * @description ID of the created email * @example Ma1f09b… */ id: string; }; ReplyEmailRequestDto: { cc?: components['schemas']['EmailAddressDto'][]; bcc?: components['schemas']['EmailAddressDto'][]; /** * @description Plain-text version of the email body * @example Hi team, here are the notes from today… */ textBody?: string; /** * @description HTML version of the email body * @example

Hi team, here are the notes from today…

*/ htmlBody?: string; encryption?: components['schemas']['EncryptionBlockDto']; attachments?: components['schemas']['AttachmentRefDto'][]; /** * @example INTERNXT * @enum {string} */ deliveryMode?: 'INTERNXT' | 'EXTERNAL'; /** * @description JMAP id of the draft being sent. When present, the draft is destroyed after the email is sent so it no longer appears in the Drafts folder. * @example Ma1f09b… */ draftId?: string; /** @description Recipients. Optional — when omitted, derived from the original message's sender (its Reply-To, falling back to From). When given, used as-is, e.g. after the caller edited the pre-filled recipient. */ to?: components['schemas']['EmailAddressDto'][]; /** * @description Subject of the reply. Optional — when omitted, a `Re:`-prefixed subject is derived from the original email. * @example Re: Weekly sync notes */ subject?: string; /** * @description When true, replies to everyone: the other participants of the original (its To and Cc, minus yourself and anyone already in To) are added to Cc. * @example false */ replyAll?: boolean; }; DraftEmailRequestDto: { to?: components['schemas']['EmailAddressDto'][]; cc?: components['schemas']['EmailAddressDto'][]; bcc?: components['schemas']['EmailAddressDto'][]; /** @example Draft: project update */ subject?: string; /** @example Still working on this… */ textBody?: string; /** @example

Still working on this…

*/ htmlBody?: string; /** @description When present, the draft body is stored encrypted. Only the sender can decrypt it later, so wrappedKeys should contain a single entry built from the sender's own public key. */ encryption?: components['schemas']['EncryptionBlockDto']; attachments?: components['schemas']['AttachmentRefDto'][]; }; UploadAttachmentResponseDto: { /** @example T1a2b3c… */ blobId: string; /** * @description Size in bytes * @example 4096 */ size: number; /** @example image/jpeg */ type: string; /** @example photo.jpg */ name: string; }; UpdateEmailRequestDto: { /** * @description Move the email to this mailbox * @example trash * @enum {string} */ mailbox?: 'inbox' | 'drafts' | 'sent' | 'trash' | 'spam' | 'archive'; /** * @description Mark the email as read or unread * @example true */ isRead?: boolean; /** * @description Flag or unflag the email * @example false */ isFlagged?: boolean; }; /** @enum {string} */ MailAccountState: 'active' | 'suspended'; MailAccountStatusResponseDto: { /** @example f3a1b2c4-1234-4abc-9def-0123456789ab */ id: string; /** * @description Default address of the account, null if none is set * @example alice@inxt.eu */ defaultAddress?: string | null; /** @example active */ status: components['schemas']['MailAccountState']; /** * @description When the account was suspended; null when active * @example 2026-05-01T10:29:55.000Z */ suspendedAt?: string | null; /** * @description Scheduled deletion date for suspended accounts; null when active * @example 2026-05-31T10:29:55.000Z */ deletionAt?: string | null; }; MailAddressKeyBundleDto: { /** @description Hybrid (X25519 + ML-KEM-768) public key, base64-encoded */ publicKey: string; /** @description Private key encrypted with the encryption keystore key (base64) */ encryptionPrivateKey: string; /** @description Private key encrypted with the recovery keystore key (base64) */ recoveryPrivateKey: string; }; CreateMailAccountDto: { /** @example alice */ address: string; /** @example inxt.eu */ domain: string; /** @example Alice Smith */ displayName: string; keys: components['schemas']['MailAddressKeyBundleDto']; }; CreateMailAccountResponseDto: { /** @example f3a1b2c4-1234-4abc-9def-0123456789ab */ id: string; /** @example alice@inxt.eu */ address: string; /** @example inxt.eu */ domain: string; }; MailAccountKeysResponseDto: { /** @example alice@inxt.eu */ address: string; /** @description Hybrid (X25519 + ML-KEM-768) public key, base64-encoded */ publicKey: string; /** @description Private key encrypted with the encryption keystore key (base64) */ encryptionPrivateKey: string; /** @description Private key encrypted with the recovery keystore key (base64) */ recoveryPrivateKey: string; }; }; responses: never; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { HealthController_check: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_getDomains: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['MailDomainDto'][]; }; }; }; }; EmailController_getMailboxes: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['MailboxResponseDto'][]; }; }; }; }; EmailController_list: { parameters: { query?: { /** @description Mailbox to filter by. Omit to list emails from all mailboxes. */ mailbox?: 'inbox' | 'drafts' | 'sent' | 'trash' | 'spam' | 'archive'; /** @description Maximum number of emails to return. Defaults to `20`. */ limit?: number; /** @description Zero-based offset for pagination. Defaults to `0`. */ position?: number; /** @description Anchor ID for pagination. */ anchorId?: string; /** @description Filter by read status. */ unread?: boolean; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailListResponseDto']; }; }; }; }; EmailController_search: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['SearchEmailQueryDto']; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailListResponseDto']; }; }; }; }; EmailController_getThread: { parameters: { query?: never; header?: never; path: { /** @description Any email id in the thread */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailResponseDto'][]; }; }; /** @description Email not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_lookupRecipientKeys: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['LookupRecipientKeysRequestDto']; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['LookupRecipientKeysResponseDto']; }; }; /** @description Invalid request: 1-50 valid emails required */ 400: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_send: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['SendEmailRequestDto']; }; }; responses: { /** @description Email sent successfully */ 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailCreatedResponseDto']; }; }; }; }; EmailController_reply: { parameters: { query?: never; header?: never; path: { /** @description JMAP id of the email being replied to */ id: string; }; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['ReplyEmailRequestDto']; }; }; responses: { /** @description Reply sent successfully */ 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailCreatedResponseDto']; }; }; /** @description Original email not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_saveDraft: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['DraftEmailRequestDto']; }; }; responses: { /** @description Draft saved successfully */ 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailResponseDto']; }; }; }; }; EmailController_getDraft: { parameters: { query?: never; header?: never; path: { /** @description Draft ID */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailResponseDto']; }; }; /** @description Draft not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_discardDraft: { parameters: { query?: never; header?: never; path: { /** @description Draft ID */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Draft discarded successfully */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Draft not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_updateDraft: { parameters: { query?: never; header?: never; path: { id: string; }; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['DraftEmailRequestDto']; }; }; responses: { /** @description Draft updated successfully */ 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['EmailResponseDto']; }; }; /** @description Draft not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Draft was modified concurrently; retry the save */ 409: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_uploadAttachment: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Upload attachment successfully */ 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['UploadAttachmentResponseDto']; }; }; }; }; EmailController_downloadAttachment: { parameters: { query?: { type?: unknown; name?: unknown; }; header?: never; path: { /** @description Email ID */ id: string; /** @description Attachment blob ID */ blobId: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_delete: { parameters: { query?: never; header?: never; path: { /** @description Email ID */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Email deleted successfully */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Email not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; EmailController_update: { parameters: { query?: never; header?: never; path: { /** @description Email ID */ id: string; }; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['UpdateEmailRequestDto']; }; }; responses: { /** @description Email updated successfully */ 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Email not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; UserController_getMailAccount: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['MailAccountStatusResponseDto']; }; }; /** @description No mail account exists for the caller */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; UserController_createMailAccount: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['CreateMailAccountDto']; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['CreateMailAccountResponseDto']; }; }; /** @description Caller`s tier does not include mail access */ 403: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Requested domain does not exist */ 404: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Caller already has an account, or the address is taken */ 409: { headers: { [name: string]: unknown; }; content?: never; }; }; }; UserController_getMailAccountKeys: { parameters: { query?: { /** @description Address whose keys to fetch. Defaults to the caller`s primary address. */ address?: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['MailAccountKeysResponseDto']; }; }; /** @description Address not found on this account, or keys not set */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; AddressesController_checkAvailability: { parameters: { query: { /** @description Local part of the email address (before the @) */ username: string; /** @description Email domain */ domain: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; GatewayController_getAddress: { parameters: { query?: never; header?: never; path: { address: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; GatewayController_suspendAccount: { parameters: { query?: never; header?: never; path: { /** @description The UUID of the account */ uuid: string; }; cookie?: never; }; requestBody?: never; responses: { 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Account not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; GatewayController_reactivateAccount: { parameters: { query?: never; header?: never; path: { /** @description The UUID of the account */ uuid: string; }; cookie?: never; }; requestBody?: never; responses: { 204: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Account not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; }; }; StalwartEventsController_handleEvents: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; MtaHooksController_rcpt: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 201: { headers: { [name: string]: unknown; }; content?: never; }; }; }; }